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

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

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

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

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

пример можно взять из модуля формы любого документа
3. kznsky 27.09.23 20:57 Сейчас в теме
Это я пробовал. Не попадает по отладке в процедуру ОбработкаВыбора и в ТоварыОбработкаВыбора тоже.
4. independ 1475 27.09.23 22:01 Сейчас в теме
(3) в свойствах формы есть такое?
Прикрепленные файлы:
6. kznsky 28.09.23 12:12 Сейчас в теме
(4) Да в свойствах формы есть.
5. independ 1475 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 Сейчас в теме
Как только добавил обработку в конфигурацию, обработка ПодборНоменклатуры сразу начала находить куда необходимо возвращать значения. Получается, что для внешней обработки нельзя реализовать работу обработки ПодборНоменклатуры в табличную часть Товары. Потому, что в случае с внешней обработкой не находится владелец вызвавший форму подбора?
Оставьте свое сообщение
Вакансии
Программист 1С
Кемерово
зарплата от 200 000 руб.
Полный день

Программист 1С
Киров (Кировская обл.)
зарплата от 100 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 150 000 руб.
Полный день

Архитектор 1С
Москва
зарплата от 250 000 руб.
Полный день

1С-Программист (интегратор Битрикс24)
Санкт-Петербург
зарплата от 150 000 руб. до 250 000 руб.
Полный день