PDA

Просмотр полной версии : Внешняя печатная форма "Счет на оплату" для УТ 11.1.2.хх. Ошибка



programmist1c8
19.11.2013, 01:27
Доброй ночи. Делаю ВПФ "Счет на оплату" для УТ 11.1.2.хх.
Пишу:
Функция СформироватьПечатнуюФорму (МассивОбъектов, ОбъектыПечати) Экспорт

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


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

ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ИмяПара� �етровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказКлие нта_СчетНаОплату";


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

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

Макет = ПолучитьМакет("Счет");

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

ОбластьМакета.Параметры.БИ КБанкаПолучателя = БИК;
ОбластьМакета.Параметры.Ба нкПолучателя = Банк;
ОбластьМакета.Параметры.БИ КБанкаПолучателя = БИК;
ОбластьМакета.Параметры.Ба нкПолучателя = Банк;
ОбластьМакета.Параметры.Ба нкПолучателяПредставление = СокрЛП(Банк) + " " + ГородБанка;
ОбластьМакета.Параметры.Сч етБанкаПолучателя = КоррСчет;
ОбластьМакета.Параметры.Сч етБанкаПолучателяПредстав ление = КоррСчет;
ОбластьМакета.Параметры.Сч етПолучателяПредставление = НомерСчета;
ОбластьМакета.Параметры.Сч етПолучателя = НомерСчета;

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

ТабличныйДокумент.Вывести( ОбластьМакета);
КонецЕсли;
// Вывести область заголовка
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
ОбластьМакета.Параметры.Те кстЗаголовка = "Счет на оплату № " + НомерДокумента + " от " + Формат(Шапка.ДатаДокумента , "ДФ=""dd MMMM yyyy""");
ТабличныйДокумент.Вывести( ОбластьМакета);

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

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

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

ОбластьМакета = Макет.ПолучитьОбласть("СтрокаТаблицыСНДС");
НомерСтроки = 0;

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

ОбластьМакета.Параметры.За полнить(ВыборкаСтрокТовар� �);
ОбластьМакета.Параметры.Но мерСтроки = Номер;
ОбластьМакета.Параметры.То вары = СокрЛП(СтрокаТабличнойЧас� �и.Товар);
ОбластьМакета.Параметры.Ко личество = СтрокаКоличество;
ОбластьМакета.Параметры.Ед иницаИзмерения = СтрокаЕдиницаИзмерения;
ОбластьМакета.Параметры.Це на = СтрокаЦена;
ОбластьМакета.Параметры.Ст авкаНДС = СтрокаСтавкаНДС;
ОбластьМакета.Параметры.Су ммаНДС = СтрокаСуммаНДС;
ОбластьМакета.Параметры.Су мма = СтрокаСумма;
ТабличныйДокумент.Вывести( ОбластьМакета);
КонецЦикла;

// Выводим секцию с итоговой суммой
ОбластьМакета = Макет.ПолучитьОбласть("Итого");
ОбластьМакета.Параметры.Вс его = ОбщегоНазначения.ФорматСу� �м(Итого);
ТабличныйДокумент.Вывести( ОбластьМакета);

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

// Выводим сумму прописью
ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
ОбластьМакета.Параметры.Ит оговаяСтрока ="Всего наименований " + ЗапросТовары.Количество() + ", на сумму " + ОбщегоНазначения.ФорматСу� �м(СуммаКПрописи) + " руб.";
ОбластьМакета.Параметры.Су ммаПрописью = ЧислоПрописью(СуммаКПропи� �и, "L=ru_RU", "рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2");

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

Возврат ТабличныйДокумент;

КонецФункции // СформироватьПечатнуюФорму ()

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

Что может быть не так? Спасибо

Bolzen
19.11.2013, 14:15
Ответ прост одного КонецЕсли не хватает.
Просто поиском пройдись по процедуре 5-ть Если и 4-е КонецЕсли.

Наверное тут:


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

ТабличныйДокумент.Вывести( ОбластьМакета);
КонецЕсли;

КонецЕсли;

// Вывести область заголовка
ОбластьМакета = Макет.ПолучитьОбласть("Заг? ?ловок");
ОбластьМакета.Параметры.Те кстЗаголовка = "Счет на оплату № " + НомерДокумента + " от " + Формат(Шапка.ДатаДокумента , "ДФ=""dd MMMM yyyy""");
ТабличныйДокумент.Вывести( ОбластьМакета);
или

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

ТабличныйДокумент.Вывести( ОбластьМакета);
КонецЕсли;

// Вывести область заголовка
ОбластьМакета = Макет.ПолучитьОбласть("Заг? ?ловок");
ОбластьМакета.Параметры.Те кстЗаголовка = "Счет на оплату № " + НомерДокумента + " от " + Формат(Шапка.ДатаДокумента , "ДФ=""dd MMMM yyyy""");
ТабличныйДокумент.Вывести( ОбластьМакета);

programmist1c8
19.11.2013, 18:13
Спасибо, сейчас буду пробовать