|
обработчик поля типа флажок | ☑ | ||
---|---|---|---|---|
0
Tolstiy Beremenniy
04.09.18
✎
06:24
|
Управляемые формы. Табличная часть документа. Есть поле типа флажок.
При установке или снятии с него значения, становится доступным или не доступным одно из соседних полей. Добавил ещё поле в табличную часть. Сейчас хочу добавить код в этот обработчик, что бы делать доступным или не доступным новое поле. Но смотрю в обработчике события при изменении поля флажок, ничего не задано. А обработчик работает. Где и как найти процедуру, которая делает доступным или не доступным соседнее поле? И доработать её. |
|||
1
Tolstiy Beremenniy
04.09.18
✎
06:30
|
Конфигурация 1С:ERP Управление предприятием 2 (2.4.3.144).
Смотрю в коде там вообще какая то фантастика. Как же задан этот обработчик делающий доступным или не доступным поле в табличной части, при установке или снятии флажка? |
|||
2
lxndr
04.09.18
✎
06:31
|
смотри УсловноеОформление формы
|
|||
3
Tolstiy Beremenniy
04.09.18
✎
06:36
|
(2) Процедура такая?
Есть &НаСервере Процедура УстановитьУсловноеОформление() Но в ней вообще ничего не понятно. |
|||
4
hhhh
04.09.18
✎
06:53
|
(3) попробуйте у табличного поля поискать событие. ПриИзмененииФлажка
|
|||
5
Tolstiy Beremenniy
04.09.18
✎
07:12
|
(4) Вообще нет ни одного обработчика. Ни у табличного поля, ни у реквизита флажок.
Я несколько обескуражен. Управляемые формы, интерфейс такси. Хочу сделать это сам. Задаю обработчик реквизиту флажок при изменении. Как отловить значение флажка, и задать доступность или не доступность нужному полю? Подскажите пожалуйста. |
|||
6
catena
04.09.18
✎
07:16
|
(3)А что в процедуре-то?
|
|||
7
Tolstiy Beremenniy
04.09.18
✎
07:19
|
(6) Там ппц, какой то. Она на сервере выполняется.
Пока отладка на сервере не работает. Как видно к ней не подобраться, даже по коду. Как это сделать самому? Я хочу делать в процедуре при изменении флажка. &НаСервере Процедура УстановитьУсловноеОформление() УсловноеОформление.Элементы.Очистить(); ПланыВидовХарактеристик.СтатьиРасходов.УстановитьУсловноеОформлениеАналитик( УсловноеОформление, Новый Структура("ОтражениеРасходов")); #Область ОбщаяСобственность Элемент = УсловноеОформление.Элементы.Добавить(); Элемент.Поля.Элементы.Добавить().Поле = Новый ПолеКомпоновкиДанных(Элементы.ОСДоляВПравеОбщейСобственностиЧислитель.Имя); Элемент.Поля.Элементы.Добавить().Поле = Новый ПолеКомпоновкиДанных(Элементы.ОСДоляВПравеОбщейСобственностиЗнаменатель.Имя); ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ОС.ОбщаяСобственность"); ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ОтборЭлемента.ПравоеЗначение = Ложь; Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента); Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь); Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<не требуется>'")); Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина); #КонецОбласти #Область ЖилищноеСтроительство Элемент = УсловноеОформление.Элементы.Добавить(); Элемент.Поля.Элементы.Добавить().Поле = Новый ПолеКомпоновкиДанных(Элементы.ОСДатаРегистрацииПравНаОбъектНедвижимости.Имя); ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ОС.ЖилищноеСтроительство"); ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ОтборЭлемента.ПравоеЗначение = Ложь; Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента); Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь); Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<не требуется>'")); Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина); // Элемент = УсловноеОформление.Элементы.Добавить(); Элемент.Поля.Элементы.Добавить().Поле = Новый ПолеКомпоновкиДанных(Элементы.ОСДатаНачалаПроектирования.Имя); ГруппаОтбора = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли; ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ОС.ЖилищноеСтроительство"); ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ОтборЭлемента.ПравоеЗначение = Ложь; ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Дата"); ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно; ОтборЭлемента.ПравоеЗначение = Дата(2008, 1, 1, 0, 0, 0); Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента); Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь); Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<не требуется>'")); Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина); #КонецОбласти КонецПроцедуры |
|||
8
Tolstiy Beremenniy
04.09.18
✎
07:21
|
Как срабатывает блокировка и разблокировка поля по
установке и снятию флажка не понятно!!!! |
|||
9
catena
04.09.18
✎
07:29
|
(7)Все ж понятно. Если не установлен флаг ЖилищноеСтроительство или Объект.Дата больше 2008 года, то для поля ОСДатаНачалаПроектирования и ТолькоПросмотр=Истина.
|
|||
10
Tolstiy Beremenniy
04.09.18
✎
07:32
|
(9) Мне нужно вот это поле
ДатаРегистрацииПравНаОбъектНедвижимости Оно нигде не обрабатывается вообще. Я искал везде же. А флаг вот этот ОСЖилищноеСтроительство. |
|||
11
Tolstiy Beremenniy
04.09.18
✎
07:33
|
В процедуре при изменении флага, вот так я могу получить
значение поля. Элементы.ОС.ТекущиеДанные.ДатаРегистрацииПравНаОбъектНедвижимостиПрочее Как мне установить или снять его доступность на форме? Подскажите пожалуйста. |
|||
12
catena
04.09.18
✎
07:38
|
(10)А это что?
#Область ЖилищноеСтроительство Элемент = УсловноеОформление.Элементы.Добавить(); Элемент.Поля.Элементы.Добавить().Поле = Новый ПолеКомпоновкиДанных(Элементы.ОСДатаРегистрацииПравНаОбъектНедвижимости.Имя); ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ОС.ЖилищноеСтроительство"); ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ОтборЭлемента.ПравоеЗначение = Ложь; Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента); Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь); Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<не требуется>'")); Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина); |
|||
13
Tolstiy Beremenniy
04.09.18
✎
07:47
|
(12) Скажите пожалуйста, что с этого можно понять?
Как срабатывает блокировка и разблокировка поля по установке флажка? |
|||
14
catena
04.09.18
✎
07:54
|
(13)Сделайте форму с любым динамическим списком, откройте в режиме предприятия и поиграйтесь с условным оформлением вручную. Откройте справку и почитайте. Код в (12) не такой уж сложный для понимания.
|
|||
15
Tolstiy Beremenniy
04.09.18
✎
07:59
|
(14) Там про доступность нет слова.
Мне нужно делать задачи, нет времени на эксперименты. Тем более я не понимаю что нужно сделать и как поэксперементировать. |
|||
16
catena
04.09.18
✎
08:04
|
(15)Ну как нет про доступность??
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина); >>"Мне нужно делать задачи, нет времени на эксперименты." Что-то мне напомнило: Мисти Ну а что я могла не учесть? Советуйте! И для среднестатической тетки - я совсем не дура. ДенисЧ Документацию не читаешь Мисти А зачем мне документация?? Я через неделю всё забуду и никогда больше не буду это использовать! |
|||
18
Tolstiy Beremenniy
04.09.18
✎
08:28
|
(16) Да только просмотр не заметил.
Ну а как это работает при установке или снятии флажка. Не очевидно. |
|||
19
Tolstiy Beremenniy
04.09.18
✎
08:32
|
Я сделал вот так
Если Элементы.ОС.ТекущиеДанные.ЖилищноеСтроительство Тогда Элементы.ОСДатаРегистрацииПравНаОбъектНедвижимостиПрочее.Доступность = Ложь; Иначе Элементы.ОСДатаРегистрацииПравНаОбъектНедвижимостиПрочее.Доступность = Истина; КонецЕсли; Как сейчас это же сделать при открытии документа? |
|||
20
hhhh
04.09.18
✎
08:40
|
(19) открываешь процедуру ПриОткрытии
здесь нажимаешь Ctrl-C, там нажимаешь Cthl-V |
|||
21
Tolstiy Beremenniy
04.09.18
✎
08:42
|
В процедуре при открытии на клиенте, пишет итератор
для значения не определен. Что я не так сделал? Для каждого СтрОС из Элементы.ОС Цикл КонецЦикла; |
|||
22
Мимохожий Однако
04.09.18
✎
08:46
|
(21) Включи отладчик на ошибке и сравни ожидаемое с фактом.
|
|||
23
Мимохожий Однако
04.09.18
✎
08:47
|
(7) Работай на файловой копии в чистой базе с отладчиком и найдешь как работает.
|
|||
24
Tolstiy Beremenniy
04.09.18
✎
08:47
|
Элементы.ОС - таблица формы, её и хотел перебрать
|
|||
25
Tolstiy Beremenniy
04.09.18
✎
08:47
|
(23) мне тут нужно делать, на этой версии SQL Server
|
|||
26
Tolstiy Beremenniy
04.09.18
✎
08:48
|
Подскажите как правильно будет?
|
|||
27
Мимохожий Однако
04.09.18
✎
08:48
|
(25) Включи отладку на сервере в таком случае.
|
|||
28
Tolstiy Beremenniy
04.09.18
✎
08:52
|
(27) Пока нет возможности.
При открытии делаю на клиенте. |
|||
29
Мимохожий Однако
04.09.18
✎
08:55
|
(28) Если нет возможности, то разобраться можно и на файловой копии. ИМХО. Чего ты так вцепился в SQL?
|
|||
30
Tolstiy Beremenniy
04.09.18
✎
08:57
|
можно ли это сделать на клиенте при открытии?
|
|||
31
Мимохожий Однако
04.09.18
✎
08:58
|
(30) нет
|
|||
32
Tolstiy Beremenniy
04.09.18
✎
09:03
|
деалать в ПриСозданииНаСервере() ?
Подскажите по коду? |
|||
33
shadow_sw
04.09.18
✎
09:06
|
судя по теме FallingStar №3? )
|
|||
34
Мимохожий Однако
04.09.18
✎
09:14
|
(32) Делать процедуру с директивой на сервере для работы с табличной частью.
|
|||
35
Tolstiy Beremenniy
04.09.18
✎
09:20
|
(34) Пробую при создании на сервере
но как будет по коду правильно? Для каждого СтрОС из Объект.ОС Цикл Сообщить(СтрОС); КонецЦикла; |
|||
36
Мимохожий Однако
04.09.18
✎
09:31
|
(35) Если работает так как хотел, то код правильный.
Проверил, работает? )) |
|||
37
Tolstiy Beremenniy
04.09.18
✎
09:39
|
выдает
ДанныеФормыЭлементКоллекции как это обрабатывать правильно? |
|||
38
Мимохожий Однако
04.09.18
✎
09:45
|
(37) Покажи весь код и процедуры с директивами
|
|||
39
Tolstiy Beremenniy
04.09.18
✎
09:49
|
(38) Да я просто пробую, не пойму как управлять доступностью полей
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) УстановитьУсловноеОформление(); Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект); Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда ПриСозданииЧтенииНаСервере(); КонецЕсли; // СтандартныеПодсистемы.ПодключаемыеКоманды ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект); // Конец СтандартныеПодсистемы.ПодключаемыеКоманды ИнтеграцияС1СДокументооборот.ПриСозданииНаСервере(ЭтаФорма); СобытияФорм.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка); Для каждого СтрОС из Объект.ОС Цикл Сообщить(СтрОС); КонецЦикла; КонецПроцедуры |
|||
40
hhhh
04.09.18
✎
09:53
|
(39) у тебя это поле
Элементы.ОСДатаРегистрацииПравНаОбъектНедвижимостиПрочее одно на форме. ты не сможешь одновременно, чтобы оно было и Ложь и Истина. Поэтому твой подход: при открытии для каждой строчки проставить изначально бредовый. Не получится. Поэтому делай как в (19), устанавливай доступность только в текущей строке. |
|||
41
catena
04.09.18
✎
09:54
|
(39)Ты скажи, как думаешь, доступность - свойство объекта или формы?
|
|||
42
Мимохожий Однако
04.09.18
✎
09:54
|
Он поймёт, пока не встанет отладчиком на проблемный фрагмент.
|
|||
43
Tolstiy Beremenniy
04.09.18
✎
09:56
|
как на сервере то управлять доступностью?
|
|||
44
Tolstiy Beremenniy
04.09.18
✎
09:57
|
(41) конечно формы
|
|||
45
catena
04.09.18
✎
10:00
|
(44)А зачем тогда в (39) объект перебираешь?
|
|||
46
Tolstiy Beremenniy
04.09.18
✎
10:02
|
(45) Но и перебирать же нужно на клиенте????
На сервере то какая Доступность может быть |
|||
47
Tolstiy Beremenniy
04.09.18
✎
10:03
|
(45) Подскажите пожалуйста как будет правильно?
|
|||
48
Tolstiy Beremenniy
04.09.18
✎
10:08
|
(40) Это поле табличной части, оно есть у каждой строки
когда ввели данные, галку где то поставили где то нет при открытии это же нужно задать тоже. Иначе при открытии галка стоит, поле должно быть не доступно, а оно доступно. Это же ошибка функциональности. |
|||
49
dmt
04.09.18
✎
10:13
|
(47) тебе готовый пример привели.
Элемент = УсловноеОформление.Элементы.Добавить(); Элемент.Поля.Элементы.Добавить().Поле = Новый ПолеКомпоновкиДанных(Элементы.<<ТвоеПолеВвода>>.Имя); ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ОС.ЖилищноеСтроительство"); ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ОтборЭлемента.ПравоеЗначение = Ложь; Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента); Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь); Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<не требуется>'")); Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина); |
|||
50
Tolstiy Beremenniy
04.09.18
✎
10:22
|
(49) Буду пробовать, но ранее такой подход не использовался.
Я хотел сделать по понятному. Перебором строк, и установкой доступности поля для каждой строки как в (19). Так нельзя что ли сделать? |
|||
51
catena
04.09.18
✎
10:35
|
(50)Можно, но ты не умеешь. А еще представь следующего разработчика, который будет вынужден поддерживать код, устанавливающий доступность в десяти разных процедурах пятнадцатью разными способами. Это невежливо.
|
|||
52
dmt
04.09.18
✎
10:41
|
(50) тебе уже все написали в (40)
"Поэтому делай как в (19), устанавливай доступность только в текущей строке." |
|||
53
Tolstiy Beremenniy
04.09.18
✎
10:52
|
(51) Подскажите.
(52) Это нужно делать и при открытии. |
|||
54
catena
04.09.18
✎
10:54
|
(53)Подсказали в (49). Тебе какая разница в чем разбираться, ты ни то, ни то не умеешь.
|
|||
55
Tolstiy Beremenniy
04.09.18
✎
10:56
|
(54) Я уже это взял применяю.
Только не понял как это отрабатывает и при открытии и при изменении флага в строке. Если это работает, код (19) не нужен я так понимаю. |
|||
56
hhhh
04.09.18
✎
10:57
|
(53) да, Доступность прекрасно устанавливается и НаСервере. Что-то ты зря на сервер бочку катишь.
|
|||
57
Tolstiy Beremenniy
04.09.18
✎
11:00
|
(56) Понял. Как тогда это сделать?
Для каждого СтрОС из ЭтаФорма.ОС Цикл Сообщить(СтрОС); КонецЦикла; |
|||
58
dmt
04.09.18
✎
11:05
|
(53) не нужно
|
|||
59
Tolstiy Beremenniy
04.09.18
✎
11:11
|
(58) Как не нужно? Это необходимо!!!!
Я вставил вот этот чудесный код в процедуру УстановитьУсловноеОформление(). Стало работать и при открытии и при изменении в строке!!!! Элемент = УсловноеОформление.Элементы.Добавить(); Элемент.Поля.Элементы.Добавить().Поле = Новый ПолеКомпоновкиДанных(Элементы.ОСДатаРегистрацииПравНаОбъектНедвижимостиПрочее.Имя); ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ОС.ЖилищноеСтроительство"); ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ОтборЭлемента.ПравоеЗначение = Истина; Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента); Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь); Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<не требуется>'")); Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина); |
|||
60
catena
04.09.18
✎
11:16
|
(59)мирэкал
|
|||
61
Tolstiy Beremenniy
04.09.18
✎
11:34
|
(60) Что?
|
|||
62
dmt
04.09.18
✎
11:36
|
(59) это беременность, хочется непонятного!!!
|
|||
63
catena
04.09.18
✎
11:41
|
(61)Чудеса, говорю. Даже до сотого поста не дотянули.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |