🔥 Горящие вакансии
Все статьи

УФ: Программное добавление элементов условного оформления формы в 1С

Эту и другие технические статьи написали наши программисты 1С и получили за них премии. Если вы тоже работаете с 1С и любите делиться опытом, приходите разработчиком в Neti

Рассмотрим пример программного добавления элементов условного оформления на форму документа. Сделаем так, чтобы возможность редактирования строки таблицы грУсловияОплатыТаблица зависела от реквизита формы АктивныйСчет (тип Булево) и от реквизита таблицы Редактирование (тип Булево) (рис. 1):

УФ: Программное добавление элементов условного оформления формы в 1С

Рис. 1. Реквизиты формы, от которых будет зависеть возможность редактирования строки таблицы

Если АктивныйСчет = Истина и Объект.грУсловияОплатыТаблица.Редактирование = Ложь, тогда редактирование строки таблицы будет недоступно: установим свойство ТолькоПросмотр = Истина. Можно добавить аналогичный код для случая, когда АктивныйСчет = Истина, Объект.грУсловияОплатыТаблица.Редактирование = Истина, и включить возможность редактирования строки: установить свойство ТолькоПросмотр = Ложь.

Эти условия можно задать в свойстве формы УсловноеОформление (рис. 2 и рис. 3):

УФ: Программное добавление элементов условного оформления формы в 1С

Рис. 2. Свойство формы УсловноеОформление

УФ: Программное добавление элементов условного оформления формы в 1С

Рис. 3. Настройка условного оформления

Иногда в коде очищают свойство формы УсловноеОформление и все заданные настройки (рис. 2 и рис. 3) пропадают. В таких случаях можно программно задать нужное условное оформление.

Описание текста процедуры модуля формы для программного добавления элементов условного оформления

  1.  Название процедуры может быть любым; ее вызов может быть, например, из обработчика события формы ПриСозданииНаСервере.
  2.  Очищаем условное оформление формы (для примера, не обязательно).
  3.  Добавляем новый элемент условного оформления ЭлементОформления.
  4.  Устанавливаем свойство оформления ТолькоПросмотр = Истина.
  5.  Добавляем условия (отборы), при выполнении которых будет действовать настройка.
  6.  В примере это два условия И, поэтому добавляем группу элементов отбора ГруппаЭлементовОтбора с типом группы ГруппаИ, и два элемента отбора ЭлементОтбора (для АктивныйСчет = Истина и Объект.грУсловияОплатыТаблица.Редактирование = Ложь).
  7.  Указываем поля, для которых будет действовать настройка.

В нашем примере это будет вся строка таблицы грУсловияОплатыТаблица, поэтому добавляем одно поле ПолеОформления с названием таблицы грУсловияОплатыТаблица.

&НаСервере
Процедура УстановитьУсловноеОформление()         
                УсловноеОформление.Элементы.Очистить();
               
                ЭлементОформления = УсловноеОформление.Элементы.Добавить();


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


ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();       
               ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("грУсловияОплатыТаблица");
               ПолеОформления.Использование = Истина;
КонецПроцедуры

Рустам

А что делать если в ТЧ есть реквизит «Номенклатура», а раскрашивать строку ТЧ надо по реквизиту элемента справочника Номенклатура, например СтавкаНДС

02.08.2023


Оставить коментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Раз в квартал — дайджест достойный внимания

Вести с полей 1С, кейсы работы с заказчиками и вакансии на удалёнке

Image

Отправить резюме

    Я согласен на обработку персональных данных в соответствии
    со ст. 9 ФЗ № 152-ФЗ «О персональных данных»

    Отправить резюме

      Я согласен на обработку персональных данных в соответствии
      со ст. 9 ФЗ № 152-ФЗ «О персональных данных»

      Pекомендовать друга

        Отправьте контактные данные вашего друга и предупредите его, что мы с ним свяжемся. Когда друг успешно отработает 3 месяца, вы получите 20 000 ₽.


        Выбрать вакансию
        • Ведущий аналитик 1С
        • Программист 1С
        • Консультант-аналитик 1С
        • Проекты для команды специалистов 1С
        • Проекты для специалистов 1С
        • Стажёр-программист 1С
        • Bitrix-разработчик
        Я согласен на обработку персональных данных в соответствии
        со ст. 9 ФЗ № 152-ФЗ «О персональных данных»

        Pекомендовать друга

          Отправьте контактные данные вашего друга и предупредите его, что мы с ним свяжемся. Когда друг успешно отработает 3 месяца, вы получите 20 000 ₽.


          Выбрать вакансию
          • Ведущий аналитик 1С
          • Программист 1С
          • Консультант-аналитик 1С
          • Проекты для команды специалистов 1С
          • Проекты для специалистов 1С
          • Стажёр-программист 1С
          • Bitrix-разработчик
          Я согласен на обработку персональных данных в соответствии
          со ст. 9 ФЗ № 152-ФЗ «О персональных данных»

          Спасибо!

          Мы получили ваше резюме. Менеджер свяжется с вами в течение трех дней

          Горящие вакансии