Связать обработку подбора номенклатуры УТ 10.3 и форму внешней обработки

1. kznsky 27.09.23 19:44 Сейчас в теме
Для конфигурации УТ 10.3 написал обработку в которой есть табличная часть товары, которая заполняется по определенному алгоритму. Вставил на нее кнопку подбор, которая открывает стандартную обработку подбора для этой табличной части. Форма открывается, но не возвращает в табличную часть товары выбранные значения. Не пойму как связать обработку подбора и форму своей внешней обработки.
Подскажите как это сделать?!
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. independ 1535 27.09.23 20:05 Сейчас в теме
(1) нужно модуле формы своей обработки использовать
Процедура ОбработкаВыбора(ЗначениеВыбора, Источник)

	Перем Команда;

	Если ТипЗнч(ЗначениеВыбора) = Тип("Структура") Тогда
		ЗначениеВыбора.Свойство("Команда", Команда);
		Если Команда = "ПодборВТабличнуюЧастьТовары" Тогда
			ОбработкаПодбора(Товары, ЗначениеВыбора);
		КонецЕсли;
	КонецЕсли;

КонецПроцедуры // ОбработкаВыбора()
Показать

пример можно взять из модуля формы любого документа
3. kznsky 27.09.23 20:57 Сейчас в теме
Это я пробовал. Не попадает по отладке в процедуру ОбработкаВыбора и в ТоварыОбработкаВыбора тоже.
4. independ 1535 27.09.23 22:01 Сейчас в теме
(3) в свойствах формы есть такое?
Прикрепленные файлы:
6. kznsky 28.09.23 12:12 Сейчас в теме
(4) Да в свойствах формы есть.
5. independ 1535 27.09.23 22:03 Сейчас в теме
(3) вызов формы подбора из обработки сделать как в документе

Процедура ДействиеПодбор(ТабличнаяЧасть)
	РаботаСДиалогами.ОткрытьПодборНоменклатуры(ЭтаФорма, СтруктураПараметровПодбора, Метаданные());
КонецПроцедуры // ДействиеПодбор()
7. kznsky 28.09.23 12:14 Сейчас в теме
(5) именно так и делаю
Только еще перед этой строкой настраиваю нужные параметры как в документе
Только, что то беру из свойств обработки, а что то прописываю вручную.
8. kznsky 28.09.23 12:15 Сейчас в теме
Процедура ДействиеПодбор(ТабличнаяЧасть)

	Перем Команда, Валюта;

	ЕстьЦена        = Истина;
	ЕстьСерия       = Ложь;
	СкрыватьХарактеристику = Ложь;
	Валюта          = Справочники.Валюты.НайтиПоНаименованию("руб");
	ПодбиратьУслуги = Ложь;
	Команда           = "ПодборВТабличнуюЧастьТовары";
	ИмяТабличнойЧасти = "Товары";

	СписокВидовПодбора = СформироватьСписокЗапросовДляПодбора(ТабличнаяЧасть);
	ПредставлениеДок   = Метаданные().Представление();

	СтруктураПараметровПодбора = Новый Структура();
	СтруктураПараметровПодбора.Вставить("Команда"            , Команда);
	СтруктураПараметровПодбора.Вставить("СписокВидовПодбора" , СписокВидовПодбора);

	// Параметры запросов.
	ВременнаяДатаРасчетов = ?(НачалоДня(ТекущаяДата()) = НачалоДня(ТекущаяДата()), Неопределено, ТекущаяДата());
	СтруктураПараметровПодбора.Вставить("ДатаРасчетов"                 , ТекущаяДата());
	СтруктураПараметровПодбора.Вставить("Склад"                        , Справочники.Склады.НайтиПоНаименованию("СКЛАД №1"));
	СтруктураПараметровПодбора.Вставить("ТипЦен"                       , Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Прайсная"));
	СтруктураПараметровПодбора.Вставить("ДоговорКонтрагента"           , Контрагент.ОсновнойДоговорКонтрагента);
	СтруктураПараметровПодбора.Вставить("Контрагент"                   , Контрагент);
	СтруктураПараметровПодбора.Вставить("Организация"                  , Организация);
	СтруктураПараметровПодбора.Вставить("ПодбиратьУслуги"              , Ложь);
	СтруктураПараметровПодбора.Вставить("СпособЗаполненияЦен"          , Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатуры);
	СтруктураПараметровПодбора.Вставить("ЕстьЦена"                     , Истина);
	СтруктураПараметровПодбора.Вставить("ЕстьСерия"                    , Ложь);
	СтруктураПараметровПодбора.Вставить("ИспользоватьГруппуДоступности", Истина);
	СтруктураПараметровПодбора.Вставить("ВалютаДокумента"              , Справочники.Валюты.НайтиПоНаименованию("руб"));
	СтруктураПараметровПодбора.Вставить("СкрыватьХарактеристику"       , Ложь);
	СтруктураПараметровПодбора.Вставить("Заголовок", "Подбор номенклатуры в рек заказ");
	СтруктураПараметровПодбора.Вставить("УсловиеПродаж"                , Справочники.УсловияПродаж.ПустаяСсылка());


	РаботаСДиалогами.ОткрытьПодборНоменклатуры(ЭтаФорма, СтруктураПараметровПодбора, Метаданные());

КонецПроцедуры // ДействиеПодбор() 
Показать
9. kznsky 02.10.23 23:48 Сейчас в теме
Так ничего и не получилось! Есть еще подсказки?
10. kznsky 03.10.23 08:10 Сейчас в теме
Провел эксперимент. Скопировал (важно что именно скопировал) во внешнюю обработку документ инвентаризация. Вычистил в нем все функции, которые на касаются подбора. Осталось несколько функций и подбор работает - возвращает в табличную часть товары выбранное значение.

После чего создал новую обработку и заполнил (заполнил вручную) ее теми же самыми реквизитами, табличными частями и т.п. и вставил в нее те же самые функции, что остались в обработке инвентаризации. В итоге подбор не возвращает значения.

В итоге оказалось, что скопированная форма документа организации в свойствах в поле данные имеет: ДокументОбъект и тип значения: ДокументОбъект.ИнвентаризацияТоваровНаСкладе.

А созданная вручную форма данные: ОбработкаОбъект и тип значения: ВнешняяОбработка.ТестоваяОбработкаФорма

И сразу перестает работать функция ОбработкаВыбора. Как будто 1С не находит в этом случае форму в которую необходимо вернуть результат подбора.
11. kznsky 03.10.23 08:25 Сейчас в теме
Как только добавил обработку в конфигурацию, обработка ПодборНоменклатуры сразу начала находить куда необходимо возвращать значения. Получается, что для внешней обработки нельзя реализовать работу обработки ПодборНоменклатуры в табличную часть Товары. Потому, что в случае с внешней обработкой не находится владелец вызвавший форму подбора?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот