Имя: Пароль:
1C
1С v8
как в УТ 10.3 проверить истечение срока годности номенклатуры
,
0 amadeus2010
 
05.09.15
20:22
Добрый вечер, в УТ 10.3 в документах реализация товаров и поступление товаров необходимо проверить истечение срока годности номенклатуры. Завел в сериях для каждой номенклатуры срок годности. Далее написал такой код:
///////////////////////////////////////////////
Если ДанныеСтроки.СерияНоменклатуры.СрокГодности = ДобавитьМесяц(Дата(ДанныеСтроки.СерияНоменклатуры.СрокГодности), -3) Тогда
          ОформлениеСтроки.Ячейки.Номенклатура.ЦветФона =  WebЦвета.Зеленый;
    КонецЕсли;
      
    Если ДанныеСтроки.СерияНоменклатуры.СрокГодности = ДобавитьМесяц(Дата(ДанныеСтроки.СерияНоменклатуры.СрокГодности), -2) Тогда
          ОформлениеСтроки.Ячейки.Номенклатура.ЦветФона =  WebЦвета.Оранжевый;
      КонецЕсли;  
      
    Если ДанныеСтроки.СерияНоменклатуры.СрокГодности = ДобавитьМесяц(Дата(ДанныеСтроки.СерияНоменклатуры.СрокГодности), -1) Тогда
          ОформлениеСтроки.Ячейки.Номенклатура.ЦветФона =  WebЦвета.Красный;
    КонецЕсли;  
/////////////////////////////////////////////////////////
при открытии документа реализация выходит ошибку что поле Серия номенклатуры не обнаружено.
1 Otkr
 
05.09.15
20:23
Естесвенно, так как данные строки = неопределено
2 amadeus2010
 
05.09.15
20:31
(1) уточните пожалуйста
3 Брегорьян
 
05.09.15
20:32
(2) в момент открытия формы у ей нет активных(выделенных?) строк. поэтому неопределено
4 Брегорьян
 
05.09.15
20:34
+(3) на вопрос "а что делать?" ответь сам
5 amadeus2010
 
05.09.15
20:46
а понятно теперь
6 amadeus2010
 
07.09.15
23:42
в процедуру добавил код для того чтобы отследить срок истечения срока годности номенклатуры  серии срок годности товара меньше 30 дней

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

        Если ЗначениеЯчейкиСрокГодности <> Неопределено Тогда

            Если ЗначениеЯчейкиСрокГодности < ДобавитьМесяц(Дата(ОформлениеСтроки.Ячейки.СерияНоменклатуры.СрокГодности.Значение), -3) Тогда
                ОформлениеСтроки.Ячейки.Номенклатура.ЦветФона = WebЦвета.Зеленый;

            ИначеЕсли ЗначениеЯчейкиСрокГодности < ДобавитьМесяц(Дата(ОформлениеСтроки.Ячейки.СерияНоменклатуры.Значение), -2) Тогда
               ОформлениеСтроки.Ячейки.Номенклатура.ЦветФона = WebЦвета.Оранжевый;
                
            ИначеЕсли ЗначениеЯчейкиСрокГодности < ДобавитьМесяц(Дата(ОформлениеСтроки.Ячейки.СерияНоменклатуры.Значение), -1) Тогда
                ОформлениеСтроки.Ячейки.Номенклатура.ЦветФона = WebЦвета.Красный;
    
            
            КонецЕсли;

        КонецЕсли;

    КонецЦикла;
    
    //Дима
    
КонецПроцедуры
/////////////////////////////////////////////////
не отрабатывает код,выходит ошибка
7 Маус
 
08.09.15
00:06
//Дима
улыбнуло;-)
8 hmmm
 
08.09.15
00:45
если тема еще не закрыта:
Я бы добавлял подобную проверку в процедуру ПриВыводеСтроки ()
- и возможно при записи (если есть какое-то хитрое заполнение док-та).
9 Брегорьян
 
08.09.15
05:57
>выходит ошибка
будь мужиком, читай её
10 amadeus2010
 
08.09.15
17:21
никакого хитрого заполнения документа нет, обычный учет по сериям.
При Если ЗначениеЯчейкиСрокГодности < ДобавитьМесяц(Дата(ОформлениеСтроки.Ячейки.СерияНоменклатуры.СрокГодности.Значение), -3) то выходит ошибка не найдено поле СерияНоменклатуры.СрокГодности так как в форме документа есть только поле Серия номенклатуры
11 ДенисЧ
 
08.09.15
17:42
а если отладчиком посмотреть, что у тебя в ДанныеСтроки есть?
12 amadeus2010
 
08.09.15
18:45
в процедуру  товары при выводе строки добавил такой код
/////////////////////////////////////////////////////
//Дима
    Для Каждого ОформлениеСтроки Из ДанныеСтроки Цикл
        

        Если ДанныеСтроки.СерияНоменклатуры.СрокГодности <> Неопределено Тогда

            Если ДанныеСтроки.СерияНоменклатуры.СрокГодности < ДобавитьМесяц(Дата(ДанныеСтроки.СерияНоменклатуры.СрокГодности), -3) Тогда
                ОформлениеСтроки.Ячейки.Номенклатура.ЦветФона = WebЦвета.Зеленый;

            ИначеЕсли ДанныеСтроки.СерияНоменклатуры.СрокГодности < ДобавитьМесяц(Дата(ДанныеСтроки.СерияНоменклатуры.СрокГодности), -2) Тогда
               ОформлениеСтроки.Ячейки.Номенклатура.ЦветФона = WebЦвета.Оранжевый;
                
            ИначеЕсли ДанныеСтроки.СерияНоменклатуры.СрокГодности < ДобавитьМесяц(Дата(ДанныеСтроки.СерияНоменклатуры.СрокГодности), -1) Тогда
                ОформлениеСтроки.Ячейки.Номенклатура.ЦветФона = WebЦвета.Красный;
    
            
            КонецЕсли;

        КонецЕсли;

    КонецЦикла;
    
    //Дима
/////////////////////////////////////////
при проверке отладчиком ДанныеСтроки.СерияНоменклатуры.СрокГодности показывает тот срок годноти который указан в этом поле при этом цвет строки не меняется
13 amadeus2010
 
08.09.15
19:23
скорее всего думаю использовать не сравнение на больше, меньше а операцию равно
14 amadeus2010
 
12.09.15
16:43
добрый вечер чтобы не создавать новую тему пишу в старой.
УТ 10.3, в процедуре при выводе строки документа реализация товаров добавил такой код:
/////////////////////////////////////////////////
Дата90дней =  ДобавитьМесяц(Дата(ОформлениеСтроки.ДанныеСтроки.СерияНоменклатуры.СрокГодности), -3);
    Дата60дней =  ДобавитьМесяц(Дата(ОформлениеСтроки.ДанныеСтроки.СерияНоменклатуры.СрокГодности), -2);
    Дата30дней =  ДобавитьМесяц(Дата(ОформлениеСтроки.ДанныеСтроки.СерияНоменклатуры.СрокГодности), -1);
    СрокГодности = ОформлениеСтроки.ДанныеСтроки.СерияНоменклатуры.СрокГодности;
    
    
    
        Если  СрокГодности   < Дата90дней И СрокГодности   > Дата60дней Тогда
                ОформлениеСтроки.ЦветФона = WebЦвета.Зеленый;        
             ИначеЕсли СрокГодности  < Дата60дней И СрокГодности  > Дата30дней Тогда
                ОформлениеСтроки.ЦветФона = WebЦвета.Оранжевый;
            
            ИначеЕсли СрокГодности  <= Дата30дней Тогда
                ОформлениеСтроки.ЦветФона = WebЦвета.Красный;
        КонецЕсли;
/////////////////////////////////////////
Дата30,60,90дней и СрокГодности срабатывает если заполнено поле СерияНоменклатуры. При открытии документа вся табличная часть окрашена в красный цвет за исключением тех строк где указана серия номенклатуры в табличной части. Что можете посоветовать?
15 Брегорьян
 
12.09.15
16:51
покрась в зелёный, это успокоит юзеров
16 Брегорьян
 
12.09.15
16:55
если а между а-2 и а-3
иначе если а между а-2 и а-1
иначе если а<=а-1

красавец, чо
17 andrewrocker
 
12.09.15
18:42
я не парился с сериями, и не парил пользователей
сделал реквизит на карточке "срок хранения" в днях

и запилил очень простенький отчет по срокам годности с регистром партии товаров на складах.
18 amadeus2010
 
12.09.15
19:39
(17) дело в том что подобный отчет имеется и он работает, заказчик хочет именно такую проверку срока годности товаров в документе.
Просто пока не могу сообразить как сделать такую проверку
19 andrewrocker
 
12.09.15
19:50
(18) а проверку на что? плюс нафига заказчику именно СЕРИЯ номенклатуры?
20 amadeus2010
 
12.09.15
21:52
(19) под проверкой я имел ввиду создать работающее условие при котором если серияноменклатуры.срок годности меньше 3 или 6 месяцев то строка серия номенклатуры окрашивается в определенный цвет. А зачем мне создавать новый реквизит если можно использовать учет по сериям и смотреть отчеты