8.х Метод объекта не обнаружен (Найти). Внешняя печатная фор

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем sdsdsdsds, 30 мар 2018.

  1. TopicStarter Overlay
    sdsdsdsds
    Offline

    sdsdsdsds

    Регистрация:
    30 мар 2018
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Добрый день. Пытаюсь создать внешнюю "ПФ_MXL_Т1" на основе кода из модуля менеджера обработки "ПечатьКадровыхПриказов".

    Ошибка такая: {ОбщийМодуль.УправлениеПечатью.Модуль(52)}: Метод объекта не обнаружен (Найти)
    ОписаниеПечатнойФормы = КоллекцияПечатныхФорм.Найти(ВРег(ИмяМакета), "ИмяВРЕГ");

    Подскажите, пожалуйста, в чем проблема?
    Обработка:
    Код:
    Функция СведенияОВнешнейОбработке() Экспорт
       
         ПараметрыРегистрации = Новый Структура;
         МассивНазначений = Новый Массив;
         МассивНазначений.Добавить("Обработка.ПечатьКадровыхПриказов"); //Указываем документ к которому делаем внешнюю печ. форму
    
         ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); //может быть - ПечатнаяФорма, ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов...
         ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
         ПараметрыРегистрации.Вставить("Наименование", "Т1 внешний"); //имя под которым обработка будет зарегестрирована в справочнике внешних обработок
         ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ);
         ПараметрыРегистрации.Вставить("Версия", "1.0");
         ПараметрыРегистрации.Вставить("Информация", "Форма из внешней обработки 'Т1 внешняя'");
         ТаблицаКоманд = ПолучитьТаблицуКоманд();
         ДобавитьКоманду(ТаблицаКоманд, "Т1 внешний", "Т1Внешний", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
         ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
        
         Возврат ПараметрыРегистрации;   
    КонецФункции
    Функция ПолучитьТаблицуКоманд() Экспорт
    
         Команды = Новый ТаблицаЗначений;
         Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));//как будет выглядеть описание печ.формы для пользователя
         Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); //имя макета печ.формы
         Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); //ВызовСерверногоМетода
         Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
         Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
        
         Возврат Команды;
    КонецФункции
    
    Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "") Экспорт
         НоваяКоманда = ТаблицаКоманд.Добавить();
         НоваяКоманда.Представление = Представление;
         НоваяКоманда.Идентификатор = Идентификатор;
         НоваяКоманда.Использование = Использование;
         НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
         НоваяКоманда.Модификатор = Модификатор;
    КонецПроцедуры
    ///////
    
    #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
    
    #Область СлужебныеПроцедурыИФункции
    
    // Сформировать печатные формы объектов.
    //
    // ВХОДЯЩИЕ:
    //   МассивОбъектов  - Массив    - Массив ссылок на объекты которые нужно распечатать.
    //
    // ИСХОДЯЩИЕ:
    //   КоллекцияПечатныхФорм - Таблица значений - Сформированные табличные документы.
    //   ОшибкиПечати          - Список значений  - Ошибки печати  (значение - ссылка на объект, представление - текст
    //                           ошибки).
    //   ОбъектыПечати         - Список значений  - Объекты печати (значение - ссылка на объект, представление - имя
    //                           области в которой был выведен объект).
    //   ПараметрыВывода       - Структура        - Параметры сформированных табличных документов.
    //
    Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
       
            Макет = ЭтотОбъект.ПолучитьМакет("ПФ_MXL_Т1");
    
            УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(Макет, "ПФ_MXL_Т1", "Т1 внешний", СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати));
    КонецПроцедуры
    
    Функция СформироватьПечатнуюФорму(СсылкаНаДокумент, ОбъектыПечати)
       
        МакетОбработки = ПолучитьМакет("ПФ_MXL_Т1");
        ТабличныйДокумент = ПолучитьТабличныйДокументПриказаТ1(МакетОбработки, СсылкаНаДокумент, ОбъектыПечати);
        //ТабличныйДокумент.Параметры = ПараметрыПриказаТ1();
        ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Т1внешний";
       
       
    КонецФункции
    
    #Область ПроцедурыФункцииПечатиКадровыхДанных
    
    // Процедура печати документа.
    // Возвращает табличный документ - сформированную печатную форму приказа о приеме или увольнении.
    //
    // Параметры:
    //    МассивОбъектов - массив сотрудников.
    //  ОбъектыПечати  - Список значений  - Объекты печати (значение - ссылка на объект, представление - имя области в
    //                   которой был выведен объект).
    //    ВидПриказа     - "ПриказОПриеме" или "ПриказОбУвольнении".
    //
    // Возвращаемое значение:
    //    Табличный документ
    //
    Функция ПолучитьТабличныйДокументПриказаТ1(Макет, МассивОбъектов, ОбъектыПечати)
       
        ДокументРезультат = Новый ТабличныйДокумент;
        НомерСтрокиНачало = ДокументРезультат.ВысотаТаблицы + 1;
       
        ДокументРезультат.КлючПараметровПечати = "ПараметрыПечати_ПриказОПриеме";
        МассивДанныхЗаполнения = ПолучитьДанныеДляПечатиКадровогоПриказаТ1(МассивОбъектов);   
       
        ВывестиДанныеКадровогоПриказаВТабличныйДокумент(Макет, ДокументРезультат, МассивДанныхЗаполнения, ОбъектыПечати);
       
        Возврат ДокументРезультат;
    КонецФункции
       
    Процедура ВывестиДанныеКадровогоПриказаВТабличныйДокумент(Макет, ТабличныйДокумент, МассивДанныхЗаполнения, ОбъектыПечати)
       
        Если Макет <> Неопределено Тогда
           
            ПервыйПриказ = Истина;
            Для каждого ПараметрыМакета Из МассивДанныхЗаполнения Цикл
                Если Не ПервыйПриказ Тогда
                    ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
                Иначе
                    ПервыйПриказ = Ложь;
                КонецЕсли;
               
                НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
               
                Макет.Параметры.Заполнить(ПараметрыМакета);
                ТабличныйДокумент.Вывести(Макет);
               
                УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ПараметрыМакета.Ссылка);   
               
            КонецЦикла;
           
        КонецЕсли;
       
    КонецПроцедуры   
    
    Функция ПолучитьДанныеДляПечатиКадровогоПриказаТ1(МассивОбъектов)
       
        Выборка = КадровыйУчет.СформироватьЗапросДляТ1(МассивОбъектов).Выбрать();
       
        МассивПараметров = Новый Массив;
       
        Пока  Выборка.Следующий() Цикл
           
            Параметры = ПараметрыПриказаТ1();       
           
            КадровыйУчет.ЗаполнитьПараметрыКадровогоПриказа(Параметры, Выборка);
           
            РезультатСклонения = "";
            Если ФизическиеЛицаЗарплатаКадры.Просклонять(Параметры.Работник, 4, РезультатСклонения, Параметры.Пол) Тогда
                Параметры.Работник    = РезультатСклонения
            КонецЕсли;
           
            ЦелаяЧасть = Цел(Выборка.ТарифнаяСтавка);
            Параметры.ОкладТарифнаяСтавкаЦелаяЧасть = ЦелаяЧасть;
            ДробнаяЧасть = Выборка.ТарифнаяСтавка - ЦелаяЧасть;
            Параметры.ОкладТарифнаяСтавкаДробнаяЧасть = ?(ДробнаяЧасть = 0, "00", ДробнаяЧасть*100);
           
            МассивПараметров.Добавить(Параметры);
           
        КонецЦикла;
       
        Возврат МассивПараметров;
    
    КонецФункции   
     
    Функция ПараметрыПриказаТ1()
       
        Параметры = КадровыйУчет.ПараметрыКадровогоПриказа();
       
        Параметры.Вставить("ДатаПриема");
        Параметры.Вставить("ДатаЗавершенияТрудовогоДоговора");
        Параметры.Вставить("УсловияПриема");
        Параметры.Вставить("ОкладТарифнаяСтавкаЦелаяЧасть");
        Параметры.Вставить("ОкладТарифнаяСтавкаДробнаяЧасть");
        Параметры.Вставить("ВалютаТарифнойСтавки", "руб.");
        Параметры.Вставить("КопейкиТарифнойСтавки", "коп.");
        Параметры.Вставить("Надбавка", 0);
        Параметры.Вставить("ДлительностьИспытательногоСрока", "");
    
        Возврат Параметры;
       
    КонецФункции   
    
    #КонецОбласти
    
    #КонецОбласти
    
    #КонецЕсли
  2. Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.271
    Симпатии:
    106
    Баллы:
    104
    А КоллекцияПечатныхФорм у вас что?
    С отладкой беда - попробуйте прямо в коде в процедуре печать написать Сообщить(ТипЗнч(КоллекцияПечатныхФорм));
    Чуется мне там неопределено..
  3. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    8.123
    Симпатии:
    550
    Баллы:
    204
  4. Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.271
    Симпатии:
    106
    Баллы:
    104
    2 стартмани тоже? Или ради печатной формы абонемент брать на месяц 1.5к рублей?
    --- Объединение сообщений, 30 мар 2018 ---
    Особенно порадовали комментарии к этой обработке =)
    upload_2018-3-30_9-18-24.png
  5. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    8.123
    Симпатии:
    550
    Баллы:
    204
    Она прекрасно работает. 2 стартмани это не так уж и много.