|   |   | 
| 
 | Подключение внешней обработки к документу | ☑ | ||
|---|---|---|---|---|
| 0
    
        falselight 20.03.19✎ 13:17 | 
        Подключаю внешнюю обработку к документу через внешние обработки.
 Управляемый интерфейс такси. Вставил в модуль обработки следующий код. Выдается ошибка. Код брал из типовой обработки для примера. Что нужно добавить или исправить? {ВнешняяОбработка.ЗагрузкаСXLSТабличнойЧастиЗаказНаПеремещение_0_3.МодульОбъекта(63)}: Метод объекта не обнаружен (ВывестиОповещение) СтандартныеПодсистемыКлиентСервер.ВывестиОповещение( // #Область ПрограммныйИнтерфейс // Функция СведенияОВнешнейОбработке() Экспорт // перед заполнением данной функции // 1. Назначьте имя текущей обработки. // Оно должно быть уникальным в пределах справочника внешних обработок. // Например, ПечатьЗаказаСХарактеристиками // 2. Назначьте синоним текущей обработки. // Например, "Печать заказа с характеристиками" ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1"); ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиЗаполнениеОбъекта(); ПараметрыРегистрации.Назначение.Добавить("ЗаказНаПеремещение"); ПараметрыРегистрации.Назначение.Добавить("Документ.*"); // все документы //НоваяКоманда = ПараметрыРегистрации.Команды.Добавить(); //НоваяКоманда.Представление = "Заполнить заказ на перемещение (сервер)"; //НоваяКоманда.Идентификатор = "ЗаполнитьЗаказСервер"; //НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода(); //НоваяКоманда = ПараметрыРегистрации.Команды.Добавить(); //НоваяКоманда.Представление = "Заполнить заказ на перемещение (заполнение формы)"; //НоваяКоманда.Идентификатор = "ЗаполнитьЗаказЗаполнениеФормы"; //НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыЗаполнениеФормы(); //НоваяКоманда = ПараметрыРегистрации.Команды.Добавить(); //НоваяКоманда.Представление = "Заполнить заказ на перемещение (клиент)"; //НоваяКоманда.Идентификатор = "ЗаполнитьЗаказКлиент"; //НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовКлиентскогоМетода(); НоваяКоманда = ПараметрыРегистрации.Команды.Добавить(); НоваяКоманда.Представление = "Заполнить заказ на перемещение (открытие формы)"; НоваяКоманда.Идентификатор = "ЗаполнитьЗаказФорма"; НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы(); Возврат ПараметрыРегистрации; КонецФункции // Процедура ВыполнитьКоманду(ИмяКоманды, ОбъектыНазначения, ПараметрыВыполнения = Неопределено) Экспорт Если ИмяКоманды = "ЗаполнитьЗаказСервер" Тогда ЗаполнитьЗаказПоСсылке(ОбъектыНазначения, ПараметрыВыполнения.РезультатВыполнения, ИмяКоманды); ИначеЕсли ИмяКоманды = "ЗаполнитьЗаказЗаполнениеФормы" Тогда ЗаполнитьФормуЗаказа(ПараметрыВыполнения.ЭтаФорма, ПараметрыВыполнения.РезультатВыполнения, ИмяКоманды); КонецЕсли; КонецПроцедуры // #КонецОбласти // #Область СлужебныеПроцедурыИФункции // Процедура ЗаполнитьЗаказПоСсылке(МассивСсылок, РезультатВыполнения, ИмяКоманды) Для Каждого Ссылка Из МассивСсылок Цикл Объект = Ссылка.ПолучитьОбъект(); Объект.Дата = Объект.Дата + 60*60*24; Объект.Записать(); КонецЦикла; СтандартныеПодсистемыКлиентСервер.ВывестиОповещение( РезультатВыполнения, "Дата документов изменена", , БиблиотекаКартинок.УстановитьФлажки); КонецПроцедуры // Процедура ЗаполнитьФормуЗаказа(Форма, РезультатВыполнения, ИмяКоманды) Форма.Модифицированность = Истина; Объект = Форма.Объект; Объект.Дата = Объект.Дата + 60 * 60 * 24; СтандартныеПодсистемыКлиентСервер.ВывестиОповещение( РезультатВыполнения, "Дата документов изменена", , БиблиотекаКартинок.УстановитьФлажки); КонецПроцедуры // #КонецОбласти | |||
| 1
    
        СтарПом 20.03.19✎ 13:46 | 
        В твоей конфе нет процедуры "ВывестиОповещение" в общем модуле СтандартныеПодсистемыКлиентСервер
 как вариант можно закомментить вызов этой процедуры // СтандартныеПодсистемыКлиентСервер.ВывестиОповещение( // РезультатВыполнения, // "Дата документов изменена", // , // БиблиотекаКартинок.УстановитьФлажки); | |||
| 2
    
        falselight 20.03.19✎ 13:59 | 
        (1) Ок. Удалил старые копии внешней обработки оставил текущую.
 Открывает форму обработки. Подскажите пожалуйста как передать в неё ссылку на документ, из которого она открывается? Подключенная через внешние отчеты обработки. | |||
| 3
    
        falselight 20.03.19✎ 14:21 | 
        Ответа нет?     | |||
| 4
    
        falselight 20.03.19✎ 14:22 | 
        Вроде вопрос очевидный. Создал, добавил внешнюю обработку к документу.
 Как при её открытии получить ссылку на этот документ? От куда? Где? | |||
| 5
    
        СтарПом 20.03.19✎ 14:24 | ||||
| 6
    
        СтарПом 20.03.19✎ 14:27 | ||||
| 7
    
        falselight 20.03.19✎ 14:29 | 
        (5) У меня не внешняя печатная форма. У меня внешняя обработка.
 Во внешней, печатной форме я знаю есть процедура печать, там ссылка на объект СсылкаНаОбъект = ОбъектыНазначения[0]; | |||
| 8
    
        falselight 20.03.19✎ 14:31 | 
        (6) К сожалению нет доступа к ИТС.
 У меня вопрос, как во внешней обработке получить ссылку на объект, что бы заполнить реквизит в форме обработки при открытии? | |||
| 9
    
        СтарПом 20.03.19✎ 14:34 | 
        (8) ТипКомандыВызовКлиентскогоМетода
 Возвращает имя типа команд с вызовом клиентского метода. Для выполнения команд такого типа в основной форме внешнего объекта следует определить клиентскую экспортную процедуру по шаблону: Для глобальных отчетов и обработок (Вид = "ДополнительнаяОбработка" или Вид = "ДополнительныйОтчет"): &НаКлиенте Процедура ВыполнитьКоманду(ИдентификаторКоманды) Экспорт // Реализация логики команды. КонецПроцедуры Для печатных форм (Вид = "ПечатнаяФорма"): &НаКлиенте Процедура Печать(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт // Реализация логики команды. КонецПроцедуры Для обработок создания связанных объектов (Вид = "СозданиеСвязанныхОбъектов"): &НаКлиенте Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив, СозданныеОбъекты) Экспорт // Реализация логики команды. КонецПроцедуры >>>>>>>>>>>>>>>>>> ТВОЙ СЛУЧАЙ <<<<<<<<<<<<<<<<<<<<< Для обработок заполнения и контекстных отчетов (Вид = "ЗаполнениеОбъекта" или Вид = "Отчет"): &НаКлиенте Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт // Реализация логики команды. КонецПроцедуры Дополнительно (для всех видов): В параметре формы "ДополнительнаяОбработкаСсылка" передается ссылка этого объекта (элемент справочника ДополнительныеОтчетыИОбработки, соответствующий этому объекту), которая может использоваться для фонового выполнения длительных операций. Подробнее см. в документации к подсистеме, раздел "Фоновое выполнение длительных операций". ============ СсылкаНаОбъект = ОбъектыНазначенияМассив[0]; | |||
| 10
    
        falselight 20.03.19✎ 14:49 | 
        (9) Скажите пожалуйста, правильно ли я понял?
 В модуле формы внешней обработки, которую я дорабатываю, я добавляю процедуру. // &НаКлиенте Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт // Реализация логики команды. КонецПроцедуры // А в какой момент она вызывается? Что бы мне получить, - СсылкаНаОбъект = ОбъектыНазначенияМассив[0]; | |||
| 11
    
        СтарПом 20.03.19✎ 15:08 | 
        (10) а, блин, тебе ж форму показать надо... тогда чуть не так
 Функция СведенияОВнешнейОбработке() Экспорт ПараметрыРегистрации = Новый Структура; МассивНазначений = Новый Массив; МассивНазначений.Добавить("Документ.>>>ТИП_ТВОЕГО_ДОКУМЕНТА<<<"); ПараметрыРегистрации.Вставить("Вид", "ЗаполнениеОбъекта"); ПараметрыРегистрации.Вставить("Назначение", МассивНазначений); ПараметрыРегистрации.Вставить("Наименование", "Заполнить документ"); ПараметрыРегистрации.Вставить("Версия", "1.0"); ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина); ПараметрыРегистрации.Вставить("Информация", "Дополнительная обработка табличной части к документу больничный лист"); ТаблицаКоманд = ПолучитьТаблицуКоманд(); ДобавитьКоманду(ТаблицаКоманд, "Придумай название", "Придумай название", "ОткрытиеФормы", Истина); ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд); Возврат ПараметрыРегистрации; КонецФункции Функция ПолучитьТаблицуКоманд() Команды = Новый ТаблицаЗначений; Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")); Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево")); Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка")); Возврат Команды; КонецФункции Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "") НоваяКоманда = ТаблицаКоманд.Добавить(); НоваяКоманда.Представление = Представление; НоваяКоманда.Идентификатор = Идентификатор; НоваяКоманда.Использование = Использование; НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение; НоваяКоманда.Модификатор = Модификатор; КонецПроцедуры ==================== В модуле формы (если у тебя СсылкаНаОбъект это реквизит формы): &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Объект.СсылкаНаОбъект = Параметры.ОбъектыНазначения[0]; КонецПроцедуры | |||
| 12
    
        СтарПом 20.03.19✎ 15:10 | 
        +(11) а да, и самое главное у обработки добавить параметр формы  "ОбъектыНазначения" :)     | |||
| 13
    
        falselight 20.03.19✎ 15:11 | 
        (12) В смысле реквизит формы?     | |||
| 14
    
        СтарПом 20.03.19✎ 15:12 | 
        (13) не... именно параметр формы  "ОбъектыНазначения" с типом "Произвольный"     | |||
| 15
    
        falselight 20.03.19✎ 15:12 | 
        (14) Понял! Добавил, тип ставлю произвольный!     | |||
| 16
    
        СтарПом 20.03.19✎ 15:14 | ||||
| 17
    
        Вафель 20.03.19✎ 15:17 | 
        (12) параметры можно не добавлять. они все равно будут     | |||
| 18
    
        falselight 20.03.19✎ 15:20 | 
        Ок, спасибо продвинулся!!!!     | |||
| 19
    
        СтарПом 20.03.19✎ 15:23 | 
        (17) https://its.1c.ru/db/bsp246doc#content:31:1:issogl3_вариант_запуска_открытие_формы
 Для этого варианта запуска необходимо создать форму обработки, которая будет открыта при выполнении команды: ● для глобальных отчетов и обработок – не требуется дополнительных действий; ● для назначаемых отчетов и обработок – в форме обработки добавить параметр ОбъектыНазначения типа Произвольный. В этот параметр передается массив ссылок на объекты, для которых выполняется дополнительная обработка. Не мог найти где почитать чем отличается глобальная от назначаемой. Не подскажешь? | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |