Имя: Пароль:
1C
1C 7.7
v7: Получить последнюю запись из регистра остатков
0 Gera1t
 
27.08.18
10:44
Здравствуйте!
Нужно в ТИС 7.7 из регистра остатков Заказы получить планируемую дату поступления номенклатуры.
Сделал вот так:
            РегЗаказы.УстановитьФильтр(Фирма, Номенклатура);
            РегЗаказы.ВыбратьИтоги();
            Пока РегЗаказы.ПолучитьИтог() = 1 Цикл
                Док = РегЗаказы.ЗаказПоставщику;
            КонецЦикла;

Т.е. фильтрую регистр по номенклатуре, потом выборку перебираю и выбираю документ из последней записи, а из него получаю дату поступления.
Подскажите пожалуйста, есть ли способ сделать это более оптимально, без перебора?
1 Gera1t
 
27.08.18
10:48
Конечно если планируемых поступлений больше 1, то можно сверять текущую дату с датой поступления и останавливать цикл.
2 бомболюк
 
27.08.18
10:49
1. проверь может там работает какой нить метод типа ОбратныйПорядок(1);
2. выгрузить итоги в ТЗ и взять данные из последней строки
3 Эльниньо
 
27.08.18
11:08
Выбирать надо не итоги, а движения с ОбратныйПорядок(1)
4 NSSerg
 
27.08.18
11:13
(0) Ты выбираешь не движения, а итоги.
А движения выбираются вот так -

рег.установитьЗначениеФильтра("Товар",Товар);
рег.обратныйпорядок(1);
рег.выбратьдвижения(,);
Пока рег.получитьдвижение()=1 цикл
5 Злопчинский
 
28.08.18
17:03
(2) бред
.
Какой обратный порядок? вы о чем?
я мог две недели назад заказать товары у поставщика, которые придут завтра.. А после этого заказа могло быть еще тысяча заказов с датой поступления более ранней или более поздней. и выбрать движения даст записи в том порядке в котором они писались в базу, а не в порядке плановых дат поступления.
.
"Нужно в ТИС 7.7 из регистра остатков Заказы получить планируемую дату поступления номенклатуры."

РегЗаказы = СоздатьОбъект("Регистр.Заявки");
РегЗаказы.УстановитьЗначениеФильтра("Фирма",ВыбФирма,1);
РегЗаказы.УстановитьЗначениеФильтра("Номенклатура",ВыбНоменклатура,1);
ТЗ = ""; РегЗаказы.ВыгрузитьИтоги(ТЗ,0);
ТЗ.НоваяКолонка("ПлановаяДатаПоступления","Дата");
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл
  ТЗ.ПлановаяДатаПоступления = ТЗ.ЗаказПоставщику.ДатаОтгрузки; //ДатаОтгрузки реквизит шапки, плановая дата поступления
КонецЦикла;
ТЗ.Сортировать("ПлановаяДатаПоступления+");
ТЗ.ПолучитьСтрокуПоНомеру(1);
БлижайшаяДатаПоступления = ТЗ.ПлановаяДатаПоступления;
Если БлижайшаяДатаПоступления < ТекущаяДата() Тогда
  Сообщить("Менеджеры - тридварасы, не закрывают неактуальные заказы");
КонецЕсли;