Имя: Пароль:
1C
1С v8
Не выводит итог по цена в счет покупателя ( ВПФ )
0 demous
 
04.10.12
10:37
УПП 8.2
надо добавить итог в колонку цена в печатной форме Счет покупателю

Выдает ошибку

Не удалось сформировать внешнюю печатную форму!
Ошибка при вызове метода контекста (ПолучитьОбласть): Область не найдена: Цена


Функция  Печать() Экспорт
   
   ТабДокумент = Новый ТабличныйДокумент;
   ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПокупателя_СчетЗаказ";
   
   СоздатьТабличныйДокументПечатиСчетаЗаказа("Счет", ПолучитьПараметрыПечатиСчетаЗаказа("Счет", СсылкаНаОбъект.Ссылка), ТабДокумент);
   
   Возврат ТабДокумент;
   
КонецФункции

Процедура СоздатьТабличныйДокументПечатиСчетаЗаказа(Тип, ПараметрыПечати, ТабДокумент)
       
   Макет = ПолучитьМакет("СчетЗаказ");

   // Выводим шапку накладной

   Если Тип = "Счет" Тогда
       ОбластьМакета       = Макет.ПолучитьОбласть("ЗаголовокСчета");
       ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
       ТабДокумент.Вывести(ОбластьМакета);
   КонецЕсли;

   ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
   ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
   ТабДокумент.Вывести(ОбластьМакета);

   ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
   ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
   ТабДокумент.Вывести(ОбластьМакета);

   ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
   ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
   ТабДокумент.Вывести(ОбластьМакета);
   
   ОбластьНомера = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки");
   ОбластьКодов  = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодов");
   ОбластьДанных = Макет.ПолучитьОбласть("ШапкаТаблицы|Данные");
   ОбластьСкидок = Макет.ПолучитьОбласть("ШапкаТаблицы|Скидка");
   ОбластьСуммы  = Макет.ПолучитьОбласть("ШапкаТаблицы|Сумма");

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

   ТабДокумент.Вывести(ОбластьНомера);
   Если ПараметрыПечати.ВыводитьКоды Тогда
       ОбластьКодов.Параметры.ИмяКолонкиКодов = ПараметрыПечати.ИмяКолонкиКодов;
       ТабДокумент.Присоединить(ОбластьКодов);
   КонецЕсли;
   ОбластьТовар.Параметры.Товар = "Товары (работы, услуги)";
   ТабДокумент.Присоединить(ОбластьТовар);
   ТабДокумент.Присоединить(ОбластьДанных);
   Если ПараметрыПечати.ЕстьСкидки Тогда
       ТабДокумент.Присоединить(ОбластьСкидок);
   КонецЕсли;
   ТабДокумент.Присоединить(ОбластьСуммы);

   ОбластьНомера = Макет.ПолучитьОбласть("Строка|НомерСтроки");
   ОбластьКодов  = Макет.ПолучитьОбласть("Строка|КолонкаКодов");
   ОбластьДанных = Макет.ПолучитьОбласть("Строка|Данные");
   ОбластьСкидок = Макет.ПолучитьОбласть("Строка|Скидка");
   ОбластьСуммы  = Макет.ПолучитьОбласть("Строка|Сумма");

   ОбластьТовар = Макет.ПолучитьОбласть("Строка|Товар");
   Если Не ПараметрыПечати.ВыводитьКоды И ПараметрыПечати.ЕстьСкидки Тогда
       ОбластьТовар = Макет.ПолучитьОбласть("Строка|ТоварБезКодов");
   ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И ПараметрыПечати.ВыводитьКоды Тогда
       ОбластьТовар = Макет.ПолучитьОбласть("Строка|ТоварБезСкидок");
   ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И НЕ ПараметрыПечати.ВыводитьКоды Тогда
       ОбластьТовар = Макет.ПолучитьОбласть("Строка|ТоварБезКодовИСкидок");
   КонецЕсли;

   Для каждого ПараметрыПозиции Из ПараметрыПечати.Позиции Цикл

       Если НЕ ЗначениеЗаполнено(ПараметрыПозиции.Номенклатура) Тогда
           Продолжить;
       КонецЕсли;

       ОбластьНомера.Параметры.Заполнить(ПараметрыПозиции);
       ТабДокумент.Вывести(ОбластьНомера);

       Если ПараметрыПечати.ВыводитьКоды Тогда
           ОбластьКодов.Параметры.Заполнить(ПараметрыПозиции);
           ТабДокумент.Присоединить(ОбластьКодов);
       КонецЕсли;

       ОбластьТовар.Параметры.Заполнить(ПараметрыПозиции);
       ТабДокумент.Присоединить(ОбластьТовар);
       ОбластьДанных.Параметры.Заполнить(ПараметрыПозиции);
       ТабДокумент.Присоединить(ОбластьДанных);

       Если ПараметрыПечати.ЕстьСкидки Тогда
           ОбластьСкидок.Параметры.Заполнить(ПараметрыПозиции);
           ТабДокумент.Присоединить(ОбластьСкидок);
       КонецЕсли;

       ОбластьСуммы.Параметры.Заполнить(ПараметрыПозиции);
       ТабДокумент.Присоединить(ОбластьСуммы);
       
   КонецЦикла;

   // Вывести Итого
   ОбластьНомера = Макет.ПолучитьОбласть("Итого|НомерСтроки");
   ОбластьКодов  = Макет.ПолучитьОбласть("Итого|КолонкаКодов");
   ОбластьДанных = Макет.ПолучитьОбласть("Итого|Данные");
   ОбластьСкидок = Макет.ПолучитьОбласть("Итого|Скидка");
   ОбластьСуммы  = Макет.ПолучитьОбласть("Итого|Сумма");
   ОбластьЦенн   = Макет.ПолучитьОбласть("Итого|Цена");


   ОбластьТовар = Макет.ПолучитьОбласть("Итого|Товар");
   Если Не ПараметрыПечати.ВыводитьКоды И ПараметрыПечати.ЕстьСкидки Тогда
       ОбластьТовар = Макет.ПолучитьОбласть("Итого|ТоварБезКодов");
   ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И ПараметрыПечати.ВыводитьКоды Тогда
       ОбластьТовар = Макет.ПолучитьОбласть("Итого|ТоварБезСкидок");
   ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И НЕ ПараметрыПечати.ВыводитьКоды Тогда
       ОбластьТовар = Макет.ПолучитьОбласть("Итого|ТоварБезКодовИСкидок");
   КонецЕсли;

   ТабДокумент.Вывести(ОбластьНомера);
   Если ПараметрыПечати.ВыводитьКоды Тогда
       ТабДокумент.Присоединить(ОбластьКодов);
   КонецЕсли;
   ТабДокумент.Присоединить(ОбластьТовар);
   ТабДокумент.Присоединить(ОбластьДанных);
   Если ПараметрыПечати.ЕстьСкидки Тогда
       ОбластьСкидок.Параметры.Заполнить(ПараметрыПечати);
       ТабДокумент.Присоединить(ОбластьСкидок);
   КонецЕсли;
   ОбластьСуммы.Параметры.Заполнить(ПараметрыПечати);
   ТабДокумент.Присоединить(ОбластьСуммы);

   // Вывести ИтогоНДС
   Если ПараметрыПечати.УчитыватьНДС Тогда
       ОбластьНомера = Макет.ПолучитьОбласть("ИтогоНДС|НомерСтроки");
       ОбластьКодов  = Макет.ПолучитьОбласть("ИтогоНДС|КолонкаКодов");
       ОбластьДанных = Макет.ПолучитьОбласть("ИтогоНДС|Данные");
       ОбластьСкидок = Макет.ПолучитьОбласть("ИтогоНДС|Скидка");
       ОбластьСуммы  = Макет.ПолучитьОбласть("ИтогоНДС|Сумма");

       
       ОбластьТовар = Макет.ПолучитьОбласть("ИтогоНДС|Товар");
       Если Не ПараметрыПечати.ВыводитьКоды И ПараметрыПечати.ЕстьСкидки Тогда
           ОбластьТовар = Макет.ПолучитьОбласть("ИтогоНДС|ТоварБезКодов");
       ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И ПараметрыПечати.ВыводитьКоды Тогда
           ОбластьТовар = Макет.ПолучитьОбласть("ИтогоНДС|ТоварБезСкидок");
       ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И НЕ ПараметрыПечати.ВыводитьКоды Тогда
           ОбластьТовар = Макет.ПолучитьОбласть("ИтогоНДС|ТоварБезКодовИСкидок");
       КонецЕсли;

       ТабДокумент.Вывести(ОбластьНомера);
       Если ПараметрыПечати.ВыводитьКоды Тогда
           ТабДокумент.Присоединить(ОбластьКодов);
       КонецЕсли;
       ОбластьТовар.Параметры.Заполнить(ПараметрыПечати);
       ТабДокумент.Присоединить(ОбластьТовар);
       ОбластьДанных.Параметры.Заполнить(ПараметрыПечати);
       ТабДокумент.Присоединить(ОбластьДанных);
       Если ПараметрыПечати.ЕстьСкидки Тогда
           ТабДокумент.Присоединить(ОбластьСкидок);
       КонецЕсли;
       ОбластьСуммы.Параметры.Заполнить(ПараметрыПечати);
       ТабДокумент.Присоединить(ОбластьСуммы);
       
       ОбластьНомера = Макет.ПолучитьОбласть("ВсегоКОплате|НомерСтроки");
       ОбластьКодов  = Макет.ПолучитьОбласть("ВсегоКОплате|КолонкаКодов");
       ОбластьДанных = Макет.ПолучитьОбласть("ВсегоКОплате|Данные");
       ОбластьСкидок = Макет.ПолучитьОбласть("ВсегоКОплате|Скидка");
       ОбластьСуммы  = Макет.ПолучитьОбласть("ВсегоКОплате|Сумма");



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

       ТабДокумент.Вывести(ОбластьНомера);
       Если ПараметрыПечати.ВыводитьКоды Тогда
           ТабДокумент.Присоединить(ОбластьКодов);
       КонецЕсли;
       ОбластьТовар.Параметры.Заполнить(ПараметрыПечати);
       ТабДокумент.Присоединить(ОбластьТовар);
       ОбластьДанных.Параметры.Заполнить(ПараметрыПечати);
       ТабДокумент.Присоединить(ОбластьДанных);
       Если ПараметрыПечати.ЕстьСкидки Тогда
           ТабДокумент.Присоединить(ОбластьСкидок);
       КонецЕсли;
       ОбластьСуммы.Параметры.Заполнить(ПараметрыПечати);
       ТабДокумент.Присоединить(ОбластьСуммы);
       
   КонецЕсли;

   // Вывести Сумму прописью
   ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
   ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
   ТабДокумент.Вывести(ОбластьМакета);

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

КонецПроцедуры // СоздатьТабличныйДокументПечатиСчетаЗаказа()    

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

   Шапка = Запрос.Выполнить().Выбрать();
   Шапка.Следующий();

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

   ЗапросТовары = Запрос.Выполнить().Выгрузить();

   // Выводим шапку накладной

   ПараметрыПечати.Вставить("УчитыватьНДС", Шапка.УчитыватьНДС);
   СведенияОПоставщике = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Поставщик, Шапка.Дата);
   Если Тип = "Счет" Тогда
       ПараметрыПечати.Вставить("ИНН", СведенияОПоставщике.ИНН);
       ПараметрыПечати.Вставить("КПП", СведенияОПоставщике.КПП);
       ПредставлениеПоставщикаДляПлатПоручения = "";
       Если ТипЗнч(ДокументСсылка.СтруктурнаяЕдиница) = Тип("СправочникСсылка.БанковскиеСчета") Тогда
           Банк       = ?(НЕ ЗначениеЗаполнено(ДокументСсылка.СтруктурнаяЕдиница.БанкДляРасчетов), ДокументСсылка.СтруктурнаяЕдиница.Банк, ДокументСсылка.СтруктурнаяЕдиница.БанкДляРасчетов);
           БИК        = Банк.Код;
           КоррСчет   = Банк.КоррСчет;
           ГородБанка = Банк.Город;
           НомерСчета = ДокументСсылка.СтруктурнаяЕдиница.НомерСчета;

           ПараметрыПечати.Вставить("БИКБанкаПолучателя", БИК);
           ПараметрыПечати.Вставить("БанкПолучателя", Банк);
           ПараметрыПечати.Вставить("БанкПолучателяПредставление", СокрЛП(Банк) + " " + ГородБанка);
           ПараметрыПечати.Вставить("СчетБанкаПолучателя", КоррСчет);
           ПараметрыПечати.Вставить("СчетБанкаПолучателяПредставление", КоррСчет);
           ПараметрыПечати.Вставить("СчетПолучателяПредставление", НомерСчета);
           ПараметрыПечати.Вставить("СчетПолучателя", НомерСчета);
           ПредставлениеПоставщикаДляПлатПоручения = ДокументСсылка.СтруктурнаяЕдиница.ТекстКорреспондента;
       КонецЕсли;
       Если ПустаяСтрока(ПредставлениеПоставщикаДляПлатПоручения) Тогда
           ПредставлениеПоставщикаДляПлатПоручения = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОПоставщике, "ПолноеНаименование,");
       КонецЕсли;
       ПараметрыПечати.Вставить("ПредставлениеПоставщикаДляПлатПоручения", ПредставлениеПоставщикаДляПлатПоручения);
   КонецЕсли;

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

   ПараметрыПечати.Вставить("ЕстьСкидки", Ложь);
   Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл
       Если ЗначениеЗаполнено(ВыборкаСтрокТовары.Скидка) Тогда
           ПараметрыПечати.ЕстьСкидки = Истина;
           Прервать;
       КонецЕсли;
   КонецЦикла;

   ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
   ПараметрыПечати.Вставить("ВыводитьКоды", Ложь);
   Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
       ПараметрыПечати.ВыводитьКоды = Истина;
       Колонка = "Артикул";
   ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
       ПараметрыПечати.ВыводитьКоды = Истина;
       Колонка = "Код";
   КонецЕсли;
   
   Если ПараметрыПечати.ВыводитьКоды Тогда
       ПараметрыПечати.Вставить("ИмяКолонкиКодов", Колонка);
   КонецЕсли;

   Сумма    = 0;
   СуммаНДС = 0;
   ВсегоСкидок    = 0;
   ВсегоБезСкидок = 0;
   Цена     = 0;

   Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл
       
       ПараметрыПозиции = Новый Структура;

       ПараметрыПозиции.Вставить("Номенклатура", ВыборкаСтрокТовары.Номенклатура);
       ПараметрыПозиции.Вставить("НомерСтроки", ЗапросТовары.Индекс(ВыборкаСтрокТовары) + 1);

       Если ПараметрыПечати.ВыводитьКоды Тогда
           Если Колонка = "Артикул" Тогда
               ПараметрыПозиции.Вставить("Артикул", ВыборкаСтрокТовары.Артикул);
           Иначе
               ПараметрыПозиции.Вставить("Артикул", ВыборкаСтрокТовары.Код);
           КонецЕсли;
       КонецЕсли;

       ПараметрыПозиции.Вставить("Количество", ВыборкаСтрокТовары.Количество);
       ПараметрыПозиции.Вставить("ЕдиницаИзмерения", ВыборкаСтрокТовары.ЕдиницаИзмерения);
       ПараметрыПозиции.Вставить("Цена", ВыборкаСтрокТовары.Цена);
       ПараметрыПозиции.Вставить("Товар", СокрП(ВыборкаСтрокТовары.НаименованиеПолное));
                                                   //+ ФормированиеПечатныхФормСервер.ПредставлениеСерий(ВыборкаСтрокТовары));

       Скидка = Ценообразование.ПолучитьСуммуСкидки(ВыборкаСтрокТовары.Сумма, ВыборкаСтрокТовары.Скидка);

       Если ПараметрыПечати.ЕстьСкидки Тогда
           ПараметрыПозиции.Вставить("Скидка", Скидка);
           ПараметрыПозиции.Вставить("СуммаБезСкидки", ВыборкаСтрокТовары.Сумма + Скидка);
       КонецЕсли;

       ПараметрыПозиции.Вставить("Сумма", ВыборкаСтрокТовары.Сумма);
       ПараметрыПозиции.Вставить("Цена", ВыборкаСтрокТовары.Цена);
       
       Сумма          = Сумма       + ВыборкаСтрокТовары.Сумма;
       СуммаНДС       = СуммаНДС    + ВыборкаСтрокТовары.СуммаНДС;
       ВсегоСкидок    = ВсегоСкидок + Скидка;
       ВсегоБезСкидок = Сумма       + ВсегоСкидок;
       Цена           = Цена        + ВыборкаСтрокТовары.Цена;
       
       Позиции.Добавить(ПараметрыПозиции);

   КонецЦикла;
   
   ПараметрыПечати.Вставить("Позиции", Позиции);

   // Вывести Итого
   Если ПараметрыПечати.ЕстьСкидки Тогда
       ПараметрыПечати.Вставить("ВсегоСкидок", ВсегоСкидок);
       ПараметрыПечати.Вставить("ВсегоБезСкидок", ВсегоБезСкидок);
   КонецЕсли;
   ПараметрыПечати.Вставить("Всего", ОбщегоНазначения.ФорматСумм(Сумма));
   ПараметрыПечати.Вставить("Цена", ОбщегоНазначения.ФорматСумм(Цена));
   

   // Вывести ИтогоНДС
   Если ПараметрыПечати.УчитыватьНДС Тогда
       ПараметрыПечати.Вставить("НДС", ?(Шапка.СуммаВключаетНДС, "В том числе НДС:", "Сумма НДС:"));
       ПараметрыПечати.Вставить("ВсегоНДС", ОбщегоНазначения.ФорматСумм(ЗапросТовары.Итог("СуммаНДС")));
       ПараметрыПечати.Вставить("ВсегоКОплате", ОбщегоНазначения.ФорматСумм(Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС)));
   КонецЕсли;

   // Вывести Сумму прописью
   СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
   ПараметрыПечати.Вставить("ИтоговаяСтрока", "Всего наименований " + ЗапросТовары.Количество()
   + ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента));
   ПараметрыПечати.Вставить("СуммаПрописью", ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента));

   // Вывести подписи
   Если Тип = "Счет" Тогда
       Руководители = РегламентированнаяОтчетность.ОтветственныеЛицаОрганизаций(Шапка.Руководители, Шапка.Дата,);
       Руководитель = Руководители.Руководитель;
       ДолжностьРуководителя = Руководители.РуководительДолжность;
       Бухгалтер    = Руководители.ГлавныйБухгалтер;
       
       ПараметрыПечати.Вставить("ФИОРуководителя",        Руководитель);
       ПараметрыПечати.Вставить("ДолжностьРуководителя",    ДолжностьРуководителя);
       ПараметрыПечати.Вставить("ФИОБухгалтера",            Бухгалтер);
       
       Если НЕ ЗначениеЗаполнено(ДокументСсылка.Ответственный.ФизЛицо) Тогда
           ФИООтветственный = ДокументСсылка.Ответственный.Наименование;
       Иначе
           ФамилияИмяОтчествоФизЛица           = ФормированиеПечатныхФормСервер.ФамилияИмяОтчество(ДокументСсылка.Ответственный.ФизЛицо, Шапка.Дата);
           ФамилияИмяОтчествоОтветственного = ФамилияИмяОтчествоФизЛица.Фамилия + " " + ФамилияИмяОтчествоФизЛица.Имя + " " + ФамилияИмяОтчествоФизЛица.Отчество;
           ФИООтветственный                 = ОбщегоНазначения.ФамилияИнициалыФизЛица(ФамилияИмяОтчествоОтветственного);
       КонецЕсли;
       ПараметрыПечати.Вставить("ФИООтветственный", ФИООтветственный);

   КонецЕсли;
   
   Возврат ПараметрыПечати;

КонецФункции //ПолучитьПараметрыПечатиСчетаЗаказа()
1 GLazNik
 
04.10.12
10:40
Думается мне, что область цена не найдена.
2 GLazNik
 
04.10.12
10:41
+(1) Итог по цена... очень интересно.... типа средняя температура по больнице?
3 demous
 
04.10.12
10:44
(2) да средняя) по офису температура
4 Zmich
 
04.10.12
10:50
(0). Нет вертикальной секции Цена, скорей всего.
5 demous
 
04.10.12
10:52
(4) точно, благодарю!
6 demous
 
04.10.12
10:53
(4) только сумма не считается)))
7 demous
 
04.10.12
11:13
Подскажите почему не выводит итог по цена
Перем ЦенаВсего Экспорт;

Функция  Печать() Экспорт
   
   ТабДокумент = Новый ТабличныйДокумент;
   ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПокупателя_СчетЗаказ";
   
   СоздатьТабличныйДокументПечатиСчетаЗаказа("Счет", ПолучитьПараметрыПечатиСчетаЗаказа("Счет", СсылкаНаОбъект.Ссылка), ТабДокумент);
   
   Возврат ТабДокумент;
   
КонецФункции

Процедура СоздатьТабличныйДокументПечатиСчетаЗаказа(Тип, ПараметрыПечати, ТабДокумент)
       
   Макет = ПолучитьМакет("СчетЗаказ");

   // Выводим шапку накладной

   Если Тип = "Счет" Тогда
       ОбластьМакета       = Макет.ПолучитьОбласть("ЗаголовокСчета");
       ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
       ТабДокумент.Вывести(ОбластьМакета);
   КонецЕсли;

   ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
   ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
   ТабДокумент.Вывести(ОбластьМакета);

   ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
   ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
   ТабДокумент.Вывести(ОбластьМакета);

   ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
   ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
   ТабДокумент.Вывести(ОбластьМакета);
   
   ОбластьНомера = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки");
   ОбластьКодов  = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодов");
   ОбластьДанных = Макет.ПолучитьОбласть("ШапкаТаблицы|Данные");
   ОбластьСкидок = Макет.ПолучитьОбласть("ШапкаТаблицы|Скидка");
   ОбластьСуммы  = Макет.ПолучитьОбласть("ШапкаТаблицы|Сумма");

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

   ТабДокумент.Вывести(ОбластьНомера);
   Если ПараметрыПечати.ВыводитьКоды Тогда
       ОбластьКодов.Параметры.ИмяКолонкиКодов = ПараметрыПечати.ИмяКолонкиКодов;
       ТабДокумент.Присоединить(ОбластьКодов);
   КонецЕсли;
   ОбластьТовар.Параметры.Товар = "Товары (работы, услуги)";
   ТабДокумент.Присоединить(ОбластьТовар);
   ТабДокумент.Присоединить(ОбластьДанных);
   Если ПараметрыПечати.ЕстьСкидки Тогда
       ТабДокумент.Присоединить(ОбластьСкидок);
   КонецЕсли;
   ТабДокумент.Присоединить(ОбластьСуммы);

   ОбластьНомера = Макет.ПолучитьОбласть("Строка|НомерСтроки");
   ОбластьКодов  = Макет.ПолучитьОбласть("Строка|КолонкаКодов");
   ОбластьДанных = Макет.ПолучитьОбласть("Строка|Данные");
   ОбластьСкидок = Макет.ПолучитьОбласть("Строка|Скидка");
   ОбластьСуммы  = Макет.ПолучитьОбласть("Строка|Сумма");


   ОбластьТовар = Макет.ПолучитьОбласть("Строка|Товар");
   Если Не ПараметрыПечати.ВыводитьКоды И ПараметрыПечати.ЕстьСкидки Тогда
       ОбластьТовар = Макет.ПолучитьОбласть("Строка|ТоварБезКодов");
   ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И ПараметрыПечати.ВыводитьКоды Тогда
       ОбластьТовар = Макет.ПолучитьОбласть("Строка|ТоварБезСкидок");
   ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И НЕ ПараметрыПечати.ВыводитьКоды Тогда
       ОбластьТовар = Макет.ПолучитьОбласть("Строка|ТоварБезКодовИСкидок");
   КонецЕсли;

   Для каждого ПараметрыПозиции Из ПараметрыПечати.Позиции Цикл

       Если НЕ ЗначениеЗаполнено(ПараметрыПозиции.Номенклатура) Тогда
           Продолжить;
       КонецЕсли;

       ОбластьНомера.Параметры.Заполнить(ПараметрыПозиции);
       ТабДокумент.Вывести(ОбластьНомера);

       Если ПараметрыПечати.ВыводитьКоды Тогда
           ОбластьКодов.Параметры.Заполнить(ПараметрыПозиции);
           ТабДокумент.Присоединить(ОбластьКодов);
       КонецЕсли;

       ОбластьТовар.Параметры.Заполнить(ПараметрыПозиции);
       ТабДокумент.Присоединить(ОбластьТовар);
       ОбластьДанных.Параметры.Заполнить(ПараметрыПозиции);
       ТабДокумент.Присоединить(ОбластьДанных);

       Если ПараметрыПечати.ЕстьСкидки Тогда
           ОбластьСкидок.Параметры.Заполнить(ПараметрыПозиции);
           ТабДокумент.Присоединить(ОбластьСкидок);
       КонецЕсли;

       ОбластьСуммы.Параметры.Заполнить(ПараметрыПозиции);
       ТабДокумент.Присоединить(ОбластьСуммы);
       
   КонецЦикла;

   // Вывести Итого
   ОбластьНомера = Макет.ПолучитьОбласть("Итого|НомерСтроки");
   ОбластьКодов  = Макет.ПолучитьОбласть("Итого|КолонкаКодов");
   ОбластьДанных = Макет.ПолучитьОбласть("Итого|Данные");
   ОбластьСкидок = Макет.ПолучитьОбласть("Итого|Скидка");
   ОбластьСуммы  = Макет.ПолучитьОбласть("Итого|Сумма");


   ОбластьТовар = Макет.ПолучитьОбласть("Итого|Товар");
   Если Не ПараметрыПечати.ВыводитьКоды И ПараметрыПечати.ЕстьСкидки Тогда
       ОбластьТовар = Макет.ПолучитьОбласть("Итого|ТоварБезКодов");
   ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И ПараметрыПечати.ВыводитьКоды Тогда
       ОбластьТовар = Макет.ПолучитьОбласть("Итого|ТоварБезСкидок");
   ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И НЕ ПараметрыПечати.ВыводитьКоды Тогда
       ОбластьТовар = Макет.ПолучитьОбласть("Итого|ТоварБезКодовИСкидок");
   КонецЕсли;

   ТабДокумент.Вывести(ОбластьНомера);
   Если ПараметрыПечати.ВыводитьКоды Тогда
       ТабДокумент.Присоединить(ОбластьКодов);
   КонецЕсли;
   ТабДокумент.Присоединить(ОбластьТовар);
   ТабДокумент.Присоединить(ОбластьДанных);
   Если ПараметрыПечати.ЕстьСкидки Тогда
       ОбластьСкидок.Параметры.Заполнить(ПараметрыПечати);
       ТабДокумент.Присоединить(ОбластьСкидок);
   КонецЕсли;
   ОбластьСуммы.Параметры.Заполнить(ПараметрыПечати);
   ТабДокумент.Присоединить(ОбластьСуммы);

   // Вывести ИтогоНДС
   Если ПараметрыПечати.УчитыватьНДС Тогда
       ОбластьНомера = Макет.ПолучитьОбласть("ИтогоНДС|НомерСтроки");
       ОбластьКодов  = Макет.ПолучитьОбласть("ИтогоНДС|КолонкаКодов");
       ОбластьДанных = Макет.ПолучитьОбласть("ИтогоНДС|Данные");
       ОбластьСкидок = Макет.ПолучитьОбласть("ИтогоНДС|Скидка");
       ОбластьСуммы  = Макет.ПолучитьОбласть("ИтогоНДС|Сумма");

       
       ОбластьТовар = Макет.ПолучитьОбласть("ИтогоНДС|Товар");
       Если Не ПараметрыПечати.ВыводитьКоды И ПараметрыПечати.ЕстьСкидки Тогда
           ОбластьТовар = Макет.ПолучитьОбласть("ИтогоНДС|ТоварБезКодов");
       ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И ПараметрыПечати.ВыводитьКоды Тогда
           ОбластьТовар = Макет.ПолучитьОбласть("ИтогоНДС|ТоварБезСкидок");
       ИначеЕсли НЕ ПараметрыПечати.ЕстьСкидки И НЕ ПараметрыПечати.ВыводитьКоды Тогда
           ОбластьТовар = Макет.ПолучитьОбласть("ИтогоНДС|ТоварБезКодовИСкидок");
       КонецЕсли;

       ТабДокумент.Вывести(ОбластьНомера);
       Если ПараметрыПечати.ВыводитьКоды Тогда
           ТабДокумент.Присоединить(ОбластьКодов);
       КонецЕсли;
       ОбластьТовар.Параметры.Заполнить(ПараметрыПечати);
       ТабДокумент.Присоединить(ОбластьТовар);
       ОбластьДанных.Параметры.Заполнить(ПараметрыПечати);
       ТабДокумент.Присоединить(ОбластьДанных);
       Если ПараметрыПечати.ЕстьСкидки Тогда
           ТабДокумент.Присоединить(ОбластьСкидок);
       КонецЕсли;
       ОбластьСуммы.Параметры.Заполнить(ПараметрыПечати);
       ТабДокумент.Присоединить(ОбластьСуммы);
       
       ОбластьНомера = Макет.ПолучитьОбласть("ВсегоКОплате|НомерСтроки");
       ОбластьКодов  = Макет.ПолучитьОбласть("ВсегоКОплате|КолонкаКодов");
       ОбластьДанных = Макет.ПолучитьОбласть("ВсегоКОплате|Данные");
       ОбластьСкидок = Макет.ПолучитьОбласть("ВсегоКОплате|Скидка");
       ОбластьСуммы  = Макет.ПолучитьОбласть("ВсегоКОплате|Сумма");



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

       ТабДокумент.Вывести(ОбластьНомера);
       Если ПараметрыПечати.ВыводитьКоды Тогда
           ТабДокумент.Присоединить(ОбластьКодов);
       КонецЕсли;
       ОбластьТовар.Параметры.Заполнить(ПараметрыПечати);
       ТабДокумент.Присоединить(ОбластьТовар);
       ОбластьДанных.Параметры.Заполнить(ПараметрыПечати);
       ТабДокумент.Присоединить(ОбластьДанных);
       Если ПараметрыПечати.ЕстьСкидки Тогда
           ТабДокумент.Присоединить(ОбластьСкидок);
       КонецЕсли;
       ОбластьСуммы.Параметры.Заполнить(ПараметрыПечати);
       ТабДокумент.Присоединить(ОбластьСуммы);
       
   КонецЕсли;

   // Вывести Сумму прописью
   ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
   ОбластьМакета.Параметры.Заполнить(ПараметрыПечати);
   ТабДокумент.Вывести(ОбластьМакета);

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

КонецПроцедуры // СоздатьТабличныйДокументПечатиСчетаЗаказа()    

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

   Шапка = Запрос.Выполнить().Выбрать();
   Шапка.Следующий();

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

   ЗапросТовары = Запрос.Выполнить().Выгрузить();

   // Выводим шапку накладной

   ПараметрыПечати.Вставить("УчитыватьНДС", Шапка.УчитыватьНДС);
   СведенияОПоставщике = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Поставщик, Шапка.Дата);
   Если Тип = "Счет" Тогда
       ПараметрыПечати.Вставить("ИНН", СведенияОПоставщике.ИНН);
       ПараметрыПечати.Вставить("КПП", СведенияОПоставщике.КПП);
       ПредставлениеПоставщикаДляПлатПоручения = "";
       Если ТипЗнч(ДокументСсылка.СтруктурнаяЕдиница) = Тип("СправочникСсылка.БанковскиеСчета") Тогда
           Банк       = ?(НЕ ЗначениеЗаполнено(ДокументСсылка.СтруктурнаяЕдиница.БанкДляРасчетов), ДокументСсылка.СтруктурнаяЕдиница.Банк, ДокументСсылка.СтруктурнаяЕдиница.БанкДляРасчетов);
           БИК        = Банк.Код;
           КоррСчет   = Банк.КоррСчет;
           ГородБанка = Банк.Город;
           НомерСчета = ДокументСсылка.СтруктурнаяЕдиница.НомерСчета;

           ПараметрыПечати.Вставить("БИКБанкаПолучателя", БИК);
           ПараметрыПечати.Вставить("БанкПолучателя", Банк);
           ПараметрыПечати.Вставить("БанкПолучателяПредставление", СокрЛП(Банк) + " " + ГородБанка);
           ПараметрыПечати.Вставить("СчетБанкаПолучателя", КоррСчет);
           ПараметрыПечати.Вставить("СчетБанкаПолучателяПредставление", КоррСчет);
           ПараметрыПечати.Вставить("СчетПолучателяПредставление", НомерСчета);
           ПараметрыПечати.Вставить("СчетПолучателя", НомерСчета);
           ПредставлениеПоставщикаДляПлатПоручения = ДокументСсылка.СтруктурнаяЕдиница.ТекстКорреспондента;
       КонецЕсли;
       Если ПустаяСтрока(ПредставлениеПоставщикаДляПлатПоручения) Тогда
           ПредставлениеПоставщикаДляПлатПоручения = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОПоставщике, "ПолноеНаименование,");
       КонецЕсли;
       ПараметрыПечати.Вставить("ПредставлениеПоставщикаДляПлатПоручения", ПредставлениеПоставщикаДляПлатПоручения);
   КонецЕсли;

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

   ПараметрыПечати.Вставить("ЕстьСкидки", Ложь);
   Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл
       Если ЗначениеЗаполнено(ВыборкаСтрокТовары.Скидка) Тогда
           ПараметрыПечати.ЕстьСкидки = Истина;
           Прервать;
       КонецЕсли;
   КонецЦикла;

   ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
   ПараметрыПечати.Вставить("ВыводитьКоды", Ложь);
   Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
       ПараметрыПечати.ВыводитьКоды = Истина;
       Колонка = "Артикул";
   ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
       ПараметрыПечати.ВыводитьКоды = Истина;
       Колонка = "Код";
   КонецЕсли;
   
   Если ПараметрыПечати.ВыводитьКоды Тогда
       ПараметрыПечати.Вставить("ИмяКолонкиКодов", Колонка);
   КонецЕсли;

   Сумма    = 0;
   СуммаНДС = 0;
   ВсегоСкидок    = 0;
   ВсегоБезСкидок = 0;
   Цена     = 0;

   Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл
       
       ПараметрыПозиции = Новый Структура;

       ПараметрыПозиции.Вставить("Номенклатура", ВыборкаСтрокТовары.Номенклатура);
       ПараметрыПозиции.Вставить("НомерСтроки", ЗапросТовары.Индекс(ВыборкаСтрокТовары) + 1);

       Если ПараметрыПечати.ВыводитьКоды Тогда
           Если Колонка = "Артикул" Тогда
               ПараметрыПозиции.Вставить("Артикул", ВыборкаСтрокТовары.Артикул);
           Иначе
               ПараметрыПозиции.Вставить("Артикул", ВыборкаСтрокТовары.Код);
           КонецЕсли;
       КонецЕсли;

       ПараметрыПозиции.Вставить("Количество", ВыборкаСтрокТовары.Количество);
       ПараметрыПозиции.Вставить("ЕдиницаИзмерения", ВыборкаСтрокТовары.ЕдиницаИзмерения);
       ПараметрыПозиции.Вставить("Цена", ВыборкаСтрокТовары.Цена);
       ПараметрыПозиции.Вставить("Товар", СокрП(ВыборкаСтрокТовары.НаименованиеПолное));
                                                   //+ ФормированиеПечатныхФормСервер.ПредставлениеСерий(ВыборкаСтрокТовары));

       Скидка = Ценообразование.ПолучитьСуммуСкидки(ВыборкаСтрокТовары.Сумма, ВыборкаСтрокТовары.Скидка);

       Если ПараметрыПечати.ЕстьСкидки Тогда
           ПараметрыПозиции.Вставить("Скидка", Скидка);
           ПараметрыПозиции.Вставить("СуммаБезСкидки", ВыборкаСтрокТовары.Сумма + Скидка);
       КонецЕсли;

       ПараметрыПозиции.Вставить("Сумма", ВыборкаСтрокТовары.Сумма);
       ПараметрыПозиции.Вставить("Цена", ВыборкаСтрокТовары.Цена);
       
       Сумма          = Сумма       + ВыборкаСтрокТовары.Сумма;
       СуммаНДС       = СуммаНДС    + ВыборкаСтрокТовары.СуммаНДС;
       ВсегоСкидок    = ВсегоСкидок + Скидка;
       ВсегоБезСкидок = Сумма       + ВсегоСкидок;
       Цена           = Цена        + ВыборкаСтрокТовары.Цена;
       
       Позиции.Добавить(ПараметрыПозиции);

   КонецЦикла;
   
   ПараметрыПечати.Вставить("Позиции", Позиции);

   // Вывести Итого
   Если ПараметрыПечати.ЕстьСкидки Тогда
       ПараметрыПечати.Вставить("ВсегоСкидок", ВсегоСкидок);
       ПараметрыПечати.Вставить("ВсегоБезСкидок", ВсегоБезСкидок);
   КонецЕсли;
   ПараметрыПечати.Вставить("Всего", ОбщегоНазначения.ФорматСумм(Сумма));
   ПараметрыПечати.Вставить("ЦенаВсего", ЦенаВсего);
   

   // Вывести ИтогоНДС
   Если ПараметрыПечати.УчитыватьНДС Тогда
       ПараметрыПечати.Вставить("НДС", ?(Шапка.СуммаВключаетНДС, "В том числе НДС:", "Сумма НДС:"));
       ПараметрыПечати.Вставить("ВсегоНДС", ОбщегоНазначения.ФорматСумм(ЗапросТовары.Итог("СуммаНДС")));
       ПараметрыПечати.Вставить("ВсегоКОплате", ОбщегоНазначения.ФорматСумм(Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС)));
   КонецЕсли;

   // Вывести Сумму прописью
   СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
   ПараметрыПечати.Вставить("ИтоговаяСтрока", "Всего наименований " + ЗапросТовары.Количество()
   + ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента));
   ПараметрыПечати.Вставить("СуммаПрописью", ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента));

   // Вывести подписи
   Если Тип = "Счет" Тогда
       Руководители = РегламентированнаяОтчетность.ОтветственныеЛицаОрганизаций(Шапка.Руководители, Шапка.Дата,);
       Руководитель = Руководители.Руководитель;
       ДолжностьРуководителя = Руководители.РуководительДолжность;
       Бухгалтер    = Руководители.ГлавныйБухгалтер;
       
       ПараметрыПечати.Вставить("ФИОРуководителя",        Руководитель);
       ПараметрыПечати.Вставить("ДолжностьРуководителя",    ДолжностьРуководителя);
       ПараметрыПечати.Вставить("ФИОБухгалтера",            Бухгалтер);
       
       Если НЕ ЗначениеЗаполнено(ДокументСсылка.Ответственный.ФизЛицо) Тогда
           ФИООтветственный = ДокументСсылка.Ответственный.Наименование;
       Иначе
           ФамилияИмяОтчествоФизЛица           = ФормированиеПечатныхФормСервер.ФамилияИмяОтчество(ДокументСсылка.Ответственный.ФизЛицо, Шапка.Дата);
           ФамилияИмяОтчествоОтветственного = ФамилияИмяОтчествоФизЛица.Фамилия + " " + ФамилияИмяОтчествоФизЛица.Имя + " " + ФамилияИмяОтчествоФизЛица.Отчество;
           ФИООтветственный                 = ОбщегоНазначения.ФамилияИнициалыФизЛица(ФамилияИмяОтчествоОтветственного);
       КонецЕсли;
       ПараметрыПечати.Вставить("ФИООтветственный", ФИООтветственный);

   КонецЕсли;
   
   Возврат ПараметрыПечати;

КонецФункции //ПолучитьПараметрыПечатиСчетаЗаказа()
8 demous
 
04.10.12
11:22
uppp  чет не пойму че не так
9 demous
 
04.10.12
11:30
еще и по кол-ву надо
10 shuhard
 
04.10.12
11:37
(9) блеать
ну сделай ты морду к ВПФ и отладься
11 demous
 
04.10.12
11:58
ну не получается)
12 demous
 
04.10.12
13:45
((((((((((((((
13 demous
 
04.10.12
17:28
////////////////
14 demous
 
05.10.12
09:10
доброе утро) подскажите?)
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн