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

Заполнение табличной части документа из внешней обработки

Заполнение табличной части документа из внешней обработки
Я
   Igor1_777
 
16.10.19 - 16:06
Задача.
В документ Заказ Поставщику нужно прикрутить внешнюю обработку. Во внешней обработке есть две табчасти:  Список номенклатуры с остатками и некая Корзина. Из Списка номенклатуры накидываем в корзину товар и при нажатии "Перенести в документ" содержимое Корзины должно перенестись в табчасть документа Заказ Поставщику.

Не могу понять почему не переносится товар из Корзины в Заказ Поставщику

Описание Внешней обработки
Функция СведенияОВнешнейОбработке() Экспорт
    ПараметрыРегистрации = Новый Структура;
    МассивНазначений = Новый Массив;
    МассивНазначений.Добавить("Документ.ЗаказПоставщику");

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

    ДобавитьКоманду(ТаблицаКоманд,
                    НСтр("ru = 'Подбор Номенклатуры'"),
                    НСтр("ru = 'Подбор Номенклатуры'"),
                    "ВызовКлиентскогоМетода",
                    Истина);

    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
    Возврат ПараметрыРегистрации;
КонецФункции

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

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
    НоваяКоманда = ТаблицаКоманд.Добавить();
    НоваяКоманда.Представление = Представление;
    НоваяКоманда.Идентификатор = Идентификатор;
    НоваяКоманда.Использование = Использование;
    НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
    НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры

Команда, открывающая обработку:

&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт

    ТекОбъект = ОткрытьФорму("ВнешняяОбработка.ЗаполнениеТабличнойЧастиЗаказПоставщику.Форма",,ЭтаФорма);
    ФормаВыбора = ПолучитьФорму("ВнешняяОбработка.ЗаполнениеТабличнойЧастиЗаказПоставщику.Форма",,ЭтаФорма);
    //Для каждого  ТекущаяСтрока из ВладелецФормы.Объект.Материалы Цикл
    //    ТекущаяСтрока.Количество = 100 ;
    Сообщить(ФормаВыбора) ;
    //КонецЦикла ;    
    
КонецПроцедуры

Процедура, отр\правляющая данные  в документ:

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

Подскажите, где не так делаю?
 
 
   Temai
 
1 - 16.10.19 - 16:14
Стесняюсь спросить где кусок кода, который должен делать то что вы хотите? И зачем сюда было тащить СведенияОВнешнейОбработке?
   elCust
 
2 - 16.10.19 - 16:16
(1) Ctrl+A, на мисте разберутся же)))
   piter3
 
3 - 16.10.19 - 16:18
Название должно быть иное:Напишите за меня и далее
   Igor1_777
 
4 - 16.10.19 - 16:42
Вопрос по последней процедуре. Что туда нужно дописать, чтобы передать таблицу с товаром в вызывающий обработку документ.
   Temai
 
5 - 16.10.19 - 16:46
В заказе поставщику в свойствах у основной формы есть событие - ОбработкаВыбора, там ты должен написать код который сделает то что ты хочешь.
Твой кусок кода - "  ОповеститьОВыборе(Результат);  " как раз передаёт в это событие твою "Корзину", там то и заполняй документ
   Igor1_777
 
6 - 16.10.19 - 16:51
Temai Спасибо. А не меняя сам документ нет возможности реализовать задачу?
   Temai
 
7 - 16.10.19 - 17:03
Можно конечно, например:
В своей обработке на форму вынеси реквизит ссылка(создать новый), туда будет подставляться ссылка на документ заказ, при нажатии на кнопку на форме заказа поставщику (будет открываться форма обработки и заполняться реквизит ссылка). Далее они будут наполнять корзину на твой форме и при нажатии на "перенести", ты получаешь объект заказ и переносишь туда корзину.
   Temai
 
8 - 16.10.19 - 17:06
чукча не писатель) надеюсь понятно..
   Igor1_777
 
9 - 16.10.19 - 17:08
То есть я не возвращаю данные а открываю ранее сохраненный документ по ссылке и заполняю как объект?
   Temai
 
10 - 16.10.19 - 17:11
(9) Да, это первое что пришло в голову. Думаю вариантов еще масса)
   Igor1_777
 
11 - 16.10.19 - 17:20
Спасибо. Попробую.

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