При переходе на новые конфигурации 1С (например, 1С:Управление торговлей 11, 1С:ERP или 1С:Комплексная автоматизация) или при изменении внутренних регламентов компании разработчики часто сталкиваются с требованием автоматического присвоения артикула новым позициям номенклатуры.
Рассмотрим подробно особенности платформы 1С, технические варианты реализации автонумерации артикулов и альтернативные способы решения этой бизнес-задачи.
Выясним причину, почему встроенная автонумерация не работает для артикула по умолчанию. В платформах 1С:Предприятие уникальная нумерация на уровне СУБД поддерживается только для системного реквизита Код. Реквизит Артикул в справочнике Номенклатура является обычным строковым полем (длиной до 50 символов), поэтому штатного менеджера автонумерации для него не предусмотрено.
Проанализируем наиболее простой путь без существенного усложнения логики системы. Если в компании нет жесткой привязки к специфическим артикулам поставщиков, проще всего дублировать значение системного поля Код в Артикул:
Код элемента как артикул для всех печатных форм и отчетов.Код в реквизит Артикул при первичном сохранении номенклатуры.Рассмотрим программный подход с созданием подписки на событие. Чтобы сохранить типовую конфигурацию на поддержке, всю логику рекомендуется выносить в расширение информационных баз.
Разберем варианты технической реализации:
ПриЗаписи: В обработчике проверяется состояние нового объекта. Если реквизит Артикул не заполнен, в него записывается сформированный платформой Код (или код с добавлением требуемых префиксов).ПриУстановкеНовогоКода: Метод позволяет перехватить момент формирования нового кода платформой и перенаправить или продублировать логику нумерации в текстовый артикул.Посмотрим на пример, когда требуется сложный составной артикул (например, с учетом префикса группы товаров, организации или категории). Для этого в систему добавляют регистр сведений, выступающий в роли счетчика номеров.
При создании элемента алгоритм запрашивает следующее числовое значение из регистра для соответствующего префикса, формирует строковый артикул и обновляет счетчик. Обратите внимание: при высокой интенсивности параллельной работы пользователей или интеграции с внешними системами данный метод может вызывать блокировки транзакций СУБД.
Проанализируем моменты, которые нужно учесть при разработке:
Артикул в новый объект. Обязательно перехватывайте событие ОбработкаЗаполнения, чтобы очищать артикул при создании дубликата.Прежде чем приступать к доработкам, стоит проанализировать бизнес-процессы. Зачастую потребность в автонумерации артикулов вызвана устаревшими привычками работы. Рассмотрим альтернативы: