|
Внешняя печатная форма.Ошибка при запуске. | ☑ | ||
---|---|---|---|---|
0
greenyes1c
30.09.14
✎
17:03
|
Создал внешнюю печатную форму из внутренней.Добавляю ее в предприятие.Но при запуске печати пишет ошибку : Не удалось сформировать внешнюю печатную форму!
Недостаточно фактических параметров вот код который в модуле объекта. Перем мВалютаРегламентированногоУчета Экспорт; Перем Проведен Экспорт; Функция ПечатьМ4() Запрос = Новый Запрос; Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка); Запрос.Текст = "ВЫБРАТЬ | ПоступлениеТоваровУслуг.Номер КАК Номер, | ПоступлениеТоваровУслуг.Дата КАК ДатаСоставления, | ПоступлениеТоваровУслуг.НомерВходящегоДокумента КАК НомерСопроводительногоДокумента, | ПоступлениеТоваровУслуг.Организация, | ПоступлениеТоваровУслуг.Организация КАК ЮрФизЛицо, | ПоступлениеТоваровУслуг.Склад КАК МестоПриемки, | ПоступлениеТоваровУслуг.Склад.Представление КАК СкладНаименование, | ПоступлениеТоваровУслуг.Контрагент.Код КАК ПоставщикКод, | ПоступлениеТоваровУслуг.Контрагент КАК Поставщик, | ЕСТЬNULL(ПоступлениеТоваровУслуг.ДоговорКонтрагента.РасчетыВУсловныхЕдиницах, ЛОЖЬ) КАК РасчетыВУсловныхЕдиницах, | ПоступлениеТоваровУслуг.ВалютаДокумента, | ПоступлениеТоваровУслуг.КурсВзаиморасчетов КАК Курс, | ПоступлениеТоваровУслуг.КратностьВзаиморасчетов КАК Кратность, | ПоступлениеТоваровУслуг.УчитыватьНДС, | ПоступлениеТоваровУслуг.СуммаВключаетНДС, | ПоступлениеТоваровУслуг.СчетУчетаРасчетовСКонтрагентом КАК СубСчет |ИЗ | Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг |ГДЕ | ПоступлениеТоваровУслуг.Ссылка = &ТекущийДокумент"; Шапка = Запрос.Выполнить().Выбрать(); Шапка.Следующий(); ЗапросПоТоварам = Новый Запрос(); ЗапросПоТоварам.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект); ЗапросПоТоварам.УстановитьПараметр("Курс", ЗаполнениеДокументов.КурсДокумента(СсылкаНаОбъект.ПолучитьОбъект(), мВалютаРегламентированногоУчета)); ЗапросПоТоварам.УстановитьПараметр("Кратность", ЗаполнениеДокументов.КратностьДокумента(СсылкаНаОбъект.ПолучитьОбъект(), мВалютаРегламентированногоУчета)); ЗапросПоТоварам.Текст = "ВЫБРАТЬ | ПоступлениеТоваровУслуг.Номенклатура КАК Номенклатура, | ВЫРАЗИТЬ(ПоступлениеТоваровУслуг.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)) КАК ТоварНаименование, | ПоступлениеТоваровУслуг.Номенклатура.Код КАК ТоварКод, | ПоступлениеТоваровУслуг.Номенклатура.БазоваяЕдиницаИзмерения.Наименование КАК ЕдиницаИзмеренияНаименование, | ПоступлениеТоваровУслуг.Номенклатура.БазоваяЕдиницаИзмерения.Код КАК ЕдиницаИзмеренияКод, | ПоступлениеТоваровУслуг.СтавкаНДС КАК СтавкаНДС, | СУММА(ПоступлениеТоваровУслуг.Количество) КАК КоличествоПринято, | СУММА(ПоступлениеТоваровУслуг.Сумма * &Курс / &Кратность) КАК Стоимость, | СУММА(ПоступлениеТоваровУслуг.СуммаНДС * &Курс / &Кратность) КАК СуммаНДС, | МИНИМУМ(ПоступлениеТоваровУслуг.НомерСтроки) КАК НомерСтроки |ИЗ | Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслуг |ГДЕ | ПоступлениеТоваровУслуг.Ссылка = &ТекущийДокумент | |СГРУППИРОВАТЬ ПО | ПоступлениеТоваровУслуг.Номенклатура, | ПоступлениеТоваровУслуг.ЕдиницаИзмерения, | ПоступлениеТоваровУслуг.Цена, | ПоступлениеТоваровУслуг.СтавкаНДС | |УПОРЯДОЧИТЬ ПО | НомерСтроки"; Если Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить() = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда ЗапросПоТоварам.Текст = СтрЗаменить(ЗапросПоТоварам.Текст, "Номенклатура.Код","Номенклатура.Артикул"); КонецЕсли; ЗапросТовары = ЗапросПоТоварам.Выполнить().Выгрузить(); Если Проведен И (Шапка.РасчетыВУсловныхЕдиницах ИЛИ (Шапка.ВалютаДокумента <> мВалютаРегламентированногоУчета >= '20090101000000')) Тогда Запрос = Новый Запрос; Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект); Запрос.УстановитьПараметр("СчетУчетаРасчетовСКонтрагентом", СсылкаНаОбъект); Текст = "ВЫБРАТЬ | СУММА(Хозрасчетный.Сумма) КАК Сумма |ИЗ | РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный |ГДЕ | Хозрасчетный.Регистратор = &Ссылка | И Хозрасчетный.СчетКт = &СчетУчетаРасчетовСКонтрагентом | И Хозрасчетный.СчетДт В | (ВЫБРАТЬ РАЗЛИЧНЫЕ | ПоступлениеТоваровУслуг.СчетУчета | ИЗ | Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслуг | ГДЕ | ПоступлениеТоваровУслуг.Ссылка = &Ссылка | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ РАЗЛИЧНЫЕ | ПоступлениеТоваровУслуг.СчетУчетаНДС | ИЗ | Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслуг | ГДЕ | ПоступлениеТоваровУслуг.Ссылка = &Ссылка)"; Запрос.Текст = Текст; СуммаВзаиморасчетов = Запрос.Выполнить().Выгрузить()[0].Сумма; РасчетСуммыНДСПоСтавке = УчетНДС.РасчетНДСвРубляхПоСтавкеДокумента(Шапка.ДатаСоставления); Если НЕ СуммаВзаиморасчетов = NULL Тогда ЗапросТовары.Колонки.Добавить("СуммаБезНДС"); МассивРаспределения = Новый Массив; Для Каждого СтрокаТовар Из ЗапросТовары Цикл СуммаСНДС = СтрокаТовар.Стоимость + ?(Шапка.СуммаВключаетНДС, 0, СтрокаТовар.СуммаНДС); СуммаБезНДС = СуммаСНДС - СтрокаТовар.СуммаНДС; МассивРаспределения.Добавить(СуммаСНДС); СтрокаТовар.СуммаБезНДС = СуммаБезНДС; КонецЦикла; ЗапросТовары.Колонки.Добавить("СуммаРублевая"); УчетНДС.РаспределитьСуммуПоСтолбцу(МассивРаспределения, СуммаВзаиморасчетов, ЗапросТовары, "СуммаРублевая"); Для Каждого СтрокаТовар Из ЗапросТовары Цикл Если РасчетСуммыНДСПоСтавке Тогда //Выделение суммы НДС, Расчет суммы без НДС ЗначениеСтавкиНДС = УчетНДС.ПолучитьСтавкуНДС(СтрокаТовар.СтавкаНДС); СтрокаТовар.СуммаНДС = ?(ЗначениеСтавкиНДС = 0, 0, Окр(СтрокаТовар.СуммаРублевая * ЗначениеСтавкиНДС/(100+ЗначениеСтавкиНДС),2)); СтрокаТовар.Стоимость = СтрокаТовар.СуммаРублевая - СтрокаТовар.СуммаНДС; Иначе МассивРаспределения.Очистить(); МассивРаспределения.Добавить(СтрокаТовар.СуммаБезНДС); МассивРаспределения.Добавить(СтрокаТовар.СуммаНДС); МассивРаспределенныхСумм = ОбщегоНазначения.РаспределитьПропорционально(СтрокаТовар.СуммаРублевая, МассивРаспределения); Если МассивРаспределенныхСумм <> Неопределено Тогда СтрокаТовар.Стоимость = МассивРаспределенныхСумм[0]; СтрокаТовар.СуммаНДС = МассивРаспределенныхСумм[1]; КонецЕсли; КонецЕсли; Если Шапка.СуммаВключаетНДС Тогда СтрокаТовар.Стоимость = СтрокаТовар.Стоимость+СтрокаТовар.СуммаНДС; КонецЕсли; КонецЦикла; КонецЕсли; КонецЕсли; ТабДокумент = Новый ТабличныйДокумент; // Зададим параметры макета ТабДокумент.ПолеСверху = 0; ТабДокумент.ПолеСлева = 0; ТабДокумент.ПолеСнизу = 0; ТабДокумент.ПолеСправа = 0; ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПоступлениеТоваровУслуг_М4"; Макет = ПолучитьОбщийМакет("М4"); ОбластьМакетаШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьМакетаЗаголовокДокумента = Макет.ПолучитьОбласть("ЗаголовокДокумента"); ОбластьМакетаЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаблицы"); ОбластьМакетаСтрока = Макет.ПолучитьОбласть("Строка"); ОбластьМакетаПодвалСтрок = Макет.ПолучитьОбласть("ПодвалСтрок"); ОбластьМакетаИтого = Макет.ПолучитьОбласть("Итого"); ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал"); // Выводим общие реквизиты шапки СведенияОПокупателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.ЮрФизЛицо, Шапка.ДатаСоставления); ОбластьМакетаШапка.Параметры.Заполнить(Шапка); ОбластьМакетаШапка.Параметры.ПредставлениеОрганизации = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе); ОбластьМакетаШапка.Параметры.ОрганизацияПоОКПО = СведенияОПокупателе.КодПоОКПО; ОбластьМакетаШапка.Параметры.НомерДокумента = ОбщегоНазначения.ПолучитьНомерНаПечать(Шапка); ТабДокумент.Вывести(ОбластьМакетаШапка); // Выводим заголовок документа ОбластьМакетаЗаголовокДокумента.Параметры.Заполнить(Шапка); ОбластьМакетаЗаголовокДокумента.Параметры.ДатаСоставления = Шапка.ДатаСоставления; ПредставлениеКонтрагента = ФормированиеПечатныхФорм.ОписаниеОрганизации( УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Поставщик, Шапка.ДатаСоставления), "НаименованиеДляПечатныхФорм,"); ОбластьМакетаЗаголовокДокумента.Параметры.ПоставщикНаименование = ПредставлениеКонтрагента; ТабДокумент.Вывести(ОбластьМакетаЗаголовокДокумента); // Выводим заголовок таблицы ТабДокумент.Вывести(ОбластьМакетаЗаголовокТаблицы); // Инициализация итогов в документе ИтогоКоличествоПринято = 0; ИтогоСуммаБезНДС = 0; ИтогоСуммаНДС = 0; ИтогоВсегоСНДС = 0; Ном = 0; // Инициализация счетчиков страниц и строк НомерСтраницы = 1; НомерСтроки = 0; КоличествоСтрок = ЗапросТовары.Количество(); // Выводим многострочную часть документа Для Каждого ВыборкаСтрок Из ЗапросТовары Цикл НомерСтроки = НомерСтроки + 1; ОбластьМакетаСтрока.Параметры.Заполнить(ВыборкаСтрок); Кратность = ?(Шапка.Кратность = 0, 1, Шапка.Кратность); ВсегоСНДС = (ВыборкаСтрок.Стоимость + ?(Шапка.СуммаВключаетНДС, 0, ВыборкаСтрок.СуммаНДС)); КоличествоПринято = ВыборкаСтрок.КоличествоПринято; СуммаНДС = ВыборкаСтрок.СуммаНДС; Цена = (ВсегоСНДС - СуммаНДС) / ?(КоличествоПринято = 0, 1, КоличествоПринято); ОбластьМакетаСтрока.Параметры.КоличествоПринято = КоличествоПринято; ОбластьМакетаСтрока.Параметры.ВсегоСНДС = ВсегоСНДС; ОбластьМакетаСтрока.Параметры.СуммаБезНДС = ВсегоСНДС - СуммаНДС; ОбластьМакетаСтрока.Параметры.СуммаНДС = СуммаНДС; ОбластьМакетаСтрока.Параметры.Цена = Цена; ОбластьМакетаСтрока.Параметры.ТоварНаименование = СокрЛП(ВыборкаСтрок.ТоварНаименование); // Проверим вывод СтрокаСПодвалом = Новый Массив; СтрокаСПодвалом.Добавить(ОбластьМакетаСтрока); Если НомерСтроки = КоличествоСтрок Тогда // если последняя строка, должен СтрокаСПодвалом.Добавить(ОбластьМакетаИтого); // помещаться и подвал документа СтрокаСПодвалом.Добавить(ОбластьМакетаПодвал); Иначе // иначе - только подвал строк СтрокаСПодвалом.Добавить(ОбластьМакетаПодвалСтрок); КонецЕсли; Если НЕ ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, СтрокаСПодвалом) Тогда ТабДокумент.Вывести(ОбластьМакетаПодвалСтрок); ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); НомерСтраницы = НомерСтраницы + 1; ОбластьМакетаЗаголовокТаблицы.Параметры.НомерСтраницы = "Страница " + НомерСтраницы; ТабДокумент.Вывести(ОбластьМакетаЗаголовокТаблицы); КонецЕсли; ТабДокумент.Вывести(ОбластьМакетаСтрока); ИтогоКоличествоПринято = ИтогоКоличествоПринято + КоличествоПринято; ИтогоСуммаБезНДС = ИтогоСуммаБезНДС + ВсегоСНДС - СуммаНДС; ИтогоСуммаНДС = ИтогоСуммаНДС + СуммаНДС; ИтогоВсегоСНДС = ИтогоВсегоСНДС + ВсегоСНДС; КонецЦикла; // Выводим итоги по документу ОбластьМакетаИтого.Параметры.ИтогоКоличествоПринято = ИтогоКоличествоПринято; ОбластьМакетаИтого.Параметры.ИтогоСуммаБезНДС = ИтогоСуммаБезНДС; ОбластьМакетаИтого.Параметры.ИтогоСуммаНДС = ИтогоСуммаНДС; ОбластьМакетаИтого.Параметры.ИтогоВсегоСНДС = ИтогоВсегоСНДС; ТабДокумент.Вывести(ОбластьМакетаИтого); // Выводим итоги по документу ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал"); ОбластьМакетаПодвал.Параметры.Заполнить(Шапка); ТабДокумент.Вывести(ОбластьМакетаПодвал); Возврат ТабДокумент; КонецФункции // ПечатьМ4() Функция Печать(ИмяМакета, КоличествоЭкземпляров = 1, НаПринтер = Ложь, НепосредственнаяПечать = Ложь) Экспорт ТабДокумент = ПечатьМ4(); Возврат ТабДокумент; КонецФункции // Печать МВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить(); |
|||
1
Wobland
30.09.14
✎
17:04
|
это ты хвастаешься?
|
|||
2
greenyes1c
30.09.14
✎
17:15
|
Это я прошу помощи разобраться.Никак не могу понять почему так..
|
|||
3
Wobland
30.09.14
✎
17:16
|
там функция Печать() есть вообще?
|
|||
4
Wobland
30.09.14
✎
17:18
|
сделай форму, положи на неё ссылку на объект, откинсья на спинку кресла и насладись процессом отладки. форму потом викинешь
|
|||
5
greenyes1c
30.09.14
✎
17:21
|
Да.Все делал по инструкции по созданию внешних печатных форм.
Скопировал функцию Печать из модуля объекта документа.Вставил в модуль объекта формы. |
|||
6
greenyes1c
30.09.14
✎
17:24
|
Создал форму.Запустил отладку.Открыл внешнюю форму и вылетает ошибка {Форма.Форма.Форма(3,14)}: Недостаточно фактических параметров (Печать)
ТабДок = <<?>>Печать(); |
|||
7
Wobland
30.09.14
✎
17:25
|
(6) какие выводы ты можешь сделать из текста ошибки?
|
|||
8
greenyes1c
30.09.14
✎
17:26
|
То что у меня не хватает данных связанных с функцией печати?)
|
|||
9
Wobland
30.09.14
✎
17:27
|
ну пусть так. не хватает параметров для вызов
|
|||
10
DS
30.09.14
✎
17:30
|
По инструкции сколько параметров должно быть в "Печать()"?
|
|||
11
greenyes1c
30.09.14
✎
17:34
|
Эм...Там ничего про это не сказано.
|
|||
12
del123
30.09.14
✎
17:36
|
Функция Печать(ИмяМакета, КоличествоЭкземпляров = 1, НаПринтер = Ложь, НепосредственнаяПечать = Ложь) Экспорт
почисти что в скобках |
|||
13
DS
30.09.14
✎
17:37
|
(11) Очень сомнительно.
Вот из текста ошибки можно сделать вывод, что ни одного. |
|||
14
Wobland
30.09.14
✎
17:39
|
(13) это он форму сделал по моему совету
|
|||
15
DS
30.09.14
✎
17:39
|
(11) Вот что пишут в требованиях для типовых на 8.2:
"Функция «Печать()» - без параметров, возвращающая табличный документ." - коротко и ясно. |
|||
16
greenyes1c
30.09.14
✎
17:42
|
Удалил из скобок.Сохранил при запуске печати выдает ошибку Не удалось сформировать внешнюю печатную форму!
Поле объекта не обнаружено (Ссылка) Я все поля Ссылка заменял на СсылкаНаОбъект.Разве так не правильно? |
|||
17
DS
30.09.14
✎
17:49
|
(16) Не правильно.
"ЭтотОбъект.Ссылка" меняется на "СсылкаНаОбъект". Но могут быть обращения к реквизитам и через "ЭтотОбъект" или непосредственно по имени реквизита. |
|||
18
greenyes1c
30.09.14
✎
17:51
|
То есть мне сейчас заново создать форму и вместо Этот.Объект.Ссылка записать СсылкаНаОбъект.А остальное не трогать?
|
|||
19
DS
30.09.14
✎
17:54
|
Остальное надо изучать по сути.
|
|||
20
stix2010
30.09.14
✎
17:54
|
(0) проблема в ДНК
|
|||
21
greenyes1c
30.09.14
✎
17:55
|
Спасибо за совет.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |