Вход | Регистрация
 

обработчик поля типа флажок

обработчик поля типа флажок
Я
   TolstiyBeremenniy
 
04.09.18 - 06:24
Управляемые формы. Табличная часть документа. Есть поле типа флажок.
При установке или снятии с него значения, становится доступным или
не доступным одно из соседних полей. Добавил ещё поле в табличную
часть. Сейчас хочу добавить код в этот обработчик, что бы делать
доступным или не доступным новое поле. Но смотрю в обработчике
события при изменении поля флажок, ничего не задано. А обработчик
работает. Где и как найти процедуру, которая делает доступным
или не доступным соседнее поле? И доработать её.
 
 
   TolstiyBeremenniy
 
1 - 04.09.18 - 06:30
Конфигурация 1С:ERP Управление предприятием 2 (2.4.3.144).
Смотрю в коде там вообще какая то фантастика.
Как же задан этот обработчик делающий доступным или не
доступным поле в табличной части, при установке
или снятии флажка?
   lxndr
 
2 - 04.09.18 - 06:31
смотри УсловноеОформление формы
   TolstiyBeremenniy
 
3 - 04.09.18 - 06:36
(2) Процедура такая?

Есть

&НаСервере
Процедура УстановитьУсловноеОформление()


Но в ней вообще ничего не понятно.
   hhhh
 
4 - 04.09.18 - 06:53
(3) попробуйте у табличного поля поискать событие. ПриИзмененииФлажка
   TolstiyBeremenniy
 
5 - 04.09.18 - 07:12
(4) Вообще нет ни одного обработчика. Ни у табличного поля, ни у реквизита флажок.
Я несколько обескуражен.
Управляемые формы, интерфейс такси.
Хочу сделать это сам. Задаю обработчик реквизиту флажок при изменении.
Как отловить значение флажка, и задать доступность или
не доступность нужному полю?
Подскажите пожалуйста.
   catena
 
6 - 04.09.18 - 07:16
(3)А что в процедуре-то?
   TolstiyBeremenniy
 
7 - 04.09.18 - 07:19
(6) Там ппц, какой то. Она на сервере выполняется.
Пока отладка на сервере не работает. Как видно к ней
не подобраться, даже по коду. Как это сделать самому?
Я хочу делать в процедуре при изменении флажка.

&НаСервере
Процедура УстановитьУсловноеОформление()
    
    УсловноеОформление.Элементы.Очистить();
    
    ПланыВидовХарактеристик.СтатьиРасходов.УстановитьУсловноеОформлениеАналитик(
        УсловноеОформление, Новый Структура("ОтражениеРасходов"));
    
    #Область ОбщаяСобственность

    
    Элемент = УсловноеОформление.Элементы.Добавить();
    
    Элемент.Поля.Элементы.Добавить().Поле = Новый ПолеКомпоновкиДанных(Элементы.ОСДоляВПравеОбщейСобственностиЧислитель.Имя);
    Элемент.Поля.Элементы.Добавить().Поле = Новый ПолеКомпоновкиДанных(Элементы.ОСДоляВПравеОбщейСобственностиЗнаменатель.Имя);
    
    ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ОС.ОбщаяСобственность");
    ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ОтборЭлемента.ПравоеЗначение = Ложь;
    
    Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
    Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
    Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<не требуется>'"));
    Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
    
    #КонецОбласти

    
    #Область ЖилищноеСтроительство

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

    
    Элемент = УсловноеОформление.Элементы.Добавить();
    
    Элемент.Поля.Элементы.Добавить().Поле = Новый ПолеКомпоновкиДанных(Элементы.ОСДатаНачалаПроектирования.Имя);
    
    ГруппаОтбора = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
    ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
    
    ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ОС.ЖилищноеСтроительство");
    ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ОтборЭлемента.ПравоеЗначение = Ложь;
    
    ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Дата");
    ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
    ОтборЭлемента.ПравоеЗначение = Дата(2008, 1, 1, 0, 0, 0);
    
    Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
    Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
    Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<не требуется>'"));
    Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
    
    #КонецОбласти

    
КонецПроцедуры
   TolstiyBeremenniy
 
8 - 04.09.18 - 07:21
Как срабатывает блокировка и разблокировка поля по
установке и снятию флажка не понятно!!!!
   catena
 
9 - 04.09.18 - 07:29
(7)Все ж понятно. Если не установлен флаг ЖилищноеСтроительство или Объект.Дата больше 2008 года, то для поля ОСДатаНачалаПроектирования и ТолькоПросмотр=Истина.
   TolstiyBeremenniy
 
10 - 04.09.18 - 07:32
(9) Мне нужно вот это поле

ДатаРегистрацииПравНаОбъектНедвижимости

Оно нигде не обрабатывается вообще. Я искал везде же.

А флаг вот этот ОСЖилищноеСтроительство.
 
 Рекламное место пустует
   TolstiyBeremenniy
 
11 - 04.09.18 - 07:33
В процедуре при изменении флага, вот так я могу получить
значение поля.

Элементы.ОС.ТекущиеДанные.ДатаРегистрацииПравНаОбъектНедвижимостиПрочее

Как мне установить или снять его доступность на форме?
Подскажите пожалуйста.
   catena
 
12 - 04.09.18 - 07:38
(10)А это что?

    #Область ЖилищноеСтроительство


    
    Элемент = УсловноеОформление.Элементы.Добавить();
    
    Элемент.Поля.Элементы.Добавить().Поле = Новый ПолеКомпоновкиДанных(Элементы.ОСДатаРегистрацииПравНаОбъектНедвижимости.Имя);
    
    ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ОС.ЖилищноеСтроительство");
    ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ОтборЭлемента.ПравоеЗначение = Ложь;
    
    Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
    Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
    Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<не требуется>'"));
    Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
   TolstiyBeremenniy
 
13 - 04.09.18 - 07:47
(12) Скажите пожалуйста, что с этого можно понять?
Как срабатывает блокировка и разблокировка поля по установке флажка?
   catena
 
14 - 04.09.18 - 07:54
(13)Сделайте форму с любым динамическим списком, откройте в режиме предприятия и поиграйтесь с условным оформлением вручную. Откройте справку и почитайте. Код в (12) не такой уж сложный для понимания.
   TolstiyBeremenniy
 
15 - 04.09.18 - 07:59
(14) Там про доступность нет слова.
Мне нужно делать задачи, нет времени на эксперименты.
Тем более я не понимаю что нужно сделать и как поэксперементировать.
   catena
 
16 - 04.09.18 - 08:04
(15)Ну как нет про доступность??
    Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);

>>"Мне нужно делать задачи, нет времени на эксперименты."

Что-то мне напомнило:

   /users.php?id=79305" target="_blank" class="registered-user">Мисти
Ну а что я могла не учесть? Советуйте!
И для среднестатической тетки - я совсем не дура.
   /users.php?id=3566" target="_blank" class="registered-user">ДенисЧ
Документацию не читаешь
   Мисти
А зачем мне документация?? Я через неделю всё забуду и никогда больше не буду это использовать!
   TolstiyBeremenniy
 
18 - 04.09.18 - 08:28
(16) Да только просмотр не заметил.
Ну а как это работает при установке или снятии флажка.
Не очевидно.
   TolstiyBeremenniy
 
19 - 04.09.18 - 08:32
Я сделал вот так

    Если Элементы.ОС.ТекущиеДанные.ЖилищноеСтроительство Тогда
        Элементы.ОСДатаРегистрацииПравНаОбъектНедвижимостиПрочее.Доступность = Ложь;
    Иначе
        Элементы.ОСДатаРегистрацииПравНаОбъектНедвижимостиПрочее.Доступность = Истина;
    КонецЕсли;


Как сейчас это же сделать при открытии документа?
   hhhh
 
20 - 04.09.18 - 08:40
(19) открываешь процедуру ПриОткрытии
здесь нажимаешь Ctrl-C, там нажимаешь Cthl-V
   TolstiyBeremenniy
 
21 - 04.09.18 - 08:42
В процедуре при открытии на клиенте, пишет итератор
для значения не определен.
Что я не так сделал?
    Для каждого СтрОС из Элементы.ОС Цикл
        
    КонецЦикла;
   МимохожийОднако
 
22 - 04.09.18 - 08:46
(21) Включи отладчик на ошибке и сравни ожидаемое с фактом.
   МимохожийОднако
 
23 - 04.09.18 - 08:47
(7) Работай на файловой копии в чистой базе с отладчиком и найдешь как работает.
   TolstiyBeremenniy
 
24 - 04.09.18 - 08:47
Элементы.ОС - таблица формы, её и хотел перебрать
   TolstiyBeremenniy
 
25 - 04.09.18 - 08:47
(23) мне тут нужно делать, на этой версии SQL Server
   TolstiyBeremenniy
 
26 - 04.09.18 - 08:48
Подскажите как правильно будет?
   МимохожийОднако
 
27 - 04.09.18 - 08:48
(25) Включи отладку на сервере в таком случае.
   TolstiyBeremenniy
 
28 - 04.09.18 - 08:52
(27) Пока нет возможности.
При открытии делаю на клиенте.
   МимохожийОднако
 
29 - 04.09.18 - 08:55
(28) Если нет возможности, то разобраться можно и на файловой копии. ИМХО. Чего ты так вцепился в SQL?
   TolstiyBeremenniy
 
30 - 04.09.18 - 08:57
можно ли это сделать на клиенте при открытии?
   МимохожийОднако
 
31 - 04.09.18 - 08:58
(30) нет
   TolstiyBeremenniy
 
32 - 04.09.18 - 09:03
деалать в ПриСозданииНаСервере() ?

Подскажите по коду?
   shadow_sw
 
33 - 04.09.18 - 09:06
судя по теме FallingStar №3? )
 
 
   МимохожийОднако
 
34 - 04.09.18 - 09:14
(32) Делать процедуру с директивой на сервере для работы с табличной частью.
   TolstiyBeremenniy
 
35 - 04.09.18 - 09:20
(34) Пробую при создании на сервере

но как будет по коду правильно?
    Для каждого СтрОС из Объект.ОС Цикл
        Сообщить(СтрОС);    
    КонецЦикла;
   МимохожийОднако
 
36 - 04.09.18 - 09:31
(35) Если работает так как хотел, то код правильный.
Проверил, работает? ))
   TolstiyBeremenniy
 
37 - 04.09.18 - 09:39
выдает

ДанныеФормыЭлементКоллекции

как это обрабатывать правильно?
   МимохожийОднако
 
38 - 04.09.18 - 09:45
(37) Покажи весь код и процедуры с директивами
   TolstiyBeremenniy
 
39 - 04.09.18 - 09:49
(38) Да я просто пробую, не пойму как управлять доступностью полей

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    УстановитьУсловноеОформление();
    
    Если Параметры.Свойство("АвтоТест") Тогда
        Возврат;
    КонецЕсли;
    
    ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
    
    Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
        ПриСозданииЧтенииНаСервере();
    КонецЕсли;
    // СтандартныеПодсистемы.ПодключаемыеКоманды

    ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
    // Конец СтандартныеПодсистемы.ПодключаемыеКоманды

    ИнтеграцияС1СДокументооборот.ПриСозданииНаСервере(ЭтаФорма);
    СобытияФорм.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
    
    Для каждого СтрОС из Объект.ОС Цикл
        Сообщить(СтрОС);    
    КонецЦикла;
    
КонецПроцедуры
   hhhh
 
40 - 04.09.18 - 09:53
(39) у тебя это поле
    Элементы.ОСДатаРегистрацииПравНаОбъектНедвижимостиПрочее

одно на форме. ты не сможешь одновременно, чтобы оно было и Ложь и Истина.

Поэтому твой подход: при открытии для каждой строчки проставить изначально бредовый. Не получится.

Поэтому делай как в (19), устанавливай доступность только в текущей строке.
   catena
 
41 - 04.09.18 - 09:54
(39)Ты скажи, как думаешь, доступность - свойство объекта или формы?
   МимохожийОднако
 
42 - 04.09.18 - 09:54
Он поймёт, пока не встанет отладчиком на проблемный фрагмент.
   TolstiyBeremenniy
 
43 - 04.09.18 - 09:56
как на сервере то управлять доступностью?
   TolstiyBeremenniy
 
44 - 04.09.18 - 09:57
(41) конечно формы
   catena
 
45 - 04.09.18 - 10:00
(44)А зачем тогда в (39) объект перебираешь?
   TolstiyBeremenniy
 
46 - 04.09.18 - 10:02
(45) Но и перебирать же нужно на клиенте????
На сервере то какая Доступность может быть
   TolstiyBeremenniy
 
47 - 04.09.18 - 10:03
(45) Подскажите пожалуйста как будет правильно?
   TolstiyBeremenniy
 
48 - 04.09.18 - 10:08
(40) Это поле табличной части, оно есть у каждой строки
когда ввели данные, галку где то поставили где то нет
при открытии это же нужно задать тоже.
Иначе при открытии галка стоит, поле должно быть не доступно, а оно доступно. Это же ошибка функциональности.
   dmt
 
49 - 04.09.18 - 10:13
(47) тебе готовый пример привели.
    Элемент = УсловноеОформление.Элементы.Добавить();
    
    Элемент.Поля.Элементы.Добавить().Поле = Новый ПолеКомпоновкиДанных(Элементы.<<ТвоеПолеВвода>>.Имя);
    
    ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ОС.ЖилищноеСтроительство");
    ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ОтборЭлемента.ПравоеЗначение = Ложь;
    
    Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
    Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
    Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<не требуется>'"));
    Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
 
 Рекламное место пустует
   TolstiyBeremenniy
 
50 - 04.09.18 - 10:22
(49) Буду пробовать, но ранее такой подход не использовался.
Я хотел сделать по понятному. Перебором строк, и установкой
доступности поля для каждой строки как в (19).
Так нельзя что ли сделать?
   catena
 
51 - 04.09.18 - 10:35
(50)Можно, но ты не умеешь. А еще представь следующего разработчика, который будет вынужден поддерживать код, устанавливающий доступность в десяти разных процедурах пятнадцатью разными способами. Это невежливо.
   dmt
 
52 - 04.09.18 - 10:41
(50) тебе уже все написали в (40)
"Поэтому делай как в (19), устанавливай доступность только в текущей строке."
   TolstiyBeremenniy
 
53 - 04.09.18 - 10:52
(51) Подскажите.
(52) Это нужно делать и при открытии.
   catena
 
54 - 04.09.18 - 10:54
(53)Подсказали в (49). Тебе какая разница в чем разбираться, ты ни то, ни то не умеешь.
   TolstiyBeremenniy
 
55 - 04.09.18 - 10:56
(54) Я уже это взял применяю.
Только не понял как это отрабатывает и при открытии и при
изменении флага в строке.

Если это работает, код (19) не нужен я так понимаю.
   hhhh
 
56 - 04.09.18 - 10:57
(53) да, Доступность прекрасно устанавливается и НаСервере. Что-то ты зря на сервер бочку катишь.
   TolstiyBeremenniy
 
57 - 04.09.18 - 11:00
(56) Понял. Как тогда это сделать?
  Для каждого СтрОС из ЭтаФорма.ОС Цикл
        Сообщить(СтрОС);    
    КонецЦикла;
   dmt
 
58 - 04.09.18 - 11:05
(53) не нужно
   TolstiyBeremenniy
 
59 - 04.09.18 - 11:11
(58) Как не нужно? Это необходимо!!!!

Я вставил вот этот чудесный код в процедуру 
УстановитьУсловноеОформление(). Стало работать и при
открытии и при изменении в строке!!!!
    Элемент                                = УсловноеОформление.Элементы.Добавить();
    Элемент.Поля.Элементы.Добавить().Поле  = Новый ПолеКомпоновкиДанных(Элементы.ОСДатаРегистрацииПравНаОбъектНедвижимостиПрочее.Имя);
    ОтборЭлемента                          = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ОтборЭлемента.ЛевоеЗначение            = Новый ПолеКомпоновкиДанных("Объект.ОС.ЖилищноеСтроительство");
    ОтборЭлемента.ВидСравнения             = ВидСравненияКомпоновкиДанных.Равно;
    ОтборЭлемента.ПравоеЗначение           = Истина;
    Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста",            ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
    Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
    Элемент.Оформление.УстановитьЗначениеПараметра("Текст",                 НСтр("ru = '<не требуется>'"));
    Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр",        Истина);
   catena
 
60 - 04.09.18 - 11:16
(59)мирэкал
   TolstiyBeremenniy
 
61 - 04.09.18 - 11:34
(60) Что?
   dmt
 
62 - 04.09.18 - 11:36
(59) это беременность, хочется непонятного!!!
   catena
 
63 - 04.09.18 - 11:41
(61)Чудеса, говорю. Даже до сотого поста не дотянули.


Список тем форума
Рекламное место пустует  Рекламное место пустует
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует