Имя: Пароль:
1C
1С v8
Помогите с запросом
0 sanja26
 
27.11.11
22:56
УТ 11.
Есть табличная часть, учет по характеристикам может вестись, а может и нет. Получаю запросом остатки номенклатуры на дату. В параметр запроса передаю массив номенклатуры, выгруженный из ТЧ. Как можно передать в запрос характеристики, чтобы найти остатки и по ним сразу?
1 sanja26
 
27.11.11
22:58
Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |    СвободныеОстаткиОстатки.Номенклатура,
   |    СвободныеОстаткиОстатки.Характеристика,
   |    ВЫБОР
   |        КОГДА СвободныеОстаткиОстатки.ВНаличииОстаток - СвободныеОстаткиОстатки.ВРезервеОстаток > 0
   |            ТОГДА СвободныеОстаткиОстатки.ВНаличииОстаток - СвободныеОстаткиОстатки.ВРезервеОстаток
   |        ИНАЧЕ 0
   |    КОНЕЦ КАК Поле1
   |ИЗ
   |    РегистрНакопления.СвободныеОстатки.Остатки(
   |            &Дата,
   |            Номенклатура В (&МассивНоменклатуры)
   |                И Склад = &Склад) КАК СвободныеОстаткиОстатки";
   Запрос.УстановитьПараметр("Дата", ОбъектыПечати.Дата);
   Запрос.УстановитьПараметр("Склад", ОбъектыПечати.Склад);
   МассивНоменклатуры = ОбъектыПечати.Товары.ВыгрузитьКолонку("Номенклатура");    
   Запрос.УстановитьПараметр("МассивНоменклатуры", МассивНоменклатуры);
2 sanja26
 
27.11.11
23:09
Документ "Заказ клиента". Колонка характеристики там по умолчанию
3 sanja26
 
27.11.11
23:21
может кто получал остатки по номенклатуре при использовании характеристик?
4 Лефмихалыч
 
27.11.11
23:27
ВЫБРАТЬ
   |    Товары.Номенклатура,
   |    Товары.Характеристика,
   |    Товары.Количество КАК Заказано,
   |    СвободныеОстаткиОстатки.ВНаличииОстаток
   |ИЗ
   |    РегистрНакопления.СвободныеОстатки.Остатки(
   |            &Дата,
   |            Склад = &Склад) КАК СвободныеОстаткиОстатки
|ПРАВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.Товары КАК Товары
|ПО Товары.Номенклатура = СвободныеОстаткиОстатки.Номенклатура И
|Товары.Характеристика = СвободныеОстаткиОстатки.Характеристика
|ГДЕ Товары.Ссылка = &СсылкаНаТвойДокумент";
5 sanja26
 
27.11.11
23:30
(4) спасибо)
туплю уже под вечер
6 H A D G E H O G s
 
27.11.11
23:35
(4) Плохо же!
7 H A D G E H O G s
 
27.11.11
23:38
"ВЫБРАТЬ
   |    СвободныеОстаткиОстатки.Номенклатура,
   |    СвободныеОстаткиОстатки.Характеристика,
   |    ВЫБОР
   |        КОГДА СвободныеОстаткиОстатки.ВНаличииОстаток - СвободныеОстаткиОстатки.ВРезервеОстаток > 0
   |            ТОГДА СвободныеОстаткиОстатки.ВНаличииОстаток - СвободныеОстаткиОстатки.ВРезервеОстаток
   |        ИНАЧЕ 0
   |    КОНЕЦ КАК Остаток
   |ИЗ
   |    РегистрНакопления.СвободныеОстатки.Остатки(
   |            &Дата,
   |            Номенклатура В (&МассивНоменклатуры)
   |                И Склад = &Склад
   |                И Характеристика В (&МассивХарактеристик)) КАК СвободныеОстаткиОстатки";
8 Лефмихалыч
 
27.11.11
23:38
(6) ну, лучше, чем изначально все же
9 H A D G E H O G s
 
27.11.11
23:41
В (7) - оптимальный, а вот - кошерный

   "ВЫБРАТЬ
   |    СвободныеОстаткиОстатки.Номенклатура,
   |    СвободныеОстаткиОстатки.Характеристика,
   |    ВЫБОР
   |        КОГДА СвободныеОстаткиОстатки.ВНаличииОстаток - СвободныеОстаткиОстатки.ВРезервеОстаток > 0
   |            ТОГДА СвободныеОстаткиОстатки.ВНаличииОстаток - СвободныеОстаткиОстатки.ВРезервеОстаток
   |        ИНАЧЕ 0
   |    КОНЕЦ КАК Остаток
   |ИЗ
   |    РегистрНакопления.СвободныеОстатки.Остатки(
   |            &Дата,
   |            Склад = &Склад
   |                И (Номенклатура, Характеристика) В
   |                    (ВЫБРАТЬ
   |                        ЗаказКлиентаТовары.Номенклатура,
   |                        ЗаказКлиентаТовары.Характеристика
   |                    ИЗ
   |                        Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
   |                    ГДЕ
   |                        ЗаказКлиентаТовары.Ссылка = &Ссылка)) КАК СвободныеОстаткиОстатки";
10 d_koz
 
28.11.11
00:22
(9)
тогда еще кошернее во временную таблицу сей подзапрос:
   |                    (ВЫБРАТЬ
   |                        ЗаказКлиентаТовары.Номенклатура,
   |                        ЗаказКлиентаТовары.Характеристика
   |                    ИЗ
   |                        Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
   |                    ГДЕ
   |                        ЗаказКлиентаТовары.Ссылка = &Ссылка)

:)
11 sanja26
 
28.11.11
00:24
(7) так я и сам делал. Смущает что 2 несвязанных массива передаются. Понятно, что из одной ТЧ выгружены, но все-таки
12 sanja26
 
28.11.11
00:46
к (11)
В табличной части есть колонка "Дата отгрузки", остатки надо получать на эти даты.
Если в (4) передам массив дат вместо даты, запрос будет корректно работать?
13 H A D G E H O G s
 
28.11.11
00:47
(12) Нет
14 sanja26
 
28.11.11
00:48
да и массив туда не передается))
15 sanja26
 
28.11.11
00:49
ВЫБРАТЬ
   ЗаказКлиентаТовары.Количество,
   ЗаказКлиентаТовары.Номенклатура,
   ЗаказКлиентаТовары.Характеристика,
   СвободныеОстаткиОстаткиИОбороты.ВНаличииКонечныйОстаток,
   СвободныеОстаткиОстаткиИОбороты.ВРезервеКонечныйОстаток,
   СвободныеОстаткиОстаткиИОбороты.ВНаличииНачальныйОстаток,
   СвободныеОстаткиОстаткиИОбороты.ВРезервеНачальныйОстаток,
   СвободныеОстаткиОстаткиИОбороты.ВНаличииОборот,
   СвободныеОстаткиОстаткиИОбороты.ВНаличииПриход,
   СвободныеОстаткиОстаткиИОбороты.ВНаличииРасход,
   СвободныеОстаткиОстаткиИОбороты.ВРезервеОборот,
   СвободныеОстаткиОстаткиИОбороты.ВРезервеПриход,
   СвободныеОстаткиОстаткиИОбороты.ВРезервеРасход,
   СвободныеОстаткиОстаткиИОбороты.Период,
   ЗаказКлиентаТовары.ДатаОтгрузки
ИЗ
   Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.ОстаткиИОбороты(, , Секунда, ДвиженияИГраницыПериода, ) КАК СвободныеОстаткиОстаткиИОбороты
       ПО ЗаказКлиентаТовары.Номенклатура = СвободныеОстаткиОстаткиИОбороты.Номенклатура
           И ЗаказКлиентаТовары.Характеристика = СвободныеОстаткиОстаткиИОбороты.Характеристика
           И ЗаказКлиентаТовары.Ссылка.Склад = СвободныеОстаткиОстаткиИОбороты.Склад
           И ЗаказКлиентаТовары.ДатаОтгрузки = СвободныеОстаткиОстаткиИОбороты.Период
ГДЕ
   ЗаказКлиентаТовары.Ссылка = &Заказ

Возвращает NULL по всем ресурсам
16 дущ
 
28.11.11
00:53
(15) естественно, нахрена это вот прилепил

И ЗаказКлиентаТовары.ДатаОтгрузки = СвободныеОстаткиОстаткиИОбороты.Период
17 дущ
 
28.11.11
00:54
+(16) хоте, не, вру. Вроде всё верно.
18 sanja26
 
28.11.11
00:55
Дата отгрузки в результате запроса заполнена
19 sanja26
 
28.11.11
00:58
Разобрался. В строках ТЧ дата без времени. Поставил период день - все показало
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший