Как вызывается форма подбора ед.измерения "ФормаВыбораИзДокументов"

1. Arkadag 26.09.21 00:23 Сейчас в теме
Приветствую, Форумчане!
Потребовалось разобраться как в документах ЕРП открывается форма выбора единиц измерения.
Например, есть документ "Заказ поставщику"
При выборе единицы измерения, в том числе Упаковок, открывается форма выбора, которая в конфигураторе называется "ФормаВыбораИзДокументов"

У справочника "УпаковкиЕдиницыИзмерения" основной формой выбора стоит "ФормаВыбораУпаковки"
У реквизита "Упаковка" в документе форма выбора стоит пустой, т.е. по умолчанию.

Прошелся по конфигуратору, нашел единственное место, где упоминается эта форма "ФормаВыбораИзДокументов" это в общем модуле "НоменклатураВызовСервера" в процедуре

Процедура УпаковкиЕдиницыИзмеренияОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка) Экспорт


она вызывается в менеджере справочника

Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка)
	
	НоменклатураВызовСервера.УпаковкиЕдиницыИзмеренияОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка);
	
КонецПроцедуры


Но брейкпоинт (точки останова) в конфигураторе при вызове этой процедуры из документа не показал, что идет срабатывание этих процедур...

Подскажите как происходит в документе программный вызов этой формы выбора единиц измерения???

Пишу самописную прогу, захотелось сделать по образу и подобию как в ЕРП...

Сейчас сделал свой код

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


Всё срабатывает как нужно, но ничего подобного в ЕРП нету. Эта форма открывается каким-то другим магическим методом...
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. dehro 5 26.09.21 10:31 Сейчас в теме
В обработчиках событий элемента формы что написано?

Поставь там точку останова: запуститься именно та форма, что указана.
3. gonnahard 26.09.21 13:39 Сейчас в теме
Вот это выполняется при любом получении формы.
Соответственно, дальше происходит то, что внутри этой процедуры. Это стандарная процедура модуля менеджера.


Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка)
    
    НоменклатураВызовСервера.УпаковкиЕдиницыИзмеренияОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка);
    
КонецПроцедуры
5. Arkadag 26.09.21 15:38 Сейчас в теме
(3) Да, я это понял, но почему, когда я ставлю точку останова на этой процедуре, то остановка кода не срабатывает? Т.е. происходит как бы игнорирование, но сам код отрабатывает честно...

Также "не срабатывает" точка останова на "ПриСозданииНасервере" формы "ФормаВыбораИзДокументов"

Может какие-то настройки некорректные, что где-то точки останова срабатывают, где-то нет?
6. gonnahard 26.09.21 16:02 Сейчас в теме
(5)
Самописная конфигурация - небось файловая база.
А Erp - живёт где-то на сервере?

Вот тут обсуждение интересное:
https://forum.infostart.ru/forum9/topic101857/
7. Arkadag 26.09.21 18:35 Сейчас в теме
(6) Да, серверная. С отладкой разобрался, всё нормально... Но как нормально...
Теперь не могу понять как тут работает этот код:

На форме выбора ед.измерения "ФормаВыбораИзДокументов" есть кнопка "Выбрать" с кодом:

&НаКлиенте
Процедура Выбрать(Команда)
..................
	ВыбраннаяСтрокаДерева = УпаковкиЕдиницыИзмерения.НайтиПоИдентификатору(Элементы.УпаковкиЕдиницыИзмерения.ТекущаяСтрока);	
..................
	ОповеститьОВыборе(ВыбраннаяСтрокаДерева.Ссылка);
......................
КонецПроцедуры
Показать


Владельцем этой формы выбора является форма "Заказ поставщику"

ОповеститьОВыборе(ВыбраннаяСтрокаДерева.Ссылка);

Это подразумевает, что коде формы "заказ поставщику" должен быть код обработки выбора типа

&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
	// Вставить содержимое обработчика.
	
	Если ТипЗнч(ИсточникВыбора) = Тип("УправляемаяФорма") 
		И ИсточникВыбора.ИмяФормы = "Справочник.УпаковкиЕдиницыИзмерения.Форма.ФормаВыбораДляДокументов" 
		И ВыбранноеЗначение <> Неопределено Тогда


Но ничего подобного в ЕРП в коде формы Заказа поставщику нету. Я конечно написал всё своё и работает, но как в ЕРП работает это оповещение о выборе? Т.е. вставляется выбранное значение единицы в ТЧ документа посредством кода?
8. slavyan_arena 27.09.21 06:20 Сейчас в теме
(7)Здравствуйте.
В управляемых формах есть ряд стандартных процедур

&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)


это на форме из которой вызываете список выбора, то есть передаете параметры на форму выбора

на форме выбора что-то выбираете и процедура (в форме выбора)

ОповеститьОВыборе(ВыбранноеЗначение)

возвращает на основную форму значение которое вы выбрали, дальше обработкой оповещения что-то делаете с выбранным значением
9. DBV 27.09.21 12:55 Сейчас в теме
(7) Точно владельцем формы является форма "ЗаказаПоставщику"? Не ПолеФормы "ТоварыУпаковка"?
4. Arkadag 26.09.21 15:31 Сейчас в теме
Работает на указанных процедурах в общем модуле и на менеджере справочника.
Не могу понять, почему когда ставлю точку останова на этих процедурах, то остановка не срабатывает.
Делаю аналогичные процедуры в самописной конфигурации, то точки останова срабатывают.

Причем, если ставлю точку останова в ЕРП, то она почему-то исчезает... и код не останавливается в этих точках.
10. FatPanzer 27.09.21 13:09 Сейчас в теме
Про события элемента формы так ничего и не написал.
11. alexdm 02.02.24 19:04 Сейчас в теме
Столкнулся с примерно такой же проблемой при разработке расширения для КА 2.5. Копал долго, в итоге таки нашел, где порылась собака - в модуле менеджера справочника "УпаковкиЕдиницИзмерения" используется событие "ОбработкаПолученияФормы", которое отрабатывает при выборе единицы измерения из диалога, соответственно, там и определяется, какую форму показать пользователю.
kapibarich2000; +1 Ответить
Оставьте свое сообщение

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