Почему новая колонка в обработке "ПечатьЭтикеток" остается пустой в УТ 10.3?

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

Рассмотрим частую задачу, с которой сталкиваются начинающие разработчики 1С: в конфигурации «Управление торговлей 10.3» в справочник «Номенклатура» добавили новый реквизит (например, «ГОСТ»), заполнили его данными, но при попытке вывести этот реквизит в существующей обработке (например, «ПечатьЭтикеток») новая колонка остается пустой. При этом в самом списке номенклатуры данные отображаются корректно.

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

Этап 1: Корректировка запроса получения данных

Любая обработка или отчет, отображающий данные из базы, получает их с помощью запроса. Если мы добавили новый реквизит в справочник, то старый запрос обработки о нем ничего не знает. Наша задача — "научить" запрос получать и наши новые данные.

В данном случае источником данных для обработки «ПечатьЭтикеток» является построитель отчета, который формируется в процедуре ЗаполнитьПостроительОтчета. Эта процедура обычно находится не в модуле формы, а в модуле объекта обработки.

  1. Откройте вашу обработку в Конфигураторе.
  2. В дереве объектов обработки найдите «Модуль объекта» и откройте его.
  3. С помощью поиска (Ctrl + F) найдите процедуру с именем ЗаполнитьПостроительОтчета. Внутри вы увидите большой текст, присваиваемый переменной ТекстЗапроса. Это и есть тот самый запрос, который нам нужно изменить.

Посмотрим на исходный текст запроса. Его начальная часть, секция ВЫБРАТЬ, определяет, какие поля будут доступны в обработке. Изначально она может выглядеть так:


Процедура ЗаполнитьПостроительОтчета() Экспорт
    ТекстЗапроса = "
    |ВЫБРАТЬ
    |    ИСТИНА КАК Печать,
    |    СпрНоменклатура.Номенклатура КАК Номенклатура,
    |    СпрНоменклатура.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |    СпрНоменклатура.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения,
    |    0 КАК Цена,
    |    1 КАК Количество
    |ИЗ
    |    (ВЫБРАТЬ
    |        СпрНоменклатура.Ссылка КАК Номенклатура,
    |        ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК ХарактеристикаНоменклатуры
    |    ИЗ
    |        Справочник.Номенклатура КАК СпрНоменклатура
    |    ГДЕ
    |        НЕ СпрНоменклатура.ЭтоГруппа
    |    {ГДЕ
    |        СпрНоменклатура.Ссылка.* КАК Номенклатура}
    |
    |    ОБЪЕДИНИТЬ ВСЕ
    |
    |    ВЫБРАТЬ
    |        СпрХарактеристики.Владелец,
    |        СпрХарактеристики.Ссылка
    |    ИЗ
    |        Справочник.ХарактеристикиНоменклатуры КАК СпрХарактеристики
    |    {ГДЕ
    |        СпрХарактеристики.Владелец.* КАК Номенклатура,
    |        СпрХарактеристики.Ссылка.* КАК ХарактеристикаНоменклатуры}
    |    ) КАК СпрНоменклатура
    |";
    // ... остальной код процедуры
КонецПроцедуры

Чтобы добавить в выборку наши новые реквизиты «ГОСТ» и уже работающий «Производитель», необходимо обратиться к ним через основную таблицу номенклатуры. В запросе она представлена как СпрНоменклатура.Номенклатура. Добавим две строки в секцию ВЫБРАТЬ:

Важно: Производитель и ГОСТ — это точные наименования реквизитов, которые вы создали в справочнике «Номенклатура». КАК Производитель и КАК ГОСТ — это псевдонимы (алиасы), под которыми эти поля будут известны в результатах запроса. Рекомендуется давать псевдонимы, совпадающие с именем реквизита, для удобства.

Обновленный фрагмент запроса будет выглядеть так:


|ВЫБРАТЬ
|    ИСТИНА КАК Печать,
|    СпрНоменклатура.Номенклатура КАК Номенклатура,
|    СпрНоменклатура.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
|    СпрНоменклатура.Номенклатура.ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения,
|    СпрНоменклатура.Номенклатура.Производитель КАК Производитель,
|    СпрНоменклатура.Номенклатура.ГОСТ КАК ГОСТ,
|    0 КАК Цена,
|    1 КАК Количество
|ИЗ

После внесения этих изменений запрос теперь будет извлекать из базы данных значения реквизита «ГОСТ» для каждой номенклатурной позиции. Это первая и самая важная часть работы.

Этап 2: Настройка отображения данных на форме

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

Разберем по шагам, как это сделать:

  1. В Конфигураторе перейдите на вкладку «Формы» вашей обработки и откройте основную форму.
  2. На форме найдите табличное поле, в котором отображается список номенклатуры для печати.
  3. Если вы еще не добавили колонку «ГОСТ», добавьте ее. Обычно это делается перетаскиванием из дерева элементов формы или через контекстное меню табличного поля.
  4. Выделите новую колонку «ГОСТ» в дереве элементов формы.
  5. Откройте палитру свойств для этой колонки (обычно правой кнопкой мыши -> Свойства, или Alt+Enter).
  6. Найдите свойство «Данные». Именно оно отвечает за связь элемента с источником данных.
  7. В поле этого свойства нужно вписать имя (псевдоним) поля из нашего запроса. В нашем случае это ГОСТ.

После того как вы укажете в свойстве «Данные» значение «ГОСТ», колонка на форме будет "знать", что ей нужно отображать значения из поля «ГОСТ», полученного запросом. Сохраните конфигурацию (F7) и проверьте работу обработки в режиме предприятия. Теперь данные должны подставляться автоматически.

Дополнительный вопрос: сообщение о незаполненной единице измерения

В процессе работы вы можете столкнуться со служебным сообщением вида «Для номенклатуры "Картофель" не задана еденица хранения остатков». Это сообщение указывает на то, что для указанного товара не заполнен один из базовых реквизитов.

Решение:

  1. Откройте карточку номенклатуры, на которую ссылается система (в примере это «Картофель»).
  2. Найдите поле «Единица хранения остатков». Этот реквизит является основным для ведения складского учета.
  3. Убедитесь, что это поле заполнено. Даже если вы используете другие единицы измерения (штуки, упаковки), базовая единица хранения остатков должна быть указана.

Заполнение этого реквизита не только уберет служебное сообщение, но и обеспечит корректную работу многих стандартных механизмов учета в «Управлении торговлей».

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

← На главную