Всем доброго дня!
Предисловие.
Создание обработки было навеяно желанием владельца бизнеса увидеть, в каких документах "Реализация товаров услуг" была изменена сумма, а соответственно и выручка Организации, чтобы выяснить причины изменений у их авторов, в свете бликов костров святой инквизиции.
Речь шла об олдскульной "1С:Комплексной автоматизации 1.1", свидетельнице первых крестовых походов, в которой можно увидеть информацию о версиях объекта через встроенную типовую обработку, но только отдельно по каждому документу.
С учетом того, что в каждом месяце надо проверять на изменения более 1.500+ документов, ручное выполнение такой задачи, кроме стресса и депрессии, у пользователя больше ничего не вызывает.
Написал обработку, в которую, зная привычки принимающей стороны: "а давайте ещё и этот объект добавим...", сразу заложил возможность проанализировать любой тип документа конфигурации, с выбором любых реквизитов основной таблицы и обязательными параметрами организация и период, экономившую время и душевное равновесие пользователя.
Всё хорошо, но с одним существенным минусом - очень старой БСП: получение конкретной версии можно сделать только через создание временного файла на диске и последующего чтения XML - это сильно небыстро на объемах, что позволяет физически ощутить бренное течение времени...
В свежих БСП уже используется запись/чтение версий XML FastInfoSet, позволяющая быстро получать данные двоичных данных через метод "УстановитьДвоичныеДанные" (из ресурса "ВерсияОбъекта" с типом хранилище значений РС "ВерсииОбъектов"):
![]()
...

Реализация.
Захотелось написать подобное для современных конфигураций, с возможностью подключить обработку к любой, где есть подсистема "ВерсионированиеОбъектов".
Плюс добавить возможность выбрать справочники, а также вкрутить настройки отборов СКД, чтобы дать пользователю настоящую гибкость для отборов объектов, убрав фиксированные параметры.
Получилось следующее:
1. Вид объекта - документы/справочники.
При конкретном выборе, заполняется список выбора "Тип объекта", но именно теми типами объектов, для которых в принципе возможно подключение версионирования:

(их можно посмотреть в "Настройки хранения истории изменений"):

2. Тип объекта - выбираем конкретный тип (например, документ "Реализация товаров услуг"). Здесь значение можно выбрать из списка или начать написание в самом поле:

3. Вариант сохранения - отображается текущее значение "Когда сохранять версии" из "Настройки хранения истории изменений" для выбранного типа объекта - зеленым цветом обозначено включенная настройка сохранения, серым цветом - выключенная (для информации)
4. Реквизиты объекта - это реквизиты основной таблицы для выбранного объекта (заполняем по метаданным объекта)

Нам нужно обязательно выбрать конкретные реквизиты - именно по ним мы будем сравнивать изменения версий объекта, а также эти реквизиты при выполнении команды "Отобрать объекты" будут динамически выведены в итоговую таблицу (3):
Для выбора нажимаем на "Реквизиты объекта" (1):

В открывшемся списке выбираем нужные нам реквизиты (2) и еще раз нажимаем "Реквизиты объекта" для закрытия списка.
Пункты 1, 2 и 4 обязательны к заполнению.
Далее, нужно установить ограничение для выбираемых данных. Если это не сделать, например, для документа, то будут обработаны все документы выбранного типа, общее количество которых может измеряться сотнями тысяч.
Для этого нажимаем команду "Установить отбор" - откроются настройки отборов СКД (реализован через КомпоновщикНастроек):

со всеми доступными полями.
Например, добавим отбор по дате документа:

Далее можно закрыть настройки отборов, нажав команду "Скрыть отбор" или сразу выполнить команду "Отобрать объекты" (1), при этом настройки отборов автоматически закроются:

В итоговой таблице выводятся 4 постоянных колонки:
- "Объект" - ссылка на документ/справочник
- "Номер версии" - порядковый номер версии
- "Дата версии" и "Автор версии" - дата/время создания и автор
Данные заполняются только по тем объектам, у которых есть изменения в выбранных реквизитах (п.4).
2) Всего объектов - общее количество обработанных/попавших в выборку объектов (инфо)
3) Изменено объектов - количество объектов, у которых были изменения в выбранных реквизитах объекта (инфо). В общем случае, количество "Всего объектов" и "Изменено объектов" будет разным.
4) Время выполнения - время выполнения операции отбора объектов в секундах (инфо)
5) Толстым шрифтом и бежевым цветом в таблице выделены основные/начальные версии объекта
6) Розовым цветом подсвечены измененные версии объекта, по сравнению с предыдущей.
7) Белым цветом обозначены не измененные версии, по сравнению с предыдущей.
8) Динамически добавляемые колонки - соответствуют выбранным реквизитам объекта (чем больше выберем, тем больше колонок будет добавлено на форму)
Чтобы оставить на форме только измененные версии, нужно нажать команду "Показать измененные":

Для сравнения версий, нужно выделить строки версий по одному объекту:

После этого будет выведен отчет о сравнении:

Если в списке версий будет выделена только одна строка, то откроется конкретная версия объекта:

*для работы подсистемы "ВерсионированиеОбъектов" должна быть включена константа "Использовать версионирование объектов"

Послесловие.
Основное, от чего начинает дёргаться глаз - не хватает данных изменений табличных частей.
Честно сказать, так и не получилось сложить в голове, как вывести информацию сразу и по реквизитам основной таблицы, и по реквизитам табличных частей, которых может быть много + они сильно разнородны так, чтобы это было хоть как-то было читаемо на объемах. Возможно у кого-то есть идеи.
Код весь открыт, может у кого-то возникнет желание что-то своё докинуть, использовав обработку как заготовку.
Проверялась на:
1. Платформа - 8.3.27.1936
2. Версия БСП - 3.1.5.385, 3.1.9.199, 3.1.11.448, 3.1.11.466
3. Конфигурации
- 1С:ERP 2 (2.5.8.179)
- 1С:УНФ 3.0 (3.0.6.100)
- 1С:ЗУП КОРП 3.1 (3.1.34.295)
- 1С:БП 3.0 (3.0.194.23)
С уважением, Тимур.
Проверено на следующих конфигурациях и релизах:
- 1С:ERP Управление предприятием 2, релизы 2.5.26.110, 2.5.8.179
- Бухгалтерия предприятия, редакция 3.0, релизы 3.0.194.23
- Управление нашей фирмой, редакция 3.0, релизы 3.0.6.100
- Зарплата и управление персоналом КОРП, редакция 3.1, релизы 3.1.34.295
Вступайте в нашу телеграмм-группу Инфостарт