Имя: Пароль:
1C
 
Как на сервере обойти табличную часть
0 gabd_marat
 
18.12.18
20:16
&НаСервере
Процедура ОПРиСМППриИзмененииНаСервере()
    
    ТаблицаОПРиСМП = ДанныеФормыВЗначение(Элементы.ОПРиСМП , Тип("ТаблицаЗначений"));
    
    Для Каждого КолонкОПРиСМП Из ТаблицаОПРиСМП.Колонки Цикл    
        УстановитьУсловноеОформление(КолонкОПРиСМП)        
    КонецЦикла;
    
    // Вставить содержимое обработчика.
КонецПроцедуры
1 gabd_marat
 
18.12.18
20:19
Выдает ошибку не правильный параметр 1
2 formista2000
 
18.12.18
20:20
(1) какая строка выдаёт?
3 Мимохожий Однако
 
18.12.18
20:21
Показывай процедуру УстановитьУсловноеОформление(). Не стесняйся.
4 Мимохожий Однако
 
18.12.18
20:21
Позови отладчика
5 formista2000
 
18.12.18
20:22
(0) Ёпть! Попробуй НЕ указывать тип в ДанныеФормыВЗначение(Элементы.ОПРиСМП , Тип("ТаблицаЗначений"))!! Убери вхрен это указание типа нахрен!
6 gabd_marat
 
18.12.18
20:24
(2)ТаблицаОПРиСМП = ДанныеФормыВЗначение(Элементы.ОПРиСМП , Тип("ТаблицаЗначений"));
(3)  Она в процессе написания
&НаСервере
Процедура УстановитьУсловноеОформление(ТаблКолонка = Неопределено)
    
    Если НЕ ТаблКолонка = Неопределено Тогда
        
        ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
        //ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
        ИмяПоля = ТаблКолонка.Имя;
        //ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяПоля);
        ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОПРиСМП.НарезкаЗаготовок");
        ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
        ЭлементОтбора.ПравоеЗначение = "Перечисление.ТХ_ДопускиСотрудников.ВыдвижениеНаДопуск";
        ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", ИСТИНА);  
        ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Кирпичный);
        
    Конецесли;
    
КонецПроцедуры
7 zak555
 
18.12.18
20:25
Обходи на клиенте
8 Diman000
 
18.12.18
20:25
(0) Если тебе просто колонки ТЧ нужны, то непонятно зачем такие сложности. Про метод ВыгрузитьКолонки ты что-то слышал?
9 gabd_marat
 
18.12.18
20:28
(7) Ок
10 ГдеСобака Зарыта
 
18.12.18
20:29
Сдается мне автору нужно строки покрасить, а не колонки. Зачем он колонки то перебирает?
11 formista2000
 
18.12.18
20:30
(10) А ещё какую полоску отрастил! ((
12 Мимохожий Однако
 
18.12.18
20:32
(11) Полоска растёт сама по себе и подчиняется только времени.
13 gabd_marat
 
18.12.18
20:33
(10) Ячейки колонок
14 gabd_marat
 
18.12.18
20:34
Что бы в общую процедуру передать изменяемую ячейку и перекрасить ее в зависимости от значения, а так же что бы срабатывало при открытии формы.
15 Мимохожий Однако
 
18.12.18
20:35
(10) Автор сформулировал не то, что на самом деле надо сделать. Табличную часть надо обходить на сервере. А раскрашивать табличное поле можно через настройки условного оформления формы.
16 gabd_marat
 
18.12.18
20:35
В 8.2 была процедура привыводестроки но в 8.3 ее нет
17 Мимохожий Однако
 
18.12.18
20:36
(14) Попробуй описать задачу несколькими предложениями. Как только будет ясность - тебе наверняка подскажут.
18 gabd_marat
 
18.12.18
20:36
(15) 3 табличные части в каждой колонок 16 , значения ячеек перечисления - 6 штук
19 Мимохожий Однако
 
18.12.18
20:37
(18) И чё?
20 gabd_marat
 
18.12.18
20:38
Есть 3 листа на форме обработки . На каждом листе по 1 табличной части. В каждой таблично части не меньше 16 колонок. Нужно оформить раскрасить ячейки табличной части в зависимости от значений ячеек. Значение ячеек - перечисления - 6 разных перечислений.
21 Diman000
 
18.12.18
20:38
(13) Тебе нужны просто имена колонок. В процедуре УстановитьУсловноеОформление используется именно имя колонки.
Никакого обхода табличной части не нужно, тем более что под этим обычно понимается обход строк, а тебе колонки нужны.
Через ВыгрузитьКолонки не получится, это я в (8) погорячился.
Но получится через Выгрузить().СкопироватьКолонки()

Правда, ты собираешься при изменении поля ОПРиСМП что-то добавлять в условное оформление. Боюсь, сейчас такой ужас наворотишь, что все равно работать не будет.
Обычно условное оформление устанавливается один раз (на то оно и условное) и его потом не надо менять.
22 gabd_marat
 
18.12.18
20:40
(15)Настройку в конфигураторе?
23 Мимохожий Однако
 
18.12.18
20:40
(20) Ничего страшного нет. Отработай одну таблицу, Проверь. Потом сделай следующую... И т.д. За час или меньше управишься.
24 gabd_marat
 
18.12.18
20:40
(21) Гонять данные по таблице значений с клиента на сервер не охото
25 gabd_marat
 
18.12.18
20:41
(23) Похоже я не правильнопонял работу условного оформления. Достаточно один раз задать условное формление для ячеек и при изменении оно будет срабатывать?
26 Мимохожий Однако
 
18.12.18
20:41
(22) Да. Через конфигуратор. В свойствах формы. Сам сегодня этим занимался ))
27 gabd_marat
 
18.12.18
20:42
А если программно?
28 gabd_marat
 
18.12.18
20:42
Через конфигуратор долго и при измененни условия очень мног менять надо
29 gabd_marat
 
18.12.18
20:44
Перед установкой условного оформления программно  нужно сбрасывать настройки?
30 Мимохожий Однако
 
18.12.18
20:44
(28) Условное оформление зависит от значения поля. А значение поле можно программно менять до бесконечности.
31 Мимохожий Однако
 
18.12.18
20:46
(27) Про программные я не знаю. Пока не пробовал. Надо в документации посмотреть. Наверняка есть и в инете, и на сайте ИТС.
32 gabd_marat
 
18.12.18
20:46
(30) Понятно, то есть логикка в том что при открытии установить оформление (добавить элементы оформления , задать значения для сравнения) и этого достаточно
33 gabd_marat
 
18.12.18
20:49
(31) Понятно
34 Diman000
 
18.12.18
21:04
(24) Ты уже все данные формы перегнал на сервер вызовом ОПРиСМППриИзмененииНаСервере с директивой НаСервере.
Кроме того, мой предложенный код и не предполагает дополнительного обмена клиент-сервер, он вообще будет работать только в пределах сервера, на клиенте Объект.ТЧ.Выгрузить() не сработает.

Да, условное оформление работает постоянно, шагай в этом направлении.
35 gabd_marat
 
18.12.18
21:27
(34) Иза чег может не срабатывать условное оформление?

&НаСервере
Процедура УстановитьУсловноеОформление()
    
    УсловноеОформление.Элементы.Очистить();    
    
    ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
    ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
    //ИмяПоля = ТаблКолонка.Имя;
    ОформляемоеПоле.Использование = Истина;
    ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ОПРиСМП.НарезкаЗаготовок");
    ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОПРиСМП.НарезкаЗаготовок");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.ПравоеЗначение = Перечисления.ТХ_ДопускиСотрудников.ВыдвижениеНаДопуск;
    ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", ИСТИНА);  
    ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Кирпичный);
    
    ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
    ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
    //ИмяПоля = ТаблКолонка.Имя;
    ОформляемоеПоле.Использование = Истина;     
    ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ОПРиСМП.НарезкаЗаготовок");
    ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОПРиСМП.НарезкаЗаготовок");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.ПравоеЗначение = Перечисления.ТХ_ДопускиСотрудников.ПодтверждениеДопуска;
    ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", ИСТИНА);  
    ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Зеленый);
    
КонецПроцедуры
36 Diman000
 
18.12.18
21:29
(35) Так сложно по коду сказать.
Смотри в отладчике.
А лучше сначала визуальной настройкой сделай.
37 gabd_marat
 
18.12.18
21:59
(36) Понятно, как обратиться к эелементу применяемому оформление? так ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("НарезкаЗаготовок");
38 gabd_marat
 
18.12.18
22:00
Точнее ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("Объект.ОПРиСМП.НарезкаЗаготовок");
39 gabd_marat
 
18.12.18
23:03
Получилось применить свойство для колонки всей, но не для отдельной ячейки . Как можно обратиться к элементу формы ячейка табличного поля
40 hhhh
 
18.12.18
23:07
(39) при помощи отбора в условном оформлении
41 gabd_marat
 
18.12.18
23:11
&НаСервере
Процедура УстановитьУсловноеОформление()
    
    УсловноеОформление.Элементы.Очистить();    
    
    ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
    ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
    ОформляемоеПоле.Использование = Истина;
    ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(Элементы.НарезкаЗаготовок.Имя);//("Объект.ОПРиСМП.НарезкаЗаготовок");
    ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(Элементы.НарезкаЗаготовок.Имя);
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.ПравоеЗначение = Новый ПолеКомпоновкиДанных("Перечисление.ТХ_ДопускиСотрудников.ПодтверждениеДопуска"); //"Перечисление.ТХ_ДопускиСотрудников.ПодтверждениеДопуска";
    ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", ИСТИНА);  
    ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Кирпичный);
КонецПроцедуры (40)
42 gabd_marat
 
18.12.18
23:11
Применяет для всей колонки , а надо для ячейки
43 gabd_marat
 
18.12.18
23:15
(40) Нужно поменять тип элемента отбора?
44 gabd_marat
 
18.12.18
23:21
В конфигураторе норм отрабатывает вроде, можно отладчиком узнать настройки конфигуратора оформления формы?
45 gabd_marat
 
18.12.18
23:27
можно отладчиком узнать настройки конфигуратора оформления формы?
46 gabd_marat
 
18.12.18
23:34
Нet п0д рукой БСП  , может у кого есть пример