При разработке конфигураций на платформе 1С:Предприятие часто возникает задача связать нумерацию создаваемого документа с документом-основанием. Например, требуется, чтобы новый документ имел номер вида 003.1, 003.2 и так далее, где 003 — это номер основания. Разберем, почему попытки прямого изменения системного номера являются плохой практикой и какие архитектурные подходы стоит использовать вместо этого.
Многие начинающие разработчики пытаются реализовать задачу через запрос к базе данных: находят все документы, подчиненные основанию, считают их количество и присваивают следующий номер. Однако такой подход несет в себе серьезные риски:
003.2, будет помечен на удаление, логика «количество + 1» может привести к повторному использованию того же номера или возникновению разрывов, что затруднит поиск и администрирование.Профессиональный подход к решению задачи заключается в разделении системного номера (который нужен платформе для идентификации объекта) и номера для печати (который нужен пользователю для визуализации связи). Рассмотрим этот процесс по шагам:
НомерДляПечати (тип Строка).Структура подчиненности, где связи документов будут отображаться корректно и без программирования сложных префиксов.Если цель состоит в визуальной группировке документов, рассмотрите использование встроенного механизма префиксов. Платформа 1С:Предприятие поддерживает префиксацию организации, узла обмена и информационной базы. Это позволяет группировать документы в начале, а не в конце, что является стандартом для большинства типовых конфигураций.
Если же вы все-таки решили реализовать нумерацию программно, помните о необходимости использования блокировок. Чтобы избежать коллизий при одновременной записи, используйте следующий пример логики:
// Пример защищенной записи с использованием блокировки
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Документ.НашДокумент");
ЭлементБлокировки.УстановитьЗначение("Основание", СсылкаНаОснование);
Блокировка.Заблокировать();
// Далее идет код подсчета количества подчиненных документов
// и присвоение номера новому объекту
Для создания надежного решения придерживайтесь следующих правил:
Помните, что архитектура системы — это фундамент, на котором держится вся ваша разработка. Выбирая простые и правильные инструменты сегодня, вы избавляете себя от «проблем не уникального номера» и бесконечного исправления ошибок в будущем.