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