Здравствуйте! Помогите разобраться с восстановлением последовательности! Не пойму почему не работает Процедура ОбработкаПроведения(Отказ, Режим) // регистр ТоварыНаСкладах Расход Движения.ТоварыНаСкладах.Записывать = Истина; МенеджерВТ = Новый МенеджерВременныхТаблиц; Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = "ВЫБРАТЬ |РасходнаяНакладнаяТовары.Номенклатура КАК Номенклатура, |РасходнаяНакладнаяТовары.Склад КАК Склад, |СУММА(РасходнаяНакладнаяТовары.Количество) КАК КоличествоВДокументе, |РасходнаяНакладнаяТовары.Сумма КАК СуммаВДокументе, |РасходнаяНакладнаяТовары.Ссылка КАК Ссылка, |РасходнаяНакладная.Дата КАК Дата |ПОМЕСТИТЬ НоменклатураДокумента |ИЗ |Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары |ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходнаяНакладная КАК РасходнаяНакладная |ПО РасходнаяНакладнаяТовары.Ссылка = РасходнаяНакладная.Ссылка |ГДЕ |РасходнаяНакладнаяТовары.Ссылка =Ссылка | |СГРУППИРОВАТЬ ПО |РасходнаяНакладнаяТовары.Номенклатура, |РасходнаяНакладнаяТовары.Склад, |РасходнаяНакладнаяТовары.Сумма, |РасходнаяНакладнаяТовары.Количество, |РасходнаяНакладнаяТовары.Ссылка, |РасходнаяНакладная.Дата"; Запрос.УстановитьПараметр("Ссылка", Ссылка); РезультатЗапроса = Запрос.Выполнить(); Запрос2=Новый Запрос; Запрос2.МенеджерВременныхТаблиц = МенеджерВТ; Запрос2.Текст = "ВЫБРАТЬ |НоменклатураДокумента.Номенклатура КАК Номенклатура, |НоменклатураДокумента.СуммаВДокументе КАК СуммаВДокументе, |ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток, |НоменклатураДокумента.Склад КАК Склад, |ЕСТЬNULL(ТоварыНаСкладахОстатки.СуммаОстаток, 0) КАК СуммаОстаток, |ТоварыНаСкладахОстатки.Партия КАК Партия, |НоменклатураДокумента.КоличествоВДокументе КАК КоличествоВДокументе |ИЗ |НоменклатураДокумента КАК НоменклатураДокумента |ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки( |&Период, |(Номенклатура, Склад) В |(ВЫБРАТЬ |НоменклатураДокумента.Номенклатура, |НоменклатураДокумента.Склад |ИЗ |НоменклатураДокумента)) КАК ТоварыНаСкладахОстатки |ПО НоменклатураДокумента.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура |И НоменклатураДокумента.Склад = ТоварыНаСкладахОстатки.Склад | |УПОРЯДОЧИТЬ ПО |ТоварыНаСкладахОстатки.Партия.Дата |ИТОГИ |МАКСИМУМ(СуммаВДокументе), |СУММА(КоличествоОстаток), |МАКСИМУМ(КоличествоВДокументе) |ПО |Номенклатура, |Склад"; Запрос2.УстановитьПараметр("Период",МоментВремени()); //Последовательности.СебестоимостьПартийТоваров.УстановитьГраницу(МоментВремени()); //ГраницаМоментВремени = Последовательности.СебестоимостьПартийТоваров.ПолучитьГраницу(); Момент = Новый МоментВремени(Дата,Ссылка); Отбор = Новый ТаблицаЗначений; Отбор.Колонки.Добавить("Номенклатура"); Отбор.Добавить().Номенклатура = ТекНоменклатура; Последовательности.СебестоимостьПартийТоваров.Восстановить(Момент,Отбор); Движения.ТоварыНаСкладах.БлокироватьДляИзменения = Истина; Движения.ТоварыНаСкладах.Записать(); РезультатЗапроса = Запрос2.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл //ИЗУЧИ ВОПРОС ВЫБОРКА В ВЫБОРКЕ ВыборкаДетальныеЗаписи.Выбрать( ) ВыборкаДетальныеЗаписиСклад = ВыборкаДетальныеЗаписи.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаДетальныеЗаписиСклад.Следующий() Цикл ВыборкаДетальныеЗаписиПартии = ВыборкаДетальныеЗаписиСклад.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаДетальныеЗаписиПартии.Следующий() Цикл Если ВыборкаДетальныеЗаписи.КоличествоВДокументе > ВыборкаДетальныеЗаписи.КоличествоОстаток Тогда Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = "Не хватает товара """ + ВыборкаДетальныеЗаписи.Номенклатура + """,из необходимых "+ ВыборкаДетальныеЗаписи.КоличествоВДокументе + " в наличии осталось только " + ВыборкаДетальныеЗаписи.КоличествоОстаток; Сообщение.УстановитьДанные(ЭтотОбъект); Сообщение.Сообщить(); Отказ = Истина; Движения.ТоварыНаСкладах.Записывать = Ложь; КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; Если Отказ Тогда Возврат; КонецЕсли; ВыборкаДетальныеЗаписи.Сбросить(); //ТЗ = РезультатЗапроса.Выгрузить(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ВыборкаДетальныеЗаписиСклад = ВыборкаДетальныеЗаписи.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); ОсталосьСписать = ВыборкаДетальныеЗаписи.КоличествоВДокументе; Пока ВыборкаДетальныеЗаписиСклад.Следующий() Цикл ВыборкаДетальныеЗаписиПартии = ВыборкаДетальныеЗаписиСклад.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаДетальныеЗаписиПартии.Следующий() И ОсталосьСписать <> 0 Цикл //Если ВыборкаДетальныеЗаписи.КоличествоОстаток <> 0 Тогда Списать = Мин(ОсталосьСписать, ВыборкаДетальныеЗаписиПартии.КоличествоОстаток); Себестоимость = Списать/ВыборкаДетальныеЗаписиПартии.КоличествоОстаток * ВыборкаДетальныеЗаписиПартии.СуммаОстаток; Движение = Движения.ТоварыНаСкладах.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Номенклатура =ВыборкаДетальныеЗаписи.Номенклатура; Движение.Склад =ВыборкаДетальныеЗаписиСклад.Склад; Движение.Количество = Списать; Если ВыборкаДетальныеЗаписи.КоличествоОстаток <> 0 Тогда Движение.Сумма = Себестоимость; КонецЕсли; Движение.Партия = ВыборкаДетальныеЗаписиПартии.Партия; ОсталосьСписать = ОсталосьСписать - Списать; //КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; Движения.Записать(); КонецПроцедуры |