Всем, добрый день!
Я только только начала работать с 1с, опыта и практики нет.
Очень нужна помощь составить правильно запрос, чтобы результат выводился без повторений по полю КонтактноеЛицо.
Необходимо вывести контактных лиц организации, у которых код функции один из трех 000000020 или 000000017 или 000000018,
но у некоторых контактных лиц может быть указано несколько кодов из перечисленных, соответственно выводятся контактные лица с повтором.
ЗапросКонтактЛицо = Новый Запрос("ВЫБРАТЬ
| КартаПредприятияФункции.Функция.Код КАК Код,
| КартаПредприятия.Владелец,
| КартаПредприятия.Наименование КАК КонтактноеЛицо,
| КартаПредприятияФункции.Функция.Наименование КАК Функции,
| КартаПредприятия.Должность КАК Должность
|ИЗ
| Справочник.КартаПредприятия.Функции КАК КартаПредприятияФункции
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КартаПредприятия КАК КартаПредприятия
| ПО КартаПредприятияФункции.Ссылка = КартаПредприятия.Ссылка
|ГДЕ
| КартаПредприятия.Владелец = &Владелец
| И (КартаПредприятияФункции.Функция.Код = ""000000020""
| ИЛИ КартаПредприятияФункции.Функция.Код = ""000000017""
| ИЛИ КартаПредприятияФункции.Функция.Код = ""000000018"")
| И (НЕ КартаПредприятия.Состояние В (&НеАктивные))");
НеАктивные = новый массив;
НеАктивные.Добавить(Перечисления.СостояниеКонтактныхЛиц.Повтор);
НеАктивные.Добавить(Перечисления.СостояниеКонтактныхЛиц.ВДекретномОтпуске);
НеАктивные.Добавить(Перечисления.СостояниеКонтактныхЛиц.Уволен);
ЗапросКонтактЛицо.УстановитьПараметр("НеАктивные",НеАктивные);
ЗапросКонтактЛицо.УстановитьПараметр("Владелец",резОрг.Контрагент);
Я только только начала работать с 1с, опыта и практики нет.
Очень нужна помощь составить правильно запрос, чтобы результат выводился без повторений по полю КонтактноеЛицо.
Необходимо вывести контактных лиц организации, у которых код функции один из трех 000000020 или 000000017 или 000000018,
но у некоторых контактных лиц может быть указано несколько кодов из перечисленных, соответственно выводятся контактные лица с повтором.
ЗапросКонтактЛицо = Новый Запрос("ВЫБРАТЬ
| КартаПредприятияФункции.Функция.Код КАК Код,
| КартаПредприятия.Владелец,
| КартаПредприятия.Наименование КАК КонтактноеЛицо,
| КартаПредприятияФункции.Функция.Наименование КАК Функции,
| КартаПредприятия.Должность КАК Должность
|ИЗ
| Справочник.КартаПредприятия.Функции КАК КартаПредприятияФункции
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КартаПредприятия КАК КартаПредприятия
| ПО КартаПредприятияФункции.Ссылка = КартаПредприятия.Ссылка
|ГДЕ
| КартаПредприятия.Владелец = &Владелец
| И (КартаПредприятияФункции.Функция.Код = ""000000020""
| ИЛИ КартаПредприятияФункции.Функция.Код = ""000000017""
| ИЛИ КартаПредприятияФункции.Функция.Код = ""000000018"")
| И (НЕ КартаПредприятия.Состояние В (&НеАктивные))");
НеАктивные = новый массив;
НеАктивные.Добавить(Перечисления.СостояниеКонтактныхЛиц.Повтор);
НеАктивные.Добавить(Перечисления.СостояниеКонтактныхЛиц.ВДекретномОтпуске);
НеАктивные.Добавить(Перечисления.СостояниеКонтактныхЛиц.Уволен);
ЗапросКонтактЛицо.УстановитьПараметр("НеАктивные",НеАктивные);
ЗапросКонтактЛицо.УстановитьПараметр("Владелец",резОрг.Контрагент);
По теме из базы знаний
Найденные решения
(1)Сразу несколько советов новичку:
1) используйте РАЗРЕШЕННЫЕ
2) не используйте ИЛИ, лучше в список значений загнать
3) не используйте Ссылка.Реквизит.Реквизит...Реквизит
Почему НеАктивные = Новый Массив; а Коды через ИЛИ?
И первый запрос надо во Временную таблицу поместить и проиндексировать по КартаПредприятияФункция.Ссылка.
Во 2 запросе - кроме тех условий + ...Владелец В (ВТ.КПФ.ССылка), ну и в Выбрать ... МАКСИМУМ(ВТ.КПФ.Функция.Код) с группировкой по другим полям.
1) используйте РАЗРЕШЕННЫЕ
2) не используйте ИЛИ, лучше в список значений загнать
3) не используйте Ссылка.Реквизит.Реквизит...Реквизит
Почему НеАктивные = Новый Массив; а Коды через ИЛИ?
И первый запрос надо во Временную таблицу поместить и проиндексировать по КартаПредприятияФункция.Ссылка.
Во 2 запросе - кроме тех условий + ...Владелец В (ВТ.КПФ.ССылка), ну и в Выбрать ... МАКСИМУМ(ВТ.КПФ.Функция.Код) с группировкой по другим полям.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3)
Правильно, потому что функции разные.
Определите, какая из этих функций вам нужна в конечном итоге и примените агрегирующую функцию МИНИМУМ/МАКСИМУМ к коду/наименованию функции
у контактного лица Ивановой установлен код функции 000..20 и 00..18, Выводит две строки Иванова 00..20 и Иванова 00..18
Правильно, потому что функции разные.
Определите, какая из этих функций вам нужна в конечном итоге и примените агрегирующую функцию МИНИМУМ/МАКСИМУМ к коду/наименованию функции
(1)Сразу несколько советов новичку:
1) используйте РАЗРЕШЕННЫЕ
2) не используйте ИЛИ, лучше в список значений загнать
3) не используйте Ссылка.Реквизит.Реквизит...Реквизит
Почему НеАктивные = Новый Массив; а Коды через ИЛИ?
И первый запрос надо во Временную таблицу поместить и проиндексировать по КартаПредприятияФункция.Ссылка.
Во 2 запросе - кроме тех условий + ...Владелец В (ВТ.КПФ.ССылка), ну и в Выбрать ... МАКСИМУМ(ВТ.КПФ.Функция.Код) с группировкой по другим полям.
1) используйте РАЗРЕШЕННЫЕ
2) не используйте ИЛИ, лучше в список значений загнать
3) не используйте Ссылка.Реквизит.Реквизит...Реквизит
Почему НеАктивные = Новый Массив; а Коды через ИЛИ?
И первый запрос надо во Временную таблицу поместить и проиндексировать по КартаПредприятияФункция.Ссылка.
Во 2 запросе - кроме тех условий + ...Владелец В (ВТ.КПФ.ССылка), ну и в Выбрать ... МАКСИМУМ(ВТ.КПФ.Функция.Код) с группировкой по другим полям.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот