Здравствуй, Инфостарт!
Осваиваю внешние печатные формы и внешние отчеты под управляемое приложение. Делаю внешнюю печатную форму с собственным макетом для документа "СчетНаОплатуПокупателю". И в отладочной обработке и "в-живую" вылетает на участке
Тестируется на Демо БП 3.0.11.6
http://www.1c-pro.ru/topic26882.html читал.
Совершенно не могу уловить связи между параметрами команды и содержимым модуля, подскажите ЧЯДНП.
Спасибо заранее, модуль и обраба прилагаются.
//Функция ПолучитьТАблицуКоманд():
//Создаем ТЗ Команды
//Добваляем Колонки:
// Представление(Строка) - описание печатной формы для пользователя
// Идентификатор(Строка) - имя макета, ид клманды в обработке печати(я не знаю что он имеет в виду)
// ИСпользование(Строка) - способ вызова команды обработки
// -ОткрытиеФормы - в колонке Идентификатор указываетс имя нужной формы(в каком формате, догадайся, мол, сама... :( )
// -ВызовКлиентскогоМетода - вызов киентской экспортной процедуры МОДУЛЯ ФОРМЫ
// -ВызовСерверногоМетода - вызов серверной экспортной процедуры МОДУЛЯ ОБЪЕКТА
// ПоказыватьОповещение(Булево) - показывать ли оповещение при начале и окончании отработки
// Модификатор(Строка) - для печатной формыдолжен содержать строку ПечатьXML (ну, не можем мы по-простому)
Функция ПолучитьТАблицуКоманд()
//Создаем таблицу и колонки
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ИСпользование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, ИСпользование, ПоказыватьОповещение, Модификатор)
Команда = ТаблицаКоманд.Добавить();
Команда.Представление = Представление;
Команда.Идентификатор = Идентификатор;
Команда.ИСпользование = ИСпользование;
Команда.ПоказыватьОповещение = ПоказыватьОповещение;
Команда.Модификатор = Модификатор;
КонецПроцедуры
Функция СведенияОВнешнейОбработке() Экспорт
//======================== от сих предопределенное содержимое===================
//выходные данные?
ПараметрыРегистрации= Новый Структура;
//еще одна нужная весчь
МассивНАзначений = Новый Массив;
// Первый параметр, который мы должны указать - это какой вид обработки системе должна зарегистрировать.
// Допустимые типы: ДополнительнаяОбработка, ДополнительныйОтчет, ЗаполнениеОбъекта, Отчет, ПечатнаяФорма, СозданиеСвязанныхОбъектов
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
//Для доп отсета соотвественно - ПараметрыРегистрации.Вставить("Вид", "ДополнительныйОТчет");
// Теперь нам необходимо передать в виде массива имен, к чему будет подключена наша ВПФ
// Имейте ввиду, что можно задать имя в таком виде: Документ.* - в этом случае обработка будет подключена ко всем документам в системе,
// которые поддерживают механизм ВПФ
МассивНАзначений.Добавить("Документы.СчетНаОплатуПокупателю");//Значение вида Документ.* дает феерический результат ))))
ПараметрыРегистрации.Вставить("Начзначение", МассивНазначений);
// Теперь зададим имя, под которым ВПФ будет зарегистрирована в справочнике внешних обработок
ПараметрыРегистрации.Вставить("Наименование", "Печать счета ИП");//Именно наименование, так как имя реквизита справочника ДопБлаБлаБла
// Зададим право обработке на использование безопасного режима. Более подробно можно узнать в справке к платформе (метод УстановитьБезопасныйРежим)
// Нахрена- не знаю, но надо
ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
//Добавим инормацию об обработке
ПараметрыРегистрации.Вставить("Версия", "Первая и единственная");
ПараметрыРегистрации.Вставить("Информация", "Печать счета ИП");
//Создадм таблицу команд см. ниже
ТаблицаКоманд= ПолучитьТаблицуКоманд();
//добавим команду
ДобавитьКоманду(ТаблицаКоманд, "Печать", "Печать", "ВызовСерверногоМетода", Истина, "ПечатьXML");
//передадим в структуру
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
//======================== до сих предопределенное содержимое===================
КонецФункции
// Формирует и возвращает текст запроса для выборки данных,
// необходимых для формирования печатной формы
Функция ПолучитьТекстЗапросаДляФормированияПечатнойФормыСчетаНаОплатуПокупателю()
ЧастьЗапросаДляВыбораСодержанияУслуг = ОбщегоНазначенияБПВызовСервера.ПолучитьЧастьЗапросаДляВыбораСодержанияУслуг("ЗаказПокупателя");
ТекстЗапроса =
"ВЫБРАТЬ
| Реквизиты.Ссылка,
| Реквизиты.Номер,
| Реквизиты.Дата,
| Реквизиты.ДоговорКонтрагента,
| Реквизиты.Организация,
| Реквизиты.ПодразделениеОрганизации,
| Реквизиты.СтруктурнаяЕдиница,
| Реквизиты.СтруктурнаяЕдиница.ТекстКорреспондента КАК ТекстКорреспондента,
| Реквизиты.СтруктурнаяЕдиница.БанкДляРасчетов КАК БанкДляРасчетов,
| ВЫБОР
| КОГДА Реквизиты.СтруктурнаяЕдиница.БанкДляРасчетов <> ЗНАЧЕНИЕ(Справочник.Банки.ПустаяСсылка)
| ТОГДА Реквизиты.СтруктурнаяЕдиница.БанкДляРасчетов.Наименование + "" "" + Реквизиты.СтруктурнаяЕдиница.БанкДляРасчетов.Город
| ИНАЧЕ Реквизиты.СтруктурнаяЕдиница.Банк.Наименование + "" "" + Реквизиты.СтруктурнаяЕдиница.Банк.Город
| КОНЕЦ КАК НаименованиеБанкаПолучателя,
| ВЫБОР
| КОГДА Реквизиты.СтруктурнаяЕдиница.БанкДляРасчетов <> ЗНАЧЕНИЕ(Справочник.Банки.ПустаяСсылка)
| ТОГДА Реквизиты.СтруктурнаяЕдиница.БанкДляРасчетов
| ИНАЧЕ Реквизиты.СтруктурнаяЕдиница.Банк
| КОНЕЦ КАК БанкПолучателя,
| ВЫБОР
| КОГДА Реквизиты.СтруктурнаяЕдиница.БанкДляРасчетов <> ЗНАЧЕНИЕ(Справочник.Банки.ПустаяСсылка)
| ТОГДА Реквизиты.СтруктурнаяЕдиница.БанкДляРасчетов.Код
| ИНАЧЕ Реквизиты.СтруктурнаяЕдиница.Банк.Код
| КОНЕЦ КАК БикБанкаПолучателя,
| ВЫБОР
| КОГДА Реквизиты.СтруктурнаяЕдиница.БанкДляРасчетов <> ЗНАЧЕНИЕ(Справочник.Банки.ПустаяСсылка)
| ТОГДА Реквизиты.СтруктурнаяЕдиница.БанкДляРасчетов.КоррСчет
| ИНАЧЕ Реквизиты.СтруктурнаяЕдиница.Банк.КоррСчет
| КОНЕЦ КАК СчетБанкаПолучателя,
| ВЫБОР
| КОГДА Реквизиты.СтруктурнаяЕдиница.БанкДляРасчетов <> ЗНАЧЕНИЕ(Справочник.Банки.ПустаяСсылка)
| ТОГДА Реквизиты.СтруктурнаяЕдиница.БанкДляРасчетов.Город
| ИНАЧЕ Реквизиты.СтруктурнаяЕдиница.Банк.Город
| КОНЕЦ КАК ГородБанкаПолучателя,
| ВЫБОР
| КОГДА Реквизиты.СтруктурнаяЕдиница.БанкДляРасчетов <> ЗНАЧЕНИЕ(Справочник.Банки.ПустаяСсылка)
| ТОГДА Реквизиты.СтруктурнаяЕдиница.Банк.КоррСчет
| ИНАЧЕ Реквизиты.СтруктурнаяЕдиница.НомерСчета
| КОНЕЦ КАК НомерСчетаПолучателя,
| ВЫБОР
| КОГДА Реквизиты.СтруктурнаяЕдиница.БанкДляРасчетов <> ЗНАЧЕНИЕ(Справочник.Банки.ПустаяСсылка)
| ТОГДА "" р/с "" + Реквизиты.СтруктурнаяЕдиница.НомерСчета + "" в "" + Реквизиты.СтруктурнаяЕдиница.Банк.Наименование + "" "" + Реквизиты.СтруктурнаяЕдиница.Банк.Город
| КОНЕЦ КАК БанкТекстКорресподента,
| Реквизиты.Контрагент КАК Покупатель,
| Реквизиты.Организация КАК Руководители,
| Реквизиты.Организация КАК Поставщик,
| Реквизиты.ОрганизацияПолучатель КАК Получатель,
| Реквизиты.СуммаДокумента,
| Реквизиты.ВалютаДокумента,
| Реквизиты.СуммаВключаетНДС,
| ЗаказПокупателя.Номенклатура КАК Номенклатура,
| ЗаказПокупателя.Номенклатура.НаименованиеПолное КАК Товар,
| ВЫБОР
| КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул)
| ТОГДА ЗаказПокупателя.Номенклатура.Артикул
| КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Код)
| ТОГДА ЗаказПокупателя.Номенклатура.Код
| КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить)
| ТОГДА """"
| КОНЕЦ КАК Артикул,
| ЗаказПокупателя.Количество КАК Количество,
| ЗаказПокупателя.Номенклатура.ЕдиницаИзмерения.Наименование КАК ЕдиницаИзмерения,
| ЗаказПокупателя.Цена КАК Цена,
| ЗаказПокупателя.Сумма КАК Сумма,
| ЗаказПокупателя.СуммаНДС КАК СуммаНДС,
| ЗаказПокупателя.НомерСтроки КАК НомерСтроки,
| 1 КАК ID
|ИЗ
| Документ.СчетНаОплатуПокупателю.Товары КАК ЗаказПокупателя
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетНаОплатуПокупателю КАК Реквизиты
| ПО (ЗаказПокупателя.Ссылка = Реквизиты.Ссылка)
|ГДЕ
| ЗаказПокупателя.Ссылка В(&МассивОбъектов)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Реквизиты.Ссылка,
| Реквизиты.Номер,
| Реквизиты.Дата,
| Реквизиты.ДоговорКонтрагента,
| Реквизиты.Организация,
| Реквизиты.ПодразделениеОрганизации,
| Реквизиты.СтруктурнаяЕдиница,
| Реквизиты.СтруктурнаяЕдиница.ТекстКорреспондента КАК ТекстКорреспондента,
| Реквизиты.СтруктурнаяЕдиница.БанкДляРасчетов КАК БанкДляРасчетов,
| ВЫБОР
| КОГДА Реквизиты.СтруктурнаяЕдиница.БанкДляРасчетов <> ЗНАЧЕНИЕ(Справочник.Банки.ПустаяСсылка)
| ТОГДА Реквизиты.СтруктурнаяЕдиница.БанкДляРасчетов.Наименование + "" "" + Реквизиты.СтруктурнаяЕдиница.БанкДляРасчетов.Город
| ИНАЧЕ Реквизиты.СтруктурнаяЕдиница.Банк.Наименование + "" "" + Реквизиты.СтруктурнаяЕдиница.Банк.Город
| КОНЕЦ КАК НаименованиеБанкаПолучателя,
| ВЫБОР
| КОГДА Реквизиты.СтруктурнаяЕдиница.БанкДляРасчетов <> ЗНАЧЕНИЕ(Справочник.Банки.ПустаяСсылка)
| ТОГДА Реквизиты.СтруктурнаяЕдиница.БанкДляРасчетов
| ИНАЧЕ Реквизиты.СтруктурнаяЕдиница.Банк
| КОНЕЦ КАК БанкПолучателя,
| ВЫБОР
| КОГДА Реквизиты.СтруктурнаяЕдиница.БанкДляРасчетов <> ЗНАЧЕНИЕ(Справочник.Банки.ПустаяСсылка)
| ТОГДА Реквизиты.СтруктурнаяЕдиница.БанкДляРасчетов.Код
| ИНАЧЕ Реквизиты.СтруктурнаяЕдиница.Банк.Код
| КОНЕЦ КАК БикБанкаПолучателя,
| ВЫБОР
| КОГДА Реквизиты.СтруктурнаяЕдиница.БанкДляРасчетов <> ЗНАЧЕНИЕ(Справочник.Банки.ПустаяСсылка)
| ТОГДА Реквизиты.СтруктурнаяЕдиница.БанкДляРасчетов.КоррСчет
| ИНАЧЕ Реквизиты.СтруктурнаяЕдиница.Банк.КоррСчет
| КОНЕЦ КАК СчетБанкаПолучателя,
| ВЫБОР
| КОГДА Реквизиты.СтруктурнаяЕдиница.БанкДляРасчетов <> ЗНАЧЕНИЕ(Справочник.Банки.ПустаяСсылка)
| ТОГДА Реквизиты.СтруктурнаяЕдиница.БанкДляРасчетов.Город
| ИНАЧЕ Реквизиты.СтруктурнаяЕдиница.Банк.Город
| КОНЕЦ КАК ГородБанкаПолучателя,
| ВЫБОР
| КОГДА Реквизиты.СтруктурнаяЕдиница.БанкДляРасчетов <> ЗНАЧЕНИЕ(Справочник.Банки.ПустаяСсылка)
| ТОГДА Реквизиты.СтруктурнаяЕдиница.Банк.КоррСчет
| ИНАЧЕ Реквизиты.СтруктурнаяЕдиница.НомерСчета
| КОНЕЦ КАК НомерСчетаПолучателя,
| ВЫБОР
| КОГДА Реквизиты.СтруктурнаяЕдиница.БанкДляРасчетов <> ЗНАЧЕНИЕ(Справочник.Банки.ПустаяСсылка)
| ТОГДА "" р/с "" + Реквизиты.СтруктурнаяЕдиница.НомерСчета + "" в "" + Реквизиты.СтруктурнаяЕдиница.Банк.Наименование + "" "" + Реквизиты.СтруктурнаяЕдиница.Банк.Город
| КОНЕЦ КАК БанкТекстКорресподента,
| Реквизиты.Контрагент,
| Реквизиты.Организация,
| Реквизиты.Организация,
| Реквизиты.ОрганизацияПолучатель,
| Реквизиты.СуммаДокумента,
| Реквизиты.ВалютаДокумента,
| Реквизиты.СуммаВключаетНДС,
| "+ ЧастьЗапросаДляВыбораСодержанияУслуг +",
| "+ ЧастьЗапросаДляВыбораСодержанияУслуг +",
| ВЫБОР
| КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул)
| ТОГДА ЗаказПокупателя.Номенклатура.Артикул
| КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.Код)
| ТОГДА ЗаказПокупателя.Номенклатура.Код
| КОГДА &ДополнительнаяКолонкаПечатныхФормДокументов = ЗНАЧЕНИЕ(Перечисление.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить)
| ТОГДА """"
| КОНЕЦ,
| ЗаказПокупателя.Количество,
| ЗаказПокупателя.Номенклатура.ЕдиницаИзмерения.Наименование,
| ЗаказПокупателя.Цена,
| ЗаказПокупателя.Сумма,
| ЗаказПокупателя.СуммаНДС,
| ЗаказПокупателя.НомерСтроки,
| 2
|ИЗ
| Документ.СчетНаОплатуПокупателю.Услуги КАК ЗаказПокупателя
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетНаОплатуПокупателю КАК Реквизиты
| ПО (ЗаказПокупателя.Ссылка = Реквизиты.Ссылка)
|ГДЕ
| ЗаказПокупателя.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| ID,
| НомерСтроки";
Возврат ТекстЗапроса;
КонецФункции
// Сформировать печатные формы объектов
// Функция формирует печатную форму документа.
//
// Параметры:
// МассивОбъектов - Массив - массив документов для печати - обязательный содержит массив ссылок на объекты аналог СсылкаНаОбъект в обычном
// Возвращаемое значение:
// ТабличныйДокумент
//
Функция СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати)
Перем ПодразделениеОтветственныхЛиц;
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.АвтоМасштаб = Истина;
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПокупателя_СчетЗаказ";
ДополнительнаяКолонкаПечатныхФормДокументов = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
Если НЕ ЗначениеЗаполнено(ДополнительнаяКолонкаПечатныхФормДокументов) Тогда
ДополнительнаяКолонкаПечатныхФормДокументов = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить;
КонецЕсли;
ВыводитьКоды = ДополнительнаяКолонкаПечатныхФормДокументов <> Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.НеВыводить;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.УстановитьПараметр("ДополнительнаяКолонкаПечатныхФормДокументов", ДополнительнаяКолонкаПечатныхФормДокументов);
Запрос.Текст = ПолучитьТекстЗапросаДляФормированияПечатнойФормыСчетаНаОплатуПокупателю();
Шапка = Запрос.Выполнить().Выбрать();
ПервыйДокумент = Истина;
Пока Шапка.СледующийПоЗначениюПоля("Ссылка") Цикл
Макет = УправлениеПечатью.ПолучитьМакет("СчетНаОплату");
Если НЕ ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
// Запомним номер строки, с которой начали выводить текущий документ.
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
// Выводим шапку счета
СведенияОПолучателе = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.Дата);
ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокСчета");
ОбластьМакета.Параметры.Заполнить(Шапка);
ОбластьМакета.Параметры.ИННПолучателя = СведенияОПолучателе.ИНН;
ОбластьМакета.Параметры.КПППолучателя = СведенияОПолучателе.КПП;
Если ТипЗнч(Шапка.СтруктурнаяЕдиница) = Тип("СправочникСсылка.БанковскиеСчета") Тогда
ОбластьМакета.Параметры.БИКБанкаПолучателя = Шапка.БикБанкаПолучателя;
ОбластьМакета.Параметры.БанкПолучателя = Шапка.БанкПолучателя;
ОбластьМакета.Параметры.БанкПолучателяПредставление = СокрЛП(Шапка.НаименованиеБанкаПолучателя);
ОбластьМакета.Параметры.СчетБанкаПолучателя = Шапка.СчетБанкаПолучателя;
ОбластьМакета.Параметры.СчетБанкаПолучателяПредставление = Шапка.СчетБанкаПолучателя;
ОбластьМакета.Параметры.СчетПолучателяПредставление = Шапка.НомерСчетаПолучателя;
ОбластьМакета.Параметры.СчетПолучателя = Шапка.НомерСчетаПолучателя;
КонецЕсли;
Если ПустаяСтрока(Шапка.ТекстКорреспондента) Тогда
ТекстКорреспондента = СведенияОПолучателе.НаименованиеДляПечатныхФорм;
Если ЗначениеЗаполнено(Шапка.БанкДляРасчетов) Тогда
ТекстКорреспондента = ТекстКорреспондента + Шапка.БанкТекстКорресподента;
КонецЕсли;
Иначе
ТекстКорреспондента = Шапка.ТекстКорреспондента;
КонецЕсли;
ОбластьМакета.Параметры.ПредставлениеПолучателя = ТекстКорреспондента;
ТабличныйДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначенияБПВызовСервера.СформироватьЗаголовокДокумента(Шапка, "Счет на оплату");
ТабличныйДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
ОбластьМакета.Параметры.Заполнить(Шапка);
СведенияОбОрганизации = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата);
ОбластьМакета.Параметры.ПредставлениеПоставщика = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(
СведенияОбОрганизации, "НаименованиеДляПечатныхФорм,ИНН,КПП,ЮридическийАдрес,Телефоны,");
ТабличныйДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
ОбластьМакета.Параметры.Заполнить(Шапка);
СведенияОПокупателе = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шапка.Покупатель, Шапка.Дата);
ОбластьМакета.Параметры.ПредставлениеПокупателя = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(
СведенияОПокупателе, "НаименованиеДляПечатныхФорм,ИНН,КПП,ЮридическийАдрес,Телефоны,");
ТабличныйДокумент.Вывести(ОбластьМакета);
ОбластьНомера = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодов");
ОбластьДанных = Макет.ПолучитьОбласть("ШапкаТаблицы|Данные");
ОбластьСуммы = Макет.ПолучитьОбласть("ШапкаТаблицы|Сумма");
ТабличныйДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
Если ДополнительнаяКолонкаПечатныхФормДокументов = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
ОбластьКодов.Параметры.ИмяКолонкиКодов = "Артикул";
ИначеЕсли ДополнительнаяКолонкаПечатныхФормДокументов = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
ОбластьКодов.Параметры.ИмяКолонкиКодов = "Код";
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьДанных);
ТабличныйДокумент.Присоединить(ОбластьСуммы);
ОбластьКолонкаТовар = Макет.Область("Товар");
Если Не ВыводитьКоды Тогда
ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки + Макет.Область("КолонкаКодов").ШиринаКолонки;
КонецЕсли;
ОбластьНомера = Макет.ПолучитьОбласть("Строка|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("Строка|КолонкаКодов");
ОбластьДанных = Макет.ПолучитьОбласть("Строка|Данные");
ОбластьСуммы = Макет.ПолучитьОбласть("Строка|Сумма");
Сумма = 0;
СуммаНДС = 0;
ВсегоСкидок = 0;
ВсегоБезСкидок = 0;
НомерСтроки = 0;
Пока Шапка.Следующий() Цикл
НомерСтроки = НомерСтроки + 1;
ОбластьНомера.Параметры.НомерСтроки = НомерСтроки;
ТабличныйДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ОбластьКодов.Параметры.Заполнить(Шапка);
ТабличныйДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ОбластьДанных.Параметры.Товар = СокрЛП(Шапка.Товар);
ОбластьДанных.Параметры.Количество = Шапка.Количество;
ОбластьДанных.Параметры.ЕдиницаИзмерения = Шапка.ЕдиницаИзмерения;
ОбластьДанных.Параметры.Цена = Шапка.Цена;
ТабличныйДокумент.Присоединить(ОбластьДанных);
ОбластьСуммы.Параметры.Сумма = Шапка.Сумма;
ТабличныйДокумент.Присоединить(ОбластьСуммы);
Сумма = Сумма + Шапка.Сумма;
СуммаНДС = СуммаНДС + Шапка.СуммаНДС;
КонецЦикла;
// Вывести Итого
ОбластьНомера = Макет.ПолучитьОбласть("Итого|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("Итого|КолонкаКодов");
ОбластьДанных = Макет.ПолучитьОбласть("Итого|Данные");
ОбластьСуммы = Макет.ПолучитьОбласть("Итого|Сумма");
ТабличныйДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ТабличныйДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьДанных);
ОбластьСуммы.Параметры.Всего = ОбщегоНазначенияБПВызовСервера.ФорматСумм(Сумма);
ТабличныйДокумент.Присоединить(ОбластьСуммы);
// Вывести ИтогоНДС
ОбластьНомера = Макет.ПолучитьОбласть("ИтогоНДС|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("ИтогоНДС|КолонкаКодов");
ОбластьДанных = Макет.ПолучитьОбласть("ИтогоНДС|Данные");
ОбластьСуммы = Макет.ПолучитьОбласть("ИтогоНДС|Сумма");
ТабличныйДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ТабличныйДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
Если СуммаНДС <> 0 Тогда
ОбластьДанных.Параметры.НДС = ?(Шапка.СуммаВключаетНДС, "В том числе НДС:", "Сумма НДС:");
ОбластьСуммы.Параметры.ВсегоНДС = ОбщегоНазначенияБПВызовСервера.ФорматСумм(СуммаНДС);
Иначе
ОбластьДанных.Параметры.НДС = "Без налога (НДС)";
ОбластьСуммы.Параметры.ВсегоНДС = "-";
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьДанных);
ТабличныйДокумент.Присоединить(ОбластьСуммы);
// Вывести ИтогоКОплате
ОбластьНомера = Макет.ПолучитьОбласть("ИтогоКОплате|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть("ИтогоКОплате|КолонкаКодов");
ОбластьДанных = Макет.ПолучитьОбласть("ИтогоКОплате|Данные");
ОбластьСуммы = Макет.ПолучитьОбласть("ИтогоКОплате|Сумма");
ТабличныйДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ТабличныйДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьДанных);
СуммаКОплате = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
ОбластьСуммы.Параметры.ИтогоКОплате = ОбщегоНазначенияБПВызовСервера.ФорматСумм(СуммаКОплате);
ТабличныйДокумент.Присоединить(ОбластьСуммы);
// Вывести Сумму прописью
ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
ОбластьМакета.Параметры.ИтоговаяСтрока ="Всего наименований " + Шапка.Количество()
+ ", на сумму " + ОбщегоНазначенияБПВызовСервера.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента);
ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначенияБПВызовСервера.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента);
ТабличныйДокумент.Вывести(ОбластьМакета);
// Вывести подписи
Если ОбщегоНазначения.ПолучитьЗначениеРеквизита(Шапка.Получатель, "ЮридическоеФизическоеЛицо")
= Перечисления.ЮридическоеФизическоеЛицо.ЮридическоеЛицо Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ПодвалСчета");
ПодразделениеОтветственныхЛиц = Шапка.ПодразделениеОрганизации;
Руководители = ОбщегоНазначенияБПВызовСервера.ОтветственныеЛица(Шапка.Организация, Шапка.Дата, ПодразделениеОтветственныхЛиц);
Руководитель = Руководители.РуководительПредставление;
Бухгалтер = Руководители.ГлавныйБухгалтерПредставление;
ОбластьМакета.Параметры.ФИОРуководителя = Руководитель;
ОбластьМакета.Параметры.ФИОБухгалтера = Бухгалтер;
Иначе
ОбластьМакета = Макет.ПолучитьОбласть("ПодвалСчетаПредприниматель");
ФЛ = ОбщегоНазначения.ПолучитьЗначениеРеквизита(Шапка.Получатель, "ИндивидуальныйПредприниматель");
ДанныеФЛ = РегистрыСведений.ФИОФизическихЛиц.СрезПоследних(Шапка.Дата, Новый Структура("ФизическоеЛицо",ФЛ));
Если ДанныеФЛ.Количество() > 0 Тогда
Предприниматель = СокрЛП(ДанныеФЛ[0].Фамилия) + " " + Лев(СокрЛП(ДанныеФЛ[0].Имя),1) + ". " + Лев(СокрЛП(ДанныеФЛ[0].Отчество),1) + ".";
Иначе
Предприниматель = "";
КонецЕсли;
ОбластьМакета.Параметры.ФИОПредпринимателя = Предприниматель;
КонецЕсли;
ОбластьМакета.Параметры.Заполнить(Шапка);
ТабличныйДокумент.Вывести(ОбластьМакета);
// В табличном документе зададим имя области, в которую был
// выведен объект. Нужно для возможности печати покомплектно.
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент,
НомерСтрокиНачало, ОбъектыПечати, Шапка.Ссылка);
КонецЦикла;
Возврат ТабличныйДокумент;
КонецФУнкции
//
// ВХОДЯЩИЕ:
// ИменаМакетов - Строка - Имена макетов, перечисленные через запятую
// МассивОбъектов - Массив - Массив ссылок на объекты которые нужно распечатать
//
// ИСХОДЯЩИЕ:
// КоллекцияПечатныхФорм - Таблица значений - Сформированные табличные документы
// ПараметрыВывода - Структура - Параметры сформированных табличных документов
//
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати) Экспорт
//Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, ТО ЧТО В ПараметрыРегистрации.Наименование) Тогда
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Печать счета ИП ") Тогда
//УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,
// ТО ЧТО В ПараметрыРегистрации.Наименование, "Заголовок(?)",
// СформироватьПечатнуюФорму("Счет", МассивОбъектов, ОбъектыПечати)) - собсна процедура печати;
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,
"Печать счета ИП ", "Счет на оплату",
СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
КонецПроцедуры // Печать()
(1) pvl_mksv, у Вас в процедуре "Печать" объявлено 3 параметра, а при вызове этой процедуры Вы ей передаёте 2 фактических параметра. Вот и выводит сообщение
(1) pvl_mksv, у Вас в процедуре "Печать" объявлено 3 параметра, а при вызове этой процедуры Вы ей передаёте 2 фактических параметра. Вот и выводит сообщение
(3) pvl_mksv, И тебе спасибо, Друг,
У меня такая-же проблема, с параметрами, поделись как решил проблему
или хотя-бы, структуру параметров опиши.
Спасибо.
(2),(3),(4) И, да поправит меня уважаемый mikr, во внешней печатной форме объявляется экспортная процедура Печать, это требование объясняется использованием БСП (библиотеки стандартных подсистем), следующим образом:
с двумя параметрами ИдентификаторКомандыОбработки, ОбъектыНазначенияМассив.
Мы не можем изменить модули БСП, соотвественно подгоняем объявление процедуры под вызов, то есть выкидываем параметр "Объекты печати" из объявления процедуры, станет