УФ: Как из подчиненной формы получить путь к данным ТЧ родительской формы #768275


#0 by Cyberhawk
Дано: форма документа в конфигурации на управляемых формах. В этой форме есть: - реквизит формы "Объект.Товары" с типом (ДокументТабличнаяЧасть.ИмяДокумента.Товары) Соответственно, у документа в метаданных есть ТЧ "Товары", которая отображается на форме с помощью ЭУ "ПереченьТоваров". Код модуля этой формы модифицировать нельзя. Эту форму будем называть "первая форма". Я на клиенте из первой формы вызываю код открытия "второй формы". В качестве владельца второй формы выступает первая форма. Фокус в первой форме (свойство формы "ТекущийЭлемент") всегда установлен на таблице "ПереченьТоваров". Больше во вторую (подчиненную) форму никакой информации о первой форме (кроме как "ВладелецФормы") передать нельзя. Вопрос: как из второй формы получить путь к данным таблицы, которая активна в первой форме (форме-владельце)?
#1 by Звездец
Выгрузит в ТЗ и передать второй форме при открытии как параметр. Ну а дальше делай с ней чего хочешь во второй форме и возвращай назад после
#2 by Mort
А отладчик что во владельце формы показывает?
#3 by Cyberhawk
Никаких параметров во вторую форму, кроме ее владельца, передавать нельзя. Т.е. нельзя вмешаться в код открытия подчиненной формы.
#4 by Cyberhawk
Объект с типом "УправляемаяФорма"
#5 by LordCMEPTb
Могу посочувствовать. Путь к данным вроде как только на сервере, а передать форму на сервер умеет только контекстный вызов.
#6 by Cyberhawk
Да, свойство элемента управления "ПутьКДанным" доступно только на сервере. Насчет контекстного вызова - спасибо за информацию.
#7 by LordCMEPTb
Да по сути не за что. Пытался как-то из одной формы проверить наличие реквизитов в другой форме. И форму пытался передать, и во владельца её установить, и сериализовать... Плюнул, сделал через попытку-исключение.
#8 by aleks_default
А подписку на событие ОбработкаПолученияФормы можно добавить?
#9 by Cyberhawk
Увы, нет. Да и неясно, что бы этот обработчик дал, ведь Я открываю не форму объекта, а свою форму внешней обработки...
#10 by aleks_default
Ну форму объекта(родительскую) чуть подправить добавив туда реквизит, в котором хранить путь к данным нужной таблицы. Ну это так, в порядке бреда:)
#11 by Cyberhawk
Не, форму родительского объекта править нельзя - она типовая (на замке). Если бы ее можно было править, то все бы было слишком просто.
#12 by FIXXXL
каков конечный план? поправить данные объекта или что-то другое?
#13 by aleks_default
Не, форму изменить в обработкеПолученияФормы. Там ее можно получить и программно добавить реквизит типа строка. Получится7
#14 by Cyberhawk
На данный момент - из второй формы на клиенте обращаться к реквизиту первой формы (формы-владельца) "Объект.ИмяТЧ", ИмяТЧ придется "угадывать" из имени таблицы (в типовых почти везде у таблиц, отображающих ТЧ объектов, путь к данным выглядит как "Объект.ИмяТЧ", а таблица имеет имя, равное ИмяТЧ)
#15 by FIXXXL
может удобнее сразу Обэкт редактировать? Форма1 и ее элементы именно в процессе зачем нужны? Мож ее достаточно сгонять по окончании на серв и обновить?
#16 by oslokot
пробежаться по открытым окнам, узнать активный в данный момент элемент формы-источника
#17 by Записьдампа
так оно у тебя в уже работает или еще нет? =)
#18 by Drac0
Почему бы расширение не заюзать?
#19 by Cyberhawk
Работает. Ограничения прописаны в разделе публикации "Особенности и ограничения". Я объект и редактирую, вернее его табличную часть, представленную в форме через реквизит с типом (ДанныеФормыКоллекция). Как узнать имя нужной ТЧ, по-прежнему неясно. Я и так знаю активный элемент формы-источника (это таблица формы, отображающая нужную мне табличную часть). Вопрос в том, как узнать, с каким реквизитом формы (свойство "ПутьКДанным") эта таблица связана. Можешь подробнее рассказать план действий? Что именно (какие объекты метаданных) ты предлагаешь добавить / изменить в расширении?
#20 by FIXXXL
ну если обработка под конкретный док, можно в самой обработке завести соответствие "ИмяЭлемента - ИмяТЧОбъекта" при открытии - определять
#21 by Cyberhawk
Нет, обработка универсальная для типовых конфигураций на БСП. Впрочем, в типовых конфигурациях от 1С соответствие имени таблицы на форме и имени табличной части почти везде "один в один", что хоть как-то радует. Но тот факт, что ребятки, делающие БСП, так и не научились модифицировать объект на клиенте без его записи в ИБ (и совсем недавно научились делать это пока только на сервере), удручает.
#22 by FIXXXL
причем тут "ребятки"? на клиенте в упр.приложении Объекта нет в принципе если говорить про ТЧ, можешь глянуть как прыгает счетчик обращений на сервак при прокрутке большого списка т.е. форма неявно гоняется на сервак обновляться
#23 by Cyberhawk
Я сейчас тебе про подсистему БСП "Дополнительные отчеты и обработки" говорю, в которой для вызова доп. обработки с видом "Заполнение объекта" требуется сначала записать объект в ИБ, ибо в команду доп. обработки передается ссылка на объект. Можно сказать, что неточно выразился выше: не "на клиенте", а "с клиента". Но уже прогресс есть: где-то полгода назад добавили тип команды "Заполнение формы", и теперь в коде этой команды можно пользоваться контекстом формы, правда весь код выполняется только на сервере. Не хватает всего-то еще одной потребности, являющейся комбинацией уже реализованных возможностей: начало работы обработки на клиенте (реализовано, но недоступен контекст формы на сервере) + иметь возможность обращаться к форме объекта на сервере (реализовано, но недоступен клиент)
#24 by Drac0
"Можешь подробнее рассказать план действий?" Эмм, добавить команду на форму в расширении и ее обработчик. А там уже пиши, что душе угодно.
#25 by Cyberhawk
Я правильно понимаю, что после обновления типовой конфигурации (в частности - формы) расширение перестанет работать, т.е. база не обновится?
#26 by aleks_default
[Я сейчас тебе про подсистему БСП "Дополнительные отчеты и обработки" говорю, в которой для вызова доп. обработки с видом "Заполнение объекта" требуется сначала записать объект в ИБ, ибо в команду доп. обработки передается ссылка на объект. ] А у меня почему-то все  работает без записи объекта, причем версия БСП старая.
#27 by Cyberhawk
Кажись до версии 2.1 туда передавалась таблица формы. Также возможно, что проверку на запись ввели позже. Посмотри свою версию БСП, если не сложно (общий модуль "Обновление...БСП")
#28 by aleks_default
Нет такого модуля. У меня возможно сначало было БСП 1.0, но потом ее сильно доработали. А может даже встраивали отдельными кусками. Надо посмотреть как сейчас в типовых функционал доп. обработок и отчетов реализован. Неужели все так грустно, как ты говоришь?
#29 by Cyberhawk
Я помню, что на заре УТ 11.0, в далеком 2013 году, делал обработку заполнения ТЧ - там можно было менять ТЧ без записи объекта, но, кажется, только на клиенте (или только на сервере). Сейчас уже можно работать с данными формы на сервере (тип команды "ЗаполнениеФормы"), если же тебе нужен какой-то интерактив (выполнение кода на клиенте), то без записи объекта - никак.
#30 by Cyberhawk
В общем, путь к данным как с клиента, так и с сервера неконтекстно никак не получить (если заранее не позаботиться об этом, модифицировав модуль формы) Однако, мне удалось неконтекстно передать коллекцию формы с клиента на сервер (избежав ошибки "Нельзя изменять поле, содержащее объект данных формы"), чтобы на сервере уже перебрать имена колонок, что мне и требовалось для .
#31 by alexey980
еще раз спасибо
#32 by alexey980
случайно не в ту ветку написал. но и вам тоже))
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С