8.х УТ Рассчеты в печатной форме!

Тема в разделе ""1С:Управление торговлей УТ"", создана пользователем Deja_vu_, 25 сен 2008.

  1. TopicStarter Overlay
    Deja_vu_
    Offline

    Deja_vu_ Опытный в 1С

    Регистрация:
    9 июн 2008
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Помогите пажалуйста реализовать такую вещь: в печатной форме "Реализация товаров и услуг" необходимо чтобы выводило дополнителную колонку в которой при определенном условии исходя из вида товара будет происходить просчет. Как это можно сделать?

    1С:Предприятие 8.1 (8.1.11.67)
    "Управление торговлей", редакция 10.3 (10.3.2.11)
  2. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Закодить его на языке 1С в модуле создающем табличный документ отчета. Что то вроде:
    Код:
    Если МоеУсловие = Истина Тогда
    ОбластьСтроки.Параметры.ИмяМоегоДопПоля = СуммаДокумента/20;
    КонецЕсли;
    
    Где ОбластьСтроки - выводимая в табличную часть область.
  3. TopicStarter Overlay
    Deja_vu_
    Offline

    Deja_vu_ Опытный в 1С

    Регистрация:
    9 июн 2008
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Я не могу найти в каком модуле заполняются поля...где он? Подскажите плиз.!!!
  4. TopicStarter Overlay
    Deja_vu_
    Offline

    Deja_vu_ Опытный в 1С

    Регистрация:
    9 июн 2008
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    ЧТО НИКТО НЕ ПОМОЖЕТ??? Я создал в документе "Реализация товаров и услуг" 2 колонки в которых идут просчеты в переменную..в регистры никуда не записываю. Как мне вывести на печать эти колонки??? не могу сооброзить....
  5. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Не нужно повышать голос и ставить много вопросительных знаков.

    Поставте в отладчике точку останова на кнопке печати, и пройдите в отладке по коду, анализируя выполняемые процедуры для того, чтобы найти подходящее место для Вашего кода - при выводе области строки в табличный документ отчета. Все, что Вам нужно сделать, это добавить колонку с параметром в макет, и поправить модуль по указанной схеме, тем более, что нужный код Вы уже реализовали.
  6. TopicStarter Overlay
    Deja_vu_
    Offline

    Deja_vu_ Опытный в 1С

    Регистрация:
    9 июн 2008
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Спасбо...я так понял что в модуле печати необходимо обьявить или как-то взять переменную с формы "реализация товаров и услуг". Вот именно это я не могу сделать.(((
  7. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Не совсем понимаю, что вы имеете ввиду.
  8. LxS
    Offline

    LxS Разработчик

    Регистрация:
    5 апр 2007
    Сообщения:
    680
    Симпатии:
    0
    Баллы:
    26
    Не в модуле печати, а в процедуре или на край функции печати.

    Если "на форме" есть элемент ПолеВвода(положим, с названием ПолеСумма), куда вы пишете свои расчеты, то для вывода в макет это делается так:
    Код:
    ...
    ОбластьПечати.Параметры.НужныйПараметр = ПолеСумма;
    ...
    
    Если же результаты своих рассчетов вы вводите в колонку таблицы(например, колонку Сумма), то вывести их на печать можно так:
    Код:
    ...
    Для каждого ТекущаяСтрока из ТабличноеПоле Цикл
    ...
    ОбластьПечати.Параметры.НужныйПараметр = ТекущаяСтрока.Сумма;
    ...
    ТабДок.Вывести(ОбластьПечати); //При условии, что ОбластьПечати - это имя области для 
    ...                                                //построчного вывода значений параметров
    КонецЦикла;
    
  9. TopicStarter Overlay
    Deja_vu_
    Offline

    Deja_vu_ Опытный в 1С

    Регистрация:
    9 июн 2008
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Извиняюсь что я может непонимаю многого...но вот что я понял. Я хочу в функции печати

    добавить код..чтобы из моей формы "Реализация товаров и услуг" поля Пачки и Плитки выводились на печать..вот скрин. Как ни писал все время выдает ошибку что переменная не найдена или переменная не в ходит в такую-то область..вот(((
    [​IMG]

    [​IMG]

    Может я где-то не так задаю параметры или переменные...не знаю..так как недавно столкнулся с 1с.
  10. LxS
    Offline

    LxS Разработчик

    Регистрация:
    5 апр 2007
    Сообщения:
    680
    Симпатии:
    0
    Баллы:
    26
    Собственно, второй вариант мой.

    В цикле перебираете строки ваше тч данного документа, а теле цикла присваиваете параметрам значения соответствующих полей:

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

    Далее:
    Код:
    Для каждого ТекущаяСтрока Из ТЧДокуемнта Цикл
    ...
    Стр.Параметры.Заполнить(ТекущаяСтрока);
    ...
    ТабДок.Вывести(Стр);
    КонецЦикла;
    ...
    
  11. TopicStarter Overlay
    Deja_vu_
    Offline

    Deja_vu_ Опытный в 1С

    Регистрация:
    9 июн 2008
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Все сделал....не получаеться взять данные с документа с полей...не могу...осталось это...как их взять? Цикл общий идет по строкам...но когда пишу текущую строку и поле которое в документе оно выдает что такая переменная не определена(((

    ОбластьСуммы.Параметры.Пачки = "2";----------ЭТО ВЫВОДИТ ТУДА ЧТО НАДО!!!!
    ОбластьСуммы.Параметры.Пачки = ВыборкаСтрокТовары.Пачки;-----А ТАК ВЫДАЕТ ОЩИБКУ
    ВыборкаСтрокТовары - это текущая строка.
    как быть?

    Еще нужно с документа "Реализация товаров и услуг" с формы взять с поля коментарий данные...
  12. LxS
    Offline

    LxS Разработчик

    Регистрация:
    5 апр 2007
    Сообщения:
    680
    Симпатии:
    0
    Баллы:
    26
    В отладчике посмотрите, что получаете на выходе.
  13. TopicStarter Overlay
    Deja_vu_
    Offline

    Deja_vu_ Опытный в 1С

    Регистрация:
    9 июн 2008
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    {Документ.РеализацияТоваровУслуг(349)}: Поле объекта не обнаружено (Пачки)
    ОбластьСуммы.Параметры.Пачки1 = ВыборкаСтрокТовары.Пачки;
    вот такая ошибка
  14. LxS
    Offline

    LxS Разработчик

    Регистрация:
    5 апр 2007
    Сообщения:
    680
    Симпатии:
    0
    Баллы:
    26
    Посмотрите имена полей, в отладчике есть возможность отображения динамических данных.

    Если в вашей текущей строке нет объекта Пачки, значит ваше поле называется не так. Либо вы не добавили реквизиты в ТЧ документа в конфигурации.

    Каким образом вы добавляли колонки?
  15. TopicStarter Overlay
    Deja_vu_
    Offline

    Deja_vu_ Опытный в 1С

    Регистрация:
    9 июн 2008
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    В форме добавил колонку и поле ввода а в табличных частях в Товарах добавил реквизиты к этим полям.
    http://pic.ipicture.ru/uploads/080926/36qIgT7emU.jpg
  16. TopicStarter Overlay
    Deja_vu_
    Offline

    Deja_vu_ Опытный в 1С

    Регистрация:
    9 июн 2008
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Только что пробывал просматривать по "ЗапросТовары" вышла таблица котору сформировало...и там нету моих колонок...((( чет я вообще уже запутался
  17. LxS
    Offline

    LxS Разработчик

    Регистрация:
    5 апр 2007
    Сообщения:
    680
    Симпатии:
    0
    Баллы:
    26
    Надо добавить только реквизиты, а для табличной части документа обновить как объекта обновить данные. Колонки будут добавлены автоматически. Тогда получите нужный результат.
  18. TopicStarter Overlay
    Deja_vu_
    Offline

    Deja_vu_ Опытный в 1С

    Регистрация:
    9 июн 2008
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Не получается((( не знаю((((
  19. Stack_G
    Offline

    Stack_G Опытный в 1С

    Регистрация:
    10 дек 2007
    Сообщения:
    786
    Симпатии:
    2
    Баллы:
    26
    "ЗапросТовары" как получаешь? думаю что запросом. Так вот в запросе не выбираются эти поля.
    Вывод: править запрос.
  20. TopicStarter Overlay
    Deja_vu_
    Offline

    Deja_vu_ Опытный в 1С

    Регистрация:
    9 июн 2008
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Код:
    Функция ПечатьДокумента(СуммыВРублях = Ложь)
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
    Запрос.Текст =
    "ВЫБРАТЬ
    |	РеализацияТоваровУслуг.Номер,
    |	РеализацияТоваровУслуг.Дата,
    |	РеализацияТоваровУслуг.ДоговорКонтрагента,
    |	РеализацияТоваровУслуг.Контрагент КАК Получатель,
    |	РеализацияТоваровУслуг.Организация,
    |	РеализацияТоваровУслуг.Организация КАК Поставщик,
    |	РеализацияТоваровУслуг.СуммаДокумента,
    |	РеализацияТоваровУслуг.ВалютаДокумента,
    |	РеализацияТоваровУслуг.УчитыватьНДС,
    |	РеализацияТоваровУслуг.СуммаВключаетНДС,
    |	РеализацияТоваровУслуг.ОтпускПроизвел,
    |	РеализацияТоваровУслуг.КурсВзаиморасчетов,
    |	РеализацияТоваровУслуг.КратностьВзаиморасчетов
    |ИЗ
    |	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    |ГДЕ
    |	РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент";
    Шапка = Запрос.Выполнить().Выбрать();
    Шапка.Следующий();
    
    ТекстКурс = "";
    
    СтрокаВыборкиПоляСодержания = ОбработкаТабличныхЧастей.ПолучитьЧастьЗапросаДляВыбораСодержания("РеализацияТоваровУслуг");
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
    Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
    Запрос.Текст =
    "ВЫБРАТЬ
    |	ВложенныйЗапросПоТоварам.Номенклатура,
    |	ВЫРАЗИТЬ(ВложенныйЗапросПоТоварам.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)) КАК Товар,
    |	ВложенныйЗапросПоТоварам.Номенклатура.Код КАК Код,
    |	ВложенныйЗапросПоТоварам.Номенклатура.Артикул КАК Артикул,
    |	ВложенныйЗапросПоТоварам.Количество,
    |	ВложенныйЗапросПоТоварам.КоличествоМест,
    |	ВложенныйЗапросПоТоварам.ЕдиницаИзмерения.Представление КАК ЕдиницаЦены,
    |	ВложенныйЗапросПоТоварам.ЕдиницаИзмеренияМест.Представление КАК ЕдиницаМест,
    |	ВложенныйЗапросПоТоварам.Цена,
    |	ВложенныйЗапросПоТоварам.Сумма,
    |	ВложенныйЗапросПоТоварам.СуммаНДС,
    |	ВложенныйЗапросПоТоварам.ПроцентСкидкиНаценки КАК Скидка,
    |	ВложенныйЗапросПоТоварам.ПроцентАвтоматическихСкидок КАК АвтоматическаяСкидка,
    |	ВложенныйЗапросПоТоварам.ХарактеристикаНоменклатуры КАК Характеристика,
    |	ВложенныйЗапросПоТоварам.СтранаПроисхождения КАК СтранаПроисхождения,
    |	ВложенныйЗапросПоТоварам.НомерГТД КАК НомерГТД,
    |	ВложенныйЗапросПоТоварам.СерияНоменклатуры КАК Серия,
    |	ВложенныйЗапросПоТоварам.НомерСтроки КАК НомерСтроки,
    |	ВложенныйЗапросПоТоварам.Метка КАК Метка
    |ИЗ
    |	(ВЫБРАТЬ
    |		РеализацияТоваровУслуг.Номенклатура КАК Номенклатура,
    |		РеализацияТоваровУслуг.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    |		РеализацияТоваровУслуг.ЕдиницаИзмеренияМест КАК ЕдиницаИзмеренияМест,
    |		РеализацияТоваровУслуг.Цена КАК Цена,
    |		РеализацияТоваровУслуг.СтавкаНДС КАК СтавкаНДС,
    |		РеализацияТоваровУслуг.ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки,
    |		РеализацияТоваровУслуг.ПроцентАвтоматическихСкидок КАК ПроцентАвтоматическихСкидок,
    |		РеализацияТоваровУслуг.СерияНоменклатуры.НомерГТД КАК НомерГТД,
    |		РеализацияТоваровУслуг.СерияНоменклатуры.СтранаПроисхождения КАК СтранаПроисхождения,
    |		РеализацияТоваровУслуг.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |		РеализацияТоваровУслуг.СерияНоменклатуры КАК СерияНоменклатуры,
    |		СУММА(РеализацияТоваровУслуг.Количество) КАК Количество,
    |		СУММА(РеализацияТоваровУслуг.КоличествоМест) КАК КоличествоМест,
    |		СУММА(РеализацияТоваровУслуг.Сумма) КАК Сумма,
    |		СУММА(РеализацияТоваровУслуг.СуммаНДС) КАК СуммаНДС,
    |		МИНИМУМ(РеализацияТоваровУслуг.НомерСтроки) КАК НомерСтроки,
    |		0 КАК Метка
    |	ИЗ
    |		Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг
    |	ГДЕ
    |		РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
    |	
    |	СГРУППИРОВАТЬ ПО
    |		РеализацияТоваровУслуг.Номенклатура,
    |		РеализацияТоваровУслуг.ЕдиницаИзмерения,
    |		РеализацияТоваровУслуг.ЕдиницаИзмеренияМест,
    |		РеализацияТоваровУслуг.Цена,
    |		РеализацияТоваровУслуг.СтавкаНДС,
    |		РеализацияТоваровУслуг.ПроцентСкидкиНаценки,
    |		РеализацияТоваровУслуг.ПроцентАвтоматическихСкидок,
    |		РеализацияТоваровУслуг.СерияНоменклатуры,
    |		РеализацияТоваровУслуг.ХарактеристикаНоменклатуры,
    |		РеализацияТоваровУслуг.СерияНоменклатуры.НомерГТД,
    |		РеализацияТоваровУслуг.СерияНоменклатуры.СтранаПроисхождения) КАК ВложенныйЗапросПоТоварам
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |	" + СтрокаВыборкиПоляСодержания + ",
    |	" + СтрокаВыборкиПоляСодержания + ",
    |	РеализацияТоваровУслуг.Номенклатура.Код,
    |	РеализацияТоваровУслуг.Номенклатура.Артикул,
    |	РеализацияТоваровУслуг.Количество,
    |	NULL,
    |	РеализацияТоваровУслуг.Номенклатура.ЕдиницаХраненияОстатков.Представление,
    |	NULL,
    |	РеализацияТоваровУслуг.Цена,
    |	РеализацияТоваровУслуг.Сумма,
    |	РеализацияТоваровУслуг.СуммаНДС,
    |	РеализацияТоваровУслуг.ПроцентСкидкиНаценки,
    |	NULL,
    |	NULL,
    |	NULL,
    |	NULL,
    |	NULL,
    |	РеализацияТоваровУслуг.НомерСтроки,
    |	1
    |ИЗ
    |	Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслуг
    |ГДЕ
    |	РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |	РеализацияТоваровУслуг.Номенклатура,
    |	ВЫРАЗИТЬ(РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)),
    |	РеализацияТоваровУслуг.Номенклатура.Код,
    |	РеализацияТоваровУслуг.Номенклатура.Артикул,
    |	РеализацияТоваровУслуг.Количество,
    |	NULL,
    |	РеализацияТоваровУслуг.Номенклатура.ЕдиницаХраненияОстатков.Представление,
    |	NULL,
    |	РеализацияТоваровУслуг.Цена,
    |	РеализацияТоваровУслуг.Сумма,
    |	0,
    |	0,
    |	NULL,
    |	NULL,
    |	NULL,
    |	NULL,
    |	NULL,
    |	РеализацияТоваровУслуг.НомерСтроки,
    |	2
    |ИЗ
    |	Документ.РеализацияТоваровУслуг.ВозвратнаяТара КАК РеализацияТоваровУслуг
    |ГДЕ
    |	РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент
    |
    |УПОРЯДОЧИТЬ ПО
    |	Метка,
    |	НомерСтроки";
    
    ЗапросТовары = Запрос.Выполнить().Выгрузить();
    флВыводитьМест = истина;
    Если ЗапросТовары.Итог("КоличествоМест")=0 Тогда
    флВыводитьМест = ложь;
    КонецЕсли;
    
    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РеализацияТоваровУслуг_Накладная";
    
    Макет = ПолучитьМакет("Накладная");
    
    // Выводим шапку накладной
    
    ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
    ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Расходная накладная");
    ТабДокумент.Вывести(ОбластьМакета);
    
    ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
    ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата), "ПолноеНаименование,");
    ОбластьМакета.Параметры.ПредставлениеПоставщика = ПредставлениеПоставщика;
    ОбластьМакета.Параметры.Поставщик = Шапка.Поставщик;
    ТабДокумент.Вывести(ОбластьМакета);
    
    ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
    ПредставлениеПолучателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.Дата), "ПолноеНаименование,");
    ОбластьМакета.Параметры.ПредставлениеПолучателя = ПредставлениеПолучателя;
    ОбластьМакета.Параметры.Получатель = Шапка.Получатель;
    ТабДокумент.Вывести(ОбластьМакета);
    
    ЕстьСкидки = ЗапросТовары.Итог("Скидка") + ЗапросТовары.Итог("АвтоматическаяСкидка") <> 0;
    
    ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
    Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
    ВыводитьКоды = Истина;
    Колонка = "Артикул";
    ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
    ВыводитьКоды = Истина;
    Колонка = "Код";
    Иначе
    ВыводитьКоды = Ложь;
    КонецЕсли;
    
    ОбластьНомера = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки");
    ОбластьКодов  = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодов");
    ОбластьТовар   = Макет.ПолучитьОбласть("ШапкаТаблицы|Товар");
    ОбластьМест   = Макет.ПолучитьОбласть("ШапкаТаблицы|Мест");
    ОбластьДанных = Макет.ПолучитьОбласть("ШапкаТаблицы|КоличествоЦена");
    ОбластьСкидок = Макет.ПолучитьОбласть("ШапкаТаблицы|Скидка");
    ОбластьСуммы  = Макет.ПолучитьОбласть("ШапкаТаблицы|Сумма");
    
    ТабДокумент.Вывести(ОбластьНомера);
    Если ВыводитьКоды Тогда
    ОбластьКодов.Параметры.ИмяКолонкиКодов = Колонка;
    ТабДокумент.Присоединить(ОбластьКодов);
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьТовар);
    Если флВыводитьМест Тогда
    ТабДокумент.Присоединить(ОбластьМест);
    КонецЕсли;
    
    ТабДокумент.Присоединить(ОбластьДанных);
    Если ЕстьСкидки Тогда
    ТабДокумент.Присоединить(ОбластьСкидок);
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьСуммы);
    
    ОбластьКолонкаТовар = Макет.Область("Товар");
    Если Не ВыводитьКоды Тогда
    ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки + 
    Макет.Область("КолонкаКодов").ШиринаКолонки;
    КонецЕсли;
    Если НЕ ЕстьСкидки Тогда
    ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки + 
    Макет.Область("СуммаБезСкидки").ШиринаКолонки +
    Макет.Область("СуммаСкидки").ШиринаКолонки;
    КонецЕсли;
    
    Если не флВыводитьМест Тогда
    ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки + 
    Макет.Область("Мест").ШиринаКолонки;
    
    КонецЕсли;
    
    ОбластьНомера = Макет.ПолучитьОбласть("Строка|НомерСтроки");
    ОбластьКодов  = Макет.ПолучитьОбласть("Строка|КолонкаКодов");
    ОбластьТовар  = Макет.ПолучитьОбласть("Строка|Товар");
    ОбластьМест  = Макет.ПолучитьОбласть("Строка|Мест");
    ОбластьДанных = Макет.ПолучитьОбласть("Строка|КоличествоЦена");
    ОбластьСкидок = Макет.ПолучитьОбласть("Строка|Скидка");
    ОбластьСуммы  = Макет.ПолучитьОбласть("Строка|Сумма");
    
    Сумма    = 0;
    СуммаНДС = 0;
    ВсегоСкидок    = 0;
    ВсегоБезСкидок = 0;
    КоэфКурса = ?( СуммыВРублях, Шапка.КурсВзаиморасчетов / Шапка.КратностьВзаиморасчетов, 1);
    
    Для каждого ВыборкаСтрокТовары из ЗапросТовары Цикл 
    
    Если Не ЗначениеЗаполнено(ВыборкаСтрокТовары.Номенклатура) Тогда
    Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное);
    Продолжить;
    КонецЕсли;
    
    ОбластьНомера.Параметры.НомерСтроки = ЗапросТовары.Индекс(ВыборкаСтрокТовары) + 1;
    ТабДокумент.Вывести(ОбластьНомера);
    
    Если ВыводитьКоды Тогда
    Если Колонка = "Артикул" Тогда
    ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТовары.Артикул;
    Иначе
    ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТовары.Код;
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьКодов);
    КонецЕсли;
    ОбластьТовар.Параметры.Заполнить(ВыборкаСтрокТовары);
    ОбластьТовар.Параметры.Товар = СокрЛП(ВыборкаСтрокТовары.Товар)
    + ФормированиеПечатныхФорм.ПредставлениеСерий(ВыборкаСтрокТовары)
    + ?(ВыборкаСтрокТовары.Метка = 2, " (возвратная тара)", "");		
    ТабДокумент.Присоединить(ОбластьТовар);
    
    Если флВыводитьМест Тогда
    ОбластьМест.Параметры.Заполнить(ВыборкаСтрокТовары);
    ТабДокумент.Присоединить(ОбластьМест);
    КонецЕсли;
    
    СуммаРуб = Окр(ВыборкаСтрокТовары.Сумма * КоэфКурса, 2, 1);
    
    ОбластьДанных.Параметры.Заполнить(ВыборкаСтрокТовары);
    //ОбластьДанных.Параметры.Цена  = ?(ВыборкаСтрокТовары.Количество = 0, СуммаРуб, Окр( СуммаРуб / ВыборкаСтрокТовары.Количество, 2, 1));
    ОбластьДанных.Параметры.Цена  = Окр(ВыборкаСтрокТовары.Цена * КоэфКурса, 2, 1);
    
    ТабДокумент.Присоединить(ОбластьДанных);
    
    // Скидка может быть NULL
    ПроцентСкидки = ?(ЗначениеЗаполнено(ВыборкаСтрокТовары.Скидка),ВыборкаСтрокТовары.Скидка,0) 
    + ?(ЗначениеЗаполнено(ВыборкаСтрокТовары.АвтоматическаяСкидка),ВыборкаСтрокТовары.АвтоматическаяСкидка,0);
    
    Скидка = СуммаРуб / (100 - ПроцентСкидки)* ПроцентСкидки;
    
    Если ЕстьСкидки Тогда
    ОбластьСкидок.Параметры.Скидка         = Скидка;
    ОбластьСкидок.Параметры.СуммаБезСкидки = ?(СуммыВРублях, СуммаРуб, ВыборкаСтрокТовары.Сумма) + Скидка;
    ТабДокумент.Присоединить(ОбластьСкидок);
    КонецЕсли;
    
    ОбластьСуммы.Параметры.Заполнить(ВыборкаСтрокТовары);
    Если СуммыВРублях Тогда
    ОбластьСуммы.Параметры.Сумма = СуммаРуб;
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьСуммы);
    
    Если СуммыВРублях Тогда
    Сумма          = Сумма       + СуммаРуб;
    СуммаНДС       = СуммаНДС    + Окр( ВыборкаСтрокТовары.СуммаНДС * КоэфКурса, 2, 1);
    Иначе
    Сумма          = Сумма       + ВыборкаСтрокТовары.Сумма;
    СуммаНДС       = СуммаНДС    + ВыборкаСтрокТовары.СуммаНДС;
    КонецЕсли;
    ВсегоСкидок    = ВсегоСкидок + Скидка;
    ВсегоБезСкидок = Сумма       + ВсегоСкидок;
    
    КонецЦикла;
    
    // Вывести Итого
    ОбластьНомера = Макет.ПолучитьОбласть("Итого|НомерСтроки");
    ОбластьКодов  = Макет.ПолучитьОбласть("Итого|КолонкаКодов");
    ОбластьТовар  = Макет.ПолучитьОбласть("Итого|Товар");
    ОбластьМест  = Макет.ПолучитьОбласть("Итого|Мест");
    ОбластьДанных = Макет.ПолучитьОбласть("Итого|КоличествоЦена");
    ОбластьСкидок = Макет.ПолучитьОбласть("Итого|Скидка");
    ОбластьСуммы  = Макет.ПолучитьОбласть("Итого|Сумма");
    
    ТабДокумент.Вывести(ОбластьНомера);
    Если ВыводитьКоды Тогда
    ТабДокумент.Присоединить(ОбластьКодов);
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьТовар);
    Если флВыводитьМест Тогда
    ТабДокумент.Присоединить(ОбластьМест);
    КонецЕсли;
    
    ТабДокумент.Присоединить(ОбластьДанных);
    Если ЕстьСкидки Тогда
    ОбластьСкидок.Параметры.ВсегоСкидок    = ВсегоСкидок;
    ОбластьСкидок.Параметры.ВсегоБезСкидок = ВсегоБезСкидок;
    ТабДокумент.Присоединить(ОбластьСкидок);
    КонецЕсли;
    ОбластьСуммы.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Сумма);
    ТабДокумент.Присоединить(ОбластьСуммы);
    
    // Вывести ИтогоНДС
    Если Шапка.УчитыватьНДС Тогда
    ОбластьНомера = Макет.ПолучитьОбласть("ИтогоНДС|НомерСтроки");
    ОбластьКодов  = Макет.ПолучитьОбласть("ИтогоНДС|КолонкаКодов");
    ОбластьТовар  = Макет.ПолучитьОбласть("ИтогоНДС|Товар");
    ОбластьМест  = Макет.ПолучитьОбласть("ИтогоНДС|Мест");
    ОбластьДанных = Макет.ПолучитьОбласть("ИтогоНДС|КоличествоЦена");
    ОбластьСкидок = Макет.ПолучитьОбласть("ИтогоНДС|Скидка");
    ОбластьСуммы  = Макет.ПолучитьОбласть("ИтогоНДС|Сумма");
    
    ТабДокумент.Вывести(ОбластьНомера);
    Если ВыводитьКоды Тогда
    ТабДокумент.Присоединить(ОбластьКодов);
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьТовар);
    Если флВыводитьМест Тогда
    ТабДокумент.Присоединить(ОбластьМест);
    КонецЕсли;
    
    ОбластьДанных.Параметры.НДС = ?(Шапка.СуммаВключаетНДС, "В том числе НДС:", "Сумма НДС:");
    ТабДокумент.Присоединить(ОбластьДанных);
    Если ЕстьСкидки Тогда
    ТабДокумент.Присоединить(ОбластьСкидок);
    КонецЕсли;
    ОбластьСуммы.Параметры.ВсегоНДС = ОбщегоНазначения.ФорматСумм(СуммаНДС);
    ТабДокумент.Присоединить(ОбластьСуммы);
    КонецЕсли;
    
    // Вывести Сумму прописью
    ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
    СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
    
    Если СуммыВРублях Тогда
    ОбластьМакета.Параметры.ИтоговаяСтрока ="Всего наименований " + ЗапросТовары.Количество()
    + ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, мВалютаРегламентированногоУчета);
    ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, мВалютаРегламентированногоУчета);
    Иначе
    ОбластьМакета.Параметры.ИтоговаяСтрока ="Всего наименований " + ЗапросТовары.Количество()
    + ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента);
    ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента);
    КонецЕсли;
    
    ТабДокумент.Вывести(ОбластьМакета);
    
    // Вывести подписи
    ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
    
    // Отпуск товара произвел
    Если ЗначениеЗаполнено(Шапка.ОтпускПроизвел) Тогда
    ФамилияИмяОтчествоФизЛица        = ФормированиеПечатныхФорм.ФамилияИмяОтчество(Шапка.ОтпускПроизвел, Шапка.Дата);
    ФамилияИмяОтчествоОтпускПроизвел = ФамилияИмяОтчествоФизЛица.Фамилия + " " + ФамилияИмяОтчествоФизЛица.Имя + " " + ФамилияИмяОтчествоФизЛица.Отчество;
    ФИООтпускПроизвел                = ОбщегоНазначения.ФамилияИнициалыФизЛица(ФамилияИмяОтчествоОтпускПроизвел);
    ОбластьМакета.Параметры.ОтветственныйПредставление = ФИООтпускПроизвел;
    КонецЕсли;
    
    ТабДокумент.Вывести(ОбластьМакета);
    
    Возврат ТабДокумент;
    
    КонецФункции // ПечатьДокумента()
    
    

    Вот эта функция печатает документ. Мне в нее надо добавить 2 момента.

    1-й это чтобы с формы выводило на печать 2 колонки "Плитки" и "Пачки"
    2-й это чтобы с поля "Комментарий" формы "Реализация товаров и услуг" выводило данные тоже на печать.

    В самом макете все нормально...просто текст я могу вывести. Не могу взять данные с формы...вот.

Поделиться этой страницей