Как исправить ошибку «Задано неправильное имя атрибута структуры» при переносе из ЗКБУ 1.0 в ЗКГУ 3.1

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

Переход с устаревшей конфигурации «Зарплата и кадры бюджетного учреждения 1.0» (ЗКБУ) на современную «Зарплата и кадры государственного учреждения 3.1» (ЗКГУ) — процесс трудоемкий и нередко сопровождающийся техническими сбоями. Одной из самых неприятных ошибок является внезапное прерывание выгрузки на этапе обработки кадровых данных. Рассмотрим ситуацию, когда система выдает сообщение: Ошибка в обработчике события ПередОбработкойПравилаВыгрузки ПВД = НачальнаяШтатнаяРасстановка с пояснением Задано неправильное имя атрибута структуры.

В этой статье мы разберем причины возникновения данной ошибки, проанализируем механизм работы правил обмена и выработаем алгоритм поиска и исправления проблемных данных в исходной базе.

Технический анализ ошибки

Для начала проанализируем текст ошибки. Сообщение Задано неправильное имя атрибута структуры в контексте работы метода Вставить означает, что программный код пытается использовать в качестве ключа структуры строку, которая не соответствует правилам именования переменных в 1С. Ключ структуры не может:

  1. Начинаться с цифры.
  2. Содержать пробелы.
  3. Содержать специальные символы (точки, запятые, знаки №, %, кавычки и т.д.).
  4. Быть пустой строкой.

При переносе данных по правилу НачальнаяШтатнаяРасстановка, алгоритм собирает показатели начислений сотрудников (такие как «Оклад», «Надбавка», «Стаж») и помещает их в структуру для последующей передачи в ЗКГУ. В качестве ключа часто используется Идентификатор показателя из справочника Показатели схем мотивации. Если в ЗКБУ 1.0 идентификатор заполнен некорректно или не заполнен вовсе, выгрузка завершится аварией.

Шаг 1. Локализация «проблемных» сотрудников

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

Алгоритм действий:

  1. Создадим копию рабочей базы ЗКБУ 1.0.
  2. В копии базы воспользуемся инструментом группового создания документов (или подбором в документе Увольнение из организации).
  3. Массово «уволим» часть сотрудников датой, предшествующей дате начала эксплуатации новой программы (например, 31.12.2019).
  4. Попробуем запустить перенос снова.

Логика проста: уволенные сотрудники не попадают в объект НачальнаяШтатнаяРасстановка. Если после «увольнения» половины штата ошибка исчезла, значит, проблемный объект находился в этой половине. Разделяя список пополам (метод дихотомии), мы довольно быстро найдем те несколько записей, которые блокируют весь процесс.

Шаг 2. Проверка показателей и начислений

После того как список сотрудников определен (в практике коллег это часто группа из 5-10 человек), проанализируем их плановые начисления. Выясним причину, по которой код формирования структуры дает сбой.

Рассмотрим пример того, как может выглядеть некорректный код в обработчике (условно):


// Пример логики, приводящей к ошибке
Для Каждого СтрокаНачисления Из ПлановыеНачисления Цикл
    КлючСтр = СтрокаНачисления.Показатель.Идентификатор;
    СтруктураПоказателей.Вставить(КлючСтр, СтрокаНачисления.Значение); 
    // Если КлючСтр = "1_Ставка" или пустой - будет ошибка!
КонецЦикла;

На что обратить внимание в ЗКБУ 1.0:

Шаг 3. Использование внешних правил обмена

Часто помощник перехода использует встроенные в конфигурацию правила, которые могут быть не самыми актуальными. Проанализируем возможность выгрузки через универсальный обмен данными.

Попробуем найти файл правил конвертации (обычно он идет в комплекте поставки ЗКГУ в каталоге шаблонов tmplts). Загрузим эти правила в обработку УниверсальныйОбменДаннымиXML в исходной базе ЗКБУ 1.0. При выгрузке через эту обработку ошибка может отобразиться более детально, указав конкретный объект или ссылку, на которой произошел останов.

Шаг 4. Исправление данных и завершение переноса

Когда «виновники» найдены, у нас есть два пути решения проблемы:

Вариант А: Исправление в исходной базе (Рекомендуемый)

Если мы обнаружили дубли начислений или некорректные идентификаторы, их следует исправить непосредственно в ЗКБУ 1.0. Удалим лишние записи в плановых начислениях, приведем идентификаторы к стандартному виду (только латиница и подчеркивания, начинается с буквы). После этого запустим рекомендованный способ переноса заново.

Вариант Б: Исключение и ручной ввод

Если сотрудников мало (например, 7 человек из 1000), а сроки поджимают, можно временно «исключить» их из переноса (например, пометив на удаление их кадровые документы или используя метод с временным увольнением в копии). После успешного переноса основной массы данных, информацию по этим сотрудникам в ЗКГУ 3.1 можно внести вручную документом Данные на начало эксплуатации или Начальная штатная расстановка.

Важное замечание: При ручном вводе данных в 3.1 обратите внимание на настройку начислений. Если в новой базе у вида расчета не стоит флаг Разрешить несколько начислений в одном месяце, то попытка перенести два одинаковых начисления (которые и вызвали ошибку) все равно не увенчается успехом.

Подводя итог, отметим, что ошибка Задано неправильное имя атрибута структуры — это всегда сигнал о нечистоте данных в исходной базе. Тщательная проверка справочников показателей и регистров плановых начислений позволяет решить эту проблему программно, сохранив целостность переносимой информации.

← На главную