![]() |
![]() |
![]() |
|
v7: ПолучитьАтрибут (Formex) - как работает? | ☑ | ||
---|---|---|---|---|
0
Масянька
25.01.18
✎
16:14
|
День добрый!
Док-т, модуль формы. Процедура ПриОткрытии() Можно = 0; РасшФормы = СоздатьОбъект("РасширениеФормы"); РасшФормы.УстановитьФорму(Форма); .... ДокументНулевогоГашения(); .... КонецПроцедуры Процедура ДокументНулевогоГашения() Форма.ТолькоПросмотр(1); .... РасшФормы.ПолучитьАтрибут(1).Доступность = 1; КонецПроцедуры выдает- РасшФормы.ПолучитьАтрибут(1).Доступность = 1; {Документ.ГашениеКассы.Форма.Модуль(567)}: Значение не представляет агрегатный объект (ПолучитьАтрибут) Почему? КонецПроцедуры // ДокументНулевогоГашения |
|||
1
Масянька
25.01.18
✎
16:19
|
Если в ПриОткрытии написать:
РасшФормы.НайтиАтрибут(2, "Корректировка"); РасшФормы.ТекущийАтрибут().Доступность = 1; Сообщить("" + Форма.Корректировка.Доступность()); выдает 1 (то есть доступен). Но потом идет процедура с закрытием всего на просмотр... |
|||
2
kittystark
25.01.18
✎
16:21
|
в отладчике посмотри
скорее всего расшФормы - это локальная переменная в Процедуре ПриОткрытии()... и криво передается в ДокументНулевогоГашения() попробуй в начале модуля пропиши "перем расшФормы;" |
|||
3
Злопчинский
25.01.18
✎
16:21
|
РасширениеФормы используй не в ПриОткрытии (формы еще нет)
а в ПослеСоздания() или в ПослеОткрытия() |
|||
4
Масянька
25.01.18
✎
16:24
|
(2) ДокументНулевогоГашения - это процедура из этого же модуля.
(3) ПоселСоздания, ПослеОткрытия - тоже самое "Значение не представляет агрегатный объект". |
|||
5
Ёпрст
гуру
25.01.18
✎
16:31
|
(0) и че ?
РасшФоры у тя глобальная переменная ? |
|||
6
Ёпрст
гуру
25.01.18
✎
16:31
|
сдаётся, что нет
|
|||
7
Ёпрст
гуру
25.01.18
✎
16:32
|
ну и по номеру.. это вообще не комильфо в данном случае, пиши через имя атрибута формы.
|
|||
8
Ёпрст
гуру
25.01.18
✎
16:32
|
и номер. если че, с 0 начинается. т. е если у формы 1 атрибут, нумер будет 0
|
|||
9
Масянька
25.01.18
✎
16:32
|
(5) Глобальная - это в глобальнике? Если да - то нет.
Если "глобальная" в модуле док-та - то да. (7) Те же яй... (пардон) помидоры. |
|||
10
Ёпрст
гуру
25.01.18
✎
16:34
|
(9) ну, значит еще её где-то переопределяешь
|
|||
11
Ёпрст
гуру
25.01.18
✎
16:35
|
вот и нету у неё метода ПолучитьАтрибут.
назови Перем Вася; и используй потом в коде. |
|||
12
Масянька
25.01.18
✎
16:36
|
(10) РасшФормы = СоздатьОбъект("РасширениеФормы");
только в ПриОткрытии. Причем, используется затем (сбросмодифицированности) и работает. |
|||
13
Ёпрст
гуру
25.01.18
✎
16:38
|
(12) ты проверь, для начала
|
|||
14
Ёпрст
гуру
25.01.18
✎
16:38
|
если не поможет, пихай код в ПослеОткрытия
|
|||
15
Масянька
25.01.18
✎
16:40
|
(13) Дык, проверяла...
А ВводНового не вызывает ПриОткрытии? |
|||
16
Ёпрст
гуру
25.01.18
✎
16:52
|
(15) нет
|
|||
17
Ёпрст
гуру
25.01.18
✎
16:52
|
приОткрытии это своё событие.. :))
|
|||
18
Ёпрст
гуру
25.01.18
✎
16:52
|
пиши, где накосячила..
|
|||
19
Злопчинский
25.01.18
✎
16:54
|
(15) Сначала отрабатывает ВводНового, потом отрабатывает ПриОткрытии - если форма вызывана для ввода нового
|
|||
20
Масянька
25.01.18
✎
17:00
|
(18) См. (19).
|
|||
21
Масянька
25.01.18
✎
17:03
|
Все равно не открывает...
В Приоткрытии в самом конце: Если Выбран() = 0 Тогда // новый док-т РасшФормы.УстановитьФорму(Форма); РасшФормы.ПолучитьАтрибут("Корректировка").Доступность = 1; КонецЕсли; Сообщить("1 - " + Форма.Корректировка.Доступность()); - выдает 1, а сам элемент серенький... Процедуры, где толькопросмотр не вызываются... |
|||
22
Масянька
25.01.18
✎
17:04
|
(21) Сообщить самый последний. Проверяла вводом нового.
|
|||
23
Злопчинский
25.01.18
✎
17:07
|
(21) а зачем так сложно
Форма.Корректировка.Доступность(1); - и все.. попробуй! |
|||
24
Масянька
25.01.18
✎
17:09
|
(23) В некоторых случаях Форма. ТолькоПросмотр(1);
И тут - как раз такой случай. Но ТолькоПросмотр идет до. |
|||
25
Злопчинский
25.01.18
✎
17:13
|
(24) Просмотр и Доступность- это две несвязные сущности.
пусть вверху Будет ТолькоПросмотр. Ниже сделай как в (23) - доступность(1) |
|||
26
Масянька
25.01.18
✎
17:14
|
А может и Формекс не умеет?
Форма - только просмотр, открыть один реквизит. |
|||
27
Масянька
25.01.18
✎
17:15
|
(25) Да, не работает.
Форма.ТолькоПросмотр(1). Форма.ТолькоПросмотр(<?>) Form.ReadOnly(<?>) Синтаксис: Форма.ТолькоПросмотр(<Режим>) Назначение: Установка режима редактирования формы. Возвращает: Текущее числовое значение режима редактирования формы (на момент до исполнения метода). Параметры: <Режим> -: 0 - разрешено редактирование полей формы, 1 - запрещено (необязателен, по умолчанию - 0). Замечание: Доступ к методу возможен только в контексте Модуля формы через атрибут Форма. |
|||
28
Злопчинский
25.01.18
✎
17:19
|
(27) фигня, косяпоришь где-то.
проверяй. В типово ТиС аналог Просмотр а потом доступность=1 - отрабатывает норм, посмотри в ПриОткрытии в люом типовом документе в модуле формы |
|||
29
Масянька
25.01.18
✎
17:23
|
(28) Открой и посмотри.
|
|||
30
Масянька
25.01.18
✎
17:25
|
(18) Ё! Форма.ТолькоПросмотр(1) можно открыть реквизит?
|
|||
31
Злопчинский
25.01.18
✎
17:28
|
(29) это влияет только на ПОЛЯ фомы. кнопки остаются доступными.
поэтому - ну по крайней мере у меня стоит так и работает\ // Если открыли только на просмотр, то надо кнопки сделать недоступными Если Форма.ТолькоПросмотр()=1 Тогда // СДЕЛАТЬ НЕДОСТУПНЫМИ КНОПКИ МОДИФИКАЦИИ ДОКУМЕНТА Форма.кнОперация.Доступность(0); Форма.кнОК.Доступность(0); Форма.кнХОснование.Доступность(0); Форма.кнХПроект.Доступность(0); Форма.кнЗаписать.Доступность(0); Форма.кнПровести.Доступность(0); Форма.кнЗаполнить.Доступность(0); Форма.кнПодбор.Доступность(0); Форма.кнЦены.Доступность(0); Форма.кнСуммаВзаиморасчетов.Доступность(0); |
|||
32
Масянька
25.01.18
✎
17:29
|
(31) Ты гонишь?
Речь о реквизите док-та (поле формы). |
|||
33
Ёпрст
гуру
25.01.18
✎
17:39
|
(26) не умеет
|
|||
34
Ёпрст
гуру
25.01.18
✎
17:39
|
(30) нет.
Толкько кнопки доступны |
|||
35
Ёпрст
гуру
25.01.18
✎
17:39
|
Тебе надо делать не так, тебе надо всё через формекс закрывать и нужное открывать
|
|||
36
Ёпрст
гуру
25.01.18
✎
17:40
|
если хочешь только часть атрибутов открыть
|
|||
37
Ёпрст
гуру
25.01.18
✎
17:40
|
форма.ТолькоПросмотр будет блокировать всё, кроме кнопок
|
|||
38
Ёпрст
гуру
25.01.18
✎
17:40
|
и формексом ты это не отменишь
|
|||
39
Масянька
25.01.18
✎
17:41
|
(33) - (38) Всё... Зря я долблюсь...
Спасибо. |
|||
40
Ёпрст
гуру
25.01.18
✎
17:42
|
ну или делать как в типовых - открывать свою форму для редактирование реквизитов нужных.
|
|||
41
Ёпрст
гуру
25.01.18
✎
17:42
|
в журнальчике кнопка - редактировать реквизиты..
|
|||
42
Масянька
25.01.18
✎
17:43
|
(41) У меня уже несколько планов обхода крутятся в голове...
|
|||
43
ADirks
26.01.18
✎
07:06
|
(26) вот такая фигулька может помочь
но таки учти, всё это работает _после_ создания окна формы. В ПриОткрытии() не работает. Процедура Доступность_ТолькоУказанные(сз_стр_Рекв, фДоступность) Экспорт Если ТипЗначенияСтр(сз_стр_Рекв) = "СписокЗначений" Тогда сзРекв = сз_стр_Рекв; Иначе сзРекв= СтрокуВСписок(сз_стр_Рекв, ",", "1"); КонецЕсли; оФорма = СоздатьОбъект("РасширениеФормы"); оФорма.УстановитьФорму(Конт.Форма); нКоличествоАтр = оФорма.КоличествоАтрибутов(); Для нАтр = 1 По нКоличествоАтр Цикл оАтр = оФорма.ПолучитьАтрибут(нАтр-1); Если оАтр.Тип = 1 Тогда Продолжить; ИначеЕсли оАтр.Тип = 4 Тогда Продолжить; КонецЕсли; Если сзРекв.НайтиЗначение(оАтр.Идентификатор) = 0 Тогда оАтр.Доступность = (1 - фДоступность); Иначе оАтр.Доступность = фДоступность; КонецЕсли; КонецЦикла; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |