Имя: Пароль:
1C
 
УТ11 Внешняя обработка - "Неизвестный идентификатор формы"
0 Casper211
 
23.12.16
16:24
Подключил обработку. В ней есть 2 формы. Я с первой вызываю вторую

&НаКлиенте
Процедура ПодключитьОбработку()
    Если ПустаяСтрока(ИмяВнешнейОбработки) Тогда
        ПодключитьНаСервере();
    КонецЕсли;
    ПараметрыФормы = Новый Структура;  
    ПараметрыФормы.Вставить("ПараметрШтрихКодНоменклатури", Объект.ШтрихКодПоиск);
    ОткрытьФорму("ВнешняяОбработка."+ ИмяВнешнейОбработки +".Форма.ФормаНоменклатури",ПараметрыФормы,ЭтаФорма,УникальныйИдентификатор,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры

&НаСервере
функция ПодключитьНаСервере()
    // Переводим обработку в двоичные данные    
    ДвоичныеДанныеОбработки = Новый ДвоичныеДанные(РеквизитФормыВЗначение("Объект").ИспользуемоеИмяФайла);
    // Для двоичных данных делаем хранилище
    АдресХранилища = ПоместитьВоВременноеХранилище(ДвоичныеДанныеОбработки);
    // Подключаем обработку
    ИмяВнешнейОбработки = ВнешниеОбработки.Подключить(АдресХранилища);      
    Возврат ИмяВнешнейОбработки;
КонецФункции


она открылась, я с ней сделал какие-то действия, закрываю ее и хочу передать какие-то данные назад


&НаКлиенте
Процедура ПриЗакрытии()
    АдресТоваровВХранилище = АдресТоваровВХранилище();
    Если  АдресТоваровВХранилище <> Неопределено Тогда
        Структура = Новый Структура("АдресТоваровВХранилище", АдресТоваровВХранилище);
        ОповеститьОВыборе(Структура);
    КонецЕсли;
КонецПроцедуры

&НаСервере
Функция АдресТоваровВХранилище()
    АдресВХранилище = Неопределено;
    АдресВХранилище = ПоместитьТоварыВХранилище();    
    Возврат АдресВХранилище;
КонецФункции

&НаСервере
Функция ПоместитьТоварыВХранилище()
    Товары = Объект.Товары.Выгрузить();
    АдресТоваровВХранилище = ПоместитьВоВременноеХранилище(Товары);
    Возврат АдресТоваровВХранилище;
КонецФункции


и хочу поймать эти данные в основной форме


&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
    Если ИсточникВыбора.ИмяФормы = "ВнешняяОбработка."+ ИмяВнешнейОбработки +".Форма.ФормаНоменклатури" Тогда
        ПодсчитатьКоличествоТоваров(ВыбранноеЗначение);    
    КонецЕсли;
КонецПроцедуры

&НаСервере
функция ПодсчитатьКоличествоТоваров(ВыбранноеЗначение)
    ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
        Для каждого СтрокаПришедшихТоваров Из ТаблицаТоваров Цикл
            Для каждого СтрокаВсехТоваров Из Объект.Товары Цикл
                Если СтрокаПришедшихТоваров.Номенклатура= СтрокаВсехТоваров.Номенклатура и СтрокаПришедшихТоваров.Назначение = СтрокаВсехТоваров.Назначение  Тогда
                    СтрокаВсехТоваров.КоличествоПриход = СтрокаПришедшихТоваров.КоличествоПриход;     
                КонецЕсли;
            КонецЦикла;
        КонецЦикла;
КонецФункции

{Форма.Форма.Форма(828)}: Ошибка при вызове метода контекста (ПодсчитатьКоличествоТоваров)
        ПодсчитатьКоличествоТоваров(ВыбранноеЗначение);    
по причине:
Неизвестный идентификатор формы

И после этого форма умирает и больше процедуры на сервер не работают вообще. Но если во время открытия не отметить владельца, то форму можно открывать хоть 100 раз, но "ОповеститьОВыборе" не знает куда послать данные (так как владельца нет).
Как сделать все правильно ??? Я хочу с одной формы открыть (передать параметр) другую форму (этой же обработки) и сделать там какие-то действия и обратно передать какие-то данные в 1 форму. Возможно вы увидите ошибку. Всем спасибо!
1 Casper211
 
23.12.16
16:26
ОткрытьФорму("ВнешняяОбработка."+ ИмяВнешнейОбработки +".Форма.ФормаНоменклатури")
2 Мимохожий Однако
 
23.12.16
16:27
АдресТоваровВХранилище = АдресТоваровВХранилище();
почему на клиенте пишешь?
3 Casper211
 
23.12.16
16:29
(2) так везде видел в примерах. Надо на сервак написать ?? Но это не в этом проблема, да?
4 Мимохожий Однако
 
23.12.16
16:31
(3) я просто спросил для общего развития.
Буквально вчера и позавчера были ветки на эту тему. Надо получить ссылку на эту обработку, чтобы потом использовать как параметр при открытии нужной формы.
5 Casper211
 
23.12.16
16:31
Стоп, на клиенте, потому что передаю потом это владельцу
6 Casper211
 
23.12.16
16:33
(4) ПолучитьНавигационнуюСсылку ?
7 Casper211
 
23.12.16
16:41
Или нет? или это должно быть что-то другое
8 Casper211
 
23.12.16
16:45
или лекше будет сделать 2 обработки? и вызвать с первой вторую обработку и ее форму и там себе что-то делать и потом передавать первой обработке назад данные?
9 Casper211
 
23.12.16
16:46
легче*
10 Casper211
 
23.12.16
17:09
блин, что же делать, куда копать (
11 Casper211
 
23.12.16
18:03
сделал обработку частью конфигурации и она работает. А внешняя нет.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн