8.х Внешняя печатная форма "Счет на оплату": Метод объекта не обнаружен (Печать)

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем romanprogrammist, 18 ноя 2013.

  1. TopicStarter Overlay
    romanprogrammist
    Offline

    romanprogrammist

    Регистрация:
    14 сен 2013
    Сообщения:
    27
    Симпатии:
    0
    Баллы:
    1
    Делаю ВПФ счета для УТ 11. Добавил. Ошибка: Метод объекта не обнаружен (Печать)


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

    делал по примеру http://www.1c-pro.ru/topic26882.html часть дописывал сам обработка зарегистрировалась но при печати вот такая ошибка
  2. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.948
    Симпатии:
    149
    Баллы:
    104
    А где у Вас такая процедура:
    Код:
    Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
    ?
  3. TopicStarter Overlay
    romanprogrammist
    Offline

    romanprogrammist

    Регистрация:
    14 сен 2013
    Сообщения:
    27
    Симпатии:
    0
    Баллы:
    1
    Есть такая, вот код
    Код:
    Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
    Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СчетНаОплату") тогда
    УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,"СчетНаОплату", "СчетНаОплату", СформироватьПечатнуюФормуСчетаНаОплату(МассивОбъектов, ОбъектыПечати));
    КонецЕсли;
    Просто делаю первый раз, не всё еще понятно

    Может в коде что не правильно написал
  4. TopicStarter Overlay
    romanprogrammist
    Offline

    romanprogrammist

    Регистрация:
    14 сен 2013
    Сообщения:
    27
    Симпатии:
    0
    Баллы:
    1
    Ругаицца еще на вот эту строу: КонецФункции // СформироватьПечатнуюФорму()
    Ожидается ключевое слово 'КонецЕсли'
  5. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.948
    Симпатии:
    149
    Баллы:
    104
    Оператор "Если" всегда должен закрываться "КонецЕсли".
    У Вас "Если" больше, чем "КонецЕсли".
    Где-то упустили один "КонецЕсли".
  6. TopicStarter Overlay
    romanprogrammist
    Offline

    romanprogrammist

    Регистрация:
    14 сен 2013
    Сообщения:
    27
    Симпатии:
    0
    Баллы:
    1
    Сейчас проверю

    Вроде везде все есть, а пишет
    {ВнешняяОбработка.СчетНаОплатуПокупателю.МодульОбъекта(306,1)}: Ожидается ключевое слово 'КонецЕсли' ('EndIf')
    <<?>>КонецФункции // СформироватьПечатнуюФорму() (Проверка: Сервер)
  7. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.948
    Симпатии:
    149
    Баллы:
    104
    Попробуйте поставить "КонецЕсли" перед строкой
    Код:
    // Вывести область заголовка
  8. TopicStarter Overlay
    romanprogrammist
    Offline

    romanprogrammist

    Регистрация:
    14 сен 2013
    Сообщения:
    27
    Симпатии:
    0
    Баллы:
    1
    Там есть "КонецЕсли"
    Во задачка... без поллитры не понять

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

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    Мне бы Ваши трудности :D. У вас делов то на минуту. Киньте ее сюда.
  10. TopicStarter Overlay
    romanprogrammist
    Offline

    romanprogrammist

    Регистрация:
    14 сен 2013
    Сообщения:
    27
    Симпатии:
    0
    Баллы:
    1
    обработку скинуть? или весь код
  11. TopicStarter Overlay
    romanprogrammist
    Offline

    romanprogrammist

    Регистрация:
    14 сен 2013
    Сообщения:
    27
    Симпатии:
    0
    Баллы:
    1
    Код:
    Функция СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати) Экспорт  
    
    Запрос = Новый Запрос();
    Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
    Запрос.Текст =
    "ВЫБРАТЬ
    |ЗаказКлиента.Ссылка										    КАК Ссылка,
    |ЗаказКлиента.Номер											 КАК Номер,
    |ЗаказКлиента.Дата											  КАК Дата,
    |ЗаказКлиента.Организация									   КАК Организация,
    |ЗаказКлиента.Организация.ТекущийРуководитель.Наименование	  КАК Руководитель,
    |ЗаказКлиента.Организация.ТекущийГлавныйБухгалтер.Наименование  КАК ГлавныйБухгалтер,
    |ВЫБОР
    |КОГДА
    |ЗаказКлиента.НалогооблажениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогооблаженияНДС.ПродажаОблагаетсяНДС)
    |ТОГДА
    |ИСТИНА
    |ИНАЧЕ
    |ЛОЖЬ
    |КОНЕЦ КАК УчитыватьНДС,
    |ЗаказКлиента.Организация.Префикс							   КАК Префикс,
    |ЗаказКлиента.Контрагент									    КАК Контрагент,
    |ЗаказКлиента.БанковскийСчет								    КАК БанковскийСчет,
    |ЗаказКлиента.БанковскийСчет.ТекстКорреспондента			    КАК БанковскийСчетТекстКорреспондента,
    |ЗаказКлиента.ЦенаВключаетНДС								   КАК ЦенаВключаетНДС,
    |ЗаказКлиента.Валюта										    КАК Валюта,
    |ЗаказКлиента.Менеджер.ФизическоеЛицо.Наименование			  КАК Менеджер,
    |ЗаказКлиента.ДополнительнаяИнформация						  КАК ДополнительнаяИнформация,
    |ЗаказКлиента.Товары.(
    |	 НомерСтроки											   КАК Номенклатура,
    |	 Номенклатура.Код										  КАК Код,
    |	 Номенклатура.Артикул									  КАК Артикул,
    |	 Номенклатура.НаименованиеПолное						   КАК НаименованиеПолное,
    |ВЫБОР
    |КОГДА ЗаказКлиента.Товары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
    |ТОГДА ПРЕДСТАВЛЕНИЕ(ЗаказКлиента.Товары.Номенклатура.ЕдиницаИзмерения) 
    |ИНАЧЕ ПРЕДСТАВЛЕНИЕ(ЗаказКлиента.Товары.Упаковка.ЕдиницаИзмерения)
    |КОНЕЦ														  КАК ЕдиницаИзмерения,
    |КоличествоУпаковок											 КАК Количество,
    |Цена														   КАК Цена,
    |СуммаРучнойСкидки + СуммаАвтоматическойСкидки				  КАК СуммаСкидки,
    |Сумма + СуммаРучнойСкидки + СуммаАвтоматическойСкидки		  КАК СуммаБезСкидки,
    |Сумма														  КАК Сумма,
    |СтавкаНДС													  КАК СтавкаНДС,
    |СуммаНДС													   КАК СуммаНДС,
    |ДатаОтгрузки												   КАК ДатаОтгрузки,
    |Характеристика												 КАК Характеристика,
    |Отменено													   КАК Отменено,
    |)
    |ИЗ
    |Документ.ЗаказКлиента										  КАК ЗаказКлиента,
    |ГДЕ
    |ЗаказКлиента.Ссылка = &ТекущийДокумент";
    
    
    Шапка = Запрос.Выполнить().Выбрать();
    Шапка.Следующий();
    
    ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказКлиента_СчетНаОплату";
    
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка);
    Запрос.Текст = 
    "ВЫБРАТЬ
    |ВложенныйЗапрос.Номенклатура								   КАК Номенклатура,
    |ВЫРАЗИТЬ(ВложенныйЗапрос.Номенклатура.НаименованиеПолное	   КАК Строка(1000)) КАК Товар,
    |ВложенныйЗапрос.Количество,
    |ВложенныйЗапрос.ЕдиницаИзмерения,
    |ВложенныйЗапрос.Цена,
    |ВложенныйЗапрос.СтавкаНДС,
    |ВложенныйЗапрос.СуммаНДС,
    |ВложенныйЗапрос.Сумма,
    |ВложенныйЗапрос.НомерСтроки								    КАК НомерСтроки,
    |1  КАК  ID
    |ИЗ
    |(ВЫБРАТЬ													  
    |ЗаказКлиента.Номенклатура									  КАК Номенклатура,
    |ЗаказКлиента.Номенклатура.БазоваяЕдиницаИзиерения.Наименование КАК ЕдиницаИзмерения,
    |ЗаказКлиента.СтавкаНДС										 КАК СтавкаНДС,
    |ЗаказКлиента.Цена											  КАК Цена,
    |СУММА(ЗаказКлиента.Количество)								 КАК Количество,
    |СУММА(ЗаказКлиента.Сумма)									  КАК Сумма,
    |СУММА(ЗаказКлиента.СуммаНДС)								   КАК СуммаНДС,
    |МИНИМУМ(ЗаказКлиента.НомерСртроки)							 КАК НомерСтроки,
    |
    |ИЗ
    |Документ.ЗаказКлиента.Товары								   КАК ЗаказКлиента,
    |
    |ГДЕ
    |ЗаказКлиента.Ссылка = &ТекущийДокумент
    |
    |СГРУППИРОВАТЬ ПО
    |ЗазакКлиента.Номенклатура,
    |ЗаказКлиента.Номенклатура.БазоваяЕдиницаИзиерения.Наименование
    |ЗаказКлиента.Цена)											 КАК ВложенныйЗапрос
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |ЗазакКлиента.Номенклатура,
    |ЗаказКлиента.Количество,									 
    |ЗаказКлиента.Номенклатура.БазоваяЕдиницаИзмерения.Наименование,
    |ЗаказКлиента.Цена,
    |ЗаказКлиента.СтавкаНДС,
    |ЗаказКлиента.Сумма,
    |ЗаказКлиента.СуммаНДС,
    |ЗаказКлиента.НомерСтроки,
    |2
    |ИЗ
    |Документ.ЗаказКлиента.Услуги								   КАК ЗаказКлиента
    |
    |ГДЕ
    |ЗаказКлиента.Ссылка = &ТекущийДокумент
    |
    |УПОРЯДОЧИТЬ ПО
    |ID,
    |НомерСтроки";
    
    ЗапросТовары = Запрос.Выполнить().Выгрузить();
    
    Макет = ПолучитьМакет("Счет");
    
    // Выводим шапку счета
    СведенияОбОрганизации = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.Дата);
    Если Тип = "Счет" Тогда
    ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокСчета");
    ОбластьМакета.Параметры.Заполнить(Шапка);
    ОбластьМакета.Параметры.ИННПолучателя = СведенияОПолучателе.ИНН;
    ОбластьМакета.Параметры.КПППолучателя = СведенияОПолучателе.КПП;
    Если ТипЗнчения(СтруктурнаяЕдиница) = Тип("СправочникСсылка.БанковскиеСчета") Тогда
    Банк = ?(НЕ ЗначениеЗаполнено(СтруктурнаяЕдиницаБанкДляРасчетов), СтруктурнаяЕдиница.Банк, СтруктурнаяЕдиница.БанкДляРасчетов);
    БИК = Банк.Код;
    КоррСчет = Банк.КоррСчет;
    ГородБанка = Банк.Город;
    НомерСчета = ВернутьРасчетныйСчет(СтруктурнаяЕдиница);
    
    ОбластьМакета.Параметры.БИКБанкаПолучателя = БИК;
    ОбластьМакета.Параметры.БанкПолучателя = Банк;
    ОбластьМакета.Параметры.БИКБанкаПолучателя = БИК;
    ОбластьМакета.Параметры.БанкПолучателя = Банк;
    ОбластьМакета.Параметры.БанкПолучателяПредставление = СокрЛП(Банк) + " " + ГородБанка;
    ОбластьМакета.Параметры.СчетБанкаПолучателя = КоррСчет;
    ОбластьМакета.Параметры.СчетБанкаПолучателяПредставление = КоррСчет;
    ОбластьМакета.Параметры.СчетПолучателяПредставление = НомерСчета;
    ОбластьМакета.Параметры.СчетПолучателя = НомерСчета;
    
    Если ПустаяСтрока(СтруктурнаяЕдиница.ТекстКорреспондента) Тогда
    ТекстКорреспондента = СведенияОПолучателе.НаименованиеДляПечатныхФорм;
    Если ЗначениеЗаполнено(СтруктурнаяЕдиница.БанкДляРасчетов) Тогда
    ТекстКорреспондента = ТекстКорреспондента + " р/с " + СтруктурнаяЕдиница.НомерСчета
    + " в " + СтруктурнаяЕдиница.Банк + " " + СтруктурнаяЕдиница.Банк.Город;
    КонецЕсли;
    Иначе
    ТекстКорреспондента = СтруктурнаяЕдиница.ТекстКорреспондента;
    КонецЕсли;
    ОбластьМакета.Параметры.ПредставлениеПолучателя = ТекстКорреспондента;
    
    ТабличныйДокумент.Вывести(ОбластьМакета);
    КонецЕсли;
    // Вывести область заголовка
    ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
    ОбластьМакета.Параметры.ТекстЗаголовка = "Счет на оплату № " + НомерДокумента + " от " + Формат(Шапка.ДатаДокумента, "ДФ=""dd MMMM yyyy""");
    ТабличныйДокумент.Вывести(ОбластьМакета);
    
    // Вывести область поставщика
    ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
    ОбластьМакета.Параметры.Заполнить(Шапка);
    СведенияОбОрганизации = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата);
    ОбластьМакета.Параметры.ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(
    СведенияОбОрганизации, "НаименованиеДляПечатныхФорм,ИНН,КПП,ЮридическийАдрес,Телефоны,");
    ТабличныйДокумент.Вывести(ОбластьМакета);
    
    // Вывести область покупателя
    ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
    ОбластьМакета.Параметры.Заполнить(Шапка);
    СведенияОПокупателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Покупатель, Шапка.Дата);
    ОбластьМакета.Параметры.ПредставлениеПокупателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(
    СведенияОПокупателе, "НаименованиеДляПечатныхФорм,ИНН,КПП,ЮридическийАдрес,Телефоны,");
    ТабличныйДокумент.Вывести(ОбластьМакета);
    
    // Вывести табличную часть (товары и услуги)
    ОбластьМакета = Макет.ПолучитьОбласть("ШапкаТаблицыСНДС");
    ОбластьМакета.Параметры.Заполнить(Шапка);
    ОбластьМакета.Параметры.Номер = Номер;
    ОбластьМакета.Параметры.Товар = "Товары (работы, услуги)";
    ОбластьМакета.Параметры.Количество = Количество;
    ОбластьМакета.Параметры.Цена = Цена;
    ОбластьМакета.Параметры.СтавкаНДС = СтавкаНДС;
    ОбластьМакета.Параметры.СуммаНДС = СуммаНДС;
    ОбластьМакета.Параметры.Сумма = Сумма;
    ТабличныйДокумент.Вывести(ОбластьМакета);
    
    ОбластьМакета = Макет.ПолучитьОбласть("СтрокаТаблицыСНДС");
    НомерСтроки = 0;
    
    Для Каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл
    НомерСтроки = НомерСтроки+1;
    
    ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокТовары);
    ОбластьМакета.Параметры.НомерСтроки = Номер;
    ОбластьМакета.Параметры.Товары = СокрЛП(СтрокаТабличнойЧасти.Товар);
    ОбластьМакета.Параметры.Количество = СтрокаКоличество;
    ОбластьМакета.Параметры.ЕдиницаИзмерения = СтрокаЕдиницаИзмерения;
    ОбластьМакета.Параметры.Цена = СтрокаЦена;
    ОбластьМакета.Параметры.СтавкаНДС = СтрокаСтавкаНДС;
    ОбластьМакета.Параметры.СуммаНДС = СтрокаСуммаНДС;
    ОбластьМакета.Параметры.Сумма = СтрокаСумма;
    ТабличныйДокумент.Вывести(ОбластьМакета);
    КонецЦикла;
    
    // Выводим секцию с итоговой суммой
    ОбластьМакета = Макет.ПолучитьОбласть("Итого");
    ОбластьМакета.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Итого);
    ТабличныйДокумент.Вывести(ОбластьМакета);
    
    // Выводим секцию с итоговой суммой с НДС
    Если СуммаСНДС <> 0 Тогда
    ОбластьМакета = Макет.ПолучитьОбласть("ИтогоСНДС");
    ОбластьМакета.Параметры.ВсегоНДС = ОбщегоНазначения.ФорматСумм(СуммаНДС);
    СуммаСНДС = Сумма + СуммаНДС;
    ОбластьМакета.Параметры.НДС = ?(Выборка.СуммаВключаетНДС, "Итого с НДС", " Сумма НДС");
    ОбластьМакета.Параметры.ВсегоСНДС = ОбщегоНазначения.ФорматСумм(СуммаСНДС);
    ТабличныйДокумент.Вывести(ОбластьМакета);
    КонецЕсли;
    
    // Выводим сумму прописью
    ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
    ОбластьМакета.Параметры.ИтоговаяСтрока ="Всего наименований " + ЗапросТовары.Количество() + ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи) + " руб.";
    ОбластьМакета.Параметры.СуммаПрописью = ЧислоПрописью(СуммаКПрописи, "L=ru_RU", "рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2");
    
    // Заполнить реквизиты подвала
    ОбластьМакета = Макет.ПолучитьОбласть("ПодвалСчета");
    ОбластьМакета.Параметры.ФИОРуководителя = ФизическиеЛица.ФамилияИнициалыФизЛица(Данные.Руководитель);
    ОбластьМакета.Параметры.ФИОГлавногоБухгалтера = ФизическиеЛица.ФамилияИнициалыФизЛица(Данные.ГлавныйБухгалтер);
    ОбластьМакета.Параметры.ФИОменеджера = ФизическиеЛица.ФамилияИнициалыФизЛица(Данные.Менеджер);
    ТабличныйДокумент.Вывести(ОбластьМакета);
    
    Возврат ТабличныйДокумент;
    
    КонецФункции // СформироватьПечатнуюФорму()
    
  12. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    Зачем мне ваш код. Обработку киньте...
  13. TopicStarter Overlay
    romanprogrammist
    Offline

    romanprogrammist

    Регистрация:
    14 сен 2013
    Сообщения:
    27
    Симпатии:
    0
    Баллы:
    1
    Спасибо за помощь, я её решил немного переделать. Таки разобраться в вопросе самостоятельно попытаться. :icon_daumenhoch:

    Вникнуть в саму суть и понять, что, как и зачем.

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