Имя: Пароль:
1C
1С v8
Как использовать в запросе внешнюю переменную типа дата
,
0 Путник_М
 
12.02.12
20:01
Для Н = 0 по ПоследняяСтрока Цикл
       ДатаСреза = ТаблицаД[Н].ДатаСреза;
       
       Запрос.Текст =
       "ВЫБРАТЬ
       |    ВыполнениеЗаказовСрезПоследних.Номенклатура.Родитель.Родитель КАК Семейство,
       |    ВыполнениеЗаказовСрезПоследних.Заказ,
       |    ВыполнениеЗаказовСрезПоследних.Заказ.Склад.Подразделение КАК Склад,
       |    ВыполнениеЗаказовСрезПоследних.Распределено КАК Распределено,
       |    ВыполнениеЗаказовСрезПоследних.Статус,
       |    НАЧАЛОПЕРИОДА(""" + ДатаСреза + """, ДЕНЬ) КАК Период
       |ИЗ
       |    РегистрСведений.ВыполнениеЗаказов.СрезПоследних(
       |            """ + ДатаСреза + """,
       |            Заказ ССЫЛКА Документ.ЗаказПокупателя
       |                И Заказ.Склад.Подразделение В ИЕРАРХИИ (&СКЛАДЫ)
       |                И (НЕ Заказ.Склад.ПометкаУдаления)
       |                И (НЕ Номенклатура В ИЕРАРХИИ (&ГРУШИ))) КАК ВыполнениеЗаказовСрезПоследних
       |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПокупателей.Остатки(
       |                """ + ДатаСреза + """,
       |                (НЕ ЗаказПокупателя.Подразделение = &ОптОтдел)
       |                    И (НЕ ЗаказПокупателя.Самовывоз)) КАК ЗаказыПокупателейОстатки
       |        ПО ВыполнениеЗаказовСрезПоследних.Номенклатура = ЗаказыПокупателейОстатки.Номенклатура
       |            И ВыполнениеЗаказовСрезПоследних.Заказ = ЗаказыПокупателейОстатки.ЗаказПокупателя
       |ГДЕ
       |    ВыполнениеЗаказовСрезПоследних.Распределено > 0
       |    И (ВыполнениеЗаказовСрезПоследних.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовНов.Распределен)
       |            ИЛИ ВыполнениеЗаказовСрезПоследних.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовНов.Создан)
       |            ИЛИ ВыполнениеЗаказовСрезПоследних.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовНов.ЧастичноОплачен)
       |            ИЛИ ВыполнениеЗаказовСрезПоследних.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовНов.Оплачен)
       |            ИЛИ ВыполнениеЗаказовСрезПоследних.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовНов.РаспределенЧастично))
       |    И (НЕ ВыполнениеЗаказовСрезПоследних.ЕдиновременнаяДоставка)
       |    И ЗаказыПокупателейОстатки.КоличествоОстаток > 0";
                       
       Если Н <> ПоследняяСтрока Тогда
           Запрос.Текст = Запрос.Текст + "
           | ОБЪЕДИНИТЬ  ВСЕ
           |";
       КонецЕсли;
               
   КонецЦикла;
1 Путник_М
 
12.02.12
20:03
Мне нужно использовать именно переменную полученную в результате цикла! Подскажите может кавычки не хватает или чего еще
2 БибиГон
 
12.02.12
20:04
ошибка чтоли?

запрос в цикле это не кошерно. )
3 Путник_М
 
12.02.12
20:04
Подскажите плиз пипец как надо!!!
4 andrewks
 
12.02.12
20:04
про параметры запроса слышал?
5 Путник_М
 
12.02.12
20:05
(2) я понимаю но сейчас другого выхода нет! Выдает ошибку на дату
6 mirosh
 
12.02.12
20:05
(4) здесь они не подойдут, т.к. запрос в цикле формируется демонически
7 Путник_М
 
12.02.12
20:05
(4) конечно слышал мне именно нужно внешнюю прикрутить
8 andrewks
 
12.02.12
20:05
(6) и что?
9 Reaper_1c
 
12.02.12
20:06
(6) чойта?
10 Путник_М
 
12.02.12
20:06
Люди, какой у меня не хватает кавычки))
11 БибиГон
 
12.02.12
20:06
(6) какая разница?
(0) &ДатаСреза
12 БибиГон
 
12.02.12
20:07
(10) Ошибку выкладывай. )
13 Grusswelle
 
12.02.12
20:07
&ДатаСреза (параметр в тексте запрооса). Но запрос в цикле - это не комильфо!
14 Путник_М
 
12.02.12
20:08
(13) я понимаю мне нужно получить срез последних по заданному периоду
15 БибиГон
 
12.02.12
20:09
(13) для небольшой базы сойдет. ;)
16 mirosh
 
12.02.12
20:10
(8) (9) (11) ну предложили бы свои варианты, а то спорить все горазды. Парни, вы что, не видите, что дата среза у человека формируется разная:
ДатаСреза = ТаблицаД[Н].ДатаСреза;
хм, можно конечно извратиться. Итак.

(0) привет, Путник_М.
Смотри как можно сделать.

1. Вместо """ + ДатаСреза + """ в запросе пишешь &ДатаСреза" + Строка(Н) + "

2. Затем в конце итерации цикла пишешь.
Запрос.УстановитьПараметр("ДатаСреза" + Строка(Н), ТаблицаД[Н].ДатаСреза).

Как-то так.
17 БибиГон
 
12.02.12
20:13
(16) что есть Строка(Н)?
18 mirosh
 
12.02.12
20:14
(17) преобразование переменной Н числового типа в строковый тип
19 Путник_М
 
12.02.12
20:14
Спасибо буду пробовать!)
20 andrewks
 
12.02.12
20:17
(16) не, это как раз нормальное решение (я не про запрос в цикле, конечно, а про установку параметра).
а извратиться надо было предложить через ДАТАВРЕМЯ()
21 mirosh
 
12.02.12
20:19
(20) ну так предложи, в чем проблема. а то я один предлагаю, а все критикуют.
22 andrewks
 
12.02.12
20:19
(21) я изврат предлагать не буду :)
23 Путник_М
 
12.02.12
20:47
(16) Спасибо мысль хорошая попробовал все равно формируется отчет на последнюю дату! т.е с одной колонкой! Причем прорабатываю в консолеЗапросов Все норм выдает столько колонок сколько дат задано!
24 Путник_М
 
12.02.12
20:48
Отладчиком пробегался запрос динамически вырастает!
25 Путник_М
 
12.02.12
20:48
Почему выводится только колонка с последней датой не понятно..
26 Злобный Фей
 
12.02.12
20:57
Автар, у тебя ж в цикле каждый раз текст запроса заново присваивается?
27 mirosh
 
12.02.12
20:58
(26) о, точно ведь!
28 Лефмихалыч
 
12.02.12
21:02
(6) да отсохнут наиух руки, написавшие это
29 Путник_М
 
12.02.12
21:12
Василь Василич...))) Спасибо точно а я то думаю че за чудеса на решете!!! Оказывается все просто нельзя работать в выходной))) Всем спасибо!