В типовой конфигурации 1С:Управление торговлей 10.3 стандартная накладная на перемещение товаров не всегда содержит стоимостные показатели, либо пользователям требуется специализированная форма с выводом цен и сумм. При разработке и подключении сторонних внешних печатных форм специалисты часто сталкиваются с ошибками выполнения запросов вроде Поле не найдено "Документ.ТипЦен" или Поле не найдено "Документ.Сумма", а также с вопросами настройки отображения колонок кодов и артикулов. Разберем по шагам структуру данных документа перемещения, выясним причины ошибок и рассмотрим способы их устранения.
Проанализируем структуру метаданных документа ПеремещениеТоваров в типовой конфигурации 1С:Управление торговлей 10.3. Главная причина падения запросов во внешних печатных формах заключается в различиях между типовой конфигурацией и базами, подвергшимися доработке.
Рассмотрим основные особенности полей документа:
ПеремещениеТоваров отсутствуют реквизиты ТипЦен и Сумма. Если внешняя печатная форма создавалась в нетиповой конфигурации с добавленными полями, то попытка выполнить запрос вида Документ.ТипЦен КАК ТипЦен или Документ.Сумма КАК Сумма в типовой базе приведет к аварийной остановке с ошибкой Поле не найдено.Товары отсутствуют базовые реквизиты Цена и Сумма. Для перемещений, связанных с розницей и неавтоматизированными торговыми точками (НТТ), используются поля ЦенаВРознице, СуммаВРознице (или соответствующие поля отправителя/получателя). Если оба склада являются оптовыми, эти реквизиты не заполняются.Чтобы внешняя печатная форма корректно работала на любых базах и выводила стоимостную оценку, необходимо правильно организовать выборку данных в модуле объекта обработки. Разберем два основных подхода.
Способ 1. Использование розничных цен документа
Если перемещение оформляется на розничный склад или склад типа НТТ, цены и суммы присутствуют в табличной части самого документа. Запрос к табличной части должен обращаться только к типовым реквизитам:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПеремещениеТовары.Номенклатура КАК Номенклатура,
| ПеремещениеТовары.Номенклатура.Артикул КАК Артикул,
| ПеремещениеТовары.Номенклатура.Код КАК Код,
| ПеремещениеТовары.Количество КАК Количество,
| ПеремещениеТовары.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ПеремещениеТовары.ЦенаВРознице КАК Цена,
| ПеремещениеТовары.СуммаВРознице КАК Сумма
|ИЗ
| Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТовары
|ГДЕ
| ПеремещениеТовары.Ссылка = &СсылкаНаОбъект";
Запрос.УстановитьПараметр("СсылкаНаОбъект", СсылкаНаОбъект);
ТабличныеДанные = Запрос.Выполнить().Выгрузить();
Способ 2. Получение цен из регистра сведений «Цены номенклатуры»
Если требуется получить цены для оптовых складов (где реквизиты розничных сумм пусты), запрос должен обращаться к срезу последних цен из регистра ЦеныНоменклатуры на дату документа по заданному типу цен:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДокТовары.НомерСтроки КАК НомерСтроки,
| ДокТовары.Номенклатура КАК Номенклатура,
| ДокТовары.Количество КАК Количество,
| ЕСТЬNULL(Цены.Цена, 0) КАК Цена,
| ЕСТЬNULL(Цены.Цена, 0) * ДокТовары.Количество КАК Сумма
|ИЗ
| Документ.ПеремещениеТоваров.Товары КАК ДокТовары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
| &Период,
| ТипЦен = &ТипЦен) КАК Цены
| ПО ДокТовары.Номенклатура = Цены.Номенклатура
| И (Цены.ХарактеристикаНоменклатуры = ДокТовары.ХарактеристикаНоменклатуры
| ИЛИ Цены.ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
|ГДЕ
| ДокТовары.Ссылка = &СсылкаНаОбъект";
Запрос.УстановитьПараметр("СсылкаНаОбъект", СсылкаНаОбъект);
Запрос.УстановитьПараметр("Период", СсылкаНаОбъект.Дата);
Запрос.УстановитьПараметр("ТипЦен", НужныйТипЦен);
ТабличныеДанные = Запрос.Выполнить().Выгрузить();
Разберем порядок регистрации готовой внешней печатной формы формата .epf в пользовательском интерфейсе УТ 10.3:
Перемещение товаров и укажем файл обработки с диска.Перемещение товаров по кнопке Печать появится добавленный вариант.Рассмотрим, как убрать лишние колонки кодов и артикулов из печатной формы.
В конфигурации существует общесистемная настройка: Сервис → Настройка учета → Настройка параметров учета → вкладка Печать, единицы, цены → блок Дополнительные колонки печатных форм документов (вариант «Не выводить»). Однако данная настройка автоматически применяется только к типовым печатным формам, использующим общие модули печати.
Если во внешней печатной форме таблица макета формируется жестко и не обращается к типовым настройкам, скрыть колонки можно следующими способами:
Конфигуратор, перейдем в макет печатной формы и объединим ячейки колонок «Код» и «Артикул» с ячейкой «Номенклатура» (или удалим соответствующие столбцы таблицы, скорректировав заполнение параметров в модуле объекта).