Ошибка «Формула не заполнена» при загрузке данных из Бухгалтерии 3.0 в ЗУП 3.1: как исправить

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

Перенос данных из конфигурации «1С:Бухгалтерия предприятия 3.0» в «1С:Зарплата и управление персоналом 3.1» — это стандартная, но технически сложная процедура. Часто пользователи и технические специалисты сталкиваются с тем, что на завершающей стадии загрузки (обычно это этап 3 из 3) процесс прерывается критической ошибкой: Ошибка записи объекта для типа Начисление с пояснением Формула не заполнена.

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

Выясним причину возникновения ошибки

Разберем ситуацию с точки зрения архитектуры данных. В программе «1С:Бухгалтерия предприятия» (БП) учет зарплаты реализован в упрощенном виде. Виды начислений там зачастую представляют собой просто наименование со ссылкой на статью затрат и категорию дохода для НДФЛ. В «1С:Зарплата и управление персоналом» (ЗУП) всё иначе: каждое Начисление обязательно должно иметь математическую формулу расчета. Даже если это фиксированная сумма, в системе должна быть прописана логика Результат = ФиксированнаяСумма.

Когда встроенный механизм обмена УниверсальныйОбменДаннымиXML пытается создать новое начисление в ЗУП на основании данных из БП, он может не найти подходящего шаблона формулы. Если реквизит Формула остается пустым, попытка выполнить метод Записать() приводит к отказу, так как проверка на заполненность обязательных полей не проходит. Именно поэтому в логе ошибки мы видим Объект = <> — это означает, что объект еще не был физически записан в базу данных и не получил уникальный идентификатор (ссылку).

Шаг 1: Обновление конфигураций — фундамент успеха

Проанализируем версии программ. Ошибки в модуле Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(6100) часто связаны с тем, что правила обмена, зашитые в конфигурацию, устарели и не соответствуют текущей структуре метаданных. Прежде чем приступать к сложным манипуляциям, выполним следующие действия:

  1. Обновим «1С:Бухгалтерия предприятия» до самого последнего актуального релиза.
  2. Обновим «1С:Зарплата и управление персоналом» до актуального релиза. Очень важно, чтобы даты выпуска релизов были максимально близки друг к другу.
  3. Проверим версию платформы «1С:Предприятие». Она должна быть не ниже минимально рекомендованной для обоих релизов.

Часто после обновления механизмы сопоставления объектов начинают работать корректно, и стандартные начисления (такие как «Оплата по окладу» или «Премия») получают свои формулы автоматически.

Шаг 2: Подготовка данных в исходной базе БУХ 3.0

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

  1. Зайдем в раздел Зарплата и кадры — Настройки зарплаты — Начисления.
  2. Внимательно просмотрим список. Нас интересуют элементы, у которых не заполнен способ отражения в учете или вид дохода по НДФЛ.
  3. Если обнаружены дубли (например, два начисления с названием «Оклад»), необходимо выяснить, какое из них используется в документах, а второе — пометить на удаление.
  4. Особое внимание уделим начислениям для договорников ГПХ. Если в БП созданы начисления вручную, программа переноса может не понять, как их интерпретировать в ЗУП.

Важный совет: Перед выгрузкой рекомендуется запустить тестирование и исправление информационной базы БП (через Конфигуратор) с включенными галочками «Проверка логической целостности» и «Поиск ссылок на несуществующие объекты».

Шаг 3: Использование Группового изменения реквизитов

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

Мы можем временно отключить проверку или принудительно прописать формулу. Разберем, как это сделать через типовую обработку:

  1. В ЗУП откроем Администрирование — Обслуживание — Корректировка данных — Групповое изменение реквизитов.
  2. Выберем тип объекта Начисление.
  3. Найдем реквизит Формула (или Выражение в некоторых редакциях).
  4. Установим стандартное значение для проблемных записей. Например: Результат = ФиксированнаяСумма.

Однако, если объект вообще не записывается (как в тексте ошибки автора), этот метод сработает только в том случае, если мы создадим элементы заранее или внесем изменения в правила обмена.

Шаг 4: Анализ через отладчик для программистов

Если вы обладаете навыками разработки, проанализируем точку отказа. Ошибка возникает в строке 6100 модуля УниверсальныйОбменДаннымиXML. Это стандартная точка, где происходит попытка записи объекта:


// Фрагмент типичного кода обработки обмена
Попытка
    Объект.Записать();
Исключение
    // Здесь формируется текст ошибки: "Не удалось записать: Начисление!"
    Инфо = ИнформацияОбОшибке();
    ВызватьИсключение Инфо.Описание;
КонецПопытки;

Чтобы понять, какое именно начисление вызывает сбой, мы можем поставить точку останова в модуле объекта обработки перед вызовом Объект.Записать(). В табло отладчика посмотрим значение переменной Объект.Наименование. Это позволит нам найти конкретный элемент в исходной базе БП и исправить его настройки или удалить его, если он не нужен для учета.

Шаг 5: Альтернативный способ переноса — Синхронизация

Рассмотрим еще один важный момент. Автор вопроса использует «Перенос данных из прежней программы» на начальном экране. Этот механизм выполняет разовую полную выгрузку через XML. Если он дает сбой, попробуем задействовать механизм Синхронизации данных:

  1. В БП 3.0 настроим синхронизацию с ЗУП 3.1 через Администрирование — Синхронизация данных.
  2. При первой синхронизации программа предложит сопоставить данные.
  3. Этот механизм более гибкий, так как позволяет пропускать проблемные объекты или сопоставлять их вручную с уже существующими в ЗУП предопределенными начислениями.

Подведем итоги

Появление ошибки Формула не заполнена — это сигнал о том, что в исходной базе «1С:Бухгалтерия» есть начисления, которые «не нравятся» строгому контролю «1С:ЗУП». Для решения проблемы мы рекомендуем:

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

← На главную