Сообщение. Сообщить();

               КонецЦикла;

       Иначе

               

               // регистр ОстаткиНоменклатуры Приход

               Движения. ОстаткиНоменклатуры. Записывать = Истина;

               Для Каждого ТекСтрокаСписокНоменклатуры Из СписокНоменклатуры Цикл

                       Движение = Движения. ОстаткиНоменклатуры. Добавить();

                       Движение. ВидДвижения = ВидДвиженияНакопления. Приход;

                       Движение. Период = Дата;

                       Движение. Номенклатура = ТекСтрокаСписокНоменклатуры. Номенклатура;

                       Движение. Заказ = ТекСтрокаСписокНоменклатуры. Заказ;

                       Движение. Количество = ТекСтрокаСписокНоменклатуры. Количество;

                       Движение. Сумма = ТекСтрокаСписокНоменклатуры. Сумма;

НЕ нашли? Не то? Что вы ищете?

               КонецЦикла;

       КонецЕсли;

КонецПроцедуры

Документ: «Расходная накладная»

Рекв: Заказ

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)

       Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка. Заказ") Тогда

               // Заполнение шапки

               Заказ = ДанныеЗаполнения. Ссылка;

       КонецЕсли;

КонецПроцедуры

Процедура ОбработкаПроведения(Отказ, Режим)

       

       ТЗ = СписокНоменклатуры. Выгрузить();

       ТЗ. Свернуть("Номенклатура");

       ТЗ. Колонки. Добавить("Заказ");

       ТЗ. ЗаполнитьЗначения(Заказ,"Заказ");

       

       Блокировка = Новый БлокировкаДанных;

       ЭБ = Блокировка. Добавить("РегистрНакопления. ОстаткиНоменклатуры");

       ЭБ. Режим = РежимБлокировкиДанных. Исключительный;

       ЭБ. ИсточникДанных = ТЗ;

       ЭБ. ИспользоватьИзИсточникаДанных("Номенклатура","Номенклатура");

       ЭБ. ИспользоватьИзИсточникаДанных("Заказ","Заказ");

       Блокировка. Заблокировать();

       

       Движения. ОстаткиНоменклатуры. Очистить();

       Движения. ОстаткиНоменклатуры. Записать();

       Движения. ОстаткиНоменклатуры. Записывать = Истина;

       

       Запрос = Новый Запрос;

       Запрос. Текст =

       "ВЫБРАТЬ

       |        РасходнаяНакладнаяСписокНоменклатуры. Номенклатура,

       |        СУММА(РасходнаяНакладнаяСписокНоменклатуры. Количество) КАК Количество

       |ПОМЕСТИТЬ ВТ_ТЧ

       |ИЗ

       |        Документ. РасходнаяНакладная. СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры

       |ГДЕ

       |        РасходнаяНакладнаяСписокНоменклатуры. Ссылка = &Ссылка

       |

       |СГРУППИРОВАТЬ ПО

       |        РасходнаяНакладнаяСписокНоменклатуры. Номенклатура

       |;

       |

       |////////////////////////////////////////////////////////////////////////////////

       |ВЫБРАТЬ

       |        ОстаткиНоменклатурыОстатки. Номенклатура,

       |        ОстаткиНоменклатурыОстатки. КоличествоОстаток,

       |        ОстаткиНоменклатурыОстатки. СуммаОстаток

       |ПОМЕСТИТЬ ВТ_Остатки

       |ИЗ

       |        РегистрНакопления. ОстаткиНоменклатуры. Остатки(

       |                        &МоментВремени,

       |                        Заказ = &Заказ

       |                                И Номенклатура В

       |                                        (ВЫБРАТЬ

       |                                                ВТ_ТЧ. Номенклатура

       |                                        ИЗ

       |                                                ВТ_ТЧ КАК ВТ_ТЧ)) КАК ОстаткиНоменклатурыОстатки

       |;

       |

       |////////////////////////////////////////////////////////////////////////////////

       |ВЫБРАТЬ

       |        ВТ_ТЧ. Номенклатура,

       |        ВТ_ТЧ. Количество,

       |        ЕСТЬNULL(ВТ_Остатки. КоличествоОстаток, 0) КАК КоличествоОстаток,

       |        ЕСТЬNULL(ВТ_Остатки. СуммаОстаток, 0) КАК СуммаОстаток

       |ИЗ

       |        ВТ_ТЧ КАК ВТ_ТЧ

       |                ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Остатки КАК ВТ_Остатки

       |                ПО ВТ_ТЧ. Номенклатура = ВТ_Остатки. Номенклатура";

       

       Запрос. УстановитьПараметр("Заказ", Заказ);

       Запрос. УстановитьПараметр("МоментВремени", МоментВремени());

       Запрос. УстановитьПараметр("Ссылка", Ссылка);

       

       РезультатЗапроса = Запрос. Выполнить();

       

       ВыборкаДетальныеЗаписи = РезультатЗапроса. Выбрать();

       

       Пока ВыборкаДетальныеЗаписи. Следующий() Цикл

               Если ВыборкаДетальныеЗаписи. Количество > ВыборкаДетальныеЗаписи. КоличествоОстаток Тогда

                       Сообщение = Новый СообщениеПользователю;

                       Сообщение. Текст = "Не хватает номенклатуры: " + ВыборкаДетальныеЗаписи. Номенклатура + " в количестве " + (ВыборкаДетальныеЗаписи. Количество - ВыборкаДетальныеЗаписи. КоличествоОстаток);

                       Сообщение. Сообщить();

                       

                       Отказ = Истина;

               ИначеЕсли ВыборкаДетальныеЗаписи. Количество = ВыборкаДетальныеЗаписи. КоличествоОстаток Тогда

                       Движение = Движения. ОстаткиНоменклатуры. Добавить();

                       Движение. ВидДвижения = ВидДвиженияНакопления. Расход;

                       Движение. Период = Дата;

                       Движение. Номенклатура = ВыборкаДетальныеЗаписи. Номенклатура;

                       Движение. Заказ = Заказ;

                       Движение. Количество = ВыборкаДетальныеЗаписи. КоличествоОстаток;

                       Движение. Сумма = ВыборкаДетальныеЗаписи. СуммаОстаток;

               Иначе

                       Движение = Движения. ОстаткиНоменклатуры. Добавить();

                       Движение. ВидДвижения = ВидДвиженияНакопления. Расход;

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11