|
Обращение к открытой форме из обработки. | ☑ | ||
---|---|---|---|---|
0
posq
30.09.11
✎
11:21
|
Создаю обработку заполнения ТЧ. Встала необходимость обращаться к экспортным переменным модуля формы и элементам формы, т.к. некоторые данные собираются в нужном виде только на форме, а хранятся в разных реквизитах документа.
Как правильно обращаться к форме из которой открыта обработка и как работать с элементами формы? Попробовал вот так, но результата не получил: ФормаВладелец = ОбъектВладелец.ПолучитьФорму("ФормаДокумента"); //открыта = ФормаВладелец.Открыта(); мСоответствиеТиповЦен = ФормаВладелец.мСоответствиеТиповЦен; ТаблицаЦен = ФормаВладелец.ТаблицаЦен; Для каждого Строка Из ТаблицаЦен Цикл; Для каждого Колонка Из Строка Цикл; Сообщить("!" + Колонка); Сообщить("!"); КонецЦикла КонецЦикла; И все еще сильно затрудняется невозможностью нормальной работы с отладчиком. |
|||
1
butterbean
30.09.11
✎
11:22
|
перенеси все процедуры/функции к себе в обработку
|
|||
2
posq
30.09.11
✎
11:24
|
(1) Перенес нужную процедуру, но ей необходимы переменные из модуля формы и элементы формы, а не реквизиты документа.
|
|||
3
posq
30.09.11
✎
11:34
|
Ну все же наверное за неделю обработок заполнения ТЧ штук по 5 пишут. Ни разу не приходилось обращаться к форме?
|
|||
4
Vladal
30.09.11
✎
11:37
|
Т.е. у тебя есть элементы управления на форме? которые не являются реквизитами документа? Типа каких-то флажочков, полей ввода и т.д.?
|
|||
5
posq
30.09.11
✎
11:48
|
(4) Да. На Форме Табличное поле(таблица значений) и в ней все хранится. Можно ли обратится к элементу формы?
Или как правильно обратится к экспортной переменной и вызвать экспортную процедуру в модуле формы? |
|||
6
Vladal
30.09.11
✎
11:52
|
ТаблицаЗначений - не табличная часть, я так понял.
Вот тогда надо все обработчики , связанные с этой ТЧ перенести в обработку. Или объявить экспортными по всем правилам, чтобы их можно было выызывать из обработки. А то ведь изменится алгоритмя, и ищи, почему в документе так, а в обработке не так. |
|||
7
posq
30.09.11
✎
12:04
|
(6)ТаблицаЗначений это не табличная часть, в этом вся и суть. А мне для обработки нужно получить строку из этой ТЗ.
Снова повторюсь: "Можно ли обратится к элементу формы? Или как правильно обратится к экспортной переменной и вызвать экспортную процедуру в модуле формы?" |
|||
8
Nallama
30.09.11
✎
12:31
|
||||
9
Vladal
30.09.11
✎
12:52
|
Можно
У меня получилось так: Процедура КнопкаВыполнитьНажатие(Кнопка) ПодключаемаяФорма = Обработки.ТестСканера.ПолучитьФорму("Форма"); ПодключаемаяТЗ = ПодключаемаяФорма.ЭлементыФормы.ТабличноеПоле1.Значение; КонецПроцедуры Вот после всего этого в переменной ПодключаемаяТЗ содержит все значения и колонки ТЗ на подключенной форме |
|||
10
Vladal
30.09.11
✎
12:53
|
Ишо вопрос - форма того документа открыта и ТЗ в ней расчитана?
|
|||
11
Vladal
30.09.11
✎
13:00
|
Я в открытой форме обработки делал так:
ТекФорма = ЭтотОбъект.ПолучитьФорму("Форма"); Если ТекФорма.Открыта() Тогда МояТЗ = ТекФорма.ЭлементыФормы.ТаблицаПринтеров.Значение; Для каждого СтрокаТЗ Из МояТЗ Цикл Сообщить("АдресПринтера " + СтрокаТЗ.АдресПринтера); Сообщить("ИмяПринтра " + СтрокаТЗ.ИмяПринтера); КонецЦикла; КонецЕсли; |
|||
12
posq
30.09.11
✎
13:14
|
(11) Спасибо. Я в принципе тоже самое делаю при обращении к документу, но мне возвращается пустой элемент, хотя форма документа открыта.
|
|||
13
posq
30.09.11
✎
13:54
|
Поделитесь кто нибудь любой обработкой заполнения ТЧ для УТ 10.3 для документа "Установка цен номенклатуры". Я хоть на примере может разберусь. Киньте ссыль если не жалко. Залить можно сюда http://rghost.ru/
|
|||
14
Nallama
30.09.11
✎
14:01
|
(11), (12) Зачем в подчиненной форме получать форму-владельца, если ее изначально можно передать в качестве параметра?
|
|||
15
posq
30.09.11
✎
14:04
|
(14) Можно передать или передается?
В обработке ТЧ: Процедура Инициализировать(Объект,Кнопка,ТабличнаяЧасть) Экспорт И больше ничего не имею. |
|||
16
vmv
30.09.11
✎
14:13
|
СтруктураЗначенияЗаписи = Новый Структура; // В эту структуру будем помещать значения колонок строки источника для передачи на сервер, т.к. строка Тз на сервер не передается
Для каждого Колонка Из ТзВИТаблица.Колонки Цикл Колонка.Имя = ВРег(Колонка.Имя); // ВРег() чтобы не зависеть от регистра символов СтруктураЗначенияЗаписи.Вставить(Колонка.Имя); КонецЦикла; // Итерации импорта обходом строк полученной таблицы значений #Если Клиент Тогда СчетчикИтераций = 0; ДоляПроцента = 100/ТзВИТаблицаКоличество; #КонецЕсли Для каждого СтрокаТзВИ Из ТзВИТаблица Цикл #Если Клиент Тогда СчетчикИтераций = СчетчикИтераций + 1; Процентов = Цел(СчетчикИтераций*ДоляПроцента); #КонецЕсли ЗаполнитьЗначенияСвойств(СтруктураЗначенияЗаписи, СтрокаТзВИ); СтвПараметрыИмпорта.Вставить("СтруктураЗначенияЗаписи", СтруктураЗначенияЗаписи); Для ИндексЭлементаСписка = 0 По СпсСинхронизации.Количество()-1 Цикл СтвПараметрыИмпорта.Вставить("ИндексЭлементаСписка", ИндексЭлементаСписка); Если Не ВыполнитьИмпортЗаписиДляЭлементаСпсСинхронизации(СтвПараметрыИмпорта) Тогда Продолжить; КонецЕсли; КонецЦикла; #Если Клиент Тогда ТекстСостояния = " " + СчетчикИтераций +"("+ТзВИТаблицаКоличество+")" + ", " +ИсточникИмя+ " >> " +ИсточникТаблицаИмя; Состояние(ТекстСостояния, Процентов); #КонецЕсли КонецЦикла; делай как я, помещая строку Тз в структуру и передавай куда хочешь, в 82 можно забыть о передаче строк тз, самих тз и тем более элементов формы. лучше сразу это понять |
|||
17
vmv
30.09.11
✎
14:19
|
возможность в 8.1 передавать и получать в качестве параметров всякое нетипизированое барахло еще не раз аукнеться тем, кто привык ваять методы через задницу
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |