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

Запрос обрабатывает лишь первую строку ТЧ

Автор Sasha1C, 22 ноя 2024, 09:25

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

Sasha1C

Добрый день, при решении задачи столкнулся с проблемой, а именно: запрос обрабатывает только первую строку ТЧ и все. В чем может быть причина и как это можно исправить. Заранее спасибо.
Запрос = Новый Запрос;
Запрос.УстановитьПараметр ("Ссылка", ЭтотОбъект.Ссылка);

Запрос.Текст = "ВЫБРАТЬ
| ВводВЭксплуатацию.Склад КАК Склад,
| ВводВЭксплуатацию.Дата КАК Дата
|ИЗ
| Документ.ВводВЭксплуатацию КАК ВводВЭксплуатацию
|ГДЕ
| ВводВЭксплуатацию.Ссылка = &Ссылка";

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

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


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

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

Если РезультатЗапроса.Следующий() Тогда

Сообщить("  " + РезультатЗапроса.Устройство + "=" + РезультатЗапроса.ТЧКоличество + " , и остаток = " + результатЗапроса.КолОстаток);
Движение = Движения.РегистрОстатков.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Регистратор = ЭтотОбъект.Ссылка;
Движение.Период = Шапка.Дата;
Движение.Склад = Шапка.Склад;
Движение.Устройство = РезультатЗапроса.Устройство;
Движение.Количество = РезультатЗапроса.ТЧКоличество;
Движение.Сумма = РезультатЗапроса.ТЧСумма;

КонецЕсли;

Движения.РегистрОстатков.Записать();
 

antoneus

Не

Если РезультатЗапроса.Следующий() Тогда
а

Пока РезультатЗапроса.Следующий() Цикл

Sasha1C

antoneus, Получилось, но значение взятое из регистра накопления удваивается, например я списываю товар, по отчету вижу что остаток 3, а мне показывает что 6. В каком модуле запроса искать ошибку?

fruitella

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

Sasha1C

fruitella, Параметры:    Период: 22.11.2024 17:00:00
   
Склад    Количество Остаток    Сумма Остаток
Устройство       
Склад Основной    6,00    48,00
Портсигар    3,00    18,00
Кинокамера    3,00    30,00
Склад Запасной    16,00    346,00
Портсигар    5,00    115,00
Кинокамера    11,00    231,00
Итого    22,00    394,00

Да, результат в отчете выглядит вот так

antoneus

Связь-то пропиши, у тебя все со всеми соединяются. И выбирай не из регистра остатков, а из вт, к ней цепляй регистр. И первый запрос не нужен, просто указывай

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

Sasha1C

antoneus,@fruitella, Спасибо. Я все реализовал через левое соединение. :zebzdr:

Теги: Запрос ТЧ 

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

Рейтинг@Mail.ru

Поиск