При выполнении стандартной процедуры свертки информационной базы в конфигурации Управление торговлей 11.3 (например, релиз 11.3.1.142) пользователи часто сталкиваются с критической ошибкой. Процесс прерывается на этапе формирования запроса, и платформа выдает сообщение: Ошибка при вызове метода контекста (Выполнить). Основная причина кроется в обращении к несуществующему значению перечисления в программном коде. Рассмотрим подробнее, почему это происходит и как устранить проблему несколькими способами.
Разберем ситуацию: начиная с версии 11.3, архитектура решения была значительно переработана для унификации с ERP-системами. В рамках этих изменений структура перечисления ТипыЗапасов была скорректирована: значение Материал было удалено или переименовано, так как логика разделения товаров и материалов теперь реализуется через другие механизмы (например, через категории номенклатуры или использование в производстве).
Проблема заключается в том, что встроенная обработка СверткаИнформационнойБазы может содержать жестко прописанный (hardcoded) текст запроса, который по-прежнему пытается обратиться к значению Перечисление.ТипыЗапасов.Материал. Поскольку в метаданных актуального релиза этого значения нет, платформа не может скомпилировать запрос и выдает ошибку в строке 1527 модуля объекта обработки.
Проанализируем шаги, необходимые для прямой правки кода. Этот метод требует снятия обработки с поддержки или внесения изменений в основную конфигурацию. Рекомендуем предварительно создать резервную копию базы.
СверткаИнформационнойБазы.
ТекстЗапроса =
"ВЫБРАТЬ
| ...
|ГДЕ
| ВидЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Материал)";
Материал на Товар или другое актуальное значение, предусмотренное логикой вашей базы. В большинстве случаев замена на ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Товар) позволяет обработке успешно продолжить работу.Чтобы не вносить изменения непосредственно в типовую конфигурацию и сохранить возможность беспрепятственного обновления, воспользуемся механизмом расширений. Это более безопасный и современный метод решения подобных проблем.
СверткаИнформационнойБазы.&Вместо.Перечисление.ТипыЗапасов.Материал.Важный момент: если ваша организация не использует производство и разделение на материалы вам не требуется, данное условие в запросе можно просто закомментировать или переписать логику под Партионный учет 2.0, который стал основным в ветке 11.3.
Выясним ситуацию: стандартная свертка в УТ 11 часто работает некорректно из-за сложности регистров накопления и функциональных опций. Если исправление кода не помогает или возникают новые ошибки, рассмотрим более надежный вариант — перенос остатков в чистую базу.
Такой подход позволяет полностью исключить накопленные «хвосты» в регистрах и ошибки, связанные с несоответствием старых алгоритмов свертки новой архитектуре Партионного учета 2.0.
Проанализируем дополнительные факторы, которые могут влиять на процесс:
Тестирование и исправление (ТиИ) через конфигуратор, выбрав пункты проверки логической и ссылочной целостности.Помните, что свертка — это необратимая операция, поэтому все действия по корректировке кода Запрос.Выполнить() должны проводиться строго на копии базы с последующей проверкой сформированных документов Ввод начальных остатков.