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

04.05.21

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

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

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

Наименование Файл Версия Размер
Подсистема сложносочиненного версионирования:
.dt 127,98Mb
0
.dt 1.0.0.1 127,98Mb Скачать

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

PS

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

Минусы

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

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

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

См. также

Создать на основании - своя кнопка (БСП). Проблема двух подменю Создать на основании

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    1273    dimanich70    6    

13

Заполнение поля адреса в своей обработке [БСП]

Механизмы платформы 1С БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Небольшая шпаргалка по функциям БСП касательно адреса. Так скажем, еще один способ помимо https://infostart.ru/1c/articles/1060970/

12.02.2024    682    FilippovRI    0    

15

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

БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

07.02.2024    2344    YA_418728146    11    

40

1С:БСП Дополнительные реквизиты и сведения

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Бесплатно (free)

В этой статье расскажем об архитектуре, использовании и особенностях реализации подсистемы «Свойства» из инструментария разработчика «1С:Библиотека стандартных подсистем» (1С: БСП).

19.01.2024    5122    PROSTO-1C    5    

45

Бесплатный митап 9 февраля «Библиотеки и фреймворки на 1С и всё, что с этим связано»

БСП (Библиотека стандартных подсистем) Мероприятия Бесплатно (free)

Митап посвящен вопросам создания, использования и поддержке переиспользуемого кода при разработке решений на платформе 1С:Предприятие 8.

15.01.2024    3791    0    Infostart    0    

20

Шаблоны новых объектов 1С для 1С:Бухгалтерии предприятия

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Платформа 1С v8.3 1С:Бухгалтерия 3.0 Бесплатно (free)

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

28.12.2023    4819    mrXoxot    11    

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