Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 04:32

Ошибка "Слишком много фактических параметров"?

Автор Malinka1091, 15 апр 2018, 13:47

0 Пользователей и 1 гость просматривают эту тему.

Malinka1091

Здравствуйте, помогите ,пожалуйста, самой разобраться не получается.
Пытаюсь написать внешнюю печатную форму заявки на кассовый расход для БГУ 2.0, чтобы выводилась на одном листе.

Функция Печать() Экспорт
   Возврат ПечатьЗаявкиНаРасход();
КонецФункции

Функция СведенияОВнешнейОбработке() Экспорт
   
   ПараметрыРегистрации = Новый Структура;
   
   МассивНазначений = Новый Массив;
   МассивНазначений.Добавить("Документ.ЗаявкаНаКассовыйРасход");
   
      
   ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
   ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
   ПараметрыРегистрации.Вставить("Наименование", "ЗаявкаНаКассовыйРасход(шаблон)");
   ПараметрыРегистрации.Вставить("Версия", "1.1");
    ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ);   
   ПараметрыРегистрации.Вставить("Информация", "Дополнительная печатная форма к документу Заявка на кассовый расход");

   ТаблицаКоманд = ПолучитьТаблицуКоманд();
   ДобавитьКоманду(ТаблицаКоманд, "ЗаявкаНаКассовыйРасход (шаблон)", "ЗаявкаНаКассовыйРасход ", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
   ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;

КонецФункции

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

Функция ПечатьЗаявкиНаРасход()
   
   ТабДокумент = Новый ТабличныйДокумент;
   ТабДокумент.ОриентацияСтраницы                = ОриентацияСтраницы.Портрет;
   ТабДокумент.АвтоМасштаб                   = Истина;
    ТабДокумент.ВерхнийКолонтитул.Выводить          = Истина;
   ТабДокумент.ВерхнийКолонтитул.НачальнаяСтраница = 2;
   ТабДокумент.НижнийКолонтитул.Выводить          = Истина;
   ТабДокумент.ПолеСверху                      = 10;
   ТабДокумент.ПолеСнизу                      = 12;
    ТабДокумент.РазмерКолонтитулаСверху          = 10;
   ТабДокумент.РазмерКолонтитулаСнизу             = 12;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаявкаНаКассовыйРасход_ЗаявкаНаКассовыйРасход";
   
   Макет = ПолучитьМакет("ПФ_MXL_Форма0531801");
   
   ДанныеДляПечати = ПлатежноРасчетныеДокументы.ЗначенияРеквизитовЗаявкаНаКассовыйРасход(СсылкаНаОбъект);

     // вывод в табличный документ
   ОбластьВывода = Макет.ПолучитьОбласть("Заголовок");
   ОбластьВывода.Параметры.Заполнить(ДанныеДляПечати);
   ТабДокумент.Вывести(ОбластьВывода);
   
   // дальше надо смотреть, умещается ли на страницу
   // Раздел 1
   ШапкаРаздела          = Макет.ПолучитьОбласть("ШапкаРаздела");
   ДанныеДляПечати.Вставить("пНомерСтраницы", "1");
   ШапкаРаздела.Параметры.Заполнить(ДанныеДляПечати);
   ВывестиОбластьСПодсчетомСтраниц(Макет, ТабДокумент, "Раздел_1", ДанныеДляПечати, ДанныеДляПечати, ,ШапкаРаздела);
   
   // Раздел 2
   //
   //<-- раздел 2 со след. страницы
   ОбластьВывода = Макет.ПолучитьОбласть("Подвал");
   ОбластьВывода.Параметры.Заполнить(ДанныеДляПечати);
   ТабДокумент.Вывести(ОбластьВывода);
   //ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
   
   ШапкаРаздела = Макет.ПолучитьОбласть("ШапкаРаздела");
   ДанныеДляПечати.Вставить("пНомерСтраницы", "2");
   ШапкаРаздела.Параметры.Заполнить(ДанныеДляПечати);
   ТабДокумент.Вывести(ШапкаРаздела);
    //<--
   
   // таблица раздела 2
    Если ДанныеДляПечати.ВыводитьРаздел_2 Тогда
      ВывестиОбластьСПодсчетомСтраниц(Макет, ТабДокумент, "Раздел_2", Новый Структура, ДанныеДляПечати); 
      Для Каждого СтрВыборка Из ДанныеДляПечати.РеквизитыДокументаОснования Цикл
         ВывестиОбластьСПодсчетомСтраниц(Макет, ТабДокумент, "Раздел_2_Строка", СтрВыборка, ДанныеДляПечати, "Раздел_2_Шапка", ШапкаРаздела); 
      КонецЦикла;
      ТабДокумент.Вывести(Макет.ПолучитьОбласть("Разделитель_2"));
   КонецЕсли;
   
   // Раздел 3
   ВывестиОбластьСПодсчетомСтраниц(Макет, ТабДокумент, "Раздел_3", ДанныеДляПечати, ДанныеДляПечати, ,ШапкаРаздела);
   
   // Раздел 4
   Если ДанныеДляПечати.ВыводитьРаздел_4 Тогда
      ВывестиОбластьСПодсчетомСтраниц(Макет, ТабДокумент, "Раздел_4", ДанныеДляПечати, ДанныеДляПечати, ,ШапкаРаздела);
   КонецЕсли;

    // Раздел 5
   ОбластьВывода = Макет.ПолучитьОбласть("Подвал");
   ОбластьВывода.Параметры.Заполнить(ДанныеДляПечати);
   ТабДокумент.Вывести(ОбластьВывода);
   //ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
   
   ШапкаРаздела = Макет.ПолучитьОбласть("ШапкаРаздела");
   ДанныеДляПечати.Вставить("пНомерСтраницы", "3");
   ШапкаРаздела.Параметры.Заполнить(ДанныеДляПечати);
   ТабДокумент.Вывести(ШапкаРаздела);

    ВывестиОбластьСПодсчетомСтраниц(Макет, ТабДокумент, "Раздел_5", Новый Структура, ДанныеДляПечати); 
   Для Каждого СтрВыборка Из ДанныеДляПечати.РасшифровкаПлатежа Цикл
      ВывестиОбластьСПодсчетомСтраниц(Макет, ТабДокумент, "Раздел_5_Строка", СтрВыборка, ДанныеДляПечати, "Раздел_5_Шапка", ШапкаРаздела); 
   КонецЦикла;
   
    ТабДокумент.Вывести(Макет.ПолучитьОбласть("Разделитель"));
       
   // последняя подпись ответственного исполнителя
   ОбластьВывода = Макет.ПолучитьОбласть("Подвал");
   ОбластьВывода.Параметры.Заполнить(ДанныеДляПечати);
   //ОбластьВывода.Области.ОбластьМестоПечати.Текст = "М.П.";
   ТабДокумент.Вывести(ОбластьВывода);

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

   Возврат ТабДокумент;
   
КонецФункции

Процедура ВывестиОбластьСПодсчетомСтраниц(Макет, ТабДокумент, Область, ИсточникПараметров, ПоляПодвала, Шапка = Неопределено, ШапкаРаздела = Неопределено) 
   
   ВыводимыеОбласти = Новый Массив();
   ВыводимыеОбласти.Добавить(Макет.ПолучитьОбласть(Область));
   ВыводимыеОбласти.Добавить(Макет.ПолучитьОбласть("Подвал"));
   ВыводимыеОбласти[0].Параметры.Заполнить(ИсточникПараметров);
   ВыводимыеОбласти[1].Параметры.Заполнить(ПоляПодвала);
   
   Попытка
            ТабДокумент.Вывести(ВыводимыеОбласти[0]);
   Исключение
      Сообщить("В системе не установлено ни одного принтера.");
   КонецПопытки;
   
КонецПроцедуры

В БГУ 2.0 обработка подгрузилась, в списке печатных форм документа заявки на кассовый расход встала, но при попытке открыть внешнюю печатную форму пишет ошибку-"Слишком много фактических параметров"?

AIFrame

Предлагаете читать весь ваш код и угадывать, на какую строку или функцию ссылается ошибка? А вы потом посмотрите в подробностях ошибки и выберите победителя?
И еще - этот скриншот, в котором видно только что таки да, вы умеете делать файл-создать-внешняя обработка. Божественно.
И напоследок - есть тег [code]
На этом форуме. Угадайте, для чего он.

Sandi

Цитата: Malinka1091 от 15 апр 2018, 13:47
Здравствуйте, помогите ,пожалуйста, самой разобраться не получается.
Пытаюсь написать внешнюю печатную форму заявки на кассовый расход для БГУ 2.0, чтобы выводилась на одном листе.

Функция Печать() Экспорт
Возврат ПечатьЗаявкиНаРасход();
КонецФункции


Ваша процедура печать не принимает ни одного параметра, а при вызове ей передаются 4 параметра: МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода
Вот и выскакиевает ошибка "Слишком много параметров"
посмотрите, как реализована работа с внешними печатными формами в БСП

Процедура ПЕЧАТЬ должна выглядеть примерно следующим образом:


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


Функция СформироватьСвоюДополнительнуюПечатнуюФорму(МассивОбъектов, ОбъектыПечати) ЭКСПОРТ
ТабДок = Новый табличныйДокумент
////Здесь формируем свой табличный  документ

Возврат ТабДок;
КонецФункции



Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск