При переходе с конфигурации «Зарплата и Управление Персоналом» редакции 2.5 на редакцию 3.1 кадровики и бухгалтеры часто сталкиваются с ситуацией, когда автонумерация табельных номеров начинается с единицы (например, ПР00-00001), несмотря на то что в перенесенной базе уже существуют сотрудники с номерами вида д000000063.
Рассмотрим подробно, почему платформа 1С так себя ведет, как устроена система префиксов и какими способами можно восстановить или настроить желаемый порядок нумерации.
Проанализируем механизмы платформы 1С:Предприятие. Генерация нового кода (в случае сотрудников — табельного номера) происходит автоматически при создании нового элемента справочника Сотрудники. Однако платформа ищет максимальный существующий номер строго в рамках одного и того же префикса и структуры строки.
В конфигурациях, использующих Библиотеку Стандартных Подсистем (БСП), префикс формируется по следующей маске:
[ПрефиксОрганизации][ПрефиксИнформационнойБазы]-
Если для организации задан префикс ПР, а префикс узла информационной базы равен 00, то платформа автоматически подставляет префикс ПР00-. Посмотрим на техническую реализацию в типовой процедуре:
Процедура УстановитьПрефикс(Источник, Префикс, УстановитьПрефиксИнформационнойБазы, УстановитьПрефиксОрганизации)
ПрефиксИнформационнойБазы = "";
ПрефиксОрганизации = "";
Если УстановитьПрефиксИнформационнойБазы Тогда
ПриОпределенииПрефиксаИнформационнойБазы(ПрефиксИнформационнойБазы);
ДополнитьСтрокуНулямиСлева(ПрефиксИнформационнойБазы, 2);
КонецЕсли;
Если УстановитьПрефиксОрганизации Тогда
Если РеквизитОрганизацияДоступен(Источник) Тогда
ПриОпределенииПрефиксаОрганизации(
Источник[ИмяРеквизитаОрганизация(Источник.Метаданные())], ПрефиксОрганизации);
Если ПрефиксОрганизации = Ложь Тогда
ПрефиксОрганизации = "";
КонецЕсли;
КонецЕсли;
ДополнитьСтрокуНулямиСлева(ПрефиксОрганизации, 2);
КонецЕсли;
ШаблонПрефикса = "[ОР][ИБ]-[Префикс]";
ШаблонПрефикса = СтрЗаменить(ШаблонПрефикса, "[ОР]", ПрефиксОрганизации);
ШаблонПрефикса = СтрЗаменить(ШаблонПрефикса, "[ИБ]", ПрефиксИнформационнойБазы);
ШаблонПрефикса = СтрЗаменить(ШаблонПрефикса, "[Префикс]", Префикс);
Префикс = ШаблонПрефикса;
КонецПроцедуры
Так как в базе еще нет ни одного сотрудника с префиксом ПР00-, автонумератор платформы берет начальное значение и создает номер ПР00-00001. Старые номера из ЗУП 2.5 (например, д000000063, где префикс д исторически использовался для договоров ГПХ или переноса) имеют другой префикс и структуру без дефиса, поэтому платформа их просто "не видит" при поиске последнего номера.
Если использование стандартного префикса организации (например, ПР00-) является приемлемым, достаточно один раз задать нужный порядковый номер вручную при создании элемента.
ПР00-00064.При создании каждого последующего сотрудника платформа считает номер ПР00-00064 как максимальный для данного префикса и автоматически присвоит следующий: ПР00-00065, ПР00-00066 и так далее.
Для сохранения единого порядка в справочнике сотрудников разберем вариант с перенумерацией исторических записей.
д0000000XX на стандартный формат программы (например, ПР00-000XX).ПР00-00063.ПР00-00064, ПР00-00065.Если организация требовательно относится к сохранению буквенного префикса д без дефисов и префиксов организации, проанализируем вариант доработки логики через расширение конфигурации.
ПриУстановкеНовогоКода для справочника Сотрудники.Префикс = "д".В этом случае платформа при создании объекта будет искать элементы с префиксом д, найдет элемент д000000063 и назначит следующему сотруднику номер д000000064.
Наличие префиксов вроде ПР00- в интерфейсе программы не означает, что они должны попадать в печатные формы (приказы о приеме, переводе и т.д.).
Разберем, как отключить вывод префиксов на печать:
После этого в интерфейсе программы табельный номер продолжит отображаться с префиксом для соблюдения уникальности, а в печатных формах документов будет выводиться чистый номер без служебных символов.