Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Как реализовать подбор номенклатуры во внешней обработке на управляемых формах?

Как реализовать подбор номенклатуры во внешней обработке на управляемых формах?
Я
   Saari
 
21.08.20 - 08:31
Есть обработка с табличной частью "Товары" содержащей 2 реквизита: "Наименование", "Количество".
На форме обработки есть кнопка "Подбор".
Пытаюсь сделать подбор номенклатуры в табличную часть по аналогии с подбором в документах: "Реализация товаров и услуг", "Перемещение товаров".
В команде кнопки "Подбор" написал следующее:

&НаКлиенте
Процедура КомандаПодбор(Команда)
    
  ПараметрыПодбора = Новый Структура;
  ПараметрыПодбора.Вставить("ЕстьКоличество"    , Истина);
  ПараметрыПодбора.Вставить("ИмяТаблицы"        , "Товары");
  ПараметрыПодбора.Вставить("ЗакрыватьПриВыборе", Ложь);
  ПараметрыПодбора.Вставить("МножественныйВыбор", Истина);
  ПараметрыПодбора.Вставить("ВыборГруппИЭлементов", ИспользованиеГруппИЭлементов.Элементы);
  ОткрытьФорму("Обработка.ПодборНоменклатуры.Форма.Форма", ПараметрыПодбора,
             ЭтаФорма, ЭтаФорма.УникальныйИдентификатор);

КонецПроцедуры

Форма открывается, выбор номенклатуры с указанием количества происходит.
Но по кнопке "Перенести в документ" выбранная номенклатура не переносится в табличную часть моей обработки.
Что и как сделать, чтобы выбранная номенклатура переносилась в табличную часть обработки?
Помогите, пожалуйста.
   Галахад
 
1 - 21.08.20 - 08:39
(0) Почитай про ОбработкаВыбора.
   FIXXXL
 
2 - 21.08.20 - 08:39
(0) ну посмотри как в типовых доках реализовано
ЕМНИП через ОбработкаВыбора, т.е. ответ от формы подбора разбирать надо в форме твоей обработки
   Saari
 
3 - 21.08.20 - 09:09
(2) Посмотрел документ "РеализацияТоваровУслуг" и прошелся отладчиком.
В процедуре "ОбработкаВыбора()" вызвываются процедуры, в которой есть строка: ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресПодобраннойНоменклатурыВХранилище);
У себя в обработке создал процедуру "ОбработкаВыбора()" и в ней написал эту строку.
Получаю сообщение об ошибке:
Ошибка при вызове метода контекста (ПолучитьИзВременногоХранилища)
    ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресПодобраннойНоменклатурыВХранилище);
по причине:
Ошибка получения значения из временного хранилища
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: {http://v8.1c.ru/8.2/mngsrv/ws}response    Форма: Элемент    Тип: {http://v8.1c.ru/8.1/data/core}ValueTable

Причем в ВыбранноеЗначение.АдресПодобраннойНоменклатурыВХранилище значение заполнено.
   Saari
 
4 - 21.08.20 - 09:11
кажется понял. Исправляю...
   Saari
 
5 - 21.08.20 - 09:20
УРА! Реализовал.
&НаКлиенте
Процедура КомандаПодбор(Команда)
    
    ПараметрыПодбора = Новый Структура;
    ПараметрыПодбора.Вставить("ЕстьКоличество"    , Истина);
    ПараметрыПодбора.Вставить("ИмяТаблицы"        , "Товары");
    ПараметрыПодбора.Вставить("ЗакрыватьПриВыборе", Ложь);
    ПараметрыПодбора.Вставить("МножественныйВыбор", Истина);
    ПараметрыПодбора.Вставить("ВыборГруппИЭлементов", ИспользованиеГруппИЭлементов.Элементы);
    ОткрытьФорму("Обработка.ПодборНоменклатуры.Форма.Форма", ПараметрыПодбора,
            ЭтаФорма, ЭтаФорма.УникальныйИдентификатор);

КонецПроцедуры

&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
    
    ОбработкаВыбораПодборВставкаИзБуфераНаСервере(ВыбранноеЗначение, ИсточникВыбора.ИмяТаблицы);
    
КонецПроцедуры

&НаСервере
Процедура ОбработкаВыбораПодборВставкаИзБуфераНаСервере(ВыбранноеЗначение, ИмяТаблицы)

    ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресПодобраннойНоменклатурыВХранилище);
    ОбъектОтчет.Товары.Загрузить(ТаблицаТоваров);

КонецПроцедуры

Загружает в табличную часть "Товары" обработки выбранные значения на форме подбора.
Всем спасибо!

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.