v7: 1С 7.7 запрос "выбор когда..." #751543


#0 by Mary01
Добрый день! Подскажите, есть ли в запросах 7.7 аналог функции Выбор..когда? У контрагента есть реквизит "ЮрФизЛицо", тип "справочник", в этом реквизите выбирается либо юр.лицо, либо физ. лицо, либо сотрудник (все это отдельные справочники). Мне в отчет нужно вывести запросом группировку: "юр.лица" или "физ. лица"  в зависимости о вида контрагента, и в "физ. лица" должны попасть физлица и сотрудники. Нужно сделать в запросе что-то вроде ВидКонтрагента = Выбор Когда Контрагент.ЮрФизЛицо.Вид = "Физлица" Или Контрагент.ЮрФизЛицо.Вид = "Сотрудники" тогда ""Физ. лица"" А потом еще сделать группировку по ВидКонтрагента.
#1 by JeyRico
Наверно только прямые запросы спасут.
#2 by Джинн
Есть Когда в функциях.
#3 by Остап Сулейманович
Ей в группировках нужно.
#4 by Остап Сулейманович
+ В запрос нужно выбрать признак ЮрФизЛицо и потом уже по нему группировать Контрагентов.
#5 by bigdenis22
запрос по докам или по регитстру ? в принципе в обоих случаях переменная
#6 by bigdenis22
или ещё нужны отборы по конкретным значениям или спискам значений этого ВидКонтрагента ?
#7 by Mary01
пробую Функция ВидКонтрагента = ""Физ. лица"" Когда ((Контрагент.ЮрФизЛицо.Вид = "Физлица") Или (Контрагент.ЮрФизЛицо.Вид = "Сотрудники"))   но на этом выдается ошибка: Ожидается имя переменной или ее составляющая перед '"Физ. лица"'
#8 by Mary01
по регистру
#9 by bigdenis22
сори, разумеется в переменной док или регистр надо указать ВидКонтрагента = (объект).Контрагент.ЮрФизЛицо;
#10 by Mary01
да, но среди видов контрагентов есть не только физ и юр лица, но ещеи  сотрудники, а по сотрудникам мне отдельную группировку не надо, их надо включать в физлица
#11 by Mary01
да, но среди видов контрагентов есть не только физ и юр лица, но еще и  сотрудники, а по сотрудникам мне отдельную группировку не надо, их надо включать в физлица
#12 by bigdenis22
задачу конкретизировать можно? и параметры имеющегося регистра
#13 by bigdenis22
физлица и сотрудники - это ОДИН справочник?
#14 by Mary01
нет
#15 by DCKiller
В запросе добавь функции "... Функция СчФизЛицо = Счётчик когда (Контрагент.ЮрФизЛицо.Вид = "Физлица") Или (Контрагент.ЮрФизЛицо.Вид = "Сотрудники"); Как-то так, короче...
#16 by bigdenis22
итоги по юрам и по физам нужны? если нет - то:
#17 by Mary01
а еще когда пишу в запросе: |ВидКонтрагента = Регистр.Продажи.Покупатель.ЮрфизЛицо.Вид; то такая ошибка возникает: Неверно заданный путь 'Вид' почему так?
#18 by aka AMIGO
иногда бывает проблема: "много точек" у тебя их 4 штуки
#19 by ДенисЧ
"Регистр.Продажи.Покупатель.ЮрфизЛицо.Вид; " Это кто тебе такое в запросе в клюшках разрешил писать?
#20 by Mary01
вначале написала так |Контрагент = Регистр.Продажи.Покупатель; |ВидКонтрагента = Контрагент.ЮрфизЛицо.Вид; но не прокатило: ругалось на вторую строку, т.к. не понимает кто такой контрагент
#21 by Остап Сулейманович
Каша. ЗЫ. начните запрос конструктором. Когда наступит просветление - пишите ручками.
#22 by aka AMIGO
В Описании языка стр 811-816 как раз про "Когда" при применении Функций в запросе.
#23 by Масянька
Поддерживаю. В конструкторе довольно просто, зато потом более понятно. А разве Вид можно в запросе?
#24 by Остап Сулейманович
Ей не нужен расчет в функциях. Ей нужна группировка по виду контрагента.
#25 by Остап Сулейманович
Можно. Только сам вид нужно указывать в двойных кавычках. Текст запроса - это все же строка. И правило для кавычек никто не отменял.
#26 by aka AMIGO
- вопрос-то у неё в топике..
#27 by Масянька
Это уже в функциях, а в выборке? ВидКонтрагента = ...
#28 by palpetrovich
имхо вынести во внешнюю функцию будет попроще
#29 by Масянька
А можно узнать задание (что, зачем и почему)?
#30 by Mary01
когда я писала Вид в условии, то работало корректно - отбиралось по нужному виду. а вот в Функции почему-то не работает.
#31 by Mary01
в двойных кавычках тоже делала, но все равно не работает
#32 by aka AMIGO
в правильное решение
#33 by Mary01
есть отчет по регистру, там группировки: организация, номенклатура, контрагент. В разрезе этих группировок выводятся данные регистра (кол-во, сумма). Задание - добавить еще одну группировку по виду контрагента. То есть, должны выводиться итоги по организациям, внутри них по номенклатуре, потом по видам контрагентов, и уже потом внутри видов - по контрагентам. то есть, например, в подгруппе "физлица" - итоги по контрагентам-физлицам и по сотрудникам, и в подгруппе "юрлица" - по контрагентам-юрлицам.
#34 by Mary01
принцип поняла, но в задаче не стоит условие отобрать по видам. нужны все виды, но в разбивке физ/юр. попробую сделать функцию, которая будет возвращать вид контрагента.
#35 by palpetrovich
вот с этого и надо было начинать :)
#36 by Масянька
Так, блин, спрашивать надо, а не умничать :)))))
#37 by Ёпрст
В чорном запросе группировку не слепишь. Либо пиши прямой запрос, либо добавляй реквизит в регистр и обнови все записи в нём.
#38 by bigdenis22
мдя... я тоже промахнулся, вот здесь пишут, что внешнюю функцию можно вызвать только в условие запроса... наверно, остается только один выход - крутить ТЗ...
#39 by Масянька
Ёще вариант - индексированная таблица.
#40 by Mary01
В запросе нельзя сделать Вид. А просто ЮрФизЛицо не нужно, нужен именно вид
#41 by Mary01
то есть запрос выгразить в ТЗ, а дальше? делать отдельные ТЗ по каждой группировке что ли?
#42 by Mary01
а есть какой-то мануал по этим таблицам? с примером?
#43 by DCKiller
тебе же в все уже написали
#44 by Mary01
мне нужны итоги по физлицам и по юр.лицам.
#45 by DCKiller
Ну и в чем проблема? Берешь из строчку, там где ТЗ.Свернуть, и добавляешь туда во 2-й параметр свои колонки, по которым у тебя вычисляются суммы.
#46 by Mary01
ок поняла, попробую
#47 by Mary01
и тут же возникает вопрос )) дело в том, что вид контрагента - это у меня не первая группировка должна быть, а вторая. Первая - это организации, потом идет номенклатура, и уже потом должны быть виды контрагентов.
#48 by Ёпрст
Покажи текст запроса
#49 by Mary01
пытаюсь сюда его скопировать, но какими-то кракозябрами пишет...
#50 by Mary01
Вот он:
#51 by DCKiller
#52 by Остап Сулейманович
Где группировка по ВидКонтрагента? Описание группировок должно быть примерно таким:
#53 by Остап Сулейманович
+ Обход будет примерно таким:
#54 by DCKiller
Как она в запросе вид контрагента получит?
#55 by Остап Сулейманович
В запросе ОНО уже есть :
#56 by DCKiller
Этот реквизит содержит значение справочника юридические или физ. лица, но не их вид.
#57 by Остап Сулейманович
Что есть "значение справочника юридические или физ. лица"? Ссылка на элемент справочника соответсвующего вида? Так она вот : "Контрагент         = Регистр.Продажи.Покупатель". А в реквизите "ЮрФизЛицо" именно вид.
#58 by DCKiller
Покупатель - это контрагент (вид "Справочник.Контрагенты"), ЮрФизЛицо  у покупателя - это значение справочника "ЮрЛица" или "ФизЛица" в зависимости от того, что там выбрано.
#59 by Остап Сулейманович
Классика жанра : в реквизите ЮрФизЛицо хранится значение перечисления, которое и обозначает вид контрагента. И группировка по этому реквизиту и даст то, что нужно ТС.
#60 by DCKiller
Может быть. Не помню, забыл уже, как оно там в семерке. а перед глазами нет. Ну, если так, тогда вообще все просто. Но что-то мне подсказывает, что нет...
#61 by Mary01
нет ее. потому что вот эта строка: |ВидКонтрагента         = Регистр.Продажи.Покупатель.ЮрФизЛицо - это не вид контрагента, а ссылка на справочник контрагенты. чтобы получить вид, надо так: |ВидКонтрагента         = Регистр.Продажи.Покупатель.ЮрФизЛицо.Вид - но в запросе Вид не работает.
#62 by Mary01
да, именно так
#63 by Масянька
В ТиС : справочник Контрагенты - ЮрФизЛицо = справочник.
#64 by DCKiller
Тады -
#65 by Остап Сулейманович
А ну-ка скрин из конфигуратора со свойствами реквизита - в студию.
#66 by Mary01
Нет. Допустим, у нас есть контрагент Иванов А.А., у него в реквизите ЮрФизЛицо содержится ссылка на элемент справочника ФизЛица с таким же наименованием - Иванов А.А.. Или, например, есть контрагент ООО Сфера, у этого контрагента в реквизите ЮрФизЛицо - ссылка на элемент справочника ЮрЛица с наименованием ООО Сфера.
#67 by Провинциальный 1сник
Черный запрос черной ночью придет за тобой, одинесник. Не связывайся с ними. Прямые запросы - это православно.
#68 by Остап Сулейманович
Тогда выполнить запрос без сортировки. Выгрузить в таблицу значений. Добавить туда колонку "видКонтрагента". Заполнить ее. посортировать по ней. И тогда уже выводить в отчет.
#69 by Остап Сулейманович
+ В запросе вид справочника не получить.
#70 by Mary01
)))
#71 by Mary01
в цитаты ))
#72 by Mary01
сюда скрин не вставляется. В свойствах реквизита ЮрФизЛицо указан тип "справочник" - т.е. конкретный справочник не указан
#73 by Ёпрст
В Чорном запросе можно только сделать упорядочивание по виду, группировку не сделаешь. Т.е при обходе группировки по клиентосу, будут к примеру, в начале "клиентосы", потом "сотруднички и физ лица", так тебе покатит ?
#74 by Ёпрст
ну и признак можно получить в переменной, что это. Но группировку не слепишь.
#75 by Mary01
да, пусть они будут вначале, а те в конце - без разницы, но группировка должна быть, и она должна быть сверху. т.е. - написано: юр.лица , тут же сумма общая по ним, а уже ниже список этих самых юр.лиц. а ниже: физ.лица - и общая сумма по ним, а уже ниже сами физлица.
#76 by Duke1C
"т.е. - написано: юр.лица , тут же сумма общая по ним" - ну дык сумму можно при выводе контров посчитать, а потом, как вид контрагента изменится, поставить в нужную ячейку таблицы - дешево и сердито. Если итоговых сумм несколько используй массив.
#77 by Ёпрст
#78 by Mary01
можно, но как я пойму что за ячейка?
#79 by Ёпрст
Просто запоминай адрес области при выводе секции. Потом, через текст подставишь итоговые значения
#80 by Mary01
а как определить имя текущей (или только что выведенной) области
#81 by Ёпрст
запоминай Таб.ВысотаТаблицы в переменной..
#82 by Ёпрст
потом через Таб.Область(СохраненнаяВысота,НужныйСтолбец,СохраненнаяВысота,НужныйСтолбец).Текст = "<Итоговые показатели>"; присвоишь значения
#83 by Масянька
Уже бы не мучал человека :( Дал бы примерчик с индексированной таблицей. ИМХО, то, что нужно.
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С