Имя: Пароль:
1C
1С v8
Обращение к реквизитам формы в УФ
0 y-soft
 
26.06.17
17:20
Господа! Как правильно обращаться к реквизитам формы в режиме управляемых форм?

Создал реквизит формы обработки (в "общих" реквизитах). В модуле объекта обращаюсь к нему "ЭтотОбъект.<ИмяРеквизита>". Ошибки не возникает.
В модуле формы обращаюсь "Объект.<ИмяРеквизита>". Пусто.

Делаю реквизит конкретной формы (в правом разделе дизайнера формы). В модуле объекта обращаться к этому реквизиту оно не желает.

Задача-то собственно лишь отображать в форме обработки то, чем сейчас она занимается в модуле объекта, чтобы не скучно было, блин.
1 h-sp
 
26.06.17
17:25
(0) реквизит формы не должен быть виден в модуле объекта
2 dezss
 
26.06.17
17:32
(0) после того, как что-то сделал в модуле объекта, сделай
ОбновитьОтображениеДанных
на форме.
3 SSSSS_AAAAA
 
26.06.17
19:20
(0) Для начала научиться различать реквизит формы и реквизит объекта.
4 y-soft
 
27.06.17
09:42
> после того, как что-то сделал в модуле объекта, сделай
> ОбновитьОтображениеДанных
> на форме.

В первом случае (реквизит объекта, если быть точнее) - не обновляется. Вообще может ли быть реквизит объекта доступен на клиенте в модуле формы?

И подскажите pls, можно ли передавать от клиента к серверу ЭлементDOM (парсинг XML). На клиенте ведь может в принципе выполняться парсинг XML, на сервере тоже.
Но когда верхний цикл парсинга делаю сначала на клиенте в модуле формы, потом передаю ЭлементDOM в модуль объекта, генерит ошибку отображения. Цель - отображать на форме текущее состояние, что он на данный момент парсит.
5 y-soft
 
27.06.17
10:00
Или может я в принципе выбрал не тот подход.
Может, стоило весь парсинг начиная от пути файла делать на сервере в модуле объекта, а клиенту передавать лишь алерты, чтобы он отображал текущее состояние выполнения процедуры на форме? Как?
6 y-soft
 
27.06.17
12:28
Еще попробовал реквизиты объекта (обработка) заюзать для хранения промежуточных данных, необходимых для модуля объекта. Фиг. Оказывается, их значения между вызовами не сохраняются. Напрашивается резонный вопрос: а зачем они тогда нужны?
7 Numerus Mikhail
 
27.06.17
12:34
(6) Если я правильно понял, ты каждый раз при вызове процедуры из модуля объекта делаешь РеквитиФормыВОбъект?
Чтобы потом сохранить их, надо еще обратно ЗначениеВДанныеФормы делать
8 dezss
 
27.06.17
12:39
а ты посмотри в сторону фоновых заданий...может они тебе помогут с этим делом справиться...
9 y-soft
 
27.06.17
15:22
>зове процедуры из модуля объекта делаешь РеквитиФормыВОбъект?
Нет, так делал. ЭтотОбъект.<ИмяРеквизита>
Позволяло.
Бум иметь в виду. Спасибо. Что получиццо, нопейшу.
10 Имитация работы
 
27.06.17
15:25
(9) Может не надо?
11 y-soft
 
27.06.17
16:44
Не получается.
Объявил реквизит объекта с именем КонтекстДанных тип СписокЗначений.

В модуле объекта пишем:
_КонтекстДанных=ДанныеФормыВЗначение(КонтекстДанных,Тип("СписокЗначений"));

либо
_КонтекстДанных=ДанныеФормыВЗначение(ЭтотОбъект.КонтекстДанных,Тип("СписокЗначений"));

ругается на несоответствие типов (параметр номер 1).

Аналогичная ошибка возникает при
ЗначениеВДанныеФормы(_КонтекстДанных,ЭтотОбъект.КонтекстДанных);

Как первый параметр преобразовать?
12 Numerus Mikhail
 
27.06.17
16:49
(11) Погоди, если у тебя управляемые формы, то к модулю объекта ты можешь получить доступ только с объектом
То-есть как-то так, если я не путаю:

РеквизитОбъект = РеквизитФормыВЗначение("Объект");
РеквизитОбъект.ТвояПроцедураИлиФункция();
ЗначениеВРеквизитФормы(РеквизитОбъект, "Объект");
13 Вафель
 
27.06.17
16:49
прогресс выполнения делается совсем не так.
Если встроенный в конфу - то через задание. если внешняя, то
https://github.com/a-sitnikov/ExtForms-grdok/blob/master/Admin/ОбработкаНаСервереСИндикатором.epf
14 y-soft
 
27.06.17
20:42
>РеквизитОбъект = РеквизитФормыВЗначение("Объект");
>РеквизитОбъект.ТвояПроцедураИлиФункция();
>ЗначениеВРеквизитФормы(РеквизитОбъект, "Объект");

Так вроде работает, но при возврате возникает ошибка отображения на некоторых типах, в частности ЭлементDOM.

Всё понял. Дохлый номер. Прогресс бум делать по другому.

Спасибо откликнувшимся. Тему можно считать закрытой.
15 Aleksandr N
 
28.06.17
01:15
(0) Платформу 8.2 придумали 150 лет назад вместе с её управляемыми формами и прочими плюшками, а народ до сих пор её готовить не научился. Стыдно должно быть, господа.
(14) Не используйте в таких случаях модуль объекта в управляемом приложении. Просто переносите его методы в модуль формы или модуль менеджера с передачей всех необходимых параметров.
16 y-soft
 
28.06.17
10:47
>вместе с её управляемыми формами

Кому нужны по сути эти управляемые формы? WEB-интерфейс это редкость с учетом тормозов интернета, а так просто досадное недоразумение, очередная стена, через которую перепрыгивать.

>Не используйте в таких случаях модуль объекта в управляемом приложении

Принципиальной разницы не вижу. Все обращения к базе данных идут с директивой &НаСервере, даже в модуле формы. То есть все равно возникнут проблемы при передаче параметров от процедуры &НаКлиенте к процедуре &НаСервере - будет та же ошибка отображения.
Программист всегда исправляет последнюю ошибку.