Имя: Пароль:
1C
1С v8
вызов функции из модуля формы в модуле документа в управляемых формах
,
0 manti
 
13.11.12
09:18
Сделал перепост.
В модуля формы есть такая процедура Код
&НаКлиенте
Процедура РМПриИзменении() Экспорт
   Для каждого стр из Объект.РабочееМесто Цикл
       стр.пометка = Ложь;
   КонецЦикла;
   
   ТекущаяСтрока = Элементы.РабочееМесто.ТекущиеДанные;//неправильное обращение
   Если НЕ ТекущаяСтрока = Неопределено Тогда
       ТекущаяСтрока.Пометка = истина;
       УстановитьПараметрСеанса(ТекущаяСтрока.Значение);
   Иначе
       УстановитьПараметрСеанса("Пусто");
   КонецЕсли;
 
   ЗаполнитьСтраницу("Операции");
КонецПроцедуры

1.  
Manticor
13.11.12 9:14  

Пришлось столкнуться с синтаксисом 8.2.

В модуля формы есть такая процедура Код
&НаКлиенте
Процедура РМПриИзменении() Экспорт
   Для каждого стр из Объект.РабочееМесто Цикл
       стр.пометка = Ложь;
   КонецЦикла;
   
   ТекущаяСтрока = Элементы.РабочееМесто.ТекущиеДанные;//неправильное обращение
   Если НЕ ТекущаяСтрока = Неопределено Тогда
       ТекущаяСтрока.Пометка = истина;
       УстановитьПараметрСеанса(ТекущаяСтрока.Значение);
   Иначе
       УстановитьПараметрСеанса("Пусто");
   КонецЕсли;
 
   ЗаполнитьСтраницу("Операции");
КонецПроцедуры


Данная процедура нужня для перезаполнения формы.

&НаСервере
Процедура ЗаполнитьСтраницу(Параметр)
   Если Параметр = "РабочиеМеста" Тогда
       Запрос = Новый Запрос;

       Запрос.Текст = "ВЫБРАТЬ
                      |    ПользователиРабочихМест.РабочееМесто
                      |ИЗ
                      |    Справочник.ПользователиРабочихМест КАК ПользователиРабочихМест
                      |ГДЕ
                      |    ПользователиРабочихМест.ДоступноПользователям.Пользователь = &Пользователь
                      |    И ПользователиРабочихМест.РабочееМесто.РМ_Варки = ИСТИНА";
                     
       ЭтотОбъект.РабочееМесто.Очистить();
       Запрос.УстановитьПараметр("Пользователь", ПараметрыСеанса.Пользователь);
       Выборка = Запрос.Выполнить().Выбрать();
       Пока Выборка.Следующий() Цикл
           НовСтрока = ЭтотОбъект.РабочееМесто.Добавить();//неправильное обращение
           НовСтрока.Значение = Выборка.РабочееМесто;
           НовСтрока.Пометка = Ложь;
       КонецЦикла;


как ее вызвать из модуля документа? какие директиывы прописать?
пишет Поле объекта не обнаружено (ТекущиеДанные)
ТекущаяСтрока = ЭтотОбъект.РабочееМесто.ТекущиеДанные;(вместо элементов пишу ЭтотОбъект)
1 zak555
 
13.11.12
09:22
это по ходу г@внокод
2 butterbean
 
13.11.12
09:22
Никак, и не надо.
В модуле объекта нечего делать элементам формы
3 manti
 
13.11.12
09:23
(2) нужно просто вызвать эти процедуры из модуля для перезаполнения.
4 butterbean
 
13.11.12
09:24
(3) но не из модуля документа
5 zak555
 
13.11.12
09:30
перенсти в модуль менеджера
6 Поросенок Петр
 
13.11.12
09:31
Всё удалить к е.ф. и переписать нормально.
ПыСы: Не вижу причин использовать модуль менеджера.
7 Aprobator
 
13.11.12
09:33
за одну тока тему надо лишать почетного звания 1С-ника.
8 Aprobator
 
13.11.12
09:35
Форма на то и форма, чтобы в ней находились тока процедуры и функции для интерактивной работе. Процедуры заполнения и изменения объекта (не все правда, но если подразумевается их вызов не из модуля формы) должны находится в модуле объекта.
9 manti
 
13.11.12
09:36
(5) перемести в модуль менеджера эту процедуру
&НаСервере
Процедура ЗаполнитьСтраницу(Параметр)

 Переменная не определена (ЭтотОбъект)
       <<?>>ЭтотОбъект.РабочееМесто.Очистить(); (Проверка: Сервер)

Расскажите пожалуйста подробнее о менеджере, его тут можно использовать в моем случае?
10 Aprobator
 
13.11.12
09:43
а - здесь вообще речи о заполнении не идет, во я лошара.
(9) обращение к элементам формы может быть только из модуля формы. Если надо, чтобы что то было доступно в модуле объекта, то либо пишем данные в реквизит объекта либо в экспортную переменную модуля объекта. Модуль менеджера объекта тут не при чем. Хотя непонятно, почему не отдать нужное значение в модуль объекта тупо через параметры функции или процедуры?
11 Defender aka LINN
 
13.11.12
09:46
(8) "Процедуры заполнения и изменения объекта (не все правда, но если подразумевается их вызов не из модуля формы) должны находится в модуле объекта." - сфигали? Для этого как раз и придуман модуль менеджера, т.к. объекта у тебя может и не быть, только данные формы.
12 Aprobator
 
13.11.12
09:49
(11) это как - заполнение объекта, а объекта может и не быть?
13 manti
 
13.11.12
09:49
(10) почему не отдать нужное значение в модуль объекта тупо через параметры функции или процедуры
так а как это сделать да в модуле объекта? что конкретно нужно изменить для экспорта
14 Aprobator
 
13.11.12
09:51
(13) тогда вообще не понял. Пытаешься обратиться к процедуре неоткрытой формы и получить информацию с формы?
15 Aprobator
 
13.11.12
09:52
впрочем по модулю менеджера могу и тупить конечно. На УФ мозг еще не переключился. Надо будет найти время и типовое посмотреть. Учитывая то, кто меня пнуть пытается )
16 manti
 
13.11.12
09:58
(13) честно сам впервой с УФ работаю потому буду рад любой инфе. Получается что так- форма еще не открыта, но в модуле формы есть процедуры, их нужно вызвать для перезаполнения
17 Поросенок Петр
 
13.11.12
09:59
Делать процедуру в модуле менеджера, чтобы туда можно было посылать и объект и данные формы... Негигиенично это.
18 Aprobator
 
13.11.12
10:00
(16) методологически не верный подход. Таких процедур в модуле формы быть не должно. Вне зависимости от использования УФ или обычных форм.
19 manti
 
13.11.12
10:11
(16) что нужно поменять по методе?
20 Defender aka LINN
 
13.11.12
10:32
(12) Посмотри тип значения переменной "Объект" в модуле формы
21 Defender aka LINN
 
13.11.12
10:33
(17) Ваш вариант?
22 Поросенок Петр
 
13.11.12
11:41
(21) Заполнение в модуле объекта. Если нужно из формы, получать объект через РеквизитВЗначение...
23 Defender aka LINN
 
13.11.12
12:31
(22) Еще один...
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший