Почему печатная форма документа Переоценка (розница) в 1С 7.7 выходит пустой

Программист 1С v7.7 Управленческий учет Торговля и дистрибуция
← На главную

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

Анализ программной логики печати

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


Пока ПолучитьСтроку() = 1 Цикл
    Если ЦенаСтарая = ЦенаНовая Тогда
        Продолжить;
    КонецЕсли;
    
    НомСтроки = НомСтроки + 1;
    ИсхТабл.ВывестиСекцию("Строка");
КонецЦикла;

Разберем, что здесь происходит. Программа перебирает все строки документа с помощью метода ПолучитьСтроку(). Однако внутри цикла стоит условие: Если ЦенаСтарая = ЦенаНовая Тогда Продолжить;. Это означает, что если текущая розничная цена товара совпадает с той ценой, которую вы пытаетесь установить в документе, система просто игнорирует эту строку и не выводит ее на печать.

Экономический смысл поведения программы

Выясним причину такого поведения с точки зрения учета. В конфигурации 1С 7.7 учет в рознице ведется по продажным ценам. Любое изменение цены — это финансовое событие, которое меняет остатки в денежном выражении в регистрах (например, в регистре «Розница»).

Если ЦенаСтарая равна ЦенаНовая, то:

  1. Сумма переоценки равна нулю.
  2. Никаких движений по регистрам документ не сделает (или они будут бесполезными).
  3. С точки зрения бухгалтерского и управленческого учета, фактической переоценки не произошло.

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

Почему цены могут совпадать (типичные сценарии)

Рассмотрим ситуации, когда пользователь уверен, что цены разные, но программа считает иначе:

  1. Использование механизма «Подбор»: При подборе товаров в документ система часто автоматически заполняет колонку «Новая цена» текущим значением из справочника цен. Если пользователь просто добавил товар в список, но забыл вручную изменить цену в соответствующей колонке, условие равенства сработает, и строка не напечатается.
  2. Периодические реквизиты: Цены в 1С 7.7 являются периодическими. Это значит, что значение цены привязано к дате и времени. Если вы создаете переоценку тем же временем, когда цена уже была изменена другим документом, то ЦенаСтарая подтянется уже в обновленном виде.
  3. Единицы измерения: Проанализируем ситуацию с единицами измерения. Цена в системе привязана к конкретной единице (например, «штука» или «коробка»). Если в документе выбрана единица измерения, для которой розничная цена совпадает с текущей, строка будет отсечена фильтром.
  4. Тип склада: Документ предназначен для работы со складами типа «Розница». Если документ оформляется по складу другого типа, механизмы получения цен могут возвращать нулевые значения, что также приведет к равенству цен в контексте алгоритма печати.

Как решить проблему и проверить данные

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

  1. Проверка равенства цен: Откройте табличную часть документа и внимательно сравните значения в колонках «Старая цена» и «Новая цена». Если они идентичны, печать не сработает. Попробуйте изменить «Новую цену» хотя бы на одну копейку и снова сформируйте печатную форму. Если строка появилась — причина найдена.
  2. Переиндексация базы: В редких случаях причиной может быть сбой индексов, из-за чего программа «не видит» актуальные значения периодических реквизитов. Выполните монопольный запуск и проведите процедуру «Переиндексация таблиц информационной базы».
  3. Корректировка кода (не рекомендуется): Если вам критически важно печатать все строки, даже без изменения цены (например, для инвентаризационной проверки), вы можете закомментировать условие Если ЦенаСтарая = ЦенаНовая Тогда Продолжить; КонецЕсли; в конфигураторе. Однако помните, что это нарушит логику типового решения.

Итоги

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

← На главную