Имя: Пароль:
1C
1С v8
Подкрашивание цветом ячейки (Обычные формы)
, ,
0 Stasja
 
21.11.18
08:27
Добрый день!
Есть обработка в которую вывожу список всей номенклатуры, далее при нажатии кнопки Дилер записывается дилерская цена в документ Установка цен номенклатуры.
После записи в таблице обработки нужно выделить цветом те ячейки, Дилерская цена для которых не обновилась (проверяю по дате).
Подозреваю, что нужно всё это проделать ПриВыводеСтроки или ПриПолученииДанных, но что из этого выбрать и как сделать сообразить не могу. Люди добрые, подскажите пожалуйста!

Процедура ОсновныеДействияФормыДилер(Кнопка)
.......
    Для каждого Стр Из ТоварыИЦены Цикл
        
           ВыборкаДетальныеЗаписи = ПроверкаСовпаденияДатыДокументаУстановкиЦенСТекущей(Стр.Товар, Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("00009")).Выгрузить();//РезультатЗапроса.Выгрузить();     //Запрос.Выполнить().Выгрузить()[0].Дата
        
        Если НачалоДня(ВыборкаДетальныеЗаписи[0].Дата) <> НачалоДня(ТекущаяДата()) Тогда  //Формат(ВыборкаДетальныеЗаписи.Дата, "ДФ=dd.MM.yyyy") <> Формат(ТекущаяДата(), "ДФ=dd.MM.yyyy") Тогда
            Оформление = ЭлементыФормы.ТоварыИЦены.ОформлениеСтроки(Стр);
            Оформление.ЦветФона = WebЦвета.Коралловый;//Оформление.Ячейки.Дилер.ЦветФона = WebЦвета.Коралловый;
        КонецЕсли;
    
    КонецЦикла;
КонецПроцедуры

Функция ПроверкаСовпаденияДатыДокументаУстановкиЦенСТекущей(Номенклатура, ТипЦены)    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ ПЕРВЫЕ 1
        |    УстановкаЦенНоменклатурыТовары.Номенклатура,
        |    УстановкаЦенНоменклатурыТовары.Ссылка.Дата КАК Дата,
        |    УстановкаЦенНоменклатурыТовары.ТипЦен,
        |    УстановкаЦенНоменклатурыТовары.Цена
        |ИЗ
        |    Документ.УстановкаЦенНоменклатуры.Товары КАК УстановкаЦенНоменклатурыТовары
        |ГДЕ
        |    УстановкаЦенНоменклатурыТовары.Номенклатура = &Номенклатура
        |    И УстановкаЦенНоменклатурыТовары.Ссылка.Проведен
        |    И УстановкаЦенНоменклатурыТовары.ТипЦен = &ТипЦен
        |
        |УПОРЯДОЧИТЬ ПО
        |    Дата УБЫВ";

    Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
    Запрос.УстановитьПараметр("ТипЦен", ТипЦены);

    РезультатЗапроса = Запрос.Выполнить();
    
    Возврат РезультатЗапроса;
    
КонецФункции
1 Cyberhawk
 
21.11.18
08:29
Почему не обновилась цена?
2 Stasja
 
21.11.18
08:33
(1) Цена может не обновиться если она равна цене в предыдущем документе, данная номенклатура просто не попадет в документ УстановкаЦенНоменклатуры. Исходя из этого нужно подкрасить ту цену для наглядности
3 Cyberhawk
 
21.11.18
08:37
Зачем подкрашивать?
4 Cyberhawk
 
21.11.18
08:37
Сделай отчетпо товарам, дата установки цены на которые меньше последнего документа установки цен
5 Stasja
 
21.11.18
08:41
(4) Мне не нужен отчет. Клиент просит наглядно отобразить в списке. Иначе много лишней работы выполнять нужно будет + не удобно
6 Cyberhawk
 
21.11.18
08:44
С таким подходом далеко не уедешь
7 Михаил Козлов
 
21.11.18
10:55
ПриПолученииДанных.
ДЛЯ каждого оф ИЗ ОформленияСтрок Цикл
    тд = оф.ДанныеСтроки;
    Если НЕ ЦенаИзменилась(тд.Номенклатура) Тогда
        оф.Ячейки.Цена.ЦветФона = цветНеИзмененнойЦены;
    КонецЕсли;
КонецЦикла;
8 catena
 
21.11.18
11:00
(5)Так, как хочет клиент при текущей реализации будет оттормаживать и мелькать.
9 Stasja
 
21.11.18
12:06
(7) А как быть с кодом в (0)?  Т.к. ПриПолученииДанных отрабатывает раньше моего кода. Мне бы как-нибудь обратиться из  процедуры ОсновныеДействияФормыДилер
10 hhhh
 
21.11.18
12:32
(9) ПриПолученииДанных отрабатывает при каждой перерисовке таблицы. Значит она отрабатывает много много раз и раньше и позже вашей процедуры  ОсновныеДействияФормыДилер