Версионирование объектов 1С сторонними средствами

Публикация № 1176254

Разработка - Инструментарий разработчика - Прочие инструменты разработчика

версия объекта ms sql

В больших информационных системах встает острая необходимость хранения ИСТОРИИ изменений объектов. Она предоставляет материал как для проведения следственных действий, так и для инкрементарного сбора данных в data ware house из 1С конфигураций. Настоящая статья описывает способ версионирования объектов 1С, таких как Документы и Справочники средствами СУБД. Применение такого метода не вызывает рост и фрагментацию основной (рабочей) базы данных (1С) и позволяет сохранять информацию обо всех изменениях, сделанные пользователями.

Хранение версий объектов осуществляется в БД ObjectVersion, расположенной на сервере, желательно (но не обязательно) на том-же, где расположена основная БД.

Строка подключения :

Provider=SQLNCLI11;Server=lpc:(local)\MyINSTANCE;Database=ObjectVersion;Uid=1Cv8Log2;Pwd=Pa$$w0rd;

 

!Внимание. В исходных текстах модулей, приводимых в статье строка подключения загружается из регистра сведений  ВС_ПредопределенныеЭлементы. Такое поведение можно скорректировать следующим образом.

 


//пСтрока_Подключения = РегистрыСведений.ВС_ПредопределенныеЭлементы.ПолучитьЗначениеПоИмени("ObjVersion.ConnectionString");

пСтрока_Подключения = Константы.СтрокаПодключенияКСУБДХраненияВерсииОбъекта.Получить();

 

В конфигурацию 1С встраивается три модуля и подписка на событие хх_ПриЗаписиОбъектаДляВерсионирования.ПриЗаписи. Источником события подписки является СправочникОбъект, ДокументОбъект.  Обработчик расположен в модуле xx_УправлениеВерсионированиемОбъектовСервер. 

 

Процедура ЗафиксироватьВерсиюОбъекта(хОбъект,хСсылка) ЭКСПОРТ
    Перем рез;
    УстановитьПривилегированныйРежим(Истина);
    
    Попытка
        пСтрока_Подключения = РегистрыСведений.ВС_ПредопределенныеЭлементы.ПолучитьЗначениеПоИмени("ObjVersion.ConnectionString");
        Если НЕ ЗначениеЗаполнено(пСтрока_Подключения) ТОгда
            Возврат;
        КонецЕсли;    
        соединение = ВС_УправлениеВерсионированиемОбъектовПовтИсп.м_ADO_Подключить(пСтрока_Подключения);
        Если (соединение <> Неопределено) И (соединение.State = 1) Тогда
            xmlобъект  = СтрЗаменить(хОбъект,"'","''");
            xmlссылка  = хСсылка;
            пользователь = ПараметрыСеанса.ТекущийПользователь;
            пк = ПолучитьТекущийСеансИнформационнойБазы().ИмяКомпьютера;
            бд = ПолучитьИдентификаторБД();
            бдUUID = бд.ХешСумма;
            бдNAME = бд.СтрокаСоединения;
            комманда = "            
            |DECLARE @dbuuid varchar(36);
            |DECLARE @dbname varchar(50);
            |DECLARE @username nvarchar(50);
            |DECLARE @hostname nvarchar(50);
            |DECLARE @ref xml;
            |DECLARE @curobj xml;
            |
            |SELECT 
            |@dbuuid='"+бдUUID+"',
            |@dbname='"+бдNAME+"',
            |@username='"+пользователь+"',
            |@hostname='"+пк+"',
            |@ref='"+xmlссылка+"',
            |@curobj='"+xmlобъект+"'
            |;
            |
            |EXECUTE [DWHSchema].[addObjVersion] 
            |   @dbuuid
            |  ,@dbname
            |  ,@username
            |  ,@ref
            |  ,@curobj
            |  ,@hostname
            |";

            м_ADO_Запрос_Выполнить(соединение,комманда,рез);
            
        КонецЕсли;
    Исключение
        ВыполнитьЗаписьСобытияВЖурналРегистрации(ОписаниеОшибки(),,,пСтрока_Подключения);
    КонецПопытки;
    
КонецПроцедуры    


Как видно из кода, для записи осуществляется вызов хранимой процедуры [DWHSchema].[addObjVersion], расположенной в одной из схем базы данных [ObjectVersion]. 

База данных представляет из себя  хранилище, состоящее из трех файловых групп которые оптимизируются под хранение данных, хранение BLOB и хранения временных данных для предварительной обработки.  В таблицу [DWHSchema].[Versions] попадают первичные данные. С периодичностью настроенной в расписании задания ObjectVersionDiffCalculate (например 1 час) на шаге 1 вызывается хранимая процедура [DWHSchema].[DoBulkDifferent].

 

Эта хранимая процедура осуществляет окончательную обработку данных которая включает сохранение версии объекта в таблицах

[DWHSchema].[VersionsObjectStorage] и [DWHSchema].[VersionsCompress].

 А так же происходит выделение отличий объекта от его предыдущий версии. Эта информация сохраняется в таблице [DWHSchema].[Differents].

Общение с БД ObjectVersion осуществляется через набор встроенных функций и процедур.

 

[DWHSchema].[addObjVersion]

Процедура, регистрирующая версию объекта. Вызывается из подписки 1С ПриЗаписи.

 

 

[DWHSchema].[GetObjVersions]

Функция возвращает список версий объекта. Ей необходимо передать GUID объекта в качестве параметра. Например:

USE [ObjectVersion]

GO

DECLARE @r nvarchar(36) ='e3488ea5-ce4f-11e9-80c4-a4bf01016d51';

SELECT * FROM [DWHSchema].[GetObjVersions] ( @r ,'')

[DWHSchema].[GetObjectDifferents]

Функция возвращает список различий между версиями объекта. Различия рассчитываются по расписанию задания ObjectVersionDiffCalculate.

DECLARE @r nvarchar(36) ='e3488ea5-ce4f-11e9-80c4-a4bf01016d51';

SELECT * FROM [DWHSchema].[GetObjectDifferents] ( @r)

[DWHSchema].[GetDiffObjOnLine]

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

SELECT * FROM [DWHSchema].[GetDiffObjOnLine] (12854,32354)

 

Вызовы процедур и функций встроены в конфигурацию в модуле xx_УправлениеВерсионированиемОбъектовСервер. (ЗафиксироватьВерсиюОбъекта, ПолучитьИсториюИзмененийПоССылке, ПолучитьСписокИзмененийТекущейВерсии, ПолучитьСписокИзмененийТекущейВерсииРасчетная).

Для повышения селективности регистрации событий в БД ObjectVersion находится таблица [DWHSchema].[BlackObjectList] и [DWHSchema].[DBCodes]. В таблице [DWHSchema].[BlackObjectList] содержатся записи об объектах 1С, которые необходимо исключить из трассы версий (поле [dont_save_version] = 1).

В таблице [DWHSchema].[DBCodes] перечислены все варианты подключения к 1С. Регистрируются изменения клиентов, у которых строка подключения записана в таблицу и поле [enable] = 0x01. Заполнение таблицы [DWHSchema].[DBCodes] осуществляется автоматически.

 

Изучить историю изменения объекта можно с помощью внешней обработки. Обработка получает данные из выше перечисленных функций модуля и выводит их на форму как показано на рисунке.

 

В настоящий момент система контроля версий используется в конфигурациях 1С:УПП 1.4, 1С:КА 2.3,  1С:Бух 3.0 (Платформа 1C 8.3.10 и выше).  MS SQL 2016 Standart.

Скачать файлы

Наименование Файл Версия Размер
Исходный код модулей конфигурации 1С (3 шт)
.7z 3,98Kb
06.01.20
0
.7z 2.1 3,98Kb Скачать
СУБД: скрипт развертывания базы ObjectVersion
.7z 6,00Kb
06.01.20
0
.7z 2.1 6,00Kb Скачать

Специальные предложения

Оставьте свое сообщение

См. также

Отладка шаблонов ограничений

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Прочие инструменты разработчика

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

1 стартмани

26.03.2020    861    3    vadim1980    0       

Базовый курс по обмену данными в системе 1С:Предприятие. Онлайн-интенсив с 12 по 28 мая 2020 г. Промо

Данный онлайн-курс предусматривает изучение механизмов платформы “1С:Предприятие”, обеспечивающих обмен данными между различными прикладными 1С-решениями и взаимодействие с другими информационными системами. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”.

5500 рублей

Имена таблиц на сервере

Инструменты и обработки Системный администратор Программист Стажер Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Прочие инструменты разработчика

Обработка позволяющая удобно определить, в какой таблице на сервере баз данных находится той или иной объект 1С. Только для управляемого приложения! Тестировалось на платформе 1с 8.3.15.1565.

1 стартмани

19.03.2020    647    alexyur    2       

Подготовка (исправление) XML схем

Инструменты и обработки Программист Архив с данными v8 Windows Абонемент ($m) Прочие инструменты разработчика

Иногда, XML схемы не соответствуют стандарту w3.org и это грустно :-( . Скрипт публикации исправляет ошибки XML схем в автоматическом режиме.

1 стартмани

10.03.2020    641    infosoft-v    3       

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

Внешний регламент для 1С

Инструменты и обработки Программист Архив с данными v8 Россия Абонемент ($m) Прочие инструменты разработчика

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

1 стартмани

05.03.2020    740    2    moolex    4       

Пишем код в режиме предприятия на УФ

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Windows Абонемент ($m) Прочие инструменты разработчика

Тестирование кода прямо в режиме предприятия. Изменение документов и справочников. Управляемые формы. Сохранение и форматирование кода.

1 стартмани

27.02.2020    854    1    HAMAZ    9       

Онлайн-интенсив "1C:Предприятие для программистов: Бухгалтерские задачи" с 22 июня по 8 июля 2020 г. Промо

Данный онлайн-курс предусматривает изучение механизмов платформы “1С:Предприятие”, которые предназначены для решения задач бухгалтерского учета. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”, а также для опытных пользователей прикладного решения “1С:Бухгалтерия” и прочих прикладных решений, в которых реализованы соответствующие механизмы для автоматизации бухгалтерских задач.

4900 рублей

Выполнение произвольного кода 1С на управляемых формах

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Россия Абонемент ($m) Прочие инструменты разработчика

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

2 стартмани

18.02.2020    1152    6    seregapolygon    8       

БСП - Дополнительная обработка - Заполнение объекта - Произвольный алгоритм

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) БСП (Библиотека стандартных подсистем) Прочие инструменты разработчика

Информационная система 1С ИТС: "При разработке решений следует учитывать, что опасно не только непосредственное выполнение кода, написанного в режиме Предприятие, но и те места, где методами Выполнить или Вычислить исполняется код, сконструированный на основе параметров, переданных в серверные функции и процедуры. Ограничение не распространяется на код, выполняемый на клиенте."

1 стартмани

13.02.2020    915    duhh    2       

Базовый курс для начинающих 1С-программистов. Онлайн-интенсив со 2 июня по 2 июля 2020 г. Промо

Данный онлайн-курс является начальной ступенью по изучению базовых принципов программирования в системе “1С:Предприятие” и предназначен для обучения 1С-программированию “с нуля”.

4500-9500 рублей

Простая параллельная обработка данных

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Производительность и оптимизация (HighLoad) Прочие инструменты разработчика

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

1 стартмани

10.02.2020    1106    Amadeus007    8       

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

Очень простая и удобная отладка внешних обработок

Инструменты и обработки Программист Расширение (cfe) v8 v8::УФ 1cv8.cf Абонемент ($m) Прочие инструменты разработчика

Расширение для отладки внешних отчётов и обработок в несколько кликов.

1 стартмани

07.02.2020    1736    19    for_sale    0       

Подборка решений для взаимодействия со ФГИС «Меркурий» Промо

С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.

Набор скриптов .bat для автообновления списка баз и версии платформы 1С

Инструменты и обработки Системный администратор Программист Архив с данными v8 1cv8.cf Россия Windows Абонемент ($m) Прочие инструменты разработчика

Автоматическое обновление списка информационных баз 1С, автоматическая установка новой версии платформы на компьютер пользователя.

1 стартмани

23.01.2020    1264    4    ManyakRus    4       

Конструктор запросов при внешнем подключении

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Россия Windows Абонемент ($m) Консоль запросов Прочие инструменты разработчика

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

1 стартмани

23.01.2020    1190    2    falcon_wild    1       

1C:Предприятие для программистов: Расчетные задачи (зарплата). Онлайн-интенсив с 01 по 17 июня 2020 г. Промо

Данный онлайн-курс предусматривает изучение механизмов платформы “1С:Предприятие”, которые предназначены для автоматизации периодических расчетов, а именно - для расчета зарплаты. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”, а также для опытных пользователей прикладного решения “1С:Зарплата и управление персоналом” и прочих прикладных решений, в которых реализован функционал расчета зарплаты.

4900 рублей

1C и защищенное хранение данных на блокчейне: модуль интеграции от Acryl Platform

Инструменты и обработки Программист Расширение (cfe) v8 1cv8.cf Абонемент ($m) Защита и шифрование Блокчейн Расширения Прочие инструменты разработчика

Модуль интеграция 1С и блокчейн платформы "Acryl Platform" без использования внешних компонент. Под катом реализация механизмов Base58, Blake2b, Keccak, Curv25519 (the elliptic curve Diffie–Hellman) в подсистеме "Crypt", примеры генерации ключей, адресов, подписи транзакций, запись данных в блокчейн, чтение и восстановление данных из блокчейн. Код открыть. Лицензия MIT.

1 стартмани

21.01.2020    2477    ArtemSerov    9       

Новый раздел на Инфостарте - Electronic Software Distribution Промо

Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.

  • Низкие цены, без скрытых платежей и наценок
  • Оперативная отгрузка
  • Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
  • Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)

Универсальные инструменты 1С

Инструменты и обработки Программист Расширение (cfe) v8 1cv8.cf Абонемент ($m) Универсальные обработки Прочие инструменты разработчика

Свободно распространяемый набор универсальных обработок и отчетов в виде расширения для разработки и поддержки, которое работает во ВСЕХ видах клиентских приложений и во всех операционных системах, которые поддерживает платформа 1С:Предприятие, кроме мобильных. Консоль запросов - консоль отчетов - консоль кода - редактор объектов базы данных - удаление помеченных объектов - поиск и удаление дублей - редактор констант - консоль заданий - групповая обработка справочников и документов - динамический список - поиск ссылок на объект - регистрация изменений для обмена данными - структура хранения базы - консоль HTTP запросов-консоль вебсервисов- консоль сравнения данных- информация о лицензиях- загрузка из табличного документа-файловый менеджер-все функции- навигатор по конфигурации-конструктор регулярных выражений-Выгрузка загрузка XML с фильтрами

1 стартмани

21.01.2020    13212    247    cprit    74       

Редактор справки 1С

Инструменты и обработки Программист Архив с данными v8 Windows Абонемент ($m) Прочие инструменты разработчика

Конфигурация для разработки справочной информации для конфигураций 1С. Тестировалось на 1С:Предприятие 8.3 (8.3.13.1690). Файловая база.

3 стартмани

16.01.2020    3391    10    lastpioneer    10       

Подборка программ для взаимодействия с ЕГАИС Промо

ЕГАИС (Единая государственная автоматизированная информационная система) - автоматизированная система, предназначенная для государственного контроля за объёмом производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции. Инфостарт рекомендует подборку проверенных решений для взаимодействия с системой.

Документация по объектам расширения конфигурации 1С

Инструменты и обработки Программист Архив с данными v8 v8::УФ 1cv8.cf Абонемент ($m) Прочие инструменты разработчика

Обработка для автоматического создания документации для программистов по доработкам в расширении конфигурации.

1 стартмани

14.01.2020    2621    13    ManyakRus    2       

Неиндексированные измерения регистров сведений. В помощь 1С:Эксперту

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Прочие инструменты разработчика

Обработка показывает неиндексированные измерения регистров сведений, из-за которых случаются блокировки. Для любых баз 1С - на обычных и управляемых формах.

1 стартмани

07.01.2020    3572    12    Rustig    30       

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

Глобальный поиск и замена в модулях конфигурации

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Поиск данных Прочие инструменты разработчика

Зачастую у программиста возникает желание работать с кодом модулей конфигурации средствами встроенного языка: так, как мы сейчас работаем с данными. Как результат реализации данной потребности и родилась данная обработка. Она предназначена для минимизации ручного труда при внесении однотипных изменений в модули конфигурации. Она представляет из себя расширение глобального поиска и замены в конфигураторе. Отличие в предоставлении ряда дополнительных возможностей, таких, как: наложение условий И, ИЛИ, НЕ; поиск только в названии процедуры / функции, либо в теле определенной процедуры / функции; управление поиском в комментариях и др.

1 стартмани

06.01.2020    1267    1    keifaya    0       

Подсистема перевода базы данных

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Прочие инструменты разработчика Локализация решений

В базе данных работают разноязычные пользователи и приходится писать наименования объектов сразу на нескольких языках? ЕСТЬ РЕШЕНИЕ!

2 стартмани

04.01.2020    1256    1    onec.developer    0       

Онлайн-курс "Подготовка к экзамену 1С:Эксперт и 1С:Профессионал по технологическим вопросам" с 7 по 24 апреля 2020 г. Промо

На курсе вы получите практические навыки решения задач производительности 1С, в том числе характерных для высоконагруженных информационных систем (более 1000 пользователей). Подготовка к экзамену – только одна из составляющих курса. 70% слушателей приходят за знаниями, которые позволят расти и зарабатывать, делать сложные задачи на крупных проектах.

16450 рублей

Расширение для отладки внешних печатных форм

Инструменты и обработки Программист Расширение (cfe) v8 v8::УФ 1cv8.cf Абонемент ($m) Прочие инструменты разработчика

При разработке внешних печатных форм иногда возникают проблемы с отладкой. Данное расширение позволяет указать путь к файлу с печатной формой и произвести его отладку через конфигуратор.

1 стартмани

31.12.2019    1549    7    Sergspectr    7       

Онлайн-курс «Автоматизация процессов управления МТО: методика сбора и формализации требований» с 1 апреля по 13 мая 2020 года. Промо

Цель курса - повысить полноту и качество сбора и формализации требований к автоматизации процессов управления материально-техническим обеспечением. Курс основан на процессном подходе, позволяет в полном объеме выявить и учесть все факторы, влияющие на специфику процессов управления МТО. Участники курса получают теоретические знания в области организации процессов управления МТО и готовый инструментарий для сбора и формализации требований по автоматизации этих процессов (шаблоны, опросники, модели).

40000 рублей

Генератор форматированной строки (с визуальным редактором)

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Прочие инструменты разработчика

Обработка позволяет создать любую форматированную строку в визуальном редакторе и сгенерировать код её программного создания.

1 стартмани

26.12.2019    3217    5    XilDen    6