Сообщение. Сообщить();
КонецЦикла;
Иначе
// регистр ОстаткиНоменклатуры Приход
Движения. ОстаткиНоменклатуры. Записывать = Истина;
Для Каждого ТекСтрокаСписокНоменклатуры Из СписокНоменклатуры Цикл
Движение = Движения. ОстаткиНоменклатуры. Добавить();
Движение. ВидДвижения = ВидДвиженияНакопления. Приход;
Движение. Период = Дата;
Движение. Номенклатура = ТекСтрокаСписокНоменклатуры. Номенклатура;
Движение. Заказ = ТекСтрокаСписокНоменклатуры. Заказ;
Движение. Количество = ТекСтрокаСписокНоменклатуры. Количество;
Движение. Сумма = ТекСтрокаСписокНоменклатуры. Сумма;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Документ: «Расходная накладная»
Рекв: Заказ
![]()
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка. Заказ") Тогда
// Заполнение шапки
Заказ = ДанныеЗаполнения. Ссылка;
КонецЕсли;
КонецПроцедуры
Процедура ОбработкаПроведения(Отказ, Режим)
ТЗ = СписокНоменклатуры. Выгрузить();
ТЗ. Свернуть("Номенклатура");
ТЗ. Колонки. Добавить("Заказ");
ТЗ. ЗаполнитьЗначения(Заказ,"Заказ");
Блокировка = Новый БлокировкаДанных;
ЭБ = Блокировка. Добавить("РегистрНакопления. ОстаткиНоменклатуры");
ЭБ. Режим = РежимБлокировкиДанных. Исключительный;
ЭБ. ИсточникДанных = ТЗ;
ЭБ. ИспользоватьИзИсточникаДанных("Номенклатура","Номенклатура");
ЭБ. ИспользоватьИзИсточникаДанных("Заказ","Заказ");
Блокировка. Заблокировать();
Движения. ОстаткиНоменклатуры. Очистить();
Движения. ОстаткиНоменклатуры. Записать();
Движения. ОстаткиНоменклатуры. Записывать = Истина;
Запрос = Новый Запрос;
Запрос. Текст =
"ВЫБРАТЬ
| РасходнаяНакладнаяСписокНоменклатуры. Номенклатура,
| СУММА(РасходнаяНакладнаяСписокНоменклатуры. Количество) КАК Количество
|ПОМЕСТИТЬ ВТ_ТЧ
|ИЗ
| Документ. РасходнаяНакладная. СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры
|ГДЕ
| РасходнаяНакладнаяСписокНоменклатуры. Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| РасходнаяНакладнаяСписокНоменклатуры. Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ОстаткиНоменклатурыОстатки. Номенклатура,
| ОстаткиНоменклатурыОстатки. КоличествоОстаток,
| ОстаткиНоменклатурыОстатки. СуммаОстаток
|ПОМЕСТИТЬ ВТ_Остатки
|ИЗ
| РегистрНакопления. ОстаткиНоменклатуры. Остатки(
| &МоментВремени,
| Заказ = &Заказ
| И Номенклатура В
| (ВЫБРАТЬ
| ВТ_ТЧ. Номенклатура
| ИЗ
| ВТ_ТЧ КАК ВТ_ТЧ)) КАК ОстаткиНоменклатурыОстатки
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТ_ТЧ. Номенклатура,
| ВТ_ТЧ. Количество,
| ЕСТЬNULL(ВТ_Остатки. КоличествоОстаток, 0) КАК КоличествоОстаток,
| ЕСТЬNULL(ВТ_Остатки. СуммаОстаток, 0) КАК СуммаОстаток
|ИЗ
| ВТ_ТЧ КАК ВТ_ТЧ
| ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Остатки КАК ВТ_Остатки
| ПО ВТ_ТЧ. Номенклатура = ВТ_Остатки. Номенклатура";
Запрос. УстановитьПараметр("Заказ", Заказ);
Запрос. УстановитьПараметр("МоментВремени", МоментВремени());
Запрос. УстановитьПараметр("Ссылка", Ссылка);
РезультатЗапроса = Запрос. Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса. Выбрать();
Пока ВыборкаДетальныеЗаписи. Следующий() Цикл
Если ВыборкаДетальныеЗаписи. Количество > ВыборкаДетальныеЗаписи. КоличествоОстаток Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение. Текст = "Не хватает номенклатуры: " + ВыборкаДетальныеЗаписи. Номенклатура + " в количестве " + (ВыборкаДетальныеЗаписи. Количество - ВыборкаДетальныеЗаписи. КоличествоОстаток);
Сообщение. Сообщить();
Отказ = Истина;
ИначеЕсли ВыборкаДетальныеЗаписи. Количество = ВыборкаДетальныеЗаписи. КоличествоОстаток Тогда
Движение = Движения. ОстаткиНоменклатуры. Добавить();
Движение. ВидДвижения = ВидДвиженияНакопления. Расход;
Движение. Период = Дата;
Движение. Номенклатура = ВыборкаДетальныеЗаписи. Номенклатура;
Движение. Заказ = Заказ;
Движение. Количество = ВыборкаДетальныеЗаписи. КоличествоОстаток;
Движение. Сумма = ВыборкаДетальныеЗаписи. СуммаОстаток;
Иначе
Движение = Движения. ОстаткиНоменклатуры. Добавить();
Движение. ВидДвижения = ВидДвиженияНакопления. Расход;
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 |


