Добрый вечер столкнулся с такой ситуацией. В УТ 10.3 в документе поступление товаров, реализация товаров необходимо окрашивать строки табличной части если срок годности номенклатуры меньше или равно 30, 60, 90 дней от срока годности. Решение: в процедуре товары при выводе строки создал такой код:
Дата90дней = ДобавитьМесяц(Дата(ОформлениеСтроки.ДанныеСтроки.СерияНоменклатуры.СрокГодности), -3);
Дата60дней = ДобавитьМесяц(Дата(ОформлениеСтроки.ДанныеСтроки.СерияНоменклатуры.СрокГодности), -2);
Дата30дней = ДобавитьМесяц(Дата(ОформлениеСтроки.ДанныеСтроки.СерияНоменклатуры.СрокГодности), -1);
СрокГодности = ОформлениеСтроки.ДанныеСтроки.СерияНоменклатуры.СрокГодности;
Если СрокГодности <=Дата90дней Тогда
ОформлениеСтроки.ЦветФона = WebЦвета.Зеленый;
ИначеЕсли СрокГодности <= Дата60дней Тогда
ОформлениеСтроки.ЦветФона = WebЦвета.Оранжевый;
ИначеЕсли СрокГодности <= Дата30дней Тогда
ОформлениеСтроки.ЦветФона = WebЦвета.Красный;
КонецЕсли;
при открытии документа вся табличная часть окрашена в зеленый цвет за исключением тех строк в колонке которых указан срок годности. Срок годности добавляется в серии номенклатуры. Пока никак не могу сообразить как сделать правильную проверку по условию
Дата90дней = ДобавитьМесяц(Дата(ОформлениеСтроки.ДанныеСтроки.СерияНоменклатуры.СрокГодности), -3);
Дата60дней = ДобавитьМесяц(Дата(ОформлениеСтроки.ДанныеСтроки.СерияНоменклатуры.СрокГодности), -2);
Дата30дней = ДобавитьМесяц(Дата(ОформлениеСтроки.ДанныеСтроки.СерияНоменклатуры.СрокГодности), -1);
СрокГодности = ОформлениеСтроки.ДанныеСтроки.СерияНоменклатуры.СрокГодности;
Если СрокГодности <=Дата90дней Тогда
ОформлениеСтроки.ЦветФона = WebЦвета.Зеленый;
ИначеЕсли СрокГодности <= Дата60дней Тогда
ОформлениеСтроки.ЦветФона = WebЦвета.Оранжевый;
ИначеЕсли СрокГодности <= Дата30дней Тогда
ОформлениеСтроки.ЦветФона = WebЦвета.Красный;
КонецЕсли;
при открытии документа вся табличная часть окрашена в зеленый цвет за исключением тех строк в колонке которых указан срок годности. Срок годности добавляется в серии номенклатуры. Пока никак не могу сообразить как сделать правильную проверку по условию
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) amadeus2011, как срок годности может быть меньше, чем тот же срок годности, уменьшенный на 3(2,1) месяца?
Поэтому строки и не окрашиваются, а окрашиваются зеленым только строки с пустым сроком, т.к. вычитая от пустой даты 3 месяца, пустую дату и получим.
Вам, наверное, надо сравнивать Дата90дней (и другие) с датой документа или текущей датой.
Поэтому строки и не окрашиваются, а окрашиваются зеленым только строки с пустым сроком, т.к. вычитая от пустой даты 3 месяца, пустую дату и получим.
Вам, наверное, надо сравнивать Дата90дней (и другие) с датой документа или текущей датой.
я изменил свой код по вашим советам на такой
Если ЗначениеЗаполнено(ОформлениеСтроки.ДанныеСтроки.СерияНоменклатуры.СрокГодности) Тогда
Если СрокГодности <Дата30дней Тогда
ОформлениеСтроки.ЦветФона = WebЦвета.Красный;
ИначеЕсли СрокГодности < Дата60дней Тогда
ОформлениеСтроки.ЦветФона = WebЦвета.Оранжевый;
ИначеЕсли СрокГодности < Дата90дней Тогда
ОформлениеСтроки.ЦветФона = WebЦвета.Зеленый;
КонецЕсли;
КонецЕсли;
но при открытии в полях где не указан срок годности товара строки окрашены в зеленый цвет, а где срок годности есть без цвета. Мне нужно сделать такую проверку что если срок годности 30.12.15 меньше срок годности 30.12.15.-30 дней тогда цвет строки красный.
Если ЗначениеЗаполнено(ОформлениеСтроки.ДанныеСтроки.СерияНоменклатуры.СрокГодности) Тогда
Если СрокГодности <Дата30дней Тогда
ОформлениеСтроки.ЦветФона = WebЦвета.Красный;
ИначеЕсли СрокГодности < Дата60дней Тогда
ОформлениеСтроки.ЦветФона = WebЦвета.Оранжевый;
ИначеЕсли СрокГодности < Дата90дней Тогда
ОформлениеСтроки.ЦветФона = WebЦвета.Зеленый;
КонецЕсли;
КонецЕсли;
но при открытии в полях где не указан срок годности товара строки окрашены в зеленый цвет, а где срок годности есть без цвета. Мне нужно сделать такую проверку что если срок годности 30.12.15 меньше срок годности 30.12.15.-30 дней тогда цвет строки красный.
(14) amadeus2011, похоже Вам морочат голову :)
Проблема вот тут:
СрокГодности сравниваете со СрокГодности-30, -60 и -90.
Смотрите, что у Вас получается:
Надо условие проверки (с чем сравнивать) менять.
Проблема вот тут:
Дата90дней = ДобавитьМесяц(Дата(ОформлениеСтроки.ДанныеСтроки.СерияНоменклатуры.СрокГодности), -3);
Дата60дней = ДобавитьМесяц(Дата(ОформлениеСтроки.ДанныеСтроки.СерияНоменклатуры.СрокГодности), -2);
Дата30дней = ДобавитьМесяц(Дата(ОформлениеСтроки.ДанныеСтроки.СерияНоменклатуры.СрокГодности), -1);
СрокГодности сравниваете со СрокГодности-30, -60 и -90.
Смотрите, что у Вас получается:
С = 1;
А = С - 30;
Б = С - 60;
В = С - 90;
Если С < А Тогда
...//1
ИначеЕсли С < Б Тогда
...//2
ИначеЕсли С < В Тогда
...//3
КонецЕсли;
ПоказатьНадо условие проверки (с чем сравнивать) менять.
(17) amadeus2011, В том-то и дело, что программе все равно. Это Вы сами должны бизнес логику написать.
СекундВСутках = 3600*24;
ОасталосьСрокГодности = ТекущаяДата() - СрокГодности;
Если ЗначениеЗаполнено(ОформлениеСтроки.ДанныеСтроки.СерияНоменклатуры.СрокГодности) Тогда
Если ОасталосьСрокГодности < 30*СекундВСутках Тогда
ОформлениеСтроки.ЦветФона = WebЦвета.Красный;
ИначеЕсли ОасталосьСрокГодности < 60*СекундВСутках Тогда
ОформлениеСтроки.ЦветФона = WebЦвета.Оранжевый;
ИначеЕсли ОасталосьСрокГодности < 90*СекундВСутках Тогда
ОформлениеСтроки.ЦветФона = WebЦвета.Зеленый;
ИначеЕсли ОасталосьСрокГодности < 0 Тогда
ОформлениеСтроки.ЦветФона = WebЦвета.Малиновый;
КонецЕсли;
КонецЕсли;
Показать
(17) amadeus2011, вообще-то у вас должно быть так
СрокГодности = (ОформлениеСтроки.ДанныеСтроки.СерияНоменклатуры.СрокГодности - ДатаДок) / 60 * 60 * 24;
Если СрокГодности < 30 Тогда
// красный
ИначеЕсли СрокГодности < 60 Тогда
// желтый
ИначеЕсли СрокГодности < 90 Тогда
// зеленый
Иначе
// не расскрашиваем
КонецЕсли;
Показать
(19 spacecraft, я на основе вашего кода сделал так
СрокГодности = (ОформлениеСтроки.ДанныеСтроки.СерияНоменклатуры.СрокГодности - Дата) / 60 * 60 * 24;
Если СрокГодности < 30 Тогда
ОформлениеСтроки.ЦветФона = WebЦвета.Красный;
ИначеЕсли СрокГодности < 60 Тогда
ОформлениеСтроки.ЦветФона = WebЦвета.Оранжевый;
ИначеЕсли СрокГодности < 90 Тогда
ОформлениеСтроки.ЦветФона = WebЦвета.Зеленый;
КонецЕсли;
при этом в документе все строки окрашены в зеленый цвет, кроме тех в которых в поле срок годности стоит срок годности. Связано ли это как-то с тем что не все поля срок годности заполнены?
СрокГодности = (ОформлениеСтроки.ДанныеСтроки.СерияНоменклатуры.СрокГодности - Дата) / 60 * 60 * 24;
Если СрокГодности < 30 Тогда
ОформлениеСтроки.ЦветФона = WebЦвета.Красный;
ИначеЕсли СрокГодности < 60 Тогда
ОформлениеСтроки.ЦветФона = WebЦвета.Оранжевый;
ИначеЕсли СрокГодности < 90 Тогда
ОформлениеСтроки.ЦветФона = WebЦвета.Зеленый;
КонецЕсли;
при этом в документе все строки окрашены в зеленый цвет, кроме тех в которых в поле срок годности стоит срок годности. Связано ли это как-то с тем что не все поля срок годности заполнены?
спасибо, сейчас в документе изменяется цвет строки номенклатура. Я сделал так:
СрокГодности = ОформлениеСтроки.ДанныеСтроки.СерияНоменклатуры.СрокГодности;
СекундВСутках = 3600*24;
ОасталосьСрокГодности = ТекущаяДата() - СрокГодности;
Если ЗначениеЗаполнено(ОформлениеСтроки.ДанныеСтроки.СерияНоменклатуры.СрокГодности) Тогда
Если ОасталосьСрокГодности < 30*СекундВСутках Тогда
ОформлениеСтроки.Ячейки.Номенклатура.ЦветФона = WebЦвета.Красный;
ИначеЕсли ОасталосьСрокГодности < 60*СекундВСутках Тогда
ОформлениеСтроки.Ячейки.Номенклатура.ЦветФона= WebЦвета.Оранжевый;
ИначеЕсли ОасталосьСрокГодности < 90*СекундВСутках Тогда
ОформлениеСтроки.Ячейки.Номенклатура.ЦветФона = WebЦвета.Зеленый;
ИначеЕсли ОасталосьСрокГодности < 0 Тогда
ОформлениеСтроки.Ячейки.Номенклатура.ЦветФона= WebЦвета.Малиновый;
КонецЕсли;
КонецЕсли;
Хотел бы по ходу спросить как можно сделать так чтобы колонка цена изменяла цвет при изменении значения цены и при пересчете типа цен
СрокГодности = ОформлениеСтроки.ДанныеСтроки.СерияНоменклатуры.СрокГодности;
СекундВСутках = 3600*24;
ОасталосьСрокГодности = ТекущаяДата() - СрокГодности;
Если ЗначениеЗаполнено(ОформлениеСтроки.ДанныеСтроки.СерияНоменклатуры.СрокГодности) Тогда
Если ОасталосьСрокГодности < 30*СекундВСутках Тогда
ОформлениеСтроки.Ячейки.Номенклатура.ЦветФона = WebЦвета.Красный;
ИначеЕсли ОасталосьСрокГодности < 60*СекундВСутках Тогда
ОформлениеСтроки.Ячейки.Номенклатура.ЦветФона= WebЦвета.Оранжевый;
ИначеЕсли ОасталосьСрокГодности < 90*СекундВСутках Тогда
ОформлениеСтроки.Ячейки.Номенклатура.ЦветФона = WebЦвета.Зеленый;
ИначеЕсли ОасталосьСрокГодности < 0 Тогда
ОформлениеСтроки.Ячейки.Номенклатура.ЦветФона= WebЦвета.Малиновый;
КонецЕсли;
КонецЕсли;
Хотел бы по ходу спросить как можно сделать так чтобы колонка цена изменяла цвет при изменении значения цены и при пересчете типа цен
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот