Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 07:19

Как обратиться из модуля менеджера к форме документа? УТ

Автор Elfidor, 24 дек 2019, 22:49

0 Пользователей и 1 гость просматривают эту тему.

Elfidor

Доброй ночи! Товарищи - горю! Завтра надо сдавать клиенту работу, а я встал в самом конце работы. Создавал в ручную документ Коммерческое предложение. Всё сделал, всё готово и всё работает. Клиент попросил нарисовать на форме флажок НДС. Если галка стоит - выводить одну шапку ТЧ, если нет - другую. Шапки если, а через "если" обратить не могу, потому что программа меня не понимает! Или я её... но это другой момент. Вся процедура печати лежит в модуле менеджера документа от куда подцепляется в команду "Печать". И следовательно в том же модуле менеджера лежит и "Если "галочка истина" тогда одна шапка иначе другая". Но как обратиться к этой галочке? Я уже пол инета перерыл и безрезультатно...
Ниже, на всякий случай прилагаю саму процедуру Печати


Процедура Печать(ТабДок, Ссылка) Экспорт

Макет = Документы.КоммерческоеПредложение.ПолучитьМакет("Макет_КП");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КоммерческоеПредложение.Товары.(
| НомерСтроки,
| Номенклатура,
| Количество,
| Цена,
| РазмерСкидки,
| Сумма,
| СтавкаНДС
| ),
| Организации.Ссылка КАК Организация,
| Контрагенты.Ссылка КАК Контрагент,
| Пользователи.Ссылка КАК Ответственный
|ИЗ
| Документ.КоммерческоеПредложение КАК КоммерческоеПредложение
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации
| ПО КоммерческоеПредложение.Организация = Организации.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
| ПО КоммерческоеПредложение.Контрагент = Контрагенты.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Пользователи КАК Пользователи
| ПО КоммерческоеПредложение.Ответственный = Пользователи.Ссылка
|ГДЕ
| КоммерческоеПредложение.Ссылка В(&Ссылка)";
Запрос.Параметры.Вставить("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();

Шапка = Макет.ПолучитьОбласть("ШапкаДок");

ШапкаТЧ = Макет.ПолучитьОбласть("ШапкаТЧ");
ШапкаТЧСНДС = Макет.ПолучитьОбласть("ШапкаТЧСНДС");

ОбластьТоварыШапка = Макет.ПолучитьОбласть("ТЧДок");

ОбластьТовары = Макет.ПолучитьОбласть("Итого");
Подвал = Макет.ПолучитьОбласть("Подвал");

ТабДок.Очистить();

Пока Выборка.Следующий() Цикл

Если Выборка.Организация.ИНН = "3906344101" Тогда
ОбластьЗаголовок = Макет.ПолучитьОбласть("ШапкаВоин");
Иначе
ОбластьЗаголовок = Макет.ПолучитьОбласть("Шапка");
КонецЕсли;

СведенияОПоставщике = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Выборка.Организация, ТекущаяДата());
Адрес= ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике,"ЮридическийАдрес");

ОбластьЗаголовок.Параметры.Адрес = Адрес;
ОбластьЗаголовок.Параметры.НаименованиеОрганизации = Выборка.Организация;
ОбластьЗаголовок.Параметры.ИННОрганизации = Выборка.Организация.ИНН;
ОбластьЗаголовок.Параметры.КППОрганизации = Выборка.Организация.КПП;
ОбластьЗаголовок.Параметры.ОГРНОрганизации = Выборка.Организация.ОГРН;
ТабДок.Вывести(ОбластьЗаголовок);

Шапка.Параметры.НаименованиеПокупателя = Выборка.Контрагент;
Шапка.Параметры.Организация = Выборка.Организация;
ТабДок.Вывести(Шапка, Выборка.Уровень());

ВыборкаТовары = Выборка.Товары.Выбрать();

Ном = 0;
ИтогоСумма = 0;
ИтогоКоличество = 0;

//Если ??? = Истина Тогда
// ТабДок.Вывести(ШапкаТЧСНДС);
//Иначе
ТабДок.Вывести(ШапкаТЧ);
//КонецЕсли;

Пока ВыборкаТовары.Следующий() Цикл

ОбластьТоварыШапка.Параметры.НомерСтроки = ВыборкаТовары.НомерСтроки;
ОбластьТоварыШапка.Параметры.Номенклатура = ВыборкаТовары.Номенклатура;
ОбластьТоварыШапка.Параметры.Количество = ВыборкаТовары.Количество;
ОбластьТоварыШапка.Параметры.Цена = ВыборкаТовары.Цена;
ОбластьТоварыШапка.Параметры.РазмерСкидки = ВыборкаТовары.РазмерСкидки;
ОбластьТоварыШапка.Параметры.Сумма = ВыборкаТовары.Сумма;

ТабДок.Вывести(ОбластьТоварыШапка);
Ном = Ном + 1;

ИтогоСумма = ИтогоСумма + ВыборкаТовары.Сумма;
    ИтогоКоличество = ИтогоКоличество + ВыборкаТовары.Количество;

ОбластьТовары.Параметры.ИтогКоличество = ИтогоКоличество;
ОбластьТовары.Параметры.ИтогСумма = ИтогоСумма;

КонецЦикла;
ТабДок.Вывести(ОбластьТовары);

Подвал.Параметры.ИтогСтрок = Ном;
Подвал.Параметры.ИтогСумма = ИтогоСумма;

ФормСтрока = "Л = ru_RU; ДП = Истина";
ПарПредмета="рубль,рубля,рублей,р,копейка,копейки,копеек,к,2";
ПрописьЧисла = ЧислоПрописью(ИтогоСумма, ФормСтрока, ПарПредмета);

Подвал.Параметры.СуммаПрописью = ПрописьЧисла;
Подвал.Параметры.Организация = Выборка.Организация;

ТабДок.Вывести(Подвал);

КонецЦикла;

КонецПроцедуры


Elfidor

Цитата: Elfidor от 24 дек 2019, 22:49
Доброй ночи! Товарищи - горю! Завтра надо сдавать клиенту работу, а я встал в самом конце работы. Создавал в ручную документ Коммерческое предложение. Всё сделал, всё готово и всё работает. Клиент попросил нарисовать на форме флажок НДС. Если галка стоит - выводить одну шапку ТЧ, если нет - другую. Шапки если, а через "если" обратить не могу, потому что программа меня не понимает! Или я её... но это другой момент. Вся процедура печати лежит в модуле менеджера документа от куда подцепляется в команду "Печать". И следовательно в том же модуле менеджера лежит и "Если "галочка истина" тогда одна шапка иначе другая". Но как обратиться к этой галочке? Я уже пол инета перерыл и безрезультатно...

Совсем забыл упомянуть! Моя драгоценная "НДС ЛОЖЬ/ИСТИНА" валяется в Ссылка. Но вот заковырка в том, что "Ссылка" это массив. Это я тоже гуглил и тоже ни к чему не пришёл...

Norfolk

Цитата: Elfidor от 24 дек 2019, 23:03
Цитата: Elfidor от 24 дек 2019, 22:49
Доброй ночи! Товарищи - горю! Завтра надо сдавать клиенту работу, а я встал в самом конце работы. Создавал в ручную документ Коммерческое предложение. Всё сделал, всё готово и всё работает. Клиент попросил нарисовать на форме флажок НДС. Если галка стоит - выводить одну шапку ТЧ, если нет - другую. Шапки если, а через "если" обратить не могу, потому что программа меня не понимает! Или я её... но это другой момент. Вся процедура печати лежит в модуле менеджера документа от куда подцепляется в команду "Печать". И следовательно в том же модуле менеджера лежит и "Если "галочка истина" тогда одна шапка иначе другая". Но как обратиться к этой галочке? Я уже пол инета перерыл и безрезультатно...

Совсем забыл упомянуть! Моя драгоценная "НДС ЛОЖЬ/ИСТИНА" валяется в Ссылка. Но вот заковырка в том, что "Ссылка" это массив. Это я тоже гуглил и тоже ни к чему не пришёл...
А в чем заковырка? В процедуру печати (если не ошибаюсь у команды должен стоять режим использования параметра "множественный") передается массив документов для печати. В вашем случае массив состоит из 1 элемента.
Док = Ссылка[0].Ссылка (где Ссылка[0] - это первый элемент массива)
Ну и вытаскивайте ваш флаг как
Док.НДС

LexaK

В вашем случае, в структуру документа надо добавить реквизит ПечатьНДС булево, свяжите его с флажком на форме (через данные)
тогда в нужных документах отметите свой флажок НДС и запишите их
Теперь у вас в документе будет признак Ссылка.ПечатьНДС
при получении данных запросом добавьте строку

    |    Контрагенты.Ссылка КАК Контрагент,
    |    Пользователи.Ссылка КАК Ответственный,
    |    ПечатьНЛС //ваш новый реквизит

и далее в коде

   //Если ??? = Истина Тогда
   Если Выборка.ПечатьНДС = Истина Тогда
            ТабДок.Вывести(ШапкаТЧСНДС);
        Иначе
            ТабДок.Вывести(ШапкаТЧ);
        КонецЕсли;

вроде как все. Понятное дело, осталось протестировать, исправить ошибки и можно отдавать заказчику. :btbzdb:
если помогло нажмите: Спасибо!

nvj84

Цитировать
Моя драгоценная "НДС ЛОЖЬ/ИСТИНА" валяется в Ссылка
Если я правильно понимаю то это можно перевести как в документе уже есть реквизит в котором храниться информация с НДС или без. Не понимаю тогда почему нельзя вытащить его через КоммерческоеПредложение.Ссылка в запросе. Так же как не понимаю смысла левых соединений вы не получаете ни каких новых данных этим. Плюс вы получаете Ссылки и далее выводите их в отчете, а это по моему будет приводить к запросам для получения представлений что не есть хорошо.
Если я правильно понимаю что такое УТ, то лучше все это реализовать средствами БСП.

Elfidor

Всё товарищи, вся проблема решилась всего-то тем, что я добавил ещё один реквизит НДС булево в документ. Всем огромное спасибо! Тема закрыта)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск