Как исправить ошибку «Поле не найдено ШтрихкодыУпаковок.Штрихкод» при печати УПД в 1С:УПП?

Программист 1С v8.3 (Обычные формы) Налоговый учет
← На главную

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

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

Разбор причины возникновения ошибки

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

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

Способ 1: Корректировка текста запроса в модуле УчетНДС (Рекомендуемый)

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

  1. Откроем Конфигуратор и найдем общий модуль УчетНДС.
  2. Перейдем к функции СобратьДанныеПоРеализацииТоваровИУслуг.
  3. Найдем фрагмент кода, где формируется запрос к табличной части ШтрихкодыУпаковок.

Проанализируем фрагмент запроса, который вызывает сбой:


|ВЫБРАТЬ
| Ссылка КАК Ссылка,
| ШтрихкодУпаковки КАК ШтрихкодУпаковки
|ИЗ
| Документ.РеализацияТоваровУслуг.ШтрихкодыУпаковок КАК ШтрихкодыУпаковок
|ГДЕ
| ШтрихкодыУпаковок.Ссылка = &ДокументОснование

В метаданных текущего релиза поле называется ШтрихкодУпаковки, но механизмы печати ожидают получить структуру с полем Штрихкод. Нам необходимо назначить псевдоним полю. Исправим код следующим образом:


|ВЫБРАТЬ
| Ссылка КАК Ссылка,
| ШтрихкодУпаковки КАК Штрихкод
|ИЗ
| Документ.РеализацияТоваровУслуг.ШтрихкодыУпаковок КАК ШтрихкодыУпаковок
|ГДЕ
| ШтрихкодыУпаковок.Ссылка = &ДокументОснование

Важно: обратите внимание на строку ШтрихкодУпаковки КАК Штрихкод. После этого изменения пакетный запрос выполнится успешно, так как ожидаемое поле будет найдено.

Способ 2: Временная правка общих модулей интеграции

Если вам требуется максимально быстро восстановить работоспособность печати, не вникая в структуру запросов НДС, можно воспользоваться методом обхода ошибки в модулях интеграции. Рассмотрим пример модификации общего модуля ИнтеграцияИС (строка 516 и далее) внутри функции ВыполнитьПакетЗапросов.

Вместо прямого выполнения пакета, которое приводит к дампу, мы можем добавить проверку:


// Вместо типового: Результат = Запрос.ВыполнитьПакет();
// Используем безопасный возврат
Результат = Неопределено;
Возврат Таблицы;

Затем в модуле ЭлектронноеВзаимодействиеИСМП (в районе строки 217) в функции ЧастичноеСодержимое(ТаблицаУпаковок) необходимо добавить обработку пустого результата:


РезультатыЗапроса = ИнтеграцияИС.ВыполнитьПакетЗапросов(Запрос, СписокЗапросов, Ложь);
Если НЕ ЗначениеЗаполнено(РезультатыЗапроса) Тогда
    Возврат Неопределено;
КонецЕсли;

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

Способ 3: Официальное обновление

Фирма «1С» признала данную ошибку критической (Bug ID 00125867) и выпустила исправительный релиз 1.3.133.2 буквально на следующий день. Если ваша конфигурация находится на типовой поддержке и не содержит значительных изменений, самым надежным решением будет обновление до версии 1.3.133.2 или выше. В нем все вышеописанные правки в модулях УчетНДС и ИнтеграцияИС уже внесены разработчиками.

Дополнительно: Решение проблемы с постоянной модифицированностью документа

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

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


ЭлементыФормы.АдресДоставки.Значение = УправлениеКонтактнойИнформацией.ПолучитьПредставлениеАдресаПоСтрока(АдресДоставки);

Так как ОбновлениеОтображения вызывается системой крайне часто, любое минимальное различие (лишний пробел или разный регистр) в строке адреса и результате функции форматирования приводит к тому, что 1С считает объект измененным (устанавливается флаг Модифицированность = Истина). Для устранения этого поведения в сильно кастомизированных базах разработчики часто комментируют эту строку, так как она носит лишь декоративный характер.

Резюме

Мы рассмотрели техническую ошибку релиза 1.3.133.1, связанную с обращением к несуществующему полю Штрихкод. Для исправления ситуации рекомендуем:

  1. Обновиться до релиза 1.3.133.2 — это самый простой и правильный путь.
  2. Если обновление невозможно — исправить текст запроса в модуле УчетНДС, заменив имя поля на актуальное с использованием псевдонима.
  3. Проверить настройки маркировки: ошибка может проявляться даже при отключенных константах «Алкоголь», «Табак» и «Обувь», так как код печатных форм обращается к табличным частям безусловно.
← На главную