Имя: Пароль:
1C
1С v8
Вызов внешней обработки с параметром 8.3
0 animatic
 
14.04.15
10:13
Добрый день, есть внешняя обработка, получающая определенные списки документов по партнерам. Как подключить ее к справочнику Партнеры, чтобы в нее передавалась ссылка на выбранного партнера и она открывалась.
Т.е. что конкретно прописать в функции СведенияОВнешнейОбработке? Вид, я так понимаю, ПечатнаяФорма должен быть. Использование - ОткрытиеФормы, а вот как передать ссылку в параметр формы?
1 animatic
 
14.04.15
10:32
Вообще может я не в ту сторону пошел, мне нужно по в справочнике Партнеры в УТ 11 по выделенному партнеру выводить список документов, с возможностью их создания и изменения. Все это не дорабатывая конфу. Сделал обработку, которая все это делает, если на ее форме выбираю нужного партнера, как ее теперь подключить к справочнику Партнеры? Или для подобного есть другой способ?
2 bolobol
 
14.04.15
10:44
Функция СведенияОВнешнейОбработке() Экспорт
...
    НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
    НоваяКоманда.Представление = НСтр("ru = '" + ПараметрыРегистрации.Наименование + "'");
    НоваяКоманда.Идентификатор = ЭтотОбъект.Метаданные().Имя;
    НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыЗаполнениеФормы();
...
КонецФункции

Процедура ВыполнитьКоманду(ИмяКоманды, ОбъектыНазначения, ПараметрыВыполнения) Экспорт
    
    Если ИмяКоманды = ЭтотОбъект.Метаданные().Имя Тогда
        ЗаполнитьКоманда(ПараметрыВыполнения.ЭтаФорма.Объект, ПараметрыВыполнения.ЭтаФорма);
    КонецЕсли;
    
КонецПроцедуры
3 animatic
 
14.04.15
11:40
(2) Вид тогда ЗаполнениеОбъекта должен быть?
4 animatic
 
14.04.15
14:49
(2) Сделал так, в принципе работает
Функция СведенияОВнешнейОбработке() Экспорт
    

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

А в модуле формы в процедуре ПриСозданииНаСервере устанавливаю отбор по Параметры.ОбъектыНазначения[0]

А как теперь сделать, чтобы когда в списке партнеров выделил нескольких, то для каждого открылась своя форма. Пробовал таким способом:

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

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

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

Когда из формы элемента запускаю выходит ошибка "Итератор для значения не определен" ругается на строку
Для Каждого ЭлементОбъектНазначения Из ОбъектыНазначения Цикл
Когда из формы списка нескольких партнеров выделяю, то ничего не происходит.
5 AntonH851
 
14.04.15
15:08
(4) Смотрел в отладчике что в ОбъектыНазначения находится?
6 animatic
 
14.04.15
15:11
(5) да я все никак не вкурю как отладчиком в модуле обработки во внешних обработках пользоваться
7 AntonH851
 
14.04.15
15:19
Вообще да, если у тебя она как внешняя обработка подключена то в отладчике не посмотришь просто так...
Как то попадалась обработка отладки внешних печатных форм под обычное приложение, тут нужно что то подобное.
по (4) делай проверку на тип значения параметра ОбъектыНазначения, если в списке партнеров выделен только один партнер, то тип будет СправочникСсылка.Партнеры
и открывать нужно сразу форму обработки с ссылкой на этого партнера.
А вот по поводу множественного выбора, мне ни разу не приходилось открывать несколько экземпляров форм одной обработки, может 1С так делать не умеет