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

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

Право

Как заключить госконтракт и не попасть под уголовную статью? Теперь читатели «Клерка» будут лучше разбираться в законах!

Ростовская областная коллегия адвокатов «Советник» начала вести свой блог на «Клерке». Правозащитники уже рассказали, как правильно работать по госконтрактам и не попасть под уголовную ответственность.

Как заключить госконтракт и не попасть под уголовную статью? Теперь читатели «Клерка» будут лучше разбираться в законах!

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

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

При выполнении нацпроектов обнаружены ценовые соглашения

Компании и ИП вступили в картельный сговор для поддержания цен на торгах. Общая сумма контрактов превысила 2,8 млрд рублей.

💥Обзор к утру четврега: нашли лекарство от болезни Бехтерева, цены на хлеб взлетели, в Perrier нашли бактерии

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

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

Контроль за ведением воинского учета и штрафы в 2024 году

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

Контроль за ведением воинского учета и штрафы в 2024 году

Выплаты многодетным на погашение ипотеки продлили: срок

В 2024 году многодетные получат порядка 50 млрд рублей на погашение жилищного кредита.

Какие меры принудительного исполнения можно применить к должнику

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

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

И Москва, и Сочи опять подорожали. Что произошло с ценами на недвижимость в этих городах за месяц?

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

И Москва, и Сочи опять подорожали. Что произошло с ценами на недвижимость в этих городах за месяц?

Официально: даны прогнозы роста основных показателей экономики

Минэкономразвития ждет, что за 2024 год ВВП превысит 191 трлн рублей, реальные доходы населения вырастут на 5,3%, а безработица сохранится в пределах 3%.

​Вчера поспешил, сегодня — опоздал. И как же правильно?

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

​Вчера поспешил, сегодня — опоздал. И как же правильно?

Бухгалтеры не знают элементарных вещей!

20 лет я главный бухгалтер. Большую часть из них работала в Хабаровском крае. С проблемой ниже, конечно, сталкивалась, но не сплошь, а вопрос с контрагентом решался быстро и безболезненно.

Бухгалтеры не знают элементарных вещей!
Общество

На сколько подорожал шашлык: суммы и наш опрос

Заметнее всего подорожал шашлык из курицы. Стоимость блюда выросла на 20%, до 389 рублей.

Летом стартует очередной эксперимент по маркировке товаров

Минпромторг предложил с 1 июля 2024 года провести эксперимент по маркировке полимерных труб и их сырья.

1
Миникурсы, текстовые и видеоинструкции для бухгалтеров
Мошенничество

Малоактивные и брошенные аккаунты работников сервисов доставок стали основой мошеннической схемы

В Санкт-Петербурге полицейские задержали подозреваемого в интернет-мошенничестве через сервисы доставок.

Инвестиции

Держатели облигаций «Киви финанс» могут потребовать погасить их досрочно

Эмитент проведет выплаты в течение 7 рабочих дней с даты получения требования.

Оценивать риск нарушения закона и принимать решение о проверке будут по 500 индикаторам. А работать когда? 🕵️‍♀️«Ночной бухгалтер» № 1671

Минэкономразвития уже согласовал 30 новых критериев оценки рисков, а до конца года добавят еще 60-70. К концу 2024 году число индикаторов риска увеличится до 500. Как вообще следить за всеми?

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

👏 Суд: в товарных знаках нельзя указывать «№1». Но многие компании пренебрегают, хотя это не очень эффективно — говорит эксперт

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

Реклама

С 4 мая упростили продление договора на рекламную конструкцию

Начинают действовать изменения в закон о рекламе и ряд других нормативных актов.

Обзоры новостей

⚡️ Итоги дня: депутат заработал 200 млн рублей, организм может сам вырабатывать алкоголь, у «Яндекс Маркет» ребрендинг, а нейросеть придумала рецепт кофе

Подготовили обзор главных событий дня — 24 апреля 2024 года. Все самое интересное, что писали и обсуждали в сети, в одной подборке.

Тренды договорной работы — 2024

Качественная работа над договором — это работа по минимизации рисков при его исполнении. Потребность что-то отразить в договоре обычно отражает обычаи делового оборота или новые позиции в судебной практике. Если мы говорим о трендах договорной работы в 2024 году, то здесь мы можем отметить и новое, появившееся в этом году, и то, что сохраняет свою актуальность не первый год. В этой статье остановимся коротко на основных договорных трендах.

Тренды договорной работы — 2024

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

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

За получение взятки в размере 12 млн рублей суд заключил под стражу сотрудника ФНС в Новосибирске.