|
Внешняя печатная форма с нуля!!! | ☑ | ||
---|---|---|---|---|
0
Kucha88
14.12.12
✎
09:45
|
Добрый день, делаю внешнюю печатную форму Инвентаризационная опись к документу Инвентаризация НЗП, но вывод ошибку при формировании печати "Недостаточно фактических параметров" Код ниже:
Функция Печать(МассивОбъектов, ОбъектыПечати) экспорт ТекстЗапроса = " |ВЫБРАТЬ | ИнвентаризацияНЗП.Организация, | ИнвентаризацияНЗП.Подразделение, | ИнвентаризацияНЗП.Ссылка, | ИнвентаризацияНЗП.Номер, | ИнвентаризацияНЗП.Дата, | ИнвентаризацияНЗП.Заказ, | ИнвентаризацияНЗП.Материалы.( | Ссылка, | НомерСтроки КАК НомерСтроки, | ЕдиницаИзмеренияМест, | Заказ, | КоличествоМест, | Коэффициент, | Номенклатура, | НоменклатурнаяГруппа, | СерияНоменклатуры, | Количество, | ХарактеристикаНоменклатуры, | СчетЗатрат, | СчетЗатратНУ, | ЕдиницаИзмерения, | Номенклатура.Представление КАК НоменклатураПредставление, | Номенклатура.БазоваяЕдиницаИзмерения.Код КАК ЕдиницаИзмеренияКод | ), | ИнвентаризацияНЗП.ВводитьЗаказыПоСтрокам, | ИнвентаризацияНЗП.Заказ.Представление КАК ЗаказПредставление, | ИнвентаризацияНЗП.Организация.Представление КАК ОрганизацияПредставление, | ИнвентаризацияНЗП.Подразделение.Представление КАК ПодразделениеПредставление |ИЗ | Документ.ИнвентаризацияНЗП КАК ИнвентаризацияНЗП |ГДЕ | ИнвентаризацияНЗП.Ссылка = &ТекДок | |УПОРЯДОЧИТЬ ПО | НомерСтроки"; ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ИнвентаризацияНЗП_ИнвентаризационнаяОпись"; ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; Макет = ПолучитьМакет("ИнвентаризационнаяОпись"); ПервыйДокумент = Истина; Для Каждого Ссылка Из МассивОбъектов Цикл Если Не ПервыйДокумент Тогда ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; ПервыйДокумент = Ложь; НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1; Запрос = Новый Запрос; Запрос.Текст = ТекстЗапроса; Запрос.УстановитьПараметр( "ТекДок", СсылкаНаОбъект); РезультатЗапроса = Запрос.Выполнить(); Шапка = РезультатЗапроса.Выбрать(); Шапка.Следующий(); ИнфоОрг = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице( Шапка.Организация, Ссылка.Дата); Область = Макет.ПолучитьОбласть( "Шапка"); Область.Параметры.ПечНомерДок = Шапка.Номер; Область.Параметры.ПечДатаДок = Шапка.Дата; Область.Параметры.ПечОрганизация = ИнфоОрг.ПолноеНаименование; Область.Параметры.ПечПодразделение = Шапка.ПодразделениеПредставление; Если НЕ Шапка.ВводитьЗаказыПоСтрокам И ЗначениеЗаполнено(Ссылка.Заказ)Тогда Область.Параметры.ПечЗаказ = Шапка.ЗаказПредставление; Область.Параметры.Заказ = Шапка.ЗаказПредставление; КонецЕсли; Область.Параметры.КодОКПО = ИнфоОрг.КодПоОКПО; Область.Параметры.Организация = Шапка.Организация; Область.Параметры.Подразделение = Шапка.Подразделение; ТабДокумент.Вывести(Область); ОбластьТабШапка = Макет.ПолучитьОбласть("ТабШапка"); ТабДокумент.Вывести(ОбластьТабШапка); Индекс = 0; ВсегоТМЦ = 0; ВсегоКолФакт = 0; КолФактСтр = 0; СтрокНаЛисте = 10; Обход = Шапка.Материалы.Выбрать(); Пока Обход.Следующий() Цикл Если Индекс >= СтрокНаЛисте Тогда ОбластьПодвал = Макет.ПолучитьОбласть("ПодвалСтраницы"); ОбластьПодвал.Параметры.КолНомСтр = Индекс; ОбластьПодвал.Параметры.ИтогКолСтр = КолФактСтр; ТабДокумент.Вывести( ОбластьПодвал); Индекс = 0; КолФактСтр = 0; ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); ТабДокумент.Вывести(ОбластьТабШапка); СтрокНаЛисте = 31; // На первом листе 9 строк, на остальных 30 КонецЕсли; Индекс = Индекс + 1; ВсегоТМЦ = ВсегоТМЦ + 1; Область = Макет.ПолучитьОбласть("Строка"); Область.Параметры.ПечНомер = Формат( Индекс, "ЧЦ=6; ЧН="); Область.Параметры.ПечНоменклатура = Обход.НоменклатураПредставление; Область.Параметры.Номенклатура = Обход.Номенклатура; Область.Параметры.ПечКодТМЦ = Обход.Номенклатура.Код; Область.Параметры.ПечКодЕИ = Обход.ЕдиницаИзмеренияКод; Область.Параметры.ПечЕИ = Обход.ЕдиницаИзмерения.Наименование; Область.Параметры.ПечКолФакт = Формат( Обход.Количество, "ЧЦ=15; ЧДЦ=3"); ТабДокумент.Вывести(Область); КолФактСтр = КолФактСтр + Обход.Количество; ВсегоКолФакт = ВсегоКолФакт + Обход.Количество; КонецЦикла; Область = Макет.ПолучитьОбласть("Итого"); Область.Параметры.ПечКолФактИтого = Формат( ВсегоКолФакт, "ЧЦ=15; ЧДЦ=3"); ТабДокумент.Вывести( Область); Если Индекс > 0 Тогда ОбластьПодвал = Макет.ПолучитьОбласть("ПодвалСтраницы"); ОбластьПодвал.Параметры.КолНомСтр = Индекс; ОбластьПодвал.Параметры.ИтогКолСтр = КолФактСтр; ТабДокумент.Вывести( ОбластьПодвал); КонецЕсли; Область = Макет.ПолучитьОбласть("Подвал"); Область.Параметры.ВсегоТМЦ = ВсегоТМЦ; Область.Параметры.ИтогоКолОпись = ВсегоКолФакт; ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); ТабДокумент.Вывести( Область); //УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент, НомерСтрокиНачало, ОбъектыПечати, Ссылканаобъект.Ссылка); КонецЦикла; Возврат ТабДокумент; КонецФункции // ПечатьИнвентаризационнаяОпись() Помогите решить проблему пожалуйста!!! |
|||
1
Stim
14.12.12
✎
09:46
|
на каку строчку ругается?
|
|||
2
Kucha88
14.12.12
✎
09:55
|
не пишет какая строка
|
|||
3
YF
14.12.12
✎
09:57
|
(2) Отладчик в руки и вперед
|
|||
4
Wassily
14.12.12
✎
09:58
|
Конфигуратор - Отладка - Остановка по ошибке
|
|||
5
Шапокляк
14.12.12
✎
09:59
|
(0) Вроде как в штатном механизме использования внещних печатных форм предполагается вызов процедуры Печать без параметров.
|
|||
6
Kucha88
14.12.12
✎
10:01
|
(4) Сейчас попробую
|
|||
7
Kucha88
14.12.12
✎
10:02
|
Ругается на общий модуль документа код: ТабДокумент = Обработка.Печать();
|
|||
8
YF
14.12.12
✎
10:03
|
(7) Клиент-серверный вариант?
|
|||
9
sidalexsandr
14.12.12
✎
10:03
|
Нажми F12
|
|||
10
Wobland
14.12.12
✎
10:03
|
(7) кто из них общий модуль? что такое общий модуль документа?
|
|||
11
Maxus43
14.12.12
✎
10:03
|
в типовом механизме внешних печатных так:
Функция Печать() Экспорт + реквизит(переменная) ссылканаобъект |
|||
12
Maxus43
14.12.12
✎
10:03
|
без параметров
|
|||
13
Maxus43
14.12.12
✎
10:04
|
нажми f1 на справочнике внешних печ форм!
|
|||
14
Светлый Гений
14.12.12
✎
10:04
|
(7)у тебя в обработке функция Печать с 2-мя параметрами, а вызываешь без параметров
|
|||
15
Kucha88
14.12.12
✎
10:42
|
(14) а как нужно? (11) ну если убрать параметры то опять начинаются ошибки на эти параметры
|
|||
16
Wobland
14.12.12
✎
10:44
|
(15) Максус тебе сказал, как нужно, как должно быть. делай.
|
|||
17
Kucha88
14.12.12
✎
10:44
|
вот код на который ругается
Функция НапечататьВнешнююФорму(Ссылка, ИсточникМакета) Экспорт Перем ДополнительныеПараметры; ДвоичныеДанные = ИсточникМакета.СсылкаНаВнешнююОбработку.Принадлежность[ИсточникМакета.НомерСтроки - 1].ХранилищеВнешнейОбработки.Получить(); // Получить дополнительные параметры внешней обработки ИсточникМакета.Свойство("ДополнительныеПараметрыОбработки", ДополнительныеПараметры); Если ДвоичныеДанные = Неопределено Тогда ДвоичныеДанные = ИсточникМакета.СсылкаНаВнешнююОбработку.ХранилищеВнешнейОбработки.Получить(); КонецЕсли; Если ДвоичныеДанные = Неопределено Тогда Возврат Неопределено; КонецЕсли; ТабДокумент = Неопределено; ИмяФайла = ПолучитьИмяВременногоФайла("epf"); Попытка ДвоичныеДанные.Записать(ИмяФайла); Обработка = ВнешниеОбработки.Создать(ИмяФайла); Обработка.СсылкаНаОбъект = Ссылка; // Передать внешней обработке дополнительные параметры Если ДополнительныеПараметры <> Неопределено Тогда // Если у внешней обработки есть реквизит для дополнительных параметров, присвоить ему значение Если НЕ Обработка.Метаданные().Реквизиты.Найти("ДополнительныеПараметры") = Неопределено Тогда Обработка.ДополнительныеПараметры = ДополнительныеПараметры; КонецЕсли; КонецЕсли; ТабДокумент = Обработка.Печать(); вот эта строка на которую ругается УдалитьФайлы(ИмяФайла); Исключение ОбщегоНазначения.СообщитьОбОшибке(ОписаниеОшибки(),, "Не удалось сформировать внешнюю печатную форму!"); КонецПопытки; Возврат ТабДокумент; КонецФункции |
|||
18
Kucha88
14.12.12
✎
10:45
|
(16) ну хорошо щас попробую переделать
|
|||
19
Wobland
14.12.12
✎
10:45
|
(17) в общем случае внимательное чтение сообщения об ошибке сокращает количество тем на форумах и не уменьшает длину нервов
|
|||
20
Kucha88
14.12.12
✎
10:50
|
если убрать параметры печати то как тогда избежать
Для Каждого Ссылка Из МассивОбъектов Цикл//потому что ругается на МассивОбъектов |
|||
21
Wobland
14.12.12
✎
10:56
|
(20) лучше задайся вопросом "как начать жить с правильной функцией Печать()?"
я не знаю, мне лениво колупать то, что будет переписано |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |