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