Имя: Пароль:
1C
1C 7.7
v7: Проблема с запросом
0 crisalis
 
13.06.13
12:25
Доброе время суток уважаемые гуру !
Подскажите пожалуйста что не так с запросом:

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

ВыбКонтр задается на форме. СписокЭлементов (только элементы) перебирается программно чтобы отсеять группы.

Хочу получить табличку типа:
Контрагент|Товар|Количество  
Контр1    |Тов1 |5
Контр1    |Тов2 |0
Контр1    |Тов3 |0
Контр1    |Тов4 |5
Контр1    |Тов5 |1

А получаю только что есть в ТЧ документов. Что требуется дописать чтобы были видны и элементы которых нет в ТЧ документе но передаются  
как параметр (Условие (Товар В СписокЭлементов)) ?

Заранее благодарен.
1 ale-sarin
 
13.06.13
12:26
Запрос семерочный, а в теме 8-ка. Как так
2 crisalis
 
13.06.13
12:27
Я вроде указывал что это тема по 7
3 Wobland
 
13.06.13
12:27
а так хочется левое соединение
4 crisalis
 
13.06.13
12:27
А как исправить ???
5 crisalis
 
13.06.13
12:29
3 - хочется но это ж 1с7.7
6 Wobland
 
13.06.13
12:30
(5) left join там возможен
7 crisalis
 
13.06.13
12:33
(6) а можно по подробней и как это реализовать со СЗ
8 Wobland
 
13.06.13
12:36
(7) это отдельная песня. что-то я вот так делал:

   Запрос=СоздатьОбъект("ToyQuery");
   Запрос.Вернуть1С=1;
   Temp=Запрос.CreateTemp();
   Если (УпорядочиваниеПоИерархииНоменклатуры=1) Тогда
       Если Temp.CreateHierarchy("#ИерархияНоменклатуры","Номенклатура",)=0 Тогда
           Предупреждение("Не удалось добавить иерархию");
           Сообщить(Temp.Ошибка);
           Возврат;
       КонецЕсли;
   КонецЕсли;    

   ТабДок=СоздатьОбъект("Таблица");
   Результат=СоздатьОбъект("ТаблицаЗначений");
   
   ТекстЗапроса=СформироватьКошерныйТекстЗапроса();

   Если ГоворитьЗапрос=1 Тогда
       Сообщить(ТекстЗапроса);
   КонецЕсли;
   Если Запрос.MetaQuery(ТекстЗапроса)=0  Тогда
       Сообщить(ТекстЗапроса);
       Сообщить("Ошибка при выполнении запроса:");
       Сообщить(Запрос.Error);
   КонецЕсли;
   Запрос.Выгрузить(Результат);
9 crisalis
 
13.06.13
12:39
(8) У меня платформа чистая, без приблуд.

СоздатьОбъект("ToyQuery");
Temp.CreateHierarchy
10 1Сергей
 
13.06.13
12:44
(9) поясни, зачем тебе минимальное количество?
11 1Сергей
 
13.06.13
12:45
а так,

|Группировка Товар Без Групп Все;
12 1Сергей
 
13.06.13
12:45
и условие со списком убери нахрен
13 crisalis
 
13.06.13
12:55
(10) вместо мин у меня была сумма, я подумал что если записи группируются при суммировании кол. с 0 позиций отбрасываются. Но это конечно же бред.
Нет функ. |Функция Количество = Сумма(КоличествоТов);
Нет количества :/
(12) почему убрать мне же строго по конкретному СЗ (конкретный товар) все нужно получить ?
14 1Сергей
 
13.06.13
13:03
>>Нет функ. |Функция Количество = Сумма(КоличествоТов);

С чего это нет?

>>мне же строго по конкретному СЗ (конкретный товар) все нужно получить

Тогда я не совсем понял, чего ты там говорил про группы
15 КапЛей
 
13.06.13
13:08
а в чем сложность результаты запроса выгрузить в ТЗ и дописать в неё строки с товаром из списка и нулевым количеством?
16 Mikeware
 
13.06.13
13:11
(15) это же пейсать надо...
17 КонецЦикла
 
13.06.13
13:14
>>чтобы были видны и элементы которых нет в ТЧ

А откуда их брать тогда и что выводить?
Список товаров можно загнать в ТЗ, убрать из условия и при обходе ТЗ использовать Запрос.Получить()
18 crisalis
 
13.06.13
13:16
(14) Если убрать |Функция Количество = Сумма(КоличествоТов);  при выборке (обходе) рез. запроса Запрос.Количество = пустое.

Про группы я говорил что перебираю СЗ Товаров (на форме)
и получаю СЗ только с элементами так как польз. на форме может добавлять в СЗ Товаров (на форме) и группы и элементы из спр ТМЦ.

(15) Тоже вариант, но хотелось все в запросе реализовать.

Ребят а может у вас что то такое есть как Планировщик (это наши продажники так называют). По сути это отчет для контроля наличия ассортимента в торговой точке.

Контрагенты  | Тов1 | Тов2 | Тов3 | Тов4 | Тов5 |
Контр1       | 1    | 0    | 0    | 0    | 1    |
Контр2       | 1    | 1    | 0    | 1    | 0    |
и т.д

1 - Была отгрузка
0 - Нет
19 Mikeware
 
13.06.13
13:27
(18) не совсем правильно считать ассортимент про отгрузке...
НО нечто такое есть. Правда, завязанное на кучу своих справочников
20 crisalis
 
13.06.13
13:30
(16) Я напишу не проблема , просто в 8 этот запрос делается за 3 сек. в консоли а в 7 немного трудновато так как консоли нормальной для 7 я не нашел.

(17) из параметра СписокЭлементов с 0.
21 crisalis
 
13.06.13
13:32
(19) у нас именно эти два документа в проведенном признаке регистрируют факт отгрузки.
22 КонецЦикла
 
13.06.13
13:37
(18) Был такой планировщик
Обсчитывалось и складывалось в свою таблицу SQL
Дни фактических продаж и еще несколько параметров по объектам и товарам
23 viktor_vv
 
13.06.13
13:37
Попробуй так

   |Товар = Справочник.ТМЦ.ТекущийЭлемент,Документ.НалоговаяНакладная.Товар, Документ.РасходнаяНакладная.Товар;

|Группировка Товар Без Групп Все;
24 Безработный 1Сник
 
13.06.13
13:37
Группировка Документ
Группировка СтрокаДокумента
25 crisalis
 
13.06.13
13:41
(23) ок

(24) а зачем групп. по докам и по стр.документов???
26 crisalis
 
13.06.13
13:45
(22) Обсчитывалось и складывалось в свою таблицу SQL для вывода на сайт ???
27 pvase
 
13.06.13
13:46
Вот так можно:
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)

   |Период с НачДата по КонДата;
   |Обрабатывать НеПомеченныеНаУдаление;
   |Клиент = Документ.НалоговаяНакладная.Клиент, Документ.РасходнаяНакладная.Клиент;
   |Товар = Документ.НалоговаяНакладная.Товар, Документ.РасходнаяНакладная.Товар, Справочник.Номенклатура.ТекущийЭлемент;
   |КоличествоТов = Документ.НалоговаяНакладная.Количество, Документ.РасходнаяНакладная.Количество;
   |Функция Количество = Минимум(КоличествоТов);
   |Группировка Клиент;
   |Группировка Товар Без Групп;
|Условие (Клиент В ВыбКонтр);
|Условие (Товар В СписокЭлементов);
|"//}}ЗАПРОС

ТЗ = СоздатьОбъект("ТаблицаЗначений");
Запрос = СоздатьОбъект(Запрос);
Запрос.Выполнить(ТекстЗапроса);
Запрос.Выгрузить(ТЗ);

В итоге в ТЗ будет необходимая структура.
28 crisalis
 
13.06.13
13:49
(23) и (11) вроде работает но пробовал без Справочник.ТМЦ.ТекущийЭлемент

(27) Спасибо попробую
29 crisalis
 
13.06.13
13:57
Вот так заработало:

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

Спасибо всем за советы и за человечность !
30 crisalis
 
13.06.13
13:59
одно условие не дописал:
|Условие (Товар В СписокЭлементов);

:) еще раз спасибо всем
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.