Изменение структуры БД под 1С SQL

В одной из предыдущих статей я рассказал, как при изменении структуры БД в 1с можно добиться того , что бы 1С проходила успешно процедуру верификации. Однако неприятности нас поджидают в дальнейшем при работе с 1С, а именно при изменении данных. Например, при введении нового элемента справочника.При попытке вставки нового элемента 1С выдает ошибку о несоответствии количества передаваемых параметров количеству полей таблицы. Почему это происходит? Дело в том, что при использовании конструкции Insert 1C передает множество полей таблицы без явного указания полей и соответственно MSSQL Server по умолчанию определяет это множество как полный список полей таблицы(без поля с признаком identity).

Материал предоставлен сайтом www.softpoint.ru /

В одной из предыдущих статей я рассказал, как при изменении структуры БД в 1с можно добиться того , что бы 1С проходила успешно процедуру верификации. Однако неприятности нас поджидают в дальнейшем при работе с 1С, а именно при изменении данных. Например, при введении нового элемента справочника.При попытке вставки нового элемента 1С выдает ошибку о несоответствии количества передаваемых параметров количеству полей таблицы. Почему это происходит? Дело в том, что при использовании конструкции Insert 1C передает множество полей таблицы без явного указания полей и соответственно MSSQL Server по умолчанию определяет это множество как полный список полей таблицы(без поля с признаком identity).

Владимир Сердюк

Insert into Sc33 /*если бы 1С передавала бы список
полей то конструкция отрабатывала нормально */ values(.....)

Обойти эту проблему можно с помощью представлений(views). Дело в том что если у нас есть таблица например sc33 и мы создадим представление типа:

create views v_sc33 as select * from sc33

то мы сможем работать с представлением v_sc33 практически также как с таблицей sc33. То есть мы сможем например использовать следующие конструкции:

insert into v_sc33 values(...)
update v_sc33 set descr=' ' where id=' c '
delete from v_sc33 where id =' c '
select * from v_sc33
и т.п.

Нужно также отметить, что проведенные мной тесты показали, что для линейных представлений такого типа оптимизатор отрабатывает корректно и планы запросов такие же, как и для таблиц. Есть определенные нюансы в работе ODBC, а именно в отработке конструкций select с явным указанием индекса, но эта проблема тоже решаема.

Итак. Если мы переименуем таблицы, а взамен них сделаем представления с набором полей указанных в 1С(dds), то таким образом мы сможем "обмануть" 1C.Предположим, у нас есть таблица sc33, к которой репликатор MSSQL добавил дополнительное поле ms_repl_tran. Необходимо переименовать таблицу sc33 например в ##sc33 и создать представление sc33 реализация которой будет select из ##sc33 по всем полям кроме ms_repl_tran.

Create views sc33
As
Select (row_id,id,parentid,code,descr,isfolder,verstamp,sp17)
from ##sc33 -- мы не пишем * т.к. в таблице ##sc33 есть еще поле ms_repl_tran.

После такой реализации 1С будет не видеть дополнительные поля и работать с представлениями как будто с родными таблицами.

Возникает вопрос: а что если уж мы изменяем таблицы и создаем представления, то может сразу убить двух зайцев? Сделать более читабельной структуру 1С? После чего возможно будет строить запросы прямо из query analyzera или настраивать правила репликации по объектам 1С, да много чего еще… В общем-то, в этом нет никакой проблемы. Из 1С нам нужно предварительно выгрузить информацию о соответствии объектов SQL к объектам 1С. Используя например rainbow, мы можем без проблем получить это соответствие в 1С и выгрузить его во внешние SQL таблицы. После чего составив не сложный T-SQL скрипт мы можем переименовать таблицу sc33 не в ##sc33 а в SCТовары и поля соответственно тоже переименовать. В результате у нас получится таблица ScТовары с полями : Row_Id(по моему не имеет смысла переименовывать ), Id ,##Родитель, Код, Наименование, ##ЭтоПапка, ##Версия , Штуки ... (далее идут названия реквизитов). Представление же будет выглядеть следующим образом

Create views sc33
As
Select (row_id ROW_ID ,id ID, ##Родитель PARENTID, Код CODE, Наименование DESCR,##ЭтоПапка ISFOLDER,
##Версия VERSTAMP, Штуки SP17) from SCТовары

Принципиального отличия в работе от первого варианта нет. Для 1С это по прежнему будет все та же таблица sc33 все с теми же полями (row_id,id,parentid,code,descr,isfolder,verstamp,sp17).

Какие проблемы возникают при такой реализации? Во-первых, необходимость при каждом структурном изменении конфигурации возвращать все обратно. Лично я в этом никаких проблем не вижу, т.к. для этого нужно подготовить просто два скрипта - один на изменение структуры, другой на восстановление. Выполняются они за секунды, и я не вижу никаких проблем выполнять его перед структурным изменением и после(нажать два раза кнопку неужели это сложно?:)). Вторая проблема - это ошибка ODBC invalid cursor state, связанная с использованием конструкций с явным использованием index=XXXindex. Она тоже решается, но это пожалуй материал следующих статей.

P.s. У автора данной статьи существует готовое уже прошедшее внедрения решение, которое позволяет с помощью мастера изменений безболезненно изменять структуру 1С, в том числе делать ее более читабельной.

Ещё раз: как продвигать свои посты на «Клерке»

Если вы видите это сообщение, значит продвижение работает.

Ещё раз: как продвигать свои посты на «Клерке»
10

Начать дискуссию

С 01 июля новая форма отчета о движении денег по зарубежным счетам

С 01 июля 2024 года изменится форма отчета о движении денег и иных финансовых активов по зарубежным счетам, которые готовят и подают юридические лица и ИП

Курсы повышения
квалификации

22
Официальное удостоверение с занесением в госреестр Рособрнадзора

В чем проблема прогрессивной налоговой системы в России?

Сама по себе прогрессивная налоговая система по своей сути не плохая, это нормально, когда люди, которые зарабатывают больше и платят больше налогов. Но есть 2 Но.

💥 Бодрящие скидки на курсы повышения квалификации и профессиональной переподготовки! Ведем запись на первый летний поток

Набираем первый летний поток-2024 на профкурсы. Успейте записаться до 3 июня, чтобы за лето повысить квалификацию и выйти на новый уровень знаний!

Лучшие спикеры, новый каждый день

Календарь вебинаров для бухгалтера в июне 2024. Выбирайте и смотрите!

Будьте в курсе последних изменений в законодательстве! Выбирайте из 9 вебинаров интересные именно вам и записывайтесь. Забирайте в закладки календарь вебинаров для бухгалтера, которые пройдут в июне 2024. Подписчикам «Клерк.Премиум» — бесплатный доступ.

Календарь вебинаров для бухгалтера в июне 2024. Выбирайте и смотрите!
7
Инвестиции

Инвестиции в космические объекты пропишут в законе

Госдума приняла в первом чтении законопроект о государственно-частном партнерстве в сфере космической деятельности.

Трудовое право

Чем грозит неявка сотрудника на медосмотр

Работник обязан проходить обязательные предварительные и периодические медосмотры, другие обязательные медосмотры и обязательные психиатрические освидетельствования, а также внеочередные медосмотры по направлению работодателя.

Опытом делятся эксперты-практики, без воды
Налог на прибыль

Все гранты на инновационное развитие освободили от налога

Компании, которые получают гранты на инновационное развитие, смогут не учитывать эти доходы при определении базы по налогу на прибыль.

Предприятия за каждого сотрудника из другого региона получат 300 тысяч рублей

Государство выделит субсидии бизнесу, который работает над крупным проектом и привлекает сотрудников из других регионов. Размер поддержки составит 12 МРОТ.

За что заблокируют ваш счет? Что не нужно делать, чтобы «влететь» на блок

Сейчас в мире бизнеса идет война за темную и светлую сторону.

За что заблокируют ваш счет? Что не нужно делать, чтобы «влететь» на блок

Налоговые перспективы на 2025 год. Прогрессивная шкала НДФЛ

Какими будут налоговые ставки НДФЛ в 2025 году и можно ли этот налог оптимизировать.

🚚 Грузоперевозка в страну ЕАЭС может облагаться разным НДС

При сделках с контрагентами из стран ЕАЭС взимание косвенных налогов при работах, услугах идет в стране, территория которой признается местом реализации. При грузоперевозках место реализации – страна исполнителя.

МСФО

Внедрение азиатских МСФО на российский рынок

В данном докладе мы рассмотрим перспективы внедрения азиатских Международных стандартов финансовой отчетности (МСФО) на российский рынок.

Внедрение азиатских МСФО на российский рынок
1
Миникурсы, текстовые и видеоинструкции для бухгалтеров
Маркетплейсы

Цены на наушники на маркетплейсах оказались завышенными по сговору

ФАС выявила картель продавцов наушников на маркетплейсах. Продавцы общались в чате мессенджера, писали негативные комментарии конкурентам и заказывали наушники «в никуда».

💥 Бодрящие скидки на курсы повышения квалификации и профессиональной переподготовки! Ведем запись на первый летний поток обучения

Набираем первый летний поток-2024 на курсы повышения квалификации и переподготовки с максимальными скидками, чтобы вы не ограничивали траты на отпуск и получили полезные знания. Начало обучения 1 июня, присоединяйтесь!

💥 Бодрящие скидки на курсы повышения квалификации и профессиональной переподготовки! Ведем запись на первый летний поток обучения
2
Инвестиции

Итоги 35 месяцев инвестиций. 3,83 млн рублей

1 июня, значит пора защищать детей и подводить итоги мая! Ежемесячно я пишу отчёт о том, что произошло с моими инвестициями. Напоминаю: я начал копить на квартиру в Сочи в июле 2021. 35 месяцев позади. Погнали!

Итоги 35 месяцев инвестиций. 3,83 млн рублей

Горящие глаза, «ген предпринимательства» и Борис Мальцев 

Студенты из акселератора «БизнесКуб» КубГУ, мечтая о собственных стартапах и предпринимательских прорывах, направились на встречу с успешными бизнесменами.

Горящие глаза, 
«ген предпринимательства» и 
Борис Мальцев 
1
Бесплатно с УСН

Как в 2024 году уменьшать налоги по УСН и ПСН на страховые взносы: таблица для ИП и ООО

При расчете налога на УСН «доходы» для фиксированных взносов факт уплаты не имеет значение, для взносов за работников — важен факт уплаты. На доходно-расходной упрощенке факт уплаты имеет решающее значение. Для подтверждения этого факта может понадобиться заявление о зачете. Смотрите в нашей таблице, когда и как можно учитывать взносы при УСН и ПСН.

Как в 2024 году уменьшать налоги по УСН и ПСН на страховые взносы: таблица для ИП и ООО

О чем говорят бухгалтеры — топ 5 обсуждаемых тем на этой неделе. 👂«Ночной бухгалтер» № 1694

Говорили не только о реформах, обычные рабочие проблемы никуда не делись. Кто-то в Китай не может перевести деньги, у кого-то налог на УСН — выпади глаза, а у кого-то вообще счета заблокировали. Но всегда есть коллеги-спасители, которые и словом утешат, и делом помогут.

Иллюстрация: Вера Ревина / Клерк.ру
Валюта

Стартовал сезон скупки долларов

Интерес к валюте вырос в преддверии сезона отпусков, на спрос также повлияло укрепление рубля.

3

Интересные материалы

Иван Никитенко: «Я точно не готов продавать душу и работать с клиентами-говнюками»

Это второй сезон проекта «ТоТ еще разговор». Хочется говорить с предпринимателями об их бизнесе. Мы пригласили краснодарского предпринимателя Ивана Никитенко.

Иван Никитенко: «Я точно не готов продавать душу и работать с клиентами-говнюками»
3