Подстановка в печатную форму значений из таблицы док-та 1с8 УТ

1. markel2007 18.01.08 09:28 Сейчас в теме
Здравствуйте не могу решить следующую задачу.

Есть 1с 8.1 Управление торговлей.

Нужно чтобы при выводе на печать документа Реализация Товаров
во всех печатных формах (накладная, счёт-фактура и т.д.) вместо
одного наименования товара выводилось наименование другого, аналогичного товара. Только на печать чтобы в учёте этот товар не отоброжался.

Мои действия:

1. Создаю в основной форме док-та РеализацияТоваров колонку "Аналог", а в табличной части, в товарах реквизит ТЧ - Аналог
тип данных - СправочникСсылка.Номенклатура

2. Ищу где он формирует печатную форму
почему-то нашел только в документе УстановкаЦенНоменклатуры
в Экспортных Процедурах - Функция ПечатьДокумента
в этой функции он делает выборку:
=============================================
Запрос.Текст =
"ВЫБРАТЬ
| (УстановкаЦенНоменклатуры.ИндексСтрокиТаблицыЦен + 1) КАК НомерСтроки,
| УстановкаЦенНоменклатуры.Номенклатура,
| УстановкаЦенНоменклатуры.Номенклатура.НаименованиеПолное КАК Товар,
| УстановкаЦенНоменклатуры.ХарактеристикаНоменклатуры КАК Характеристика,
| NULL КАК Серия,
| УстановкаЦенНоменклатуры.ТипЦен КАК ТипЦен,
| УстановкаЦенНоменклатуры.Цена,
| УстановкаЦенНоменклатуры.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмеренияПредставление,
| УстановкаЦенНоменклатуры.Валюта,
| УстановкаЦенНоменклатуры.Валюта.Представление КАК ВалютаПредставление,
| УстановкаЦенНоменклатуры.ПроцентСкидкиНаценки
|ИЗ
| Документ.УстановкаЦенНоменклатуры.Товары КАК УстановкаЦенНоменклатуры
|ГДЕ
| УстановкаЦенНоменклатуры.Ссылка = &ТекущийДокумент
|УПОРЯДОЧИТЬ ПО
| УстановкаЦенНоменклатуры.ИндексСтрокиТаблицыЦен,
| УстановкаЦенНоменклатуры.ТипЦен
|ИТОГИ
|ПО УстановкаЦенНоменклатуры.ИндексСтрокиТаблицыЦен
|";
===============================================
я пытаюсь сделать так чтобы
при формировании запроса он смотрел заполнена ли ячейка Аналог
и если да то выбирал бы её вместо ячейки Номенклатура потому как именно эту выборку он потом пихает в макет и печатает.

меняю
УстановкаЦенНоменклатуры.Номенклатура,
УстановкаЦенНоменклатуры.Номенклатура.НаименованиеПолное КАК Товар,

на

УстановкаЦенНоменклатуры.Аналог,
УстановкаЦенНоменклатуры.Товары.Аналог.НаименованиеПолное КАК Товар,

ругается что поле не найдено:
УстановкаЦенНоменклатуры.Аналог,


на этом я и завис
Опыта как вы наверное уже поняли - ноль

какие есть варианты пожалуйста подскажите
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. sacred 173 18.01.08 23:40 Сейчас в теме
Довольно-таки странно пытаться изменить документ УстановкаЦенНоменклатуры, если нужно, как вы сами говорите, изменить печать документа Реализация....
Надо искать процедуру печати документа Реализация, Счёта-фактуры. Их и исправлять.
Возможно они находятся во внешних печатных формах. Ищите.
3. markel2007 19.01.08 12:43 Сейчас в теме
Спасибо
Да действительно не там искал :(

Нашёл в модуле документа РеализацияТоваровУслуг 3 функции
// Функция формирует табличный документ с печатной формой накладной
на обычную, на Торг-12 и на М-15 они сделаны по одному принципу.

Как я понял с помощью запроса делается выборка по реквизитам табличной части
и подставляется в макет и запрос повторяется в цикле для каждой строчки, так?

Я вижу два варианта:
1. Проверять заполнено ли поле "Аналог"
Если нет то запрос не меняется если да то делаем другой запрос в котором вместо поля
РеализацияТоваровУслуг.Номенклатура
выбираем
РеализацияТоваровУслуг.Аналог
в данном варианте я запрос почти не трогаю а только добавляю конструкцию Если-Тогда-Иначе

Если РеализацияТоваровУслуг.Аналог = null
тогда запрос1 иначе запрос2

Но когда я так делаю он ругается что переменная не определена >_<

2. Оставить один запрос но отредактировать его так чтобы он сам смотрел заполнен ли "аналог" и выбирал его.

Как отредактировать запрос я не знаю...










4. sacred 173 19.01.08 15:09 Сейчас в теме
Первый вариант не прокатит. Так как запрос выполняется сразу на всю табличную часть, а в разных строках может быть по-разному.

Второй вариант легко реализовать:

Если в запросе есть строчка:
| РеализациТоваровУслуг.Номенклатура,

Меняем её на:

| ВЫБОР КОГДА РеализациТоваровУслуг.Аналог=Значение(Справочник.Номенклатура.ПустаяСсылка)
| ТОГДА РеализациТоваровУслуг.Номенклатура
| ИНАЧЕ РеализациТоваровУслуг.Аналог
| КОНЕЦ,

Типа такого.
Ну и там где реквизиты номенклатуры, типа НаименованиеПолное - тоже нужно будет менять.
Но! Названия, возможно будут не совсем такими. И, возможно ещё в каких-то местах запрос править будет нужно. Надо смотреть текст.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот