Условное оформление формы документа в расширении 1С УТ

1. ks8585 3 17.08.19 21:30 Сейчас в теме
Всем доброго вечера.

Казалось бы безобидная ситуация.
Есть документ, есть форма документа. - добавил эту форму в расширение, там сделал некоторые косметические изменения - все работает.

Затем решил сделать условное оформление.
Сначала сделал через интерфейс (спозиционировался на форме и перешел во вкладку условное оформление - далее все интуитивно заполняется), НО!!!

Никакое условное оформление не применилось. Ну и затем интереснее - начал копать интернет на предмет -ПРОГРАММНОГО условного оформления.

Много вариантов пробовал - ни один не заработал. Там конечно (лично для меня) путаница, но старался разобраться и вроде бы все правильно делал.

В итоге никак не могу добиться работоспособности условного оформления.

Все это отрабатывал на 1с 8.3.13 (УТ 11.4)

Если есть ссылки на нормальный обучающий материал по данной тематике - буду рад.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. dhurricane 17.08.19 23:24 Сейчас в теме
(1) Уточните, пожалуйста, что именно у Вас не заработало. Условное оформление вовсе не применилось?

У конфигурации УТ11 как правило во всех объектах конфигурации условное оформление реализуется программно. Т.е. настраивается не в свойствах конфигурации, а есть отдельная процедура "УстановитьУсловноеОформление" в модуле формы элемента/документа, которая вызывается в обработчике "ПриСозданииНаСервере", и в которой описан алгоритм настройки условного оформления. Кстати, первой инструкцией этой процедуры является очистка свойства УсловноеОформление формы. Т.о., если Вы настраивали оформление в свойствах формы, то оно могло не примениться просто потому, что оно очищается при создании формы.

Для реализации собственного оформления расширьте процедуру "УстановитьУсловноеОформление" с директивой &После, и впишите свой алгоритм настройки условного оформления аналогично тому, как оно реализовано в типовой процедуре формы.
AndreySchel; FeliceYa; SotNick; chng; One_Assembler; Raybek; dello; fancy; begemot; kaaasteeen; adhocprog; alex_makhnov; ReDvAlL; fuser; user926863; DeniskaRediska; +16 Ответить
3. ks8585 3 17.08.19 23:49 Сейчас в теме
(2)не получилось именно применить условное оформление к форме документа в расширении. Если создать новый документ в конфигурации , затем его форму ( не добавляют в расширение) потом настроить в пользовательском интерфейсе УО - все работает. Все тоже самое но уже в форме расширения - не работает. Я бы конечно хотел бы поподробнее разобраться в процессе программного создания УО. Для понимания , чтобы бездумно не копипастить.
4. ks8585 3 18.08.19 07:58 Сейчас в теме
(2)ещё плюс попробовал- создал документ, форму документа, не добавляя ее в расширение, программно создать УО, также как пробовал в расширении. - также не заработало.
11. DeniskaRediska 26.01.20 23:41 Сейчас в теме
(2) Долго бился головой об стену. Спасибо за наводку про УстановитьУсловноеОформление()
serko8547; +1 Ответить
5. MaCCapAkIII 14.10.19 14:41 Сейчас в теме
По УО в расширении. Есть документ и форма списка. В форме списка в основной конфигурации настроено УО для динамического списка. Все работало отлично для всех пользователей в режиме предприятия. Пока я не завел еще один статус в перечислении. Форма списка добавлена в расширение, перечисления с новым статусом аналогично. Седьмой пункт УО на скриншоте добавлен по аналогии с верхними шестью, которые отлично работали. Так вот этот седьмой пункт УО не работает в принципе. Добавлял подобное и в форму списка в основной конфигурации, и в форме списка в расширении - эффекта 0. Пришлось добавлять в коде через УсловноеОформление.Элементы.Добавить(). Так и должно быть или я что-то не знаю о расширениях?
Прикрепленные файлы:
6. dhurricane 14.10.19 14:48 Сейчас в теме
(5) На снимке экрана я вижу, что настраивается условное оформление динамического списка. Когда Вы добавили седьмой элемент, запустили режим Предприятия и не обнаружили там раскрашенного нужным цветом статуса, Вы проверяли настройки условного оформления списка в пользовательском режиме?
7. MaCCapAkIII 14.10.19 14:50 Сейчас в теме
(6) Проверил, там были только первые шесть, как и раньше. Седьмой не появился. Ранее я пробовал настраивать УО из режима Предприятия, но подобные настройки ограничиваются каждым конкретным пользователем, а у меня их больше 30, поэтому использовал настройку ДС из конфигуратора.
8. dhurricane 14.10.19 14:54 Сейчас в теме
(7) Тогда логично предположить, что настройки из Конфигуратора на самом деле были применены, но их "затерли" пользовательские настройки. Глядя в режиме Предприятия на 6 элементов условного оформления попробуйте установить стандартные настройки списка. Появится ли седьмой элемент?
alexx; MaCCapAkIII; +2 Ответить
9. MaCCapAkIII 14.10.19 14:59 Сейчас в теме
(8) Вы были правы, после применения стандартных настроек седьмая строка из настроек ДС в конфигураторе, применилась и в режиме Предприятия. То есть подобное надо проделать у всех пользователей при первом входе в режим предприятия? Автоматизировать сие обновление есть возможность? Или пусть ручками делают? Все же хотелось оградить дорогих юзеров от лишних действий руками...
10. dhurricane 14.10.19 15:13 Сейчас в теме
(9) Первое, что приходит на ум, это воспользоваться обработкой "Настройки пользователей", что есть в типовых конфигурациях в разделе "Администрирования", панель "Настройки пользователей и прав". С помощью нее можно очистить настройки формы и/или списка у нужных пользователей.
adhocprog; MaCCapAkIII; +2 Ответить
12. serko8547 110 07.04.23 09:47 Сейчас в теме
Спасибо автору, разобрался, и выставляю готовое решение:


&НаСервере

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

... // чего то там уже есть, Добавляем текст в конце процедуры:


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

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

    ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
    ПолеЭлемента.Использование = Истина; 
    ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСуммаАвтоматическойСкидки.Имя);


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


 //Указываем цвет    
 Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", Новый Цвет(175, 0, 0)); // темно-красный
 Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", Новый Цвет(255, 235, 222)); // светло-розовый

КонецПроцедуры

Показать
FeliceYa; chng; +2 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот