Как исправить ошибку «Неверные параметры Перечисление.ТипыЗапасов.Материал» при свертке базы 1С:УТ 11.3

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

При выполнении стандартной процедуры свертки информационной базы в конфигурации Управление торговлей 11.3 (например, релиз 11.3.1.142) пользователи часто сталкиваются с критической ошибкой. Процесс прерывается на этапе формирования запроса, и платформа выдает сообщение: Ошибка при вызове метода контекста (Выполнить). Основная причина кроется в обращении к несуществующему значению перечисления в программном коде. Рассмотрим подробнее, почему это происходит и как устранить проблему несколькими способами.

Причина возникновения ошибки

Разберем ситуацию: начиная с версии 11.3, архитектура решения была значительно переработана для унификации с ERP-системами. В рамках этих изменений структура перечисления ТипыЗапасов была скорректирована: значение Материал было удалено или переименовано, так как логика разделения товаров и материалов теперь реализуется через другие механизмы (например, через категории номенклатуры или использование в производстве).

Проблема заключается в том, что встроенная обработка СверткаИнформационнойБазы может содержать жестко прописанный (hardcoded) текст запроса, который по-прежнему пытается обратиться к значению Перечисление.ТипыЗапасов.Материал. Поскольку в метаданных актуального релиза этого значения нет, платформа не может скомпилировать запрос и выдает ошибку в строке 1527 модуля объекта обработки.

Способ 1. Исправление программного кода в конфигураторе

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

  1. Откроем базу в режиме Конфигуратор.
  2. Найдем в дереве объектов обработку СверткаИнформационнойБазы.
  3. Перейдем в Модуль объекта и найдем строку 1527 (номер может незначительно отличаться в зависимости от конкретного минорного релиза).
  4. Найдем фрагмент кода, где формируется текст запроса. Он выглядит примерно так:

ТекстЗапроса = 
"ВЫБРАТЬ
|   ...
|ГДЕ
|   ВидЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Материал)";
  1. Заменим обращение к Материал на Товар или другое актуальное значение, предусмотренное логикой вашей базы. В большинстве случаев замена на ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Товар) позволяет обработке успешно продолжить работу.
  2. Сохраним изменения и запустим свертку заново.

Способ 2. Использование расширения конфигурации

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

  1. Создадим новое расширение в конфигураторе (меню Конфигурация — Расширения конфигурации).
  2. Добавим в расширение обработку СверткаИнформационнойБазы.
  3. Перенесем метод, содержащий ошибочный запрос, в модуль расширения, используя аннотацию &Вместо.
  4. В тексте запроса внутри расширения внесем правку, удалив обращение к Перечисление.ТипыЗапасов.Материал.

Важный момент: если ваша организация не использует производство и разделение на материалы вам не требуется, данное условие в запросе можно просто закомментировать или переписать логику под Партионный учет 2.0, который стал основным в ветке 11.3.

Способ 3. Альтернативный метод свертки (Перенос остатков)

Выясним ситуацию: стандартная свертка в УТ 11 часто работает некорректно из-за сложности регистров накопления и функциональных опций. Если исправление кода не помогает или возникают новые ошибки, рассмотрим более надежный вариант — перенос остатков в чистую базу.

  1. Создадим пустую информационную базу того же релиза (11.3.1.142).
  2. Воспользуемся типовой обработкой Выгрузка и загрузка данных XML или настроим синхронизацию.
  3. Перенесем только необходимые справочники и остатки по складам, денежным средствам и взаиморасчетам на дату свертки.

Такой подход позволяет полностью исключить накопленные «хвосты» в регистрах и ошибки, связанные с несоответствием старых алгоритмов свертки новой архитектуре Партионного учета 2.0.

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

Проанализируем дополнительные факторы, которые могут влиять на процесс:

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

← На главную