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

Как на сервере обойти табличную часть

Как на сервере обойти табличную часть
Я
   gabd_marat
 
18.12.18 - 20:16
&НаСервере
Процедура ОПРиСМППриИзмененииНаСервере()
    
    ТаблицаОПРиСМП = ДанныеФормыВЗначение(Элементы.ОПРиСМП , Тип("ТаблицаЗначений"));
    
    Для Каждого КолонкОПРиСМП Из ТаблицаОПРиСМП.Колонки Цикл    
        УстановитьУсловноеОформление(КолонкОПРиСМП)        
    КонецЦикла;
    
    // Вставить содержимое обработчика.
КонецПроцедуры
 
 
   gabd_marat
 
1 - 18.12.18 - 20:19
Выдает ошибку не правильный параметр 1
   formista2000
 
2 - 18.12.18 - 20:20
(1) какая строка выдаёт?
   МимохожийОднако
 
3 - 18.12.18 - 20:21
Показывай процедуру УстановитьУсловноеОформление(). Не стесняйся.
   МимохожийОднако
 
4 - 18.12.18 - 20:21
Позови отладчика
   formista2000
 
5 - 18.12.18 - 20:22
(0) Ёпть! Попробуй НЕ указывать тип в ДанныеФормыВЗначение(Элементы.ОПРиСМП , Тип("ТаблицаЗначений"))!! Убери вхрен это указание типа нахрен!
   gabd_marat
 
6 - 18.12.18 - 20:24
(2)ТаблицаОПРиСМП = ДанныеФормыВЗначение(Элементы.ОПРиСМП , Тип("ТаблицаЗначений")); 
(3)  Она в процессе написания
&НаСервере
Процедура УстановитьУсловноеОформление(ТаблКолонка = Неопределено)
    
    Если НЕ ТаблКолонка = Неопределено Тогда
        
        ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
        //ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить();

        ИмяПоля = ТаблКолонка.Имя;
        //ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяПоля);

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

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

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

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

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

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

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

    ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", ИСТИНА);  
    ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Кирпичный);
КонецПроцедуры (40)
   gabd_marat
 
42 - 18.12.18 - 23:11
Применяет для всей колонки , а надо для ячейки
   gabd_marat
 
43 - 18.12.18 - 23:15
(40) Нужно поменять тип элемента отбора?
   gabd_marat
 
44 - 18.12.18 - 23:21
В конфигураторе норм отрабатывает вроде, можно отладчиком узнать настройки конфигуратора оформления формы?
   gabd_marat
 
45 - 18.12.18 - 23:27
можно отладчиком узнать настройки конфигуратора оформления формы?
   gabd_marat
 
46 - 18.12.18 - 23:34
Нet п0д рукой БСП  , может у кого есть пример


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует