Возможно ли в запросе такое

1. Hunta 22.01.09 20:30 Сейчас в теме
Здравствуйте уважаемые знатоки! =)
Подскажите пожалуйста, возможно ли в запросе сделать следующее:
Период, к примеру с НачДата по КонДата, в этом периоде формируется отчет.
А вот надо в одной колонке сделать выборку данных (документов) с НачДата - 1 день!
Если такое невозможно сделать, то выбрать данные только за первый день выборки, т.е. НачДата.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. vovan519 276 22.01.09 22:36 Сейчас в теме
3. Hunta 23.01.09 13:45 Сейчас в теме
А не напишите пример?
Пробую:
|Функция СуммаОб = Сумма (ОборотСумма) Когда (Док.ДатаДок = ВыбНачПериода);

Пишет, что агрегатный тип данных ДатаДок не найден!
Заранее спасибо...
4. Ёпрст 1063 23.01.09 13:56 Сейчас в теме
5. Ёпрст 1063 23.01.09 13:56 Сейчас в теме
А обращение к чему ? К Документам? К регистру ?...
6. Hunta 23.01.09 14:03 Сейчас в теме
|Товар                 = Регистр.ОстаткиТМЦ.Номенклатура,
 |							Документ.ОтчетККМ.Номенклатура,
 |							Документ.ПоступлениеТМЦ.Номенклатура,
 |							Документ.ВозвратПоставщику.Номенклатура;
 |ОборотСумма                = Документ.ОтчетККМ.Сумма;
 |Док                             = Регистр.ОстаткиТМЦ.ТекущийДокумент;


Скорее всего не правильно. Мне надо получить документы ОтчетККМ
Делал
|Док                   = Документ.ОтчетККМ.ТекущийДокумент;

То же не правильно...
7. Ёпрст 1063 23.01.09 14:13 Сейчас в теме
(6) Гы.. А нафига скрещивать документы с регистром в тексте запроса ?

Бери всё или с документов или с документа движения регистра и привет.
+ функция с Когда.
Если нет других функций - сразу имеешь нужную выборку..Если есть, то по значению этой функции определишь.
8. Hunta 23.01.09 14:20 Сейчас в теме
Ёпрст пишет:

(6) Гы.. А нафига скрещивать документы с регистром в тексте запроса ?


Хочу получить остатки товара которые встречаются в данных документах

Бери всё или с документов или с документа движения регистра и привет.

+ функция с Когда.

Как в Когда забить условие? Нас интересуют Суммы из документы как за весь период Запроса,
так и отдельно надо получить сумму из документов ОтчетККМ только за первый день выборки запроса.
Это ведь правильно делаю:
|Функция СуммаОб = Сумма (ОборотСумма) Когда (Док.ДатаДок = ВыбНачПериода);

т.е. ошибка в присвоении переменной Док?
9. Ёпрст 1063 23.01.09 14:33 Сейчас в теме
(0)
Бери всё из регистра. Не надо скрещивать его с документом.
Док определишь как Регистр.Нужный.ТекущийДокумент ...

Хочу получить остатки товара которые встречаются в данных документах

Это как ?
10. vovan519 276 23.01.09 14:35 Сейчас в теме
Какое отношение регистр имеет к запросу, если ты пытаешься получить сумму по документам?
11. Hunta 23.01.09 14:46 Сейчас в теме
Реквизит Товар выбирается в диалоге.
Надо получить:
Остатки этого товара получаем из регистра
Сумму продаж, получаем из документов отчетККМ
Сумму закупа, получаем из документа ПоступлениеТМЦ

Запрос = СоздатьОбъект("Запрос");
	ТекстЗапроса = 
	"//{{ЗАПРОС(Сформировать)
	|Период с ВыбНачПериода по ВыбКонПериода;
	|Обрабатывать НеПомеченныеНаУдаление;
	|Товар                 = Регистр.ОстаткиТМЦ.Номенклатура,
	|							Документ.ОтчетККМ.Номенклатура,
	|							Документ.ПоступлениеТМЦ.Номенклатура,
	|Док                   = Документ.ОтчетККМ.ТекущийДокумент();
	|ОборотКол          = Документ.ОтчетККМ.Количество, Документ.ВозвратПоставщику.Количество;
	|ОборотСумма      = Документ.ОтчетККМ.Сумма;
	|Приход               = Документ.ПоступлениеТМЦ.Количество;
	|ПриходСумма      = Документ.ПоступлениеТМЦ.Сумма;
	|ОстатокКол        = Регистр.ОстаткиТМЦ.Количество;
	|Функция КолОстатокНач = НачОст (ОстатокКол);
	|Функция КолОстатокКон = КонОст (ОстатокКол);
	|Функция ОбКол              = Сумма (ОборотКол);
	|Функция ОбСумма          = Сумма (ОборотСумма);
	|Функция ОбСуммаЗаДень = Сумма (ОборотСумма) Когда (Док.ДатаДок = ВыбНачПериода);
	|Функция КолПриход        = Сумма (Приход);
	|Функция СумПриход        = Сумма (ПриходСумма);
	|Условие (Товар в ВыбТовар);
	|Группировка Товар упорядочить по Товар.Наименование;
	|";
Показать
12. Ёпрст 1063 23.01.09 14:47 Сейчас в теме
|Док = Документ.ОтчетККМ.ТекущийДокумент;

Это для начала...
Дальше лень смотреть, если честно.
13. Ёпрст 1063 23.01.09 14:48 Сейчас в теме
Хотя, гораздо правильнее писать так (ибо в разы быстрее будет):

|ДатаД = Документ.ОтчетККМ.ДатаДок;
|Функция ОбСуммаЗаДень = Сумма (ОборотСумма) Когда (ДатаД = ВыбНачПериода); 
14. vovan519 276 23.01.09 14:53 Сейчас в теме
15. vovan519 276 23.01.09 15:06 Сейчас в теме
Уж очень это сложно так делать. Плюс очень много ошибок.
Проще сделать обычную ведомость по партиям
и добавить
|Функция суммаприхода = Приход(Сумма) Когда (Док.Вид() = ...);
|Функция суммаприходадень = Приход(Сумма) Когда ((Док.Вид = ...) И (Док.ДатаДок = ...);
16. Hunta 23.01.09 15:54 Сейчас в теме
Спасибо! Попробую =) Вернее заново придется переписывать, с учетом ваших замечаний.
17. Hunta 26.01.09 14:56 Сейчас в теме
Опять уперся, подскажите пожалуйста, что не так
делаю:
"//{{ЗАПРОС(Сформировать)
	|Период с ВыбНачПериода по ВыбКонПериода;
	|Обрабатывать НеПомеченныеНаУдаление;
	|Фирма                 = Регистр.ОстаткиТМЦ.Фирма;
	|Товар                  = Регистр.ОстаткиТМЦ.Номенклатура;
	|ОстатокКол          = Регистр.ОстаткиТМЦ.Количество;
	|Док                     = Регистр.ОстаткиТМЦ.ТекущийДокумент;
	|Продажи              = Регистр.ОстаткиТМЦ.ЦенаПрод;
	|Функция КолОстатокНач = НачОст (ОстатокКол);
	|Функция КолОстатокКон = КонОст (ОстатокКол);
	|Функция Расход        = Расход (ОстатокКол);
	|Функция Приход        = Приход (ОстатокКол) Когда (Док.Вид() = ПоступлениеТМЦ);
...
Показать

Выдает ошибку "Функция Приход = Приход (ОстатокКол) Когда (Док.Вид() = ПоступлениеТМЦ <<?>> );
Запрос[12] : Ошибка в выражении 'ПоступлениеТМЦ"
18. Altair777 645 26.01.09 15:03 Сейчас в теме
(17) может, ПоступлениеТМЦ нужно в кавычки взять?
|Функция Приход = Приход (ОстатокКол) Когда (Док.Вид() = "ПоступлениеТМЦ");

Вид()
Синтаксис:
Вид()
Назначение:
Возвращает строку с названием вида документа.
19. venger 2121 26.01.09 15:06 Сейчас в теме
(18) Двойные? Это ж в тексте запроса, он тоже в кавычках...
20. Altair777 645 26.01.09 15:14 Сейчас в теме
(19) да, точно.

|Функция Приход = Приход (ОстатокКол) Когда (Док.Вид() = ""ПоступлениеТМЦ"");

Кажется так :-)
21. Hunta 26.01.09 15:23 Сейчас в теме
Эх, точно двойные кавычки! Спасибо!
в одинарные брал не помогало, а вот до двойных не дошёл =)
22. vovan519 276 26.01.09 15:29 Сейчас в теме
Чтобы не парится с кавычка и запрос был более читаемым
ДокПоступление = "ПоступлениеТМЦ";
...
...Когда (Док.Вид() = ДокПоступление);
...
23. Hunta 02.03.09 11:20 Сейчас в теме
Эх, вот я ступил. Ведь функция НачОст () в запросе, берет данные на начальную дату запроса с 00:00:01, а мне требовалось из отчета исключить некоторые данные за первый день отчета.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот