Имя: Пароль:
1C
1С v8
Помогите разобраться с запросом
,
0 mrleo
 
12.12.17
11:35
Не пойму в чем проблема. Запрос выглядит следующим образом:
Запрос.Текст =
"ВЫБРАТЬ
|    КорректировкаДолга.Ссылка,
|   СУММА(КорректировкаДолга.ДебиторскаяЗадолженность.Сумма) КАК СуммаКорректировки
|ИЗ
|    Документ.КорректировкаДолга КАК КорректировкаДолга
|ГДЕ
|    КорректировкаДолга.КонтрагентДебитор В ИЕРАРХИИ (&ГрупКонтр)
|    И
|    КорректировкаДолга.Ссылка.Дата >= &ДатаНач
|    И
|    КорректировкаДолга.Ссылка.Дата <= &ДатаКон";
Обращение к дате выполняется
Стр.Дат = Формат(Выборка.Ссылка.Дата,"ДЛФ=Д");
При обращении к СуммаКорректировки выдается ошибка - поле СуммаКорректировки не обнаружено
Стр.Сумм = Выборка.Ссылка.СуммаКорректировки;
В чем тут проблема?
1 silent person
 
12.12.17
11:38
может так
Стр.Сумм = Выборка.СуммаКорректировки;
2 Симпатяга
 
12.12.17
11:38
(0) Стр.Сумм = Выборка.СуммаКорректировки
3 mrleo
 
12.12.17
11:41
(1),(2) В этом случае запрос выполняется, а сумма нулевая, хотя для этой даты она не равна нулю
4 Петрович 2018
 
12.12.17
11:42
(0) Попробуй НАЧАЛОПЕРИОДА(&ДатаНач, ДЕНЬ) и КОНЕЦПЕРИОДА(&ДатаКон, ДЕНЬ)
5 hhhh
 
12.12.17
11:44
(3) попробуй

|ИЗ
|    Документ.КорректировкаДолга.ДебиторскаяЗадолженность
6 mrleo
 
12.12.17
12:05
(4) с датами все в порядке
(5) такой вариант не проходит, т.к. в этом случае не идет строка запроса
КорректировкаДолга.КонтрагентДебитор В ИЕРАРХИИ (&ГрупКонтр)
7 Гипервизор
 
12.12.17
12:08
ДебиторскаяЗадолженность это ТЧ документа? Тогда перепишите запрос, чтобы весь запрос к ТЧ.
8 mrleo
 
12.12.17
12:11
Все спасибо, рабочий вариант запроса:
Запрос.Текст =
"ВЫБРАТЬ
|    КорректировкаДолга.Ссылка
|ИЗ
|    Документ.КорректировкаДолга КАК КорректировкаДолга
|ГДЕ
|    КорректировкаДолга.КонтрагентДебитор В ИЕРАРХИИ (&ГрупКонтр)
|    И
|    КорректировкаДолга.Ссылка.Дата >= &ДатаНач
|    И
|    КорректировкаДолга.Ссылка.Дата <= &ДатаКон";

Обращение к результатам    Стр.Дат = Формат(Выборка.Ссылка.Дата,"ДЛФ=Д");            Стр.Сумм = Выборка.Ссылка.СуммаДтЗадолженности;
9 mrleo
 
12.12.17
12:20
*Всем спасибо
10 Radkt
 
12.12.17
12:30
СуммаДтЗадолженности лучше получать в запросе, так как получение через точку это тоже мини запрос, чем меньше запросов тем лучше
11 Vladal
 
12.12.17
12:35
"ВЫБРАТЬ
|    КорректировкаДолга.Ссылка,
|   СУММА(КорректировкаДолга.ДебиторскаяЗадолженность.Сумма) КАК СуммаКорректировки
|ИЗ
|    Документ.КорректировкаДолга КАК КорректировкаДолга
|ГДЕ
|    КорректировкаДолга.КонтрагентДебитор В ИЕРАРХИИ (&ГрупКонтр)
|    И
|    КорректировкаДолга.Ссылка.Дата >= &ДатаНач
|    И
|    КорректировкаДолга.Ссылка.Дата <= &ДатаКон"

а где СГРУППИРОВАТЬ ПО ?
12 Vladal
 
12.12.17
12:37
Если надо по конкретному документу вывести сумму, то такой вариант сойдёт.
А если надо сделать выборку за период и построить отчет по взаиморасчетам - то лучше брать из регистра.
13 Сти
 
12.12.17
13:00
+(11)  а еще вот это вот все:

КорректировкаДолга.Ссылка.Дата

работать будет, конечно, но зачем через ссылку-то?
14 Vladal
 
12.12.17
13:04
(13) Выборка из документа, а не регистра.
Так что лучше в запросе все поля описать и вытащить в выборке, чем потом дергать реквизиты объекта через точку.
15 D_E_S_131
 
12.12.17
13:05
а еще красивее так:

И КорректировкаДолга.Ссылка.Дата Между &ДатаНач И &ДатаКон
16 Сти
 
12.12.17
13:06
(11) Сгруппировать, кстати, тут не нужно, сразу не обратил внимания, что тут СУММА(КорректировкаДолга.ДебиторскаяЗадолженность.Сумма) КАК СуммаКорректировки , то есть суммирование колонки "Сумма" табличной части, оно и без группировки просуммирует, но тогда Выборка.СуммаКорректировки это не значение, а таблица значений с одной строкой.
Стр.Сумм = Выборка.СуммаКорректировки[0].Сумма даст нужные цифорки.

Хотя такое применение суммирования в запросе встречал очень редко.
17 Сти
 
12.12.17
13:09
(14) КорректировкаДолга.Ссылка.Дата это то же самое, что и КорректировкаДолга.Дата,
но в первом случае в реальном запросе к БД будет сделано соединение таблицы документа ко второму экземпляру этой же таблицы, и уже из второй будут браться эти самые даты. На фига? )
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший