В процессе оперативного управления торговой организацией часто возникает необходимость быстро определить «крайнего»: кто создал документ и кто последним внес в него изменения. Типовая конфигурация 1С:Управление торговлей 11 (УТ 11) на базе Библиотеки стандартных подсистем (БСП) обладает встроенными механизмами для решения этой задачи, однако они не всегда очевидны для пользователя. Разберем подробно, как реализовать отслеживание авторов и корректоров, не перегружая систему лишними данными.
Проанализируем структуру метаданных современных документов в УТ 11. Начиная с версии 11.4, большинство документов (таких как «Реализация товаров и услуг», «Заказ клиента», «Поступление безналичных денежных средств») уже имеют реквизит Автор на уровне программного кода. Он автоматически заполняется системой при создании документа и ссылается на справочник Пользователи.
Рассмотрим, почему вы не видите его на форме и как это исправить без программирования:
Автор в типовых решениях часто является скрытым. Система использует его для внутренних нужд (например, для ограничения прав доступа на уровне записей RLS).Важное отличие: Не путайте Автор с полем Менеджер. Реквизит Менеджер — это ответственное лицо за сделку, которое может меняться в процессе работы. Автор — это технический реквизит, фиксирующий того, кто физически нажал кнопку «Создать».
Если задача стоит не просто в фиксации имени, а в анализе того, что именно изменилось, необходимо использовать встроенную систему версионирования. Разберем по шагам, как её настроить:
Версионировать при записи или Версионировать при проведении.После включения этой опции в документах появится кнопка «История изменений» (или через «Еще» — «История изменений»). Там вы увидите список всех редакций документа, дату изменения и пользователя, который внес правки. Это идеальный инструмент для разбора конфликтных ситуаций, так как система позволяет сравнить две версии документа и увидеть старые и новые значения полей.
Нюанс производительности: Хранение каждой версии документа увеличивает размер базы данных (таблица InformationRegister.ObjectVersions). Для высоконагруженных баз рекомендуется настраивать срок хранения версий (например, за последние 6 месяцев).
Бывают ситуации, когда директору или руководителю отдела нужно видеть последнего редактора сразу в отчете или в списке, не проваливаясь в историю версий (которая работает медленно при больших объемах данных). В этом случае целесообразно добавить собственный реквизит Корректор (или ПоследнийРедактор).
Рассмотрим программную реализацию этой задачи через Расширение конфигурации. Это позволит сохранить базу на поддержке.
1. В расширении добавим новый реквизит Корректор с типом СправочникСсылка.Пользователи для нужного документа.
2. Создадим обработчик события ПередЗаписью в модуле объекта документа. Проанализируем ситуацию: нам нужно записывать корректора только в том случае, если документ действительно был изменен, а не просто перепроведен без правок.
&НаСервере
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
// Проверяем, что это не новый документ (у нового есть Автор)
Если Не ЭтотОбъект.ЭтоНовый() Тогда
// Проверяем, были ли изменены данные в форме
Если ЭтотОбъект.Модифицированность() Тогда
ЭтотОбъект.Корректор = Пользователи.АвторизованныйПользователь();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Выясним причину использования Модифицированность(): если пользователь просто открыл документ и закрыл его или нажал «Провести», не меняя данных, реквизит Корректор не должен перезаписываться текущим пользователем. Однако стоит помнить, что флаг модифицированности хорошо работает при интерактивной работе, но может потребовать дополнительной логики при программном изменении объекта.
Если вы не хотите менять структуру таблиц базы данных и писать код, можно воспользоваться механизмом Дополнительных сведений. Это позволяет добавить к любому документу поле «Последний изменивший».
Пользователь.Преимущество этого метода в том, что эти данные автоматически становятся доступны во всех типовых отчетах (через «Изменить вариант»). Минус — автоматическое заполнение таких сведений всё равно потребует небольшой подписки на событие в расширении.
Типичный запрос бизнеса: «Я смотрю отчет по рентабельности и хочу видеть, кто накосячил в документе». Большинство отчетов в УТ 11 строятся на Системе Компоновки Данных (СКД) по регистрам накопления. Сам регистр не хранит автора, но он хранит поле Регистратор.
Разберем, как вывести автора в отчет:
Регистратор. Нажмите на «плюсик» рядом с ним.Автор (оно доступно «через точку»).Корректор через расширение, он также появится в этом списке.Таким образом, руководитель получает инструмент мгновенного анализа: в одной строке отчета он видит сумму выручки, прибыль и фамилию человека, создавшего или изменившего документ. Это экономит время, избавляя от необходимости открывать каждый документ и изучать журнал регистрации или историю версий.
Проанализировав ситуацию, мы видим три пути решения:
Автор через настройку формы списка.Версионирование для детального аудита изменений.Корректор через расширение для быстрого вывода в сложные управленческие отчеты.Выбор зависит от масштаба базы и того, насколько критична скорость формирования отчетов для руководства.