УФ как можно достучаться до данных, которые пользователь выбрал на форме из общего модуля обработки нажатия кнопки?

1. user2146255 16.05.25 13:50 Сейчас в теме
В УФ не соображаю совсем.

На форму справочника "Рассылки отчетов" программно добавляю новую кнопку в расширении.
Добавленной кнопке присваиваем стандартное действие "Подключаемый_ВыполнитьКоманду(Команда)".
По этой кнопке вызывается общий модуль ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект)

Данная процедура перехватывается в расширении, и если она вызвана из нашей формы и нашей добавленной кнопки, то выполняется наш код, иначе передаётся управление стандартной обработке вне расширения.
Кнопка добавляется и вызывается. Вопросов нет.

Ситуация следующая. Пользователь открыл форму. Изменил разные реквизиты на форме, в том числе и данные таблицы, которая хранится в справочнике в табличной части "Отчеты" в реквизите "Настройки" с типом ХранилищеЗначений.
Как в общем модуле из ЭтотОбъект или Источник увидеть те данные, которые пользователь выбрал или установил в форме?

Если перед нажатием кнопки предварительно записать справочник, то в Форма.Объект и Источник изменённые данные видно, но задача без записи объекта достучатся. Нужны данные не объекта, а то, что выбрано на форме.

Если мы изменим например Наименование, то это изменение видно через Источник.
А если нужны данные табличной части "Отчеты" из реквизита "Настройки" с типом ХранилищеЗначений, которые на форме отображаются с помощью таблицы, то к нему можно достучаться только через "АдресНастроек". А по этому адресу хранятся данные, которые содержит объект, а не форма.
Упрощенно так:
ПолучитьИзВременногоХранилища(Источник.Отчеты[0].АдресНастроек);

Как можно достучаться до данных, которые пользователь видит перед глазами на форме?
Найденные решения
33. user2107184 19.05.25 13:06 Сейчас в теме
(32) Тебе ж сказано было - сразу смотреть элементы формы (в которых редактируются твои данные), и смотреть какие данные формы являются для этих элементов источником данных. И вот уже в них копаться.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
22. user1936660 17.05.25 08:27 Сейчас в теме
(1)
В УФ не соображаю совсем.
Что случится, если ты не сделаешь эту задачу?
23. user2107184 17.05.25 09:49 Сейчас в теме
(22) Козьма Прутков, перелогинься!
24. user1936660 19.05.25 07:39 Сейчас в теме
(23) Капитан, капитан Прутков!
25. user2107184 19.05.25 07:41 Сейчас в теме
(24) Лишь бы не "товарищ майор"...
2. anton13m 4 16.05.25 15:18 Сейчас в теме
Для Каждого Отчет из Форма.Объект.Отчеты Цикл
    АдресНастроек = Отчет.АдресНастроек;
    ПользовательскиеНастройкиКомпоновкиДанных = ПолучитьИзВременногоХранилища(АдресНастроек );
КонецЦикла;
3. user2146255 16.05.25 15:29 Сейчас в теме
(2) В теме уже написан такой вариант. Получаю данные из записанного объекта - не то что на форме.
И из формы Форма.Объект и из Источника. Результат одинаковый, так как адрес там одинаковый.
А данные на форме никуда ещё не записанные и это данные из элемента формы, а не из объекта.
реализованы параметры в виде таблицы значений на форме. Собственно до неё достучаться не знаю как.
Более того отчетов может быть несколько и этот элемент формы перерисовывается в зависимости от текущей строки.
4. kuzev 48 16.05.25 16:08 Сейчас в теме
А использование ДанныеФормыВЗначение() и ЗначениеВДанныеФормы() поможет?
7. user2146255 16.05.25 16:42 Сейчас в теме
(4) Нет конечно. На форме есть переключатель и как только вы поместите значение в данные формы, он слетит. Пользователь видит одно перед глазами, а по факту значения нет - надо перевыбрать.
8. kuzev 48 16.05.25 17:06 Сейчас в теме
(7) Вам же нужно "достучаться до данных, которые пользователь видит перед глазами на форме". ДанныеФормыВЗначение() не поможет?
5. soft_wind 16.05.25 16:22 Сейчас в теме
может так,
на форме по кнопке
создать структуру, заполнить ее значениями реквизитов
и передать эту структуру в виде параметра в процедуру общего модуля...
6. user2146255 16.05.25 16:32 Сейчас в теме
(5) Расширение без захвата формы - принципиально.
У нас на входе только переданная форма, команда и источник. Ничего перед тем как что-то вызвать мы делать не можем. У нас только информация на входе что есть.

Скорее всего, нет вариантов в УФ докопаться до нужной информации при такой реализации формы.
Запись данных в хранилище происходит при активизации строки табличной части отчеты. А если она одна, то ничего и не происходит.
А пока гуляем и изменяем по параметрам запись изменений никуда не помещается.

Перед записью объекта параметры помещаются, а мы его не записываем.

Вообще забавно. В 8.х есть возможность делать множество табличных частей и их можно по идентификатору связывать. А тут на тебе как один из вариантов реализации в 7.7, когда нужно несколько табличных частей, а тебя максимум одна, тогда реализуют через ЗначениеВСтроку(ТЗ) и хранят в хранилище значений.
Зачем такие сложности?
9. user2146255 16.05.25 18:00 Сейчас в теме
(8) ДанныеФормыВЗначение() - доступно на сервере.
Как планируете форму на сервер передать?
10. user2107184 16.05.25 18:09 Сейчас в теме
(9)
Как планируете форму на сервер передать?
А это как-то запрещено?
11. user2146255 16.05.25 18:14 Сейчас в теме
(10) Не знаю. У меня при передаче формы на сервер возникает ошибка:
"Отсутствует отображение для типа ФормаКлиенскогоПриложения".
12. user2107184 16.05.25 18:18 Сейчас в теме
(11) Это смотря как и откуда передавать. Из серверного контекста модуля формы можешь передавать спокойно.
13. user2146255 16.05.25 18:29 Сейчас в теме
(12) У меня есть вызов тот, который есть. Он клиентский.
У меня на входе только вот это:
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект)
14. user2107184 16.05.25 19:01 Сейчас в теме
(13) Тады ой. На сервер можно форму передать только из модуля самой формы. По другому никак.
15. user2146255 16.05.25 20:31 Сейчас в теме
(14) Т.е. получается что в типовых конфигурациях на сейчас не предусмотрена передача всех данных формы, которые пользователь наблюдает на форме. Какие-то передаются, а какие-то нет. Имеется ввиду с помощью программного добавления кнопок.
Очень жаль....
16. user2107184 16.05.25 20:55 Сейчас в теме
(15)
которые пользователь наблюдает на форме.
Пользователь не может наблюдать на форме ХранилищеЗначений. Вопрос же в этом, да?
Но вобще -да, в клиентской части ХЗ никак не увидеть.
17. user2146255 16.05.25 21:53 Сейчас в теме
(16) Он видит данные хранилища в другом виде, но видит и даже вводит данные. Суть задачи знать, что там пользователь наводил в механизме подключения кнопок и других диалоговых элементов.
Раз уж не сделали не в виде связанных табличных частей, а стали хранилища использовать.
18. user2107184 16.05.25 22:00 Сейчас в теме
(17) Ну если есть интерактивная возможность что-то менять на форме - значит есть и изменяемые данные на этой же форме, доступные в клиентском контексте. В чем проблема их прочитать-то?
19. user2146255 16.05.25 22:47 Сейчас в теме
(18) Как это сделать внутри?
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект)
20. user2107184 16.05.25 23:22 Сейчас в теме
Посмотреть имена данных на форме и смотреть их в том модуле через ЭтотОбъект.КакоеТоИмя (для реквизитов формы) Или Объект.КакоеТоИмя (для реквизитов объекта).
Это если я правильно понимаю сумбур
21. user1936660 17.05.25 08:27 Сейчас в теме
(20) У пациента, я так понимаю, вывих шаблона. В базе хранилище значений, которое редактируется в форме как какая-то структура данных, помогите!
26. user2146255 19.05.25 11:41 Сейчас в теме
(20) Ещё раз. Где что посмотреть? Справочник есть в любой типовой, так как это рассылка отчетов.
27. user2107184 19.05.25 11:42 Сейчас в теме
(26) Причем тут "любая типовая"? Вообще пофиг. Тебе тут про общее клиент-серверное взаимодействие и формы рассказывают,а не про учет надоев коров в какой-то типовой.
31. user2146255 19.05.25 11:59 Сейчас в теме
(27)
Причем тут "любая типовая"? Вообще похер.
Как раз нет. Что бы долго не объяснять как что реализовано, можно в типовой посмотреть самостоятельно. Тем более что достаточно в расширении перехватить процедуру, в отладчике поставить точку останова и провалится в типовую Процедуру общего модуля.
28. user2146255 19.05.25 11:44 Сейчас в теме
(27) При том, что в упор не вижу с такими именами ничего у переданной формы. Не понятно что искать тогда.
29. user2107184 19.05.25 11:45 Сейчас в теме
(28)
с такими именами
С какими такими?
30. user2146255 19.05.25 11:54 Сейчас в теме
(29) Если смотреть реквизиты формы, то это НастройкиТекущегоОтчета - он пуст.
Если элементы формы смотреть, то их и не будет.
Если смотреть всё что у объекта, то там данные не актуальные - не те что на форме установлены, а те что были на момент открытия формы.
Чего ещё смотреть - не понятно.
32. user2146255 19.05.25 12:51 Сейчас в теме
Найдено где актуальные данные.
Форма.КомпановщикДанныхКД.ПользовательскиеНастройки.Элементы
Но это для текущего отчета. Если несколько отчетов у рассылки, то надо будет лезть по адресу для не активного. Осталось определить какой отчет активный на форме. Что бы правильно выбирать.
33. user2107184 19.05.25 13:06 Сейчас в теме
(32) Тебе ж сказано было - сразу смотреть элементы формы (в которых редактируются твои данные), и смотреть какие данные формы являются для этих элементов источником данных. И вот уже в них копаться.
Оставьте свое сообщение

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