|
Подключение внешней обработки к документу | ☑ | ||
---|---|---|---|---|
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_вариант_запуска_открытие_формы
Для этого варианта запуска необходимо создать форму обработки, которая будет открыта при выполнении команды: ● для глобальных отчетов и обработок – не требуется дополнительных действий; ● для назначаемых отчетов и обработок – в форме обработки добавить параметр ОбъектыНазначения типа Произвольный. В этот параметр передается массив ссылок на объекты, для которых выполняется дополнительная обработка. Не мог найти где почитать чем отличается глобальная от назначаемой. Не подскажешь? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |