Имя: Пароль:
1C
1С v8
БСП и внешняя печатная форма
0 04347
 
16.03.16
15:45
была создана внешняя печатная форма для документа (управляемые формы 8.3)

Функция СведенияОВнешнейОбработке() Экспорт
    
    ОбъектыНазначенияФормы = Новый Массив;
    ОбъектыНазначенияФормы.Добавить("Документ.ПеремещениеЗапасов");
    
    ПараметрыРегистрации = ПолучитьПараметрыРегистрации(ОбъектыНазначенияФормы);
    ПараметрыРегистрации.Версия = "1.0";

    //Определяем команды для печати формы
    
    ТаблицаКоманд = Получить_Таблицу_Команд();

    ДобавитьКоманду(ТаблицаКоманд,
        "Перемещение запасов (с диалогом выбора цены)",    // Представление команды в пользовательском интерфейсе
        "ВнешняяПечатнаяФормаПФ_MXL_Перемещение_УНФ",        // Уникальный идентификатор команды
        "ОткрытиеФормы",                            // Использование команды
        Истина,                                        // Показывать оповещение.
        "ПечатьMXL"                                    // Дополнительный модификатор команды.
    );

    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

    Возврат ПараметрыРегистрации;

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

//
// ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ РЕГИСТРАЦИИ ОБРАБОТКИ
//

// Формирует структуру с параметрами регистрации регистрации обработки в информационной базе
//
// Параметры:
//    ОбъектыНазначенияФормы - Массив - Массив строк имен объектов метаданных в формате:
//                    <ИмяКлассаОбъектаМетаданного>.[ * | <ИмяОбъектаМетаданных>].
//                    или строка с именем объекта метаданных
//    НаименованиеОбработки - строка - Наименование обработки, которым будет заполнено наименование элемента справочника по умолчанию.
//                            Необязательно, по умолчанию синоним или представление объекта
//    Информация  - строка - Краткая информация или описание обработки.
//                            Необязательно, по умолчанию комментарий объекта
//    Версия - строка - Версия обработки в формате “<старший номер>.<младший номер>” используется при загрузке обработок в информационную базу.
//
//
// Возвращаемое значение:
//        Структура
//
Функция ПолучитьПараметрыРегистрации(ОбъектыНазначенияФормы = Неопределено, НаименованиеОбработки = "", Информация = "", Версия = "1.0.0")

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

    Возврат ПараметрыРегистрации;

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

// Формирует таблицу значений с командами печати
//    
// Возвращаемое значение:
//        ТаблицаЗначений
//
Функция Получить_Таблицу_Команд()

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

    Возврат Команды;

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

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

    НоваяКоманда = ТаблицаКоманд.Добавить();
    НоваяКоманда.Представление = Представление;
    НоваяКоманда.Идентификатор = Идентификатор;
    НоваяКоманда.Использование = Использование;
    НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
    НоваяКоманда.Модификатор = Модификатор;

КонецПроцедуры

Но теперь она не соответствует БСП; "вместо Получить_Таблицу_Команд() сейчас используется соотв. прогр. интерфейс". Не могу переделать, если кто знает, подскажите, пожалуйста
1 Fragster
 
гуру
16.03.16
16:19
2 04347
 
16.03.16
16:41
всё, разобралась, осталась только одна функция. Может кому пригодится

// Возвращает сведения о внешней обработке.
Функция СведенияОВнешнейОбработке() Экспорт
    
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.3.1.73");
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
    ПараметрыРегистрации.Версия = "1.1";
    ПараметрыРегистрации.Назначение.Добавить("Документ.ПеремещениеЗапасов");
    
    НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
    НоваяКоманда.Представление = НСтр("ru = 'Перемещение запасов (с диалогом выбора цены)'");
    
    НоваяКоманда.Идентификатор = "ВнешняяПечатнаяФормаПФ_MXL_Перемещение_УНФ";
    НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
    НоваяКоманда.ПоказыватьОповещение = Истина;
    НоваяКоманда.Модификатор = "ПечатьMXL";
    
    Возврат ПараметрыРегистрации;
    
КонецФункции
3 romix
 
16.03.16
16:59
Разбирательству с внешними обработками БСП оч. помогают примеры в базе демо БСП и пользовательская (не программерская - там сомнабулический текст) документация ИТС.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн