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