Имя: Пароль:
1C
 
Передача ссылки на Документ в обработку
0 ampfer11
 
17.08.16
17:39
Уважаемые знатоки,
Столкнулся со следующей проблемой:
Написал обработку для создания Документа ОперацияБух. (Конф-я БП 3.0)
Обработка не из документа отработает нормально.
Пытаюсь подключить ее запуск из Документа. Никак не могу передать в функцию на сервере ссылку на документ (который открыт в форме)
Функция Функция СведенияОВнешнейОбработке() десять раз проверил
В Массив добавил нужный документ
МассивНазначений = Новый Массив();
МассивНазначений.Добавить("Документ.РеализацияТоваровУслуг");

  ДобавитьКоманду(ТаблицаКоманд,
          "Поступление товаров на Ответ.Хранение",
          "Поступление товаров на Ответ.Хранение",
          "ВызовКлиентскогоМетода",  //Использование.  Варианты: "ОткрытиеФормы", "ВызовКлиентскогоМетода", "ВызовСерверногоМетода"  
          ИСТИНА,//Показывать оповещение. Варианты Истина, Ложь
          "");

Вот сама Процедура
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
    
    Сообщить("Начало обработки: " + ТекущаяДата());
    Состояние("Идёт заполнение документа");
     Для каждого Элемент из ОбъектыНазначенияМассив Цикл

            КлючПоиска = Новый Структура("Ключ", Элемент);

            Форма = ПолучитьФорму("Документ.РеализацияТоваровУслуг.Форма.ФормаДокументаОбщая",КлючПоиска,,,);
            
              Док = Форма.Объект;
            
              ОписОшибки = ЗаполнитьРегистрНаСервере(Док.Ссылка);
              
            КонецЦикла;
        Сообщить(ОписОшибки);
        Сообщить("Окончание обработки: " + ТекущаяДата());
        
КонецПроцедуры


Сама функция ЗаполнитьРегистрНаСервере(Док.Ссылка) отрабатывает
все нормально. Проблема с передаваемым параметром (Док.Ссылка)
Никак не могу передать ссылку на открытый в форме Документ
В отладчике проверить проблематично, т.к. Обработка грузится в элемент справочника Доп.обработки и запускается из документа.
Целый день убил....Помогите pls
1 hhhh
 
17.08.16
17:43
вызывайте команду из документа. Например, как структура подчиненности или показать движения в типовых.
2 k1noshkin
 
17.08.16
17:52
http://forum1s.ru/read/sozdanie-obrabotki-zapolneniia-tablichnoi-chasti-1s-8/
"Выделив ветку Реквизиты в дереве метаданных обработки и нажав кнопку Добавить(кнопка с зеленым плюсом) создадим новый реквизит внешней обработки - ДокументПоступления, выберем для него тип ДокументСсылка.ПоступлениеТоваровУслуг, этот реквизит нужен нам для выбора документа Поступление товаров и услуг, на основании которого будет заполняться реализация."
3 ampfer11
 
18.08.16
12:22
В итоге пришлось сделать криво, передать в серверную функцию Номер и Дату Документа. Никак я не смог вытянуть из объекта формы ссылку на документ. Ссылку получаю уже на сервере с помощью запроса по Номеру и Дате документа.
Согласен, что криво, но работает
    
    Сообщить("Начало обработки: " + ТекущаяДата());
    Состояние("Идёт заполнение документа");
    Для каждого Элемент из ОбъектыНазначенияМассив Цикл

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

                    //Мы помещаем объект формы в переменную,
                    //так как должны передать её в процедуру на сервере,
                    //где нельзя изменять объект формы, зато можно править переменную содержащую его
                    //ОписОшибки = ЗаполнитьРегистрНаСервере(НовыйОбъект.Номер);
                    ОписОшибки = ЗаполнитьРегистрНаСервере(РеалОбъект.Номер,РеалОбъект.Дата);
                
            
    КонецЦикла;
    Сообщить(ОписОшибки);
    Сообщить("Окончание обработки: " + ТекущаяДата());
4 ampfer11
 
19.08.16
11:42
Все таки хочется сделать логично.
to k1noshkin  Хороший пример, но для обычных форм.
Добавил реквизит обработки ДокументРеализация с типом ДокументСсылка.РеализацияТоваровУслуг.
Проверяю на заполнение
Если НЕ ЗначениеЗаполнено(Объект.ДокументРеализация) Тогда
        Сообщить("Не выбран документ Реализация");
        Возврат;
    КонецЕсли;
Увы, он не заполнен.
НЕ пойму он как должен автоматически заполняться или КАК?
Может кто может помочь?
5 Nuobu
 
19.08.16
11:46
Для  ии = 0  По  ОбъектыНазначенияМассив.Количество()-1 Цикл
        ДокОбъект = ОбъектыНазначения[ии].Ссылка.ПолучитьОбъект();
6 ampfer11
 
19.08.16
14:32
Спасибо Nuobu
Вот так работает
ДокРеализация = ОбъектыНазначенияМассив[0];
В ДокРеализация теперь ссылка на открытый документ
РеализацияТоваровУслуг
AdBlock убивает бесплатный контент. 1Сергей