При выполнении типового переноса данных из конфигурации «1С:Зарплата и Кадры 7.7» в «1С:Зарплата и Управление Персоналом 8» (редакция 2.5) специалисты часто сталкиваются с ошибкой записи наборов записей регистров в документе Перенос данных. Процесс обмена прерывается системным сообщением:
Ошибка записи объекта: Значение поля "Код вычета" не может быть пустым! (Регистр накопления: Предоставленные стандартные и социальные вычеты по НДФЛ)
В результате ошибки вкладка с предоставленными стандартными вычетами физических лиц в документе Перенос данных остается незаполненной, что влечет за собой некорректный расчет налога на доходы физических лиц нарастающим итогом с начала налогового периода. Разберем причины возникновения этой неполадки и подробно рассмотрим проверенные способы её устранения.
Выясним причину сбоя, проанализировав работу механизма конвертации данных:
114, 115 введены коды вида 126/114, 127/115). В правилах переноса поиск элемента выполняется по строгому соответствию кода. Если старый код из 7.7 не найден в справочнике 8-ки, метод поиска возвращает пустую ссылку (СправочникСсылка.ВычетыНДФЛ.ПустаяСсылка()). Измерение регистра накопления Предоставленные стандартные и социальные вычеты по НДФЛ имеет запрет на пустые значения, из-за чего платформа блокирует запись объекта.ПослеЗагрузкиОбъекта для ПКО ГрафикиРаботыВсеДанные) присутствует синтаксическая ошибка форматирования запроса из-за разорванного строкового литерала, что также прерывает загрузку.Рассмотрим наиболее надежный и простой метод, не требующий ручного программирования правил конвертации. Поскольку правила обмена не обновлялись под новые форматы кодов вычетов, перенос выполняется в конфигурацию-приемник того релиза, под который создавались правила, с последующим штатным обновлением информационной базы.
2.5.100.1 или для бюджетных учреждений ЗКБУ 1.0.102.1)..cfu или .cf) до актуального рабочего релиза.ОбработкаОбновленияИБ) автоматически перенесут старые коды вычетов на новые актуальные значения во всех регистрах и документах Перенос данных.Если разворачивать промежуточный релиз неудобно, применим способ сопоставления кодов вычетов непосредственно в рабочей или чистой целевой базе актуального релиза перед стартом обмена.
Предприятие — Справочники — Вычеты по НДФЛ).126/114 изменим на 114;
127/115 изменим на 115;
126/114, 127/115 и т.д.).Проанализируем информационную базу ЗиК 7.7 на наличие некорректных записей перед выполнением выгрузки:
Операции — Справочники — Виды вычетов. Убедимся, что у всех используемых элементов корректно проставлен код вычета и нет пустых строк. Помним, что реквизиты в 7.7 являются периодическими, поэтому код должен быть задан на весь период выгрузки.Сотрудники и параллельно откроем подчиненный справочник вычетов сотрудника по НДФЛ. Проверим сотрудников, у которых есть право на стандартные вычеты: у них должен быть выбран конкретный вычет и задана дата начала действия (дата окончания может оставаться пустой).ZiK_ZUP.ert и файл правил ZiK_ZUP.xml из одного и того же комплекта поставки релиза. Использование разнородных версий приводит к ошибкам вида {Глобальный модуль}: Неверный идентификатор колонки! при вызове методов поиска по таблицам значений.Разберем вариант исправления логики на уровне файла правил обмена. Если требуется гарантировать заполнение поля даже при отсутствии явного соответствия, настроим подстановку значения по умолчанию.
В конфигурации «1С:Конвертация данных 2.1» или непосредственно в правилах обмена перед выгрузкой строк коллекции для регистров НДФЛСведенияОДоходах и НДФЛПредоставленныеСтандартныеВычетыФизЛиц добавим проверку:
Если СокрЛП(ОбъектКоллекции.КодВычета) = "" Тогда
// Заменяем пустое значение кодом по умолчанию или служебным вычетом
ОбъектКоллекции.КодВычета = "114";
КонецЕсли;
В обработчике события ПослеЗагрузки для регистра накопления также можно прописать программную установку ссылки на элемент справочника:
Если Не ЗначениеЗаполнено(Объект.КодВычета) Тогда
Объект.КодВычета = Справочники.ВычетыНДФЛ.НайтиПоКоду("114");
КонецЕсли;
Если в процессе загрузки возникает ошибка вида:
Ошибка при вызове метода контекста (Выполнить): {(1, 18)}: Синтаксическая ошибка "| ГрафикиРаботыПоВидамВремени.Месяц"
Причина заключается в наличии лишнего символа вертикальной черты | в начале текста запроса внутри обработчика события ПослеЗагрузкиОбъекта для ПКО ГрафикиРаботыВсеДанные.
Для исправления откроем файл правил ZiK_ZUP.xml в текстовом редакторе, найдем блок обработчика указанного правила и приведем строку запроса к корректному синтаксису 1С:
ВЫБРАТЬ ПЕРВЫЕ 1
ГрафикиРаботыПоВидамВремени.Месяц КАК Месяц
ИЗ
РегистрСведений.ГрафикиРаботыПоВидамВремени КАК ГрафикиРаботыПоВидамВремени
ГДЕ
ГрафикиРаботыПоВидамВремени.ГрафикРаботы = &ГрафикРаботы
И ГрафикиРаботыПоВидамВремени.План
И ГрафикиРаботыПоВидамВремени.ВидУчетаВремени = ЗНАЧЕНИЕ(Перечисление.ВидыУчетаВремени.ПоДням)
УПОРЯДОЧИТЬ ПО
Месяц УБЫВ
После сохранения исправленного XML-файла повторим операцию загрузки данных.