Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 11:54

Происходит дублирование результата запроса

Автор Sasha1C, 29 мая 2023, 15:37

0 Пользователей и 1 гость просматривают эту тему.

Sasha1C

Уважаемые программисты, хочу задать вопрос, а конкретнее почему при выполнении этого запроса результат запроса дублируется?



Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Запрос.Текст ="ВЫБРАТЬ
| Счет.Ссылка КАК Ссылка,
|ИЗ
| Документ.Счет КАК Счет" ;

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

НаборЗаписейРезерва = РегистрыНакопления.РезервыНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписейРезерва.Отбор.Регистратор.Установить(ДокументСсылка);


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

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



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

Пока Выборка.Следующий() Цикл

Если НЕ Выборка.Количество < Выборка.Резерв Тогда

Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Ошибка проведения документа "
+ Строка(ДокументСсылка)
+Символы.ПС
+"Зарезервировано=  " + "  "
+Выборка.Номенклатура + " ="
+Выборка.Резерв+ "        "
+"А необходимое количество=   "+ Выборка.Количество;



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

РезультатФункции = Ложь;

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


LexaK

Sasha1C, ни чего у вас "не дублируется" это такая детализация!
допустим у вас несколько документов Продажи с яблоками, вот сколько документов столько яблок и получите!
нужно агрегировать! (что такое агрегация - знаете? проходили?)
если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск