Почему в печатной форме «Реализация отгруженной продукции» пропадают наименование и количество товара после обновления 1С 7.7?

Программист 1С v7.7 1C:Бухгалтерия Бухгалтерский учет
← На главную

При переходе на новые релизы платформы 1С:Предприятие 7.7, в частности на версию 7.70.648 конфигурации «Бухгалтерский учет», пользователи часто сталкиваются с неприятным эффектом: документ Реализация отгруженной продукции при печати формирует накладную (ТОРГ-12), в которой корректно отображаются цены и итоговые суммы, но поля «Наименование» и «Количество» остаются пустыми. В этой статье мы подробно разберем, почему это происходит и как восстановить корректный вывод данных в печатную форму.

Причина 1: Изменение логики обращения к реквизитам справочника «Номенклатура»

Проанализируем структуру справочника Номенклатура в редакции 4.5. У каждого элемента есть два основных текстовых поля: Наименование (краткое) и ПолнНаименование (полное). В последних релизах разработчики 1С перенастроили алгоритмы печати ТОРГ-12 таким образом, чтобы в форму выводилось именно полное наименование товара.

Рассмотрим ситуацию: если ранее система при отсутствии полного наименования могла автоматически подставлять краткое, то в релизе 7.70.648 этот механизм может давать сбой. Если в карточке товара заполнено только краткое наименование, а поле «Полное наименование» на закладке «Дополнительно» пустое, в печатную форму передается пустая строка.

Что нужно сделать: проверьте заполнение реквизита ПолнНаименование в справочнике. Если он пуст, попробуйте заполнить его для одного товара и повторить печать. Если данные появились — проблема в заполнении справочника.

Причина 2: Проблемы с внешними формами печати

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

Разберем алгоритм поиска таких файлов:

  1. Откройте папку с базой данных 1С через проводник.
  2. Перейдите в каталог ExtForms, а затем в PrnForms.
  3. Найдите файлы с расширением .mxl или .ert, названия которых похожи на «ТОРГ12» или «Реализация».

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

Причина 3: Особенности работы документа с 45 счетом

Документ Реализация отгруженной продукции отличается от обычной «Реализации купли-продажи» тем, что он закрывает проводки по счету 45 «Товары отгруженные». Печатная форма этого документа в типовом решении часто строится не просто по табличной части документа, а на основании данных бухгалтерских итогов или связанных документов отгрузки.

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

Причина 4: Анализ кода в Конфигураторе и использование отладчика

Если вышеперечисленные способы не помогли, нам придется заглянуть «под капот» системы. Рассмотрим по шагам, как найти проблемный участок кода:

  1. Запустите 1С:Предприятие в режиме Конфигуратор.
  2. Откройте дерево конфигурации, найдите ветку Документы — РеализацияОтгруженнойПродукции.
  3. Нажмите правой кнопкой мыши и выберите «Модуль документа».
  4. Найдите процедуру Печать.

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


ПечНоменклатура = СокрЛП(ТекСтрока.Номенклатура.ПолнНаименование);
ПечКоличество = ТекСтрока.Количество;
Если ПустаяСтрока(ПечНоменклатура) = 1 Тогда
    ПечНоменклатура = ТекСтрока.Номенклатура.Наименование;
КонецЕсли;

В релизе 7.70.648 механизм может быть усложнен использованием функции глПроставитьРеквизитыНакладной из Глобального модуля. Выясним причину ошибки с помощью отладчика:

  1. Поставьте точку останова (клавиша F9) на строке, где переменной ПечНоменклатура присваивается значение.
  2. Запустите 1С в режиме «Предприятие» и сформируйте печать документа.
  3. Когда система остановится на этой строке, нажмите Ctrl+F9 (Табло) и проверьте значения ТекСтрока.Номенклатура.

Если в табло вы видите, что ТекСтрока.Номенклатура имеет тип «Число» или «Строка» вместо объекта типа «Справочник», значит, при обновлении произошел конфликт типов в табличной части или в процедуре обработки итогов.

Рекомендация по исправлению

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

Пример исправления в модуле печати:


// Находим место формирования строки таблицы
Товар = ТабличнаяЧасть.Номенклатура;
НаименованиеДляПечати = Товар.ПолнНаименование;
Если ПустаяСтрока(НаименованиеДляПечати) = 1 Тогда
    НаименованиеДляПечати = Товар.Наименование;
КонецЕсли;
// Далее передаем НаименованиеДляПечати в параметр области таблицы

Также важно убедиться, что документ Реализация отгруженной продукции введен на основании документа Отгрузка товаров. Если связь между ними нарушена или документ-основание не проведен, система может не увидеть количественные показатели, так как они «завязаны» на партионный учет и остатки по счету 45.

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

← На главную