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