Изменение структуры БД под 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С, в том числе делать ее более читабельной.

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

УСН

Работать на упрощенке по-простому больше не получится. Будут счета-фактуры, книга продаж, декларация по НДС

ИП на УСН с доходом в 2024 году более 60 млн рублей автоматически становится плательщиком НДС с первых дней 2025 года. И даже если выбрать ставку 5% без права на вычет, придется оформлять счета-фактуры, формировать книгу продаж и сдавать декларацию по НДС.

Как учитывать расходы на обучение сотрудников для налога на прибыль

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

Как учитывать расходы на обучение сотрудников для налога на прибыль

ЕФС-1 с Разделом 2 за первое полугодие 2024: как сдать отчет

Отчетность по «травматизму» подается в составе единой формы ЕФС-1. Рассказываем, как сдать отчет за полугодие 2024 года.

ЕФС-1 с Разделом 2 за первое полугодие 2024: как сдать отчет

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

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

Маршрутизация грузоперевозок программным роботом RPA

Мы разработали программного робота RPA, и… робот превзошел все ожидания нашего заказчика (одна из крупнейших транспортных компаний страны).

Маршрутизация грузоперевозок программным роботом RPA

Пользователи не могут войти в приложение «Т-Инвестиции»

Клиенты брокера пожаловались на сбой в работе мобильного приложения «Т-Инвестиции».

НДФЛ

Командированные за границу для строительства атомных станций априори будут налоговыми резидентами РФ

Физлица, которые в течение года были в России менее 183 дней, являются нерезидентами РФ. Но есть исключения для ряда случаев. Таких исключений станет больше.

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

Как оплачивать переработки в командировках: считаем сверхурочные

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

Как оплачивать переработки в командировках: считаем сверхурочные

Как без проблем с налоговой работать с самозанятыми

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

Более 79 млн проводок, 12 млн казначейских платежей и 2 млн мероприятий по кадровому администрированию и расчету зарплаты: «Северсталь – ЦЕС» исполнилось 15 лет

В июле свое 15-летие празднует «Северсталь – ЦЕС» – профессиональная сервисная компания, специализирующаяся на предоставлении услуг консалтинга, аутсорсинга и автоматизации сквозных бизнес-процессов, построении и управлении общими центрами обслуживания, разработке и внедрении цифровых продуктов и ИТ-сервисов, включая решения на базе SAP и 1С.

Шохин: государство не должно контролировать соблюдение соглашений и коллдоговоров

Российский союз промышленников и предпринимателей (РСПП) принял участие в совещании по вопросам совершенствования законодательства о занятости и изменений в ТК.

❗️ 15 июля стартовало обучение в летней школе бухгалтера. Скорее присоединяйтесь!

Вчера, 15 июля, в летней школе бухгалтера прошли первые занятия. Сегодня последний день, когда вы можете приобрести любой курс повышения квалификации, а также курсы профпереподготовки для бухгалтеров на УСН и финансовому менеджменту со скидками до -78%. Выбирайте курс и приступайте к обучению!

КоАП РФ

Штрафы за неуведомление о начале предпринимательской деятельности вырастут в два раза

Роспотребнадзор хочет, чтобы предприниматели чаще сообщали ведомству о начале деятельности. Штрафы за неуведомление для юридических лиц могут вырасти до 48 тысяч рублей.

МИР

Карты «Мир» начали принимать в Мьянме

Пока что платежная система «Мир» в Мьянме работает только в некоторых ресторанах и торговых центрах.

Бухгалтерский учет

Бухучет для начинающих: рассказываем о дебетах, кредитах и первичке простым языком

Как устроена профессия бухгалтера, с какими задачами он работает и что означают все эти странные сокращения (НДС, ПСН, ЕСН и др.) — разбираемся в основах бухгалтерии.

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

Раздельный учет по госконтрактам исполнителей: зачем это нужно и как избежать штрафов

Минфин предложил внести изменения в Кодекс об административных правонарушениях (КоАП), которые предусматривают введение санкций за несоблюдение правил ведения раздельного учета при исполнении госконтрактов.

Раздельный учет по госконтрактам исполнителей: зачем это нужно и как избежать штрафов

Роструд: из основных работников в совместители можно перейти только через увольнение

Устроиться на работу по совместительству, не имея основной, нельзя. Даже если это временная работа на 0,5 ставки и позиционируется как подработка.

Ипотека

Ипотека на индивидуальное жилищное строительство достигла рекордных 385 млрд рублей

Построить дом по собственному проекту в три раза дешевле, чем приобрести квартиру в крупном городе.

Ведение бизнеса

Как продавать товары за границу из России: интернет-магазин или маркетплейс

​​Многие предприниматели рассматривают выход на зарубежный рынок для расширения своего бизнеса. Такой шаг позволяет привлечь новых клиентов, увеличить прибыль, сформировать новые бизнес-связи за счет экспорта товаров за границу.

Как продавать товары за границу из России: интернет-магазин или маркетплейс

Налоговики активно ищут нарушителей среди продавцов маркетплейсов

На систематической основе налоговики будут вести выборочный контроль за уплатой налогов продавцами маркетплейсов.

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

Чек-лист налоговых рисков 2024 и как их минимизировать

По данным ФНС число проверок бизнеса снижается, но при этом растет их эффективность. На выездную проверку одной организации в 2023 году в целом по России налоговые доначисления составили 63 млн руб. (в 2022 году — 49 млн руб.). Если проверка началась, то, скорее всего, она окончится добровольной доплатой или доначислениями. Но лучше повода для нее не давать.

Чек-лист налоговых рисков 2024 и как их минимизировать