Как исправить GUID мероприятия СЗВ-ТД в 1С:ЗУП 3.1 при расхождениях со СБиС?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом Налоговый учет
← На главную

В процессе ведения кадрового учета в программе 1С:Зарплата и управление персоналом 3.1 часто возникают ситуации, когда после отправки отчетности СЗВ-ТД (сейчас это раздел 1.1 формы ЕФС-1) обнаруживаются ошибки в должности, подразделении или дате события. Для исправления ситуации необходимо подать корректировку: отменить старую запись и создать новую. Однако пользователи СБиС часто сталкиваются с технической проблемой: GUID (уникальный идентификатор) мероприятия в 1С не совпадает с тем, который уже зарегистрирован в контролирующем органе через стороннюю программу. Это приводит к тому, что СБиС некорректно импортирует файлы, «теряя» одну из записей.

Рассмотрим подробно, как устроена система идентификаторов в 1С и какими способами можно привести данные в соответствие, чтобы отчетность принималась без ошибок.

Понятие GUID и его роль в электронных трудовых книжках

Каждое кадровое мероприятие (прием, перевод, увольнение), отраженное в трудовой книжке, имеет свой уникальный системный идентификатор — UUID (или GUID). Когда мы отправляем данные в ПФР (СФР), фонд фиксирует запись именно по этому номеру. Если мы хотим отменить мероприятие, мы должны отправить файл, в котором в теге МероприятиеОтменяемое будет указан именно тот GUID, который был подан ранее.

Если кадровик внес изменения в документ-основание (например, в «Прием на работу») после того, как отчет был сдан, или если данные в СБиС правились вручную, возникает разрыв связи. 1С генерирует новый GUID, а старый «забывает» или не может сопоставить с документом. Выясним причину, почему простые способы исправления часто не работают.

Где хранятся GUID мероприятий в 1С:ЗУП

Важно понимать, что GUID мероприятия — это не просто строчка в документе СЗВ-ТД. В программе 1С:ЗУП 3.1 эти данные распределены по нескольким объектам:

  1. Регистр сведений «Мероприятия трудовой деятельности» — здесь хранятся все записи, которые программа считает актуальными для кадрового учета.
  2. Регистр сведений «Мероприятия трудовой деятельности переданные» — здесь фиксируется связь между конкретным мероприятием и документом СЗВ-ТД, который был отправлен и принят фондом.
  3. Документ СЗВ-ТД — является «оболочкой» для выгрузки в XML, данные в который подтягиваются из вышеуказанных регистров.

Если мы изменим идентификатор только в документе, при любом пересчете или перезаполнении программа обратится к источнику данных (регистру) и вернет старое значение. Поэтому исправлять нужно именно источник.

Способ 1. Использование штатной обработки «Импорт сведений о трудовой деятельности»

Это наиболее правильный и безопасный метод, появившийся в версиях ЗУП начиная с 3.1.14.183. Если у вас есть XML-файлы, которые были успешно приняты фондом через СБиС, программа может сама загрузить из них правильные идентификаторы.

Разберем алгоритм действий по шагам:

  1. Перейдем в раздел Кадры — Сервис — Импорт сведений о трудовой деятельности.
  2. В открывшемся окне выберем каталог, в котором лежат XML-файлы ваших отчетов СЗВ-ТД и обязательно файлы положительных протоколов к ним.
  3. Проанализируем состояние: программа должна увидеть файлы и отметить их доступными для загрузки. Обратите внимание: если кнопка «Загрузить» недоступна, проверьте наличие файлов протоколов (PFR-700...). Без подтверждения принятия фондом программа не запишет данные в регистр «Переданные».
  4. Нажмем «Загрузить». Программа создаст документы СведенияОТрудовойДеятельностиРаботниковСЗВ_ТД и, что самое важное, документы РегистрацияТрудовойДеятельности, в которых будут проставлены именно те GUID, которые числятся в базе ПФР.

После этой процедуры 1С «узнает» правильные идентификаторы, и вы сможете корректно сформировать отменяющие записи.

Способ 2. Ручное редактирование идентификатора в документе и регистрация изменений

Если по какой-то причине автоматический импорт невозможен, проанализируем ситуацию с ручным исправлением. Рассмотрим, как это сделать правильно, чтобы программа не «ругалась» на незарегистрированные мероприятия.

Просто включить отображение поля Идентификатор через «Изменить форму» в документе СЗВ-ТД недостаточно. Чтобы изменения вступили в силу, нужно выполнить следующие действия:

  1. В документе СЗВ-ТД снимем флаг «Документ принят в ПФР (не редактируется)».
  2. Через меню «Ещё» — «Изменить форму» в группе «Мероприятия» найдем поле «Идентификатор» и установим флажок видимости.
  3. Вставим нужный GUID из СБиС в это поле.
  4. Однако, как мы помним из обсуждения, 1С может выдать ошибку: «Среди мероприятий есть не зарегистрированные». Это происходит потому, что в регистре сведений все еще хранится старый идентификатор.

Для исправления этой коллизии нам придется воспользоваться документом «Регистрация трудовой деятельности». Мы можем создать в нем запись-исправление, вручную указав нужный GUID, предварительно включив его видимость через настройки формы документа.

Способ 3. Программное исправление GUID через консоль кода

Если мероприятий много, эффективнее всего написать небольшую обработку или воспользоваться консолью запросов с возможностью выполнения кода. Нам нужно заменить значение типа УникальныйИдентификатор в двух регистрах. Рассмотрим пример логики на языке 1С:


// Пример кода для изменения GUID в регистрах сведений
Процедура ИсправитьGUIDМероприятия(СтарыйGUIDСтрокой, НовыйGUIDСтрокой)
    
    GUID_ДляПоиска = Новый УникальныйИдентификатор(СтарыйGUIDСтрокой);
    GUID_Новый = Новый УникальныйИдентификатор(НовыйGUIDСтрокой);
    
    // 1. Работаем с основным регистром мероприятий
    НаборЗаписей = РегистрыСведений.МероприятияТрудовойДеятельности.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.ИдентификаторМероприятия.Установить(GUID_ДляПоиска);
    НаборЗаписей.Прочитать();
    
    Если НаборЗаписей.Количество() > 0 Тогда
        Для Каждого Запись Из НаборЗаписей Цикл
            Запись.ИдентификаторМероприятия = GUID_Новый;
        КонецЦикла;
        НаборЗаписей.Записать();
    КонецЕсли;

    // 2. Работаем с регистром переданных мероприятий
    НаборПереданные = РегистрыСведений.МероприятияТрудовойДеятельностиПереданные.СоздатьНаборЗаписей();
    НаборПереданные.Отбор.ИдентификаторМероприятия.Установить(GUID_ДляПоиска);
    НаборПереданные.Прочитать();
    
    Если НаборПереданные.Количество() > 0 Тогда
        Для Каждого Запись Из НаборПереданные Цикл
            Запись.ИдентификаторМероприятия = GUID_Новый;
        КонецЦикла;
        НаборПереданные.Записать();
    КонецЕсли;
    
КонецПроцедуры

Важно: идентификатор в базе 1С хранится не как строка, а как объект УникальныйИдентификатор. При использовании группового изменения реквизитов убедитесь, что вы включили отображение служебных полей в настройках обработки.

Проблема порядка тегов в XML

Рассмотрим также технический нюанс, упомянутый в обсуждении: порядок тегов Мероприятие и МероприятиеОтменяемое в XML-файле. Согласно XSD-схеме ПФР, важна не последовательность этих блоков внутри файла, а их наличие и корректность заполнения атрибутов. СБиС может менять их местами при визуализации, но для приемного шлюза фонда это обычно не является критической ошибкой. Основная проблема импорта в СБиС кроется именно в несовпадении UUID, из-за чего система «схлопывает» записи или считает их дублями.

Рекомендации по предотвращению проблемы

Чтобы в будущем не прибегать к правке GUID вручную, рекомендуем придерживаться следующих правил:

Таким образом, мы выяснили, что исправление GUID — задача трудоемкая, требующая понимания структуры регистров. Наилучшим вариантом является использование штатного импорта, а при его невозможности — аккуратная правка регистров сведений программными средствами или специализированными обработками.

← На главную