8.х Печатная форма 1с.WMS

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

  1. TopicStarter Overlay
    Aydar1944
    Offline

    Aydar1944

    Регистрация:
    3 мар 2017
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Я новичок так что не ругайте за странные вопросы))
    Когда заливаю внешнюю печатную форму в 1с ругается: "Для команды Печать этикеток не определен способ запуска"
    как решить проблему?

    Вложения:

  2. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    7.859
    Симпатии:
    501
    Баллы:
    204
    Вот мой код. Сравните со своим и поймете.
    Код:
    //////////////////////////////////////////////////////////////////////////////////
    //// РАЗДЕЛ ПРОЦЕДУР И ФУНКЦИЙ РАБОТЫ С ВНЕШНЕЙ ПЕЧАТНОЙ ФОРМОЙ
    
    // Интерфейс для регистрации обработки.
    // Вызывается при добавлении обработки в справочник "ВнешниеОбработки"
    //
    // Возвращаемое значение:
    // Структура:
    // Вид - строка - возможные значения:    "ДополнительнаяОбработка"
    //                                        "ДополнительныйОтчет"
    //                                        "ЗаполнениеОбъекта"
    //                                        "Отчет"
    //                                        "ПечатнаяФорма"
    //                                        "СозданиеСвязанныхОбъектов"
    //
    // Назначение - массив строк имен объектов метаданных в формате:
    //            <ИмяКлассаОбъектаМетаданного>.[ * | <ИмяОбъектаМетаданных>]
    //            Например, "Документ.СчетЗаказ" или "Справочник.*"
    //            Прим. параметр имеет смысл только для назначаемых обработок
    //
    // Наименование - строка - наименование обработки, которым будет заполнено
    //                        наименование справочника по умолчанию - краткая строка для
    //                        идентификации обработки администратором
    //
    // Версия - строка - версия обработки в формате <старший номер>.<младший номер>
    //                    используется при загрузке обработок в информационную базу
    // БезопасныйРежим – Булево – Если истина, обработка будет запущена в безопасном режиме.
    //                            Более подбробная информация в справке.
    //
    // Информация - Строка- краткая информация по обработке, описание обработки
    //
    // Команды - ТаблицаЗначений - команды, поставляемые обработкой, одная строка таблицы соотвествует
    //                            одной команде
    //                колонки:
    //                 - Представление - строка - представление команды конечному пользователю
    //                 - Идентификатор - строка - идентефикатор команды. В случае печатных форм
    //                                            перечисление через запятую списка макетов
    //                 - Использование - строка - варианты запуска обработки:
    //                        "ОткрытиеФормы" - открыть форму обработки
    //                        "ВызовКлиентскогоМетода" - вызов клиентского экспортного метода из формы обработки
    //                        "ВызовСерверногоМетода" - вызов серверного экспортного метода из модуля объекта обработки
    //                 - ПоказыватьОповещение – Булево – если Истина, требуется оказывать оповещение при начале
    //                                и при окончании запуска обработки. Прим. Имеет смысл только
    //                                при запуске обработки без открытия формы.
    //                 - Модификатор – строка - для печатных форм MXL, которые требуется
    //                                        отображать в форме ПечатьДокументов подсистемы Печать
    //                                        требуется установить как "ПечатьMXL"
    //
    Функция СведенияОВнешнейОбработке() Экспорт
      
        ПараметрыРегистрации = Новый Структура;
      
        ПараметрыРегистрации.Вставить("Вид"            , "ПечатнаяФорма");
        ПараметрыРегистрации.Вставить("Назначение"     , ПолучитьНазначениеОбработки());
        ПараметрыРегистрации.Вставить("Наименование"   , НСтр("ru = 'Печатная форма: Заказ клиента (для сборки на склад)'"));
        ПараметрыРегистрации.Вставить("Версия"         , "1.0");
        ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
        ПараметрыРегистрации.Вставить("Информация"     , НСтр("ru = 'Заказ клиента (для сборки на склад)'"));
      
        ТаблицаКоманд = ПолучитьТаблицуКоманд();
      
        ДобавитьКоманду(ТаблицаКоманд,
                        НСтр("ru = 'Заказ клиента (для сборки на склад)'"),
                        "ЗаказКлиентаДляСборкиНаСклад",
                        "ВызовСерверногоМетода",
                        Истина,
                        "ПечатьMXL");
      
        ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
      
        Возврат ПараметрыРегистрации;
      
    КонецФункции
    
    // Получает назначение обработки.
    // ................................................................................
    Функция ПолучитьНазначениеОбработки()
      
        Назначение = Новый Массив;
        Назначение.Добавить("Документ.ЗаказКлиента");
      
        Возврат Назначение;
      
    КонецФункции
    
    // Получает таблицу команд.
    // ................................................................................
    Функция ПолучитьТаблицуКоманд()
      
        Команды = Новый ТаблицаЗначений;
        Команды.Колонки.Добавить("Представление"       , Новый ОписаниеТипов("Строка"));
        Команды.Колонки.Добавить("Идентификатор"       , Новый ОписаниеТипов("Строка"));
        Команды.Колонки.Добавить("Использование"       , Новый ОписаниеТипов("Строка"));
        Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
        Команды.Колонки.Добавить("Модификатор"         , Новый ОписаниеТипов("Строка"));
      
        Возврат Команды;
      
    КонецФункции
    
    // Добавляет таблицу команд.
    // ................................................................................
    Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
      
        НоваяКоманда                      = ТаблицаКоманд.Добавить();
        НоваяКоманда.Представление        = Представление;
        НоваяКоманда.Идентификатор        = Идентификатор;
        НоваяКоманда.Использование        = Использование;
        НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
        НоваяКоманда.Модификатор          = Модификатор;
      
    КонецПроцедуры
    --- Объединение сообщений, 3 мар 2017 ---
    Не нужно плодить темы в разных разделах, дабы заметили. Если не отвечают, ждите. Пока устное предупреждение.
    Последнее редактирование: 3 мар 2017
  3. TopicStarter Overlay
    Aydar1944
    Offline

    Aydar1944

    Регистрация:
    3 мар 2017
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    прошу прощение, больше не поворотиться.
    просмотрел код, вроде все так же, может подскажете что надо сделать, чтоб исправить ошибку.
  4. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    7.859
    Симпатии:
    501
    Баллы:
    204
    Ну для начала может возьмете мой? :) Она красивее, с комментариями и правильный.
    А в вашем случае посмотрите, что передается в параметр Использование.
  5. TopicStarter Overlay
    Aydar1944
    Offline

    Aydar1944

    Регистрация:
    3 мар 2017
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Взял ваш код, добавил свой, теперь ругается:
    {ВнешняяОбработка.ВнешняяОбработка2.МодульОбъекта(68)}: Недостаточно фактических параметров
    УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, НСтр("ru = 'Печатная форма:Печать этикетки'"), СформироватьПечатнуюФорму(МассивОбъектов[0], ОбъектыПечати));


    Код:
    Функция СведенияОВнешнейОбработке() Экспорт
     
        ПараметрыРегистрации = Новый Структура;
     
        ПараметрыРегистрации.Вставить("Вид"            , "ПечатнаяФорма");
        ПараметрыРегистрации.Вставить("Назначение"     , ПолучитьНазначениеОбработки());
        ПараметрыРегистрации.Вставить("Наименование"   , НСтр("ru = 'Печатная форма:Печать этикетки'"));
        ПараметрыРегистрации.Вставить("Версия"         , "1.0");
        ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
        ПараметрыРегистрации.Вставить("Информация"     , НСтр("ru = 'Печать этикетки'"));
     
        ТаблицаКоманд = ПолучитьТаблицуКоманд();
     
        ДобавитьКоманду(ТаблицаКоманд,
                        НСтр("ru = 'Печать этикетки'"),
                        "ЗаказКлиентаДляСборкиНаСклад",
                        "ВызовСерверногоМетода",
                        Истина,
                        "ПечатьMXL");
     
        ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
     
        Возврат ПараметрыРегистрации;
     
    КонецФункции
    
    // Получает назначение обработки.
    // ................................................................................
    Функция ПолучитьНазначениеОбработки()
     
        Назначение = Новый Массив;
        Назначение.Добавить("Документ.усЗаказНаОтгрузку");
     
        Возврат Назначение;
     
    КонецФункции
    
    // Получает таблицу команд.
    // ................................................................................
    Функция ПолучитьТаблицуКоманд()
     
        Команды = Новый ТаблицаЗначений;
        Команды.Колонки.Добавить("Представление"       , Новый ОписаниеТипов("Строка"));
        Команды.Колонки.Добавить("Идентификатор"       , Новый ОписаниеТипов("Строка"));
        Команды.Колонки.Добавить("Использование"       , Новый ОписаниеТипов("Строка"));
        Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
        Команды.Колонки.Добавить("Модификатор"         , Новый ОписаниеТипов("Строка"));
     
        Возврат Команды;
     
    КонецФункции
    
    // Добавляет таблицу команд.
    // ................................................................................
    Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
     
        НоваяКоманда                      = ТаблицаКоманд.Добавить();
        НоваяКоманда.Представление        = Представление;
        НоваяКоманда.Идентификатор        = Идентификатор;
        НоваяКоманда.Использование        = Использование;
        НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
        НоваяКоманда.Модификатор          = Модификатор;
     
    КонецПроцедуры
    
    Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
       
        УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, НСтр("ru = 'Печатная форма:Печать этикетки'"),  СформироватьПечатнуюФорму(МассивОбъектов[0], ОбъектыПечати));
       
    КонецПроцедуры // Печать()
    
    Функция СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати)
       
        ТабличныйДокумент = Новый ТабличныйДокумент;
        ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ";
        ДанныеДляПечати = ПолучитьДанныеДляПечатнойФормы(МассивОбъектов);
        ЗаполнитьТабличныйДокумент(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати);
       
        Возврат ТабличныйДокумент;
       
    КонецФункции
    
    Функция ПолучитьДанныеДляПечатнойФормы(МассивОбъектов)Экспорт
       
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        |    усСтрокаЗаказаНаОтгрузку.Номенклатура.Наименование КАК Наименование,
        |    усСтрокаЗаказаНаОтгрузку.Номенклатура.Артикул КАК Артикул,
        |    усСтрокаЗаказаНаОтгрузку.Количество КАК Количество,
        |    усЗаказНаОтгрузку.НомерКИС КАК НомерКИС,
        |    усЗаказНаОтгрузку.ДатаОтгрузки КАК ДатаОтгрузки,
        |    усЗаказНаОтгрузку.Контрагент КАК Изготовитель,
        |    усЗаказНаОтгрузку.Ссылка КАК Ссылка
        |ИЗ
        |    Документ.усЗаказНаОтгрузку КАК усЗаказНаОтгрузку
        |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.усСтрокаЗаказаНаОтгрузку КАК усСтрокаЗаказаНаОтгрузку
        |        ПО усЗаказНаОтгрузку.Ссылка = усСтрокаЗаказаНаОтгрузку.Владелец
        |ГДЕ
        |    усЗаказНаОтгрузку.Ссылка = &Ссылка";
       
        Запрос.УстановитьПараметр("Ссылка", МассивОбъектов);
       
        ПакетРезультатовЗапроса = Запрос.ВыполнитьПакет();
        СтруктураДанныхДляПечати = Новый Структура;
        СтруктураДанныхДляПечати.Вставить("РезультатПоЗаголовку",     ПакетРезультатовЗапроса[0]);
        Возврат СтруктураДанныхДляПечати;
       
    КонецФункции // ()
    
    Процедура ЗаполнитьТабличныйДокумент(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати) Экспорт
       
        ВыборкаДанныеПечати = ДанныеДляПечати.РезультатПоЗаголовку.Выбрать();
        МакетОбработки = ПолучитьМакет("Макет");
       
        //заполняем шапку
        ОбластьШапка = МакетОбработки.ПолучитьОбласть("Шапка");
       
        Пока ВыборкаДанныеПечати.Следующий() Цикл
            ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
            НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
           
            ОбластьШапка.Параметры.Наименование = ВыборкаДанныеПечати.Наименование;
            ОбластьШапка.Параметры.КодSAP = ВыборкаДанныеПечати.Артикул;   
            ОбластьШапка.Параметры.Количество = ВыборкаДанныеПечати.Количество;       
            ОбластьШапка.Параметры.Контрагент = ВыборкаДанныеПечати.Изготовитель;
            ОбластьШапка.Параметры.ДатаОтгрузки = ВыборкаДанныеПечати.ДатаОтгрузки;
            ОбластьШапка.Параметры.НомерКИС = ВыборкаДанныеПечати.НомерКИС;
           
            ТабличныйДокумент.Вывести(ОбластьШапка);
           
        КонецЦикла;
       
        УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ВыборкаДанныеПечати.Ссылка);
       
        ТабличныйДокумент.АвтоМасштаб = Истина;
       
    КонецПроцедуры
    
    

Поделиться этой страницей