|
УФ: Как из подчиненной формы получить путь к данным ТЧ родительской формы | ☑ | ||
---|---|---|---|---|
0
Cyberhawk
23.03.16
✎
16:34
|
Дано: форма документа в конфигурации на управляемых формах. В этой форме есть:
- ЭУ (элемент управления) "ПереченьТоваров" (тип: ТаблицаФормы), ПутьКДанным = "Объект.Товары" - реквизит формы "Объект.Товары" с типом (ДокументТабличнаяЧасть.ИмяДокумента.Товары) Соответственно, у документа в метаданных есть ТЧ "Товары", которая отображается на форме с помощью ЭУ "ПереченьТоваров". Код модуля этой формы модифицировать нельзя. Эту форму будем называть "первая форма". Я на клиенте из первой формы вызываю код открытия "второй формы". В качестве владельца второй формы выступает первая форма. Фокус в первой форме (свойство формы "ТекущийЭлемент") всегда установлен на таблице "ПереченьТоваров". Больше во вторую (подчиненную) форму никакой информации о первой форме (кроме как "ВладелецФормы") передать нельзя. Вопрос: как из второй формы получить путь к данным таблицы, которая активна в первой форме (форме-владельце)? |
|||
1
Звездец
23.03.16
✎
16:36
|
Выгрузит в ТЗ и передать второй форме при открытии как параметр. Ну а дальше делай с ней чего хочешь во второй форме и возвращай назад после
|
|||
2
Mort
23.03.16
✎
16:36
|
А отладчик что во владельце формы показывает?
|
|||
3
Cyberhawk
23.03.16
✎
16:37
|
(1) Никаких параметров во вторую форму, кроме ее владельца, передавать нельзя. Т.е. нельзя вмешаться в код открытия подчиненной формы.
|
|||
4
Cyberhawk
23.03.16
✎
16:37
|
(2) Объект с типом "УправляемаяФорма"
|
|||
5
LordCMEPTb
23.03.16
✎
16:37
|
(0) Могу посочувствовать. Путь к данным вроде как только на сервере, а передать форму на сервер умеет только контекстный вызов.
|
|||
6
Cyberhawk
23.03.16
✎
16:39
|
(5) Да, свойство элемента управления "ПутьКДанным" доступно только на сервере.
Насчет контекстного вызова - спасибо за информацию. |
|||
7
LordCMEPTb
23.03.16
✎
16:47
|
(6) Да по сути не за что.
Пытался как-то из одной формы проверить наличие реквизитов в другой форме. И форму пытался передать, и во владельца её установить, и сериализовать... Плюнул, сделал через попытку-исключение. |
|||
8
aleks_default
23.03.16
✎
17:43
|
А подписку на событие ОбработкаПолученияФормы можно добавить?
|
|||
9
Cyberhawk
23.03.16
✎
17:47
|
(8) Увы, нет.
Да и неясно, что бы этот обработчик дал, ведь Я открываю не форму объекта, а свою форму внешней обработки... |
|||
10
aleks_default
23.03.16
✎
17:50
|
Ну форму объекта(родительскую) чуть подправить добавив туда реквизит, в котором хранить путь к данным нужной таблицы. Ну это так, в порядке бреда:)
|
|||
11
Cyberhawk
23.03.16
✎
17:51
|
(10) Не, форму родительского объекта править нельзя - она типовая (на замке). Если бы ее можно было править, то все бы было слишком просто.
|
|||
12
FIXXXL
23.03.16
✎
17:54
|
(11) каков конечный план?
поправить данные объекта или что-то другое? |
|||
13
aleks_default
23.03.16
✎
17:56
|
Не, форму изменить в обработкеПолученияФормы. Там ее можно получить и программно добавить реквизит типа строка. Получится7
|
|||
14
Cyberhawk
23.03.16
✎
18:07
|
(12) На данный момент - из второй формы на клиенте обращаться к реквизиту первой формы (формы-владельца) "Объект.ИмяТЧ", ИмяТЧ придется "угадывать" из имени таблицы (в типовых почти везде у таблиц, отображающих ТЧ объектов, путь к данным выглядит как "Объект.ИмяТЧ", а таблица имеет имя, равное ИмяТЧ)
|
|||
15
FIXXXL
23.03.16
✎
21:10
|
(14) может удобнее сразу Обэкт редактировать?
Форма1 и ее элементы именно в процессе зачем нужны? Мож ее достаточно сгонять по окончании на серв и обновить? |
|||
16
oslokot
23.03.16
✎
21:37
|
(0) пробежаться по открытым окнам, узнать активный в данный момент элемент формы-источника
|
|||
17
Записьдампа
23.03.16
✎
21:41
|
(0) так оно у тебя в http://catalog.mista.ru/public/505239/ уже работает или еще нет? =)
|
|||
18
Drac0
23.03.16
✎
21:47
|
(0) Почему бы расширение не заюзать?
|
|||
19
Cyberhawk
24.03.16
✎
08:25
|
(17) Работает.
Ограничения прописаны в разделе публикации "Особенности и ограничения". (15) Я объект и редактирую, вернее его табличную часть, представленную в форме через реквизит с типом (ДанныеФормыКоллекция). Как узнать имя нужной ТЧ, по-прежнему неясно. (16) Я и так знаю активный элемент формы-источника (это таблица формы, отображающая нужную мне табличную часть). Вопрос в том, как узнать, с каким реквизитом формы (свойство "ПутьКДанным") эта таблица связана. (18) Можешь подробнее рассказать план действий? Что именно (какие объекты метаданных) ты предлагаешь добавить / изменить в расширении? |
|||
20
FIXXXL
24.03.16
✎
09:24
|
(19) ну если обработка под конкретный док, можно в самой обработке завести соответствие "ИмяЭлемента - ИмяТЧОбъекта"
при открытии - определять |
|||
21
Cyberhawk
24.03.16
✎
09:57
|
(20) Нет, обработка универсальная для типовых конфигураций на БСП.
Впрочем, в типовых конфигурациях от 1С соответствие имени таблицы на форме и имени табличной части почти везде "один в один", что хоть как-то радует. Но тот факт, что ребятки, делающие БСП, так и не научились модифицировать объект на клиенте без его записи в ИБ (и совсем недавно научились делать это пока только на сервере), удручает. |
|||
22
FIXXXL
24.03.16
✎
13:34
|
(21) причем тут "ребятки"? на клиенте в упр.приложении Объекта нет в принципе
если говорить про ТЧ, можешь глянуть как прыгает счетчик обращений на сервак при прокрутке большого списка т.е. форма неявно гоняется на сервак обновляться |
|||
23
Cyberhawk
24.03.16
✎
14:48
|
(22) Я сейчас тебе про подсистему БСП "Дополнительные отчеты и обработки" говорю, в которой для вызова доп. обработки с видом "Заполнение объекта" требуется сначала записать объект в ИБ, ибо в команду доп. обработки передается ссылка на объект.
Можно сказать, что неточно выразился выше: не "на клиенте", а "с клиента". Но уже прогресс есть: где-то полгода назад добавили тип команды "Заполнение формы", и теперь в коде этой команды можно пользоваться контекстом формы, правда весь код выполняется только на сервере. Не хватает всего-то еще одной потребности, являющейся комбинацией уже реализованных возможностей: начало работы обработки на клиенте (реализовано, но недоступен контекст формы на сервере) + иметь возможность обращаться к форме объекта на сервере (реализовано, но недоступен клиент) |
|||
24
Drac0
24.03.16
✎
15:55
|
(19) "Можешь подробнее рассказать план действий?"
Эмм, добавить команду на форму в расширении и ее обработчик. А там уже пиши, что душе угодно. |
|||
25
Cyberhawk
24.03.16
✎
16:38
|
(24) Я правильно понимаю, что после обновления типовой конфигурации (в частности - формы) расширение перестанет работать, т.е. база не обновится?
|
|||
26
aleks_default
24.03.16
✎
16:52
|
[Я сейчас тебе про подсистему БСП "Дополнительные отчеты и обработки" говорю, в которой для вызова доп. обработки с видом "Заполнение объекта" требуется сначала записать объект в ИБ, ибо в команду доп. обработки передается ссылка на объект. ] А у меня почему-то все работает без записи объекта, причем версия БСП старая.
|
|||
27
Cyberhawk
24.03.16
✎
17:08
|
(26) Кажись до версии 2.1 туда передавалась таблица формы. Также возможно, что проверку на запись ввели позже.
Посмотри свою версию БСП, если не сложно (общий модуль "Обновление...БСП") |
|||
28
aleks_default
24.03.16
✎
17:26
|
Нет такого модуля. У меня возможно сначало было БСП 1.0, но потом ее сильно доработали. А может даже встраивали отдельными кусками. Надо посмотреть как сейчас в типовых функционал доп. обработок и отчетов реализован. Неужели все так грустно, как ты говоришь?
|
|||
29
Cyberhawk
24.03.16
✎
17:29
|
Я помню, что на заре УТ 11.0, в далеком 2013 году, делал обработку заполнения ТЧ - там можно было менять ТЧ без записи объекта, но, кажется, только на клиенте (или только на сервере).
Сейчас уже можно работать с данными формы на сервере (тип команды "ЗаполнениеФормы"), если же тебе нужен какой-то интерактив (выполнение кода на клиенте), то без записи объекта - никак. |
|||
30
Cyberhawk
29.03.16
✎
11:21
|
В общем, путь к данным как с клиента, так и с сервера неконтекстно никак не получить (если заранее не позаботиться об этом, модифицировав модуль формы)
https://partners.v8.1c.ru/forum/topic/1035448#m_1035448 Однако, мне удалось неконтекстно передать коллекцию формы с клиента на сервер (избежав ошибки "Нельзя изменять поле, содержащее объект данных формы"), чтобы на сервере уже перебрать имена колонок, что мне и требовалось для (17). |
|||
31
alexey980
24.04.16
✎
23:11
|
еще раз спасибо
|
|||
32
alexey980
24.04.16
✎
23:36
|
случайно не в ту ветку написал. но и вам тоже))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |