Имя: Пароль:
1C
1C 7.7
v7: Условие на справочник в запросе
0 VoditelKobyly
 
18.07.13
12:29
Уважаемые программисты, подскажите как в тексте запроса 1с реализовать увсловие вхождения элемента в группу если запрос строится по реквизитам документа типа справочник общего вида. Есть накладная, в табличной части реквизит Товар, тип справочник. Может быть как элементом справочника товаров, так и элементом справочника услуги. Ставлю на форме отчета поле выбора справочника товаров. Пишу условие в запросе Товар в ВыбТовар. Работает как надо. Далее в этой же накладной в шапке есть реквизит Покупатель типа справочник общего вида. Может быть как элементом справочника Клиенты, так и элементом справочника Сотрудники. Ставлю на форме отчета поле выбора справочника Клиенты. Пишу в запросе условие Покупатель в ВыбКлиент.
Как только добавляю условие результат запроса пустой. Пишу Покупатель=ВыбКлиент, выбираю клиента, который точно должен попасть в выборку - результат пустой. Как правильно написать условие в запросе, чтобы реализовать фильтр по клиентам определенной группы (или одному выбранному клиенту)?
1 Ёпрст
 
гуру
18.07.13
12:30
|условие (Покупатель в ВыбКлиент);
2 1Сергей
 
18.07.13
12:31
Покупатель - справочник неопределенного вида или неопределённого типа?
3 VoditelKobyly
 
18.07.13
12:31
Спасибо, пробовал, не работает
4 VoditelKobyly
 
18.07.13
12:32
Покупатель в шапке документа это справочник.
На форме отчета это Справочник.Клиенты
5 VoditelKobyly
 
18.07.13
12:34
(2)То же самое с товаром, но товар это реквизит табличной части документа. С товаром всё работает с покупателем не хочет.
6 1Сергей
 
18.07.13
12:34
странно, вообще. Должно работать
7 1Сергей
 
18.07.13
12:34
Может, дело не в этом?
8 VoditelKobyly
 
18.07.13
12:35
(7) Дай подсказку
9 VoditelKobyly
 
18.07.13
12:37
Убираю условие по покупателю из текста запроса в результате попадают документы по всем покупателям.
А мне нужно по одному или группе.
10 1Сергей
 
18.07.13
12:38
ну, не знаю. Другие условия проверяй. "Обрабатывать Все", Период, прочие условия. Пробуй всё отключить
11 mishaPH
 
18.07.13
12:38
текст запроса в студию.
А то тут некоторые 8ки пытаются в 7ке также присать
12 VoditelKobyly
 
18.07.13
12:42
Попробовал на форме ВыбПокупатель сделать тоже типом справочник. Условие не срабатывает не на равно, не на вхождение.
13 Ёпрст
 
гуру
18.07.13
12:44
выбираешь клиентоса, которого нет в выборке
14 VoditelKobyly
 
18.07.13
12:45
(13) проверял, точно есть
15 VoditelKobyly
 
18.07.13
12:46
- Документ
       - Идентификатор    "СчетФактура"
       - Синоним    "Cч.-Факт."
       - Комментарий    "Счет-фактура"
       - Журнал    "Журнал.СчетаФактуры"
       - ПериодичностьНомера    "Год"
       - ДлинаНомера    "5"
       - ТипНомера    "Числовой"
       - АвтоНумерация    "2"
       - КонтрольУникальности    "0"
       - Нумератор
       - ОперативныйУчет    "1"
       - Расчет    "0"
       - БухгалтерскийУчет    "0"
       - СоздаватьОперацию
       - АвтоНумерацияСтрок    "1"
       - АвтоудалениеДвижений    "1"
       - РедактированиеОпераций    "0"
       - РазрешитьПроведение    "1"
       - ВводимыеНаОснованииДокументы
       - ОснованиеДляЛюбогоДокумента    "0"
       - ОбластьРаспространения    "ВсеИнформационныеБазы"
       - АвтоРегистрация    "1"
       - ДополнительныеКодыИБ
       - РеквизитШапки
           - Идентификатор    "Покупатель"
           - Синоним
           - Комментарий    "Покупатель"
           - Тип    "Справочник"
           - Вид
           - Длина    "0"
           - Точность    "0"
           - НеОтрицательный    "0"
           - РазделятьТриады    "0"
16 VoditelKobyly
 
18.07.13
12:46
ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Период с ВыбНачПериода по ВыбКонПериода;
   |Обрабатывать НеПомеченныеНаУдаление;
   |СФ = Документ.СчетФактура.ТекущийДокумент;
   |Покупатель = Документ.СчетФактура.Покупатель;
   |Товар = Документ.СчетФактура.Товар;
   |Количество = Документ.СчетФактура.Количество;
   |Функция КоличествоСумма = Сумма(Количество);
   |Функция ВДаллах = Сумма(КоличествоВДаллах(Количество,Товар));
   |Группировка Покупатель без групп;
   |Группировка Товар без групп;
   |Группировка СФ;
   |Условие(Покупатель = ВыбПокупатель);
   |Условие(Товар в ВыбТовар);
   |Условие(Товар.Пиво = 1);
   |"//}}ЗАПРОС
   ;
17 1Сергей
 
18.07.13
12:47
(15) запрос покажи
18 1Сергей
 
18.07.13
12:47
Вот так работает?

   "//{{ЗАПРОС(Сформировать)

//    |Период с ВыбНачПериода по ВыбКонПериода;
//    |Обрабатывать НеПомеченныеНаУдаление;
   |СФ = Документ.СчетФактура.ТекущийДокумент;
   |Покупатель = Документ.СчетФактура.Покупатель;
   |Товар = Документ.СчетФактура.Товар;
   |Количество = Документ.СчетФактура.Количество;
   |Функция КоличествоСумма = Сумма(Количество);
   |Функция ВДаллах = Сумма(КоличествоВДаллах(Количество,Товар));
   |Группировка Покупатель без групп;
   |Группировка Товар без групп;
   |Группировка СФ;
   |Условие(Покупатель В ВыбПокупатель);
//    |Условие(Товар в ВыбТовар);
//    |Условие(Товар.Пиво = 1);
   |"//}}ЗАПРОС
19 VoditelKobyly
 
18.07.13
12:48
(11) Это не про меня
20 Ёпрст
 
гуру
18.07.13
12:49
ну и   |Условие(Товар.Пиво = 1); это в топку
21 1Сергей
 
18.07.13
12:49
вот это тоже лучше закоменть

   |Функция ВДаллах = Сумма(КоличествоВДаллах(Количество,Товар));
22 VoditelKobyly
 
18.07.13
12:50
(20) Это не причем, это как раз срабатывает и фильтрует от лишних товаров
23 Ёпрст
 
гуру
18.07.13
12:51
(22) я в курсе - это мегатормоз.
24 VoditelKobyly
 
18.07.13
12:51
(21) Это тоже не причем, работает
25 VoditelKobyly
 
18.07.13
12:52
(23) Понял, сделаем по другому, но речь не про тормоза.
26 uno-group
 
18.07.13
12:52
вместо "=" "в" Пробывал ставить?
Может уще условие добавить типа
(Покупатель.Вид()="Контрагенты")
27 1Сергей
 
18.07.13
12:52
(24) это тоже (23). попробуй, говорю, убрать всё лишнее
28 Ёпрст
 
гуру
18.07.13
12:54
ну и (18) у тебя работает ?
29 uno-group
 
18.07.13
12:55
А это зачем?
|СФ = Документ.СчетФактура.ТекущийДокумент;
...
|Группировка СФ;
почему не просто группировка.документ
30 VoditelKobyly
 
18.07.13
12:56
(28) 18 Без условия по Покупателю работает.
Выборка показывает все документы всех покупателей
31 VoditelKobyly
 
18.07.13
12:57
(26)    |Условие(Покупатель.Вид() = ""Клиенты"");
Дает ошибку в условии и не работает
32 uno-group
 
18.07.13
12:58
ВыбПокупатель и ВыбТовар Это что реквизит типа товар, контрагент или списки значений может тут собака зарыта.
33 Ёпрст
 
гуру
18.07.13
13:02
Так работает ?
Т="
   |СФ = Документ.СчетФактура.ТекущийДокумент;
   |Покупатель = Документ.СчетФактура.Покупатель;
   |Группировка Покупатель без групп;";
Запрос = СоздатьОбъект("Запрос");
ТЗ = СоздатьОбъект("ТаблицаЗначений");
Запрос.Выполнить(Т);
Запрос.Выгрузить(ТЗ,0,0);
Сообщить(ТЗ.НайтиЗначение(ВыбПокупатель,,"Покупатель");

чего сообщает ?
34 НЕА123
 
18.07.13
13:08
(32)
очень похоже.
(0)
проверь в отладчике кто же такой ВыбПокупатель.
ну и вставь
ВыбПокупательИстинный = ВыбПокупатель.ТекущийЭлемент();
ибо подозрение есть, что ВыбПокупатель выборка или еще что-то...
(за синтаксис не ручаюсь, позабыл уже 7).
35 VoditelKobyly
 
18.07.13
13:39
В отладчике:
ВыбПокупатель = ООО"Лада"
ВыбПокупатель.Вид() = "Клиенты"
ТипЗначенияСтр(ВыбПокупатель) = "Справочник"
36 Ёпрст
 
гуру
18.07.13
13:39
на (33) есть ответ ?
37 VoditelKobyly
 
18.07.13
13:41
(33) 0
38 НЕА123
 
18.07.13
13:45
Не пробовал?
ВыбПокупательИстинный = ВыбПокупатель.ТекущийЭлемент();
39 VoditelKobyly
 
18.07.13
13:47
Все нашел, спасибо всем за помощь.
ВыбПокупатель = ООО"Лада"
ВыбПокупатель.Вид() = "Клиенты"
ТипЗначенияСтр(ВыбПокупатель) = "Справочник"

Запрос.Покупатель = ООО " Лада"
Запрос.Покупатель.Вид() = "Фирмы"
ТипЗначенияСтр(Запрос.Покупатель) = "Справочник"
40 Ёпрст
 
гуру
18.07.13
13:49
(37) это собственно ответ на твой вопрос - в выборке НЕТ твоего клиентоса.
41 1Сергей
 
18.07.13
13:49
я же говорил, что дело не в этом
42 Ёпрст
 
гуру
18.07.13
13:49
чего ты там ищещь - не ясно
43 Ёпрст
 
гуру
18.07.13
13:50
(41) я тоже говорил.. в (13)
44 VoditelKobyly
 
18.07.13
13:50
(40) Да.
Тут что покупатели, что фирмы два справочника практически с одинаковыми реквизитами и копией информации, что в одном, что в другом
45 VoditelKobyly
 
18.07.13
13:51
(41,42) Вам то хорошо...
Вы умные.
AdBlock убивает бесплатный контент. 1Сергей