Как исправить ошибки "Не задано значение параметра Выполняемые" и "Не заполнена дата начала границы курсов" при обновлении УТ 11.5?

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

Обновление конфигураций 1С:Управление Торговлей (УТ) 11.5 — процесс, который нередко сопровождается сложностями, особенно при переходе через значительное количество релизов или при наличии скрытых проблем в данных. В этой статье мы подробно разберем ситуацию, возникшую при обновлении с версии 11.5.12.270 на 11.5.17.153. Пользователи столкнулись с двумя типами ошибок: программной недоработкой самого релиза и ошибкой, вызванной некорректными данными в базе. Отметим, что данный релиз вообще богат на сюрпризы: помимо разбираемых ниже ошибок, администраторы часто жалуются, что при переходе на УТ 11.5.17 поплыли остатки.

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

Ошибка 1: "Не задано значение параметра Выполняемые"

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

Симптомы:
В журнале регистрации или в форме обновления вы видите следующую ошибку:


Ошибка при вызове метода контекста (Выполнить)
...
{(13, 37)}: Не задано значение параметра "Выполняемые"
И ОбработчикиОбновления.Порядок В (&Выполняемые)

Эта ошибка возникает в процедуре РегистрыСведений.ЗаданияКРаспределениюРасчетов.ОбработатьДанныеДляПереходаНаНовуюВерсию.

Причина:
Это известная ошибка релиза 11.5.17.153. Разработчики конфигурации допустили неточность в коде обработчика обновления. В тексте запроса используется параметр &Выполняемые, однако в коде перед выполнением этого запроса установка значения этого параметра пропущена (строка кода отсутствует).

Решение:
Существует два основных способа решения этой проблемы:

  1. Установка патча (Рекомендуемый способ).
    Фирма 1С выпустила специальное исправление для этого релиза. Нам необходимо скачать и установить патч с номером EF_00_00675031. После установки патча код обработчика будет скорректирован "на лету", параметр будет инициализирован корректно, и обновление продолжится.
  2. Обновление на более новый релиз.
    Если у вас есть возможность, можно пропустить проблемный релиз 11.5.17.153 и обновиться сразу на исправленную версию, например, на 11.5.17.155 или более позднюю. В этих версиях ошибка уже устранена на уровне конфигурации.

Ошибка 2: "Не заполнена дата начала границы курсов"

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

Симптомы:
Обработчики обновления прерываются с сообщением:


{ОбщийМодуль.ОперативныеВзаиморасчетыСервер.Модуль(5178)}: Не заполнена дата начала границы курсов.
{ОбщийМодуль.ОперативныеВзаиморасчетыСервер.Модуль(13135)}:ВызватьИсключение(НСтр("ru = 'Не заполнена дата начала границы курсов.'"));

Причина:
Эта ошибка связана с переходом на новую архитектуру взаиморасчетов (так называемые "Онлайн-взаиморасчеты" или "Архитектура 2.0"). Система пытается пересчитать данные и определить курс валюты на дату операции.

В общем модуле ОперативныеВзаиморасчетыСервер существует проверка корректности даты. Алгоритм ожидает, что дата операции должна быть "разумной" (обычно не пустой и больше 01.01.1980 или 01.01.2000). Если в базе данных есть документы с ошибочно введенными датами (например, опечатка в годе), система не может корректно определить границу курсов и вызывает исключение.

В нашем примере реальной причиной оказался документ с датой 17.07.0202 (202 год нашей эры). Такая дата технически допустима для платформы 1С, но логика бизнес-процессов УТ не умеет работать с курсами валют за этот период.

Диагностика и поиск проблемного документа:
Давайте разберем, как найти такой документ. Есть два пути: через отладчик и через консоль запросов.

Способ А: Использование отладчика (если обновление уже запущено)

Если вы находитесь в процессе обновления и у вас есть доступ к конфигуратору: для этого есть инструмент пошаговой отладки и просмотра стека вызовов.

  1. Запустите обновление в режиме отладки.
  2. В конфигураторе откройте ОбщийМодуль.ОперативныеВзаиморасчетыСервер.
  3. Найдите строку, где вызывается исключение (по тексту ошибки ВызватьИсключение(НСтр("ru = 'Не заполнена дата начала границы курсов.'"))).
  4. Поставьте точку останова на этой строке.
  5. Запустите выполнение обработчиков обновления.
  6. Когда выполнение остановится, посмотрите стек вызова и значения переменных. Вы увидите дату, которая вызывает ошибку (например, '01.10.0202').
  7. Поднявшись по стеку вызовов выше, можно найти ссылку на конкретный объект (документ или запись регистра), который обрабатывается в данный момент. Для детального анализа состояния базы по этому объекту может пригодиться обработка Записи регистров по любым объектам.

Способ Б: Использование Консоли запросов (превентивный метод)

Если вы хотите найти проблему без сложной отладки, можно воспользоваться консолью запросов (удобно через инструментарий для анализа структуры данных и запросов) или групповой обработкой справочников и документов 8.3, отсортировав документы по дате.

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


ВЫБРАТЬ ПЕРВЫЕ 100
    Ссылка,
    Дата
ИЗ
    Документ.ПоступлениеБезналичныхДенежныхСредств // Или другой подозреваемый тип документа
ГДЕ
    Дата < ДАТАВРЕМЯ(2000, 1, 1)
УПОРЯДОЧИТЬ ПО
    Дата

В обсуждаемом случае виновником был документ Поступление безналичных ДС. Рекомендуется проверить основные товарные и финансовые документы: СписаниеБезналичныхДенежныхСредств, РеализацияТоваровУслуг, ПоступлениеТоваровУслуг.

Решение:
Найдя документ с некорректной датой (например, 0202 год вместо 2022), необходимо исправить дату на верную. После исправления данных перезапустите процедуру обновления — ошибка должна исчезнуть.

Комплексный алгоритм действий

Чтобы успешно завершить обновление в подобных ситуациях, выполним следующие шаги:

  1. Анализ версии. Убедитесь, что вы обновляетесь на стабильный релиз. Если это 11.5.17.153, сразу подготовьте патчи.
  2. Установка патчей. Скачайте и установите патч EF_00_00675031 перед запуском процедур обработки данных. Это предотвратит ошибку с параметром &Выполняемые.
  3. Проверка данных (ТИИ). Перед обновлением крайне рекомендуется выполнить "Тестирование и исправление" информационной базы. Часто проверка логической целостности может выявить битые ссылки (в таких случаях помогает восстановление битых ссылок заменой GUID) или некорректные записи — для этого есть поиск и безопасное удаление битых ссылок.
  4. Поиск аномалий в датах. Если обработчики падают на ошибках курсов валют или периодов, ищите документы с датами из далекого прошлого (0001 год, 0202 год и т.д.). Исправьте их вручную. Если обычное редактирование невозможно, может потребоваться универсальная корректировка остатков регистра накопления — для этого подойдёт автоматизация заполнения корректировки регистров 1С.
  5. Перезапуск обработчиков. После исправления ошибок можно снова запустить отложенные обработчики обновления через: НСИ и администрирование – Обслуживание – Результаты обновления программы.

Помните, что "прыжок" через большое количество релизов (например, с 11.5.12 сразу на 11.5.17) увеличивает риск возникновения подобных коллизий. В таких случаях всегда имейте под рукой актуальную резервную копию базы данных.

← На главную