Как исправить ошибку проведения реализации в 1С:Комплексная автоматизация 2.4 и 1С:Управление торговлей 11, связанную с «Заказом давальца»

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

В процессе работы с программными продуктами фирмы «1С» на единой ERP-платформе пользователи часто сталкиваются с неожиданным поведением системы после установки автоматических обновлений или исправлений (патчей). Одной из наиболее резонансных проблем стала ошибка при проведении документа РеализацияТоваровУслуг, которая полностью блокирует операционную деятельность компании. При попытке провести документ система выдает аварийное сообщение, ссылающееся на несуществующий или отключенный объект конфигурации — ЗаказДавальца.

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

Симптомы проблемы и текст ошибки

Сбой проявляется внезапно, чаще всего после очередного автоматического обновления или регламентной установки исправлений (патчей) от фирмы «1С». При попытке провести документ Реализация товаров и услуг (или при перепроведении старых документов) система аварийно завершает транзакцию и выводит на экран следующее диагностическое сообщение:

Документ Реализация товаров и услуг 0000-000032 от 20.01.2020 не проведен: {(47, 39)}: Неверные параметры "Документ.ЗаказДавальца.ПустаяСсылка" И Таблица.ЗаказКлиента <> ЗНАЧЕНИЕ(Документ.ЗаказДавальца.ПустаяСсылка)

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

Выясняем техническую причину: почему возникает сбой?

Для того чтобы понять природу этой ошибки, нам необходимо проанализировать архитектуру современных решений «1С». Программы «1С:ERP Управление предприятием», «1С:Комплексная автоматизация» (КА) и «1С:Управление торговлей» (УТ) разрабатываются на базе единого программного ядра. Код многих общих модулей, запросов и механизмов проведения документов (особенно в контуре взаиморасчетов) у них абсолютно идентичен.

В начале 2020 года фирма «1С» выпустила оперативное исправление — патч с идентификатором EF_00_00270469. Данный патч предназначался для исправления локальной ошибки в механизме расчетов с клиентами. Однако при написании кода исправления разработчики допустили критическую ошибку: они жестко прописали в тексте одного из SQL-подобных запросов обращение к пустому значению документа давальческой схемы:


// Фрагмент некорректного запроса в патче
ВЫБРАТЬ
    Таблица.Ссылка КАК Ссылка,
    Таблица.ЗаказКлиента КАК ЗаказКлиента
ИЗ
    РегистрНакопления.РасчетыСКлиентами КАК Таблица
ГДЕ
    Таблица.ЗаказКлиента <> ЗНАЧЕНИЕ(Документ.ЗаказДавальца.ПустаяСсылка)

Давайте проанализируем, к чему это приводит на уровне платформы в разных конфигурациях:

  1. В конфигурации «1С:Управление торговлей 11» производственный блок и все связанные с ним объекты метаданных (включая Документ.ЗаказДавальца) полностью вырезаны разработчиками на этапе сборки релиза. Когда платформа пытается скомпилировать данный запрос, она не находит тип данных Документ.ЗаказДавальца в пространстве метаданных и выдает ошибку компиляции запроса.
  2. В конфигурации «1С:Комплексная автоматизация 2.4» документ ЗаказДавальца физически существует в структуре метаданных. Однако, если в настройках системы отключена функциональная опция «Производство», платформа «1С» на уровне СУБД блокирует доступ к таблицам неиспользуемых документов. Результат оказывается аналогичным — аварийное завершение работы запроса с ошибкой неверных параметров.

Таким образом, дефектный патч, призванный решить небольшую проблему во взаиморасчетах, полностью парализовал проведение документов отгрузки и оплаты в информационных базах УТ и КА.

Разбираем способы решения проблемы по шагам

Для устранения этой неисправности нам потребуется удалить некорректный патч EF_00_00270469 из информационной базы. Рассмотрим два основных способа решения этой задачи: через пользовательский интерфейс в режиме «1С:Предприятие» и через режим «Конфигуратор».

Способ 1. Удаление дефектного патча в режиме «1С:Предприятие»

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

Выполним следующие шаги:

  1. Откроем информационную базу под пользователем, обладающим полными (административными) правами.
  2. Перейдем в раздел меню НСИ и администрирование.
  3. В панели навигации найдем группу «Администрирование» и выберем пункт Обслуживание.
  4. В открывшемся окне развернем подраздел Обновление программы.
  5. Найдем гиперссылку Установленные патчи (в некоторых версиях она называется «Установленные исправления») и перейдем по ней. На экране откроется список всех активных расширений-исправлений, установленных в вашей системе.
  6. В представленном списке найдем патч с кодом EF_00_00270469.
  7. Выделим строку с этим патчем и нажмем на кнопку Удалить исправление (или воспользуемся клавишей Del на клавиатуре).
  8. Подтвердим удаление во всплывающем системном окне.

После удаления патча система может предложить перезапустить программу. Крайне важно согласиться на это действие, чтобы изменения вступили в силу.

Способ 2. Удаление патча через «Конфигуратор»

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

Рассмотрим этот алгоритм по шагам:

  1. Запустим программу «1С» в режиме Конфигуратор.
  2. В главном меню перейдем в раздел Поддержка и выберем пункт Расширения.
  3. Перед нами откроется таблица со всеми подключенными к конфигурации расширениями и патчами. Патчи обычно имеют префикс EF_ в своем наименовании.
  4. Найдем строку, соответствующую патчу EF_00_00270469.
  5. Для временного отключения мы можем просто снять флаг в колонке Активно. Но для полного решения проблемы лучше полностью удалить данный объект. Для этого выделим строку с патчем и нажмем кнопку Удалить (красный крестик на панели инструментов или клавиша Delete).
  6. Подтвердим операцию удаления и обновим конфигурацию базы данных, нажав клавишу F7 (или выбрав пункт меню «Конфигурация -> Обновить конфигурацию базы данных»).

Важный нюанс: очистка кэша и перезапуск службы сервера

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

Причина кроется в механизме кэширования запросов и планов их выполнения платформой «1С:Предприятие». Скомпилированные схемы метаданных и тексты запросов кэшируются как на локальных компьютерах пользователей, так и на сервере приложений 1С.

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

Рекомендации по профилактике подобных сбоев в будущем

Для того чтобы минимизировать риски возникновения подобных критических ошибок в будущем, проанализируем и внедрим следующие правила администрирования информационных систем на платформе «1С»:

  1. Контроль автоматической установки исправлений: По умолчанию в программах 1С может быть включена опция автоматической загрузки и установки патчей. Чтобы избежать внезапных сбоев посреди рабочего дня, рекомендуется отключить эту опцию в меню НСИ и администрирование -> Обслуживание -> Обновление программы -> Параметры подключения к порталу 1С:ИТС и устанавливать исправления централизованно во внерабочее время.
  2. Тестирование на копиях баз: Любые обновления конфигурации, включая установку мелких патчей, предварительно нужно устанавливать на тестовую (копийную) базу данных. Проведение сквозного теста (создание заказа, проведение реализации, проведение оплаты) занимает не более 5-10 минут, но гарантирует стабильность реального контура компании.
  3. Своевременное обновление релизов: Помните, что оперативные патчи — это временная мера быстрого реагирования. Фирма «1С» регулярно выпускает исправленные минорные и мажорные релизы конфигураций (например, переход на новые ветки КА 2.5 или УТ 11.5), где ошибки предыдущих версий исправлены на уровне основного кода конфигурации-поставщика, а неэффективные и потенциально опасные временные патчи автоматически удаляются при обновлении.

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

← На главную