В процессе ведения кадрового учета в программе 1С:Зарплата и управление персоналом 3.1 часто возникают ситуации, когда после отправки отчетности СЗВ-ТД (сейчас это раздел 1.1 формы ЕФС-1) обнаруживаются ошибки в должности, подразделении или дате события. Для исправления ситуации необходимо подать корректировку: отменить старую запись и создать новую. Однако пользователи СБиС часто сталкиваются с технической проблемой: GUID (уникальный идентификатор) мероприятия в 1С не совпадает с тем, который уже зарегистрирован в контролирующем органе через стороннюю программу. Это приводит к тому, что СБиС некорректно импортирует файлы, «теряя» одну из записей.
Рассмотрим подробно, как устроена система идентификаторов в 1С и какими способами можно привести данные в соответствие, чтобы отчетность принималась без ошибок.
Каждое кадровое мероприятие (прием, перевод, увольнение), отраженное в трудовой книжке, имеет свой уникальный системный идентификатор — UUID (или GUID). Когда мы отправляем данные в ПФР (СФР), фонд фиксирует запись именно по этому номеру. Если мы хотим отменить мероприятие, мы должны отправить файл, в котором в теге МероприятиеОтменяемое будет указан именно тот GUID, который был подан ранее.
Если кадровик внес изменения в документ-основание (например, в «Прием на работу») после того, как отчет был сдан, или если данные в СБиС правились вручную, возникает разрыв связи. 1С генерирует новый GUID, а старый «забывает» или не может сопоставить с документом. Выясним причину, почему простые способы исправления часто не работают.
Важно понимать, что GUID мероприятия — это не просто строчка в документе СЗВ-ТД. В программе 1С:ЗУП 3.1 эти данные распределены по нескольким объектам:
Если мы изменим идентификатор только в документе, при любом пересчете или перезаполнении программа обратится к источнику данных (регистру) и вернет старое значение. Поэтому исправлять нужно именно источник.
Это наиболее правильный и безопасный метод, появившийся в версиях ЗУП начиная с 3.1.14.183. Если у вас есть XML-файлы, которые были успешно приняты фондом через СБиС, программа может сама загрузить из них правильные идентификаторы.
Разберем алгоритм действий по шагам:
СведенияОТрудовойДеятельностиРаботниковСЗВ_ТД и, что самое важное, документы РегистрацияТрудовойДеятельности, в которых будут проставлены именно те GUID, которые числятся в базе ПФР.После этой процедуры 1С «узнает» правильные идентификаторы, и вы сможете корректно сформировать отменяющие записи.
Если по какой-то причине автоматический импорт невозможен, проанализируем ситуацию с ручным исправлением. Рассмотрим, как это сделать правильно, чтобы программа не «ругалась» на незарегистрированные мероприятия.
Просто включить отображение поля Идентификатор через «Изменить форму» в документе СЗВ-ТД недостаточно. Чтобы изменения вступили в силу, нужно выполнить следующие действия:
Для исправления этой коллизии нам придется воспользоваться документом «Регистрация трудовой деятельности». Мы можем создать в нем запись-исправление, вручную указав нужный GUID, предварительно включив его видимость через настройки формы документа.
Если мероприятий много, эффективнее всего написать небольшую обработку или воспользоваться консолью запросов с возможностью выполнения кода. Нам нужно заменить значение типа УникальныйИдентификатор в двух регистрах. Рассмотрим пример логики на языке 1С:
// Пример кода для изменения GUID в регистрах сведений
Процедура ИсправитьGUIDМероприятия(СтарыйGUIDСтрокой, НовыйGUIDСтрокой)
GUID_ДляПоиска = Новый УникальныйИдентификатор(СтарыйGUIDСтрокой);
GUID_Новый = Новый УникальныйИдентификатор(НовыйGUIDСтрокой);
// 1. Работаем с основным регистром мероприятий
НаборЗаписей = РегистрыСведений.МероприятияТрудовойДеятельности.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.ИдентификаторМероприятия.Установить(GUID_ДляПоиска);
НаборЗаписей.Прочитать();
Если НаборЗаписей.Количество() > 0 Тогда
Для Каждого Запись Из НаборЗаписей Цикл
Запись.ИдентификаторМероприятия = GUID_Новый;
КонецЦикла;
НаборЗаписей.Записать();
КонецЕсли;
// 2. Работаем с регистром переданных мероприятий
НаборПереданные = РегистрыСведений.МероприятияТрудовойДеятельностиПереданные.СоздатьНаборЗаписей();
НаборПереданные.Отбор.ИдентификаторМероприятия.Установить(GUID_ДляПоиска);
НаборПереданные.Прочитать();
Если НаборПереданные.Количество() > 0 Тогда
Для Каждого Запись Из НаборПереданные Цикл
Запись.ИдентификаторМероприятия = GUID_Новый;
КонецЦикла;
НаборПереданные.Записать();
КонецЕсли;
КонецПроцедуры
Важно: идентификатор в базе 1С хранится не как строка, а как объект УникальныйИдентификатор. При использовании группового изменения реквизитов убедитесь, что вы включили отображение служебных полей в настройках обработки.
Рассмотрим также технический нюанс, упомянутый в обсуждении: порядок тегов Мероприятие и МероприятиеОтменяемое в XML-файле. Согласно XSD-схеме ПФР, важна не последовательность этих блоков внутри файла, а их наличие и корректность заполнения атрибутов. СБиС может менять их местами при визуализации, но для приемного шлюза фонда это обычно не является критической ошибкой. Основная проблема импорта в СБиС кроется именно в несовпадении UUID, из-за чего система «схлопывает» записи или считает их дублями.
Чтобы в будущем не прибегать к правке GUID вручную, рекомендуем придерживаться следующих правил:
Таким образом, мы выяснили, что исправление GUID — задача трудоемкая, требующая понимания структуры регистров. Наилучшим вариантом является использование штатного импорта, а при его невозможности — аккуратная правка регистров сведений программными средствами или специализированными обработками.