Подсистема сложносочиненного версионирования

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

Разработка - БСП (Библиотека стандартных подсистем)

Версионирование УправлениеХолдингом БСП

Статья описывает мою личную боль при работе в Управление холдингом, редакция 3.0, и может не совпадать с вашими ощущениями. Прощу учитывать, что это лишь мысленный эксперимент. В качестве эксперимента поставил себе задачу: "Как отслеживать изменения, для объектов, которые состоят из нескольких других объектов?".

Рассмотрим несколько примеров

Справочник "Валюты" и его реквизиты:

На форме видим элементы, ссылающиеся только на значения реквизитов объекта:

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

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

Рассмотрим другой пример, справочник "Шаблоны трансформационных корректировок" и его реквизиты:

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

Форма справочника содержит табличную часть "Шаблоны проводок", которой нет в дереве конфигурации:

Путь к данным у табличной части "ШаблоныПроводок":

"ШаблоныПроводок" - это таблица значений, которая собирается при открытии формы и записывается соответственно при записи формы. Данные выбираются запросом:

И из запроса понятно, что почти все элементы формы не являются реквизитами объекта справочника "Шаблоны трансформационных корректировок".

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

Но ведь! Это один объект, почему же так сложно? - потому что произошла протечка абстракции.

Решение, подсистема "Версионирование сложносочиненных объектов"

90% кода, это подсистема "Версионирования объектов", спасибо 1С за отличную подсистему. Я только скопировал объекты и код, адаптировав под свой эксперимент, чтобы решения не пересекались.

  1. Добавил подсистему "Версионирование сложносочиненных объектов". Состав подсистемы и пример работы можно самостоятельно посмотреть в демо примере на базе "Библиотека стандартных подсистем", редакция 3.1. т.е. Я скопировал общую команду для вызова формы истории хранимых объектов, регистр сведений для хранения версий, общие модули и так далее. Все переименовал и чуть-чуть изменил под себя. По-этому не буду подробно описывать каждую процедуру, все есть в моем демо примере на GitHub или в этой статье;

  2. В форму объект который требуется контролировать, добавил код перед записью на сервере;

  1. В Регистре сведений и в общей команде установил объектами мой справочник, который хочу контролировать;

  2. В предприятии открыл подсистему "Дополнительные служебные подсистемы", открыл форму "Дополнительная форма настройки" и установил флаг "Использовать версионирование сложносочиненных объектов". Готово.

Кнопка вызова версий

Информация о версии

Сравнение версий

Демо пример реализовал на основе конфигурации "Демо БСП", добавил "Справочник для проверки системы сложносочиненного версионирования" и "Регистр сведений для проверки системы сложносочиненного версионирования" для показа работы механизма.

PS

Коллеги, я согласен со всеми вашими доводами, за то, что мое решение не до конца решает задачу, по этому это лишь эксперимент. Буду рад вашей критике и идеям как лучше реализовать такое версионирование.

Минусы

  • Пользователь может зайти в регистр сведений и внести правки в него. В таком случаи факт изменения зафиксируется только при следующей записи (Но! Много таких пользователей вы знаете? Кроме программистов);
  • Если реализована сложная логика при записи, то при групповом изменении объекта (Обработкой) могут быть изменены записи реестров, при этом новая версия не зафиксируется, потому что запись версии я вызываю из формы объекта, а как по другому? Мне ведь нужен универсальный механизм, который бы записывал данные, которые инициализируются только в открытой форме;
  • А в УХ если забыть расставить везде признаки модификации, то даже из формы пользователь сможет сохранить данные в регистр, без записи объекта. Но это скорее минус разработчиков УХ, данную проблему можно обойти - записывая связанные регистры только вместе с записью объекта.

Ссылка на репозиторий https://github.com/johnnyshut/1c-versioning-complex-objects

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

Наименование Файл Версия Размер
Подсистема сложносочиненного версионирования:

.dt 127,98Mb
0
.dt 1.0.0.1 127,98Mb Скачать

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

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

См. также

БСП: Дополнительная обработка (Регламенты), примеры от простого к сложному Промо

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

Очень много попадается странных решений, которые можно решить через БСП:Дополнительные отчеты и обработки. Я бы вообще БСП из-за этой подсистемы переименовал в «Большое Спасибо Программистам». Поработаем с подсистемой в части написания регламентных заданий.

1 стартмани

10.05.2018    49869    dsdred    44    

БСП. Подключаемые команды. Команды заполнения

БСП (Библиотека стандартных подсистем) v8 ERP2 БП3.0 ЗУП3.x Россия Абонемент ($m)

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

1 стартмани

11.05.2021    3348    kondrp    7    

История данных и БСП

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

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

1 стартмани

09.06.2020    4626    zeegin    17    

Использование подсистемы БСП "Заполнение объектов"

Практика программирования Универсальные функции БСП (Библиотека стандартных подсистем) v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Применение механизмов БСП для добавления новых команд заполнения к формам различных объектов. Использование расширений конфигурации для доработки. Шаблоны для реализации собственных команд заполнения.

1 стартмани

23.11.2018    27673    ids79    25    

БСП: Дополнительная обработка (Регламенты) + Расширения, примеры от сложного к универсальному

Практика программирования БСП (Библиотека стандартных подсистем) v8 v8::УФ 1cv8.cf Абонемент ($m)

Продолжение статьи «БСП: Дополнительная обработка (Регламенты), примеры от простого к сложному». Пойдем от финального примера той статьи и сделаем несколько шагов навстречу к универсальному решению.

2 стартмани

21.05.2018    19754    dsdred    17    

Внешняя печатная форма с использованием БСП и вызовом клиентского метода

Универсальные печатные формы БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия Абонемент ($m)

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

1 стартмани

02.11.2017    24170    Andrew189100    15