Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> УПП 8.2 Запрос В Иерархии          
alexandr_f Подменю пользователя
сообщение 29.11.16, 11:06
Сообщение #1

Завсегдатай
****
Группа: Пользователи
Сообщений: 192
Из: Украина
Спасибо сказали: 3 раз
Рейтинг: 3

УПП 8.2
Есть справочник спецодежды - наименование, табличная часть ДолжностиОрганизаций.
Но для некоторых позиций ТЧ нужно сделать отбор только отдельным подразделениям.
Сделал в ТЧ ссылку на справочник СИЗТребования с ТЧ Подразделения.
Вся проблема оказалась в том что Справочник Подразделений иерархический.
Мне надо выбрать все подразделения соответствующие ТЧ СИЗТребования с сохраниением ссылки на нее


ВЫБРАТЬ
    СотрудникиОрганизаций.ТекущаяДолжностьОрганизации КАК ТекущаяДолжностьОрганизации,
    СотрудникиОрганизаций.ТекущееПодразделениеОрганизации КАК ТекущееПодразделениеОрганизации
ИЗ
    Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
ГДЕ
    СотрудникиОрганизаций.ТекущееПодразделениеОрганизации В ИЕРАРХИИ
            (ВЫБРАТЬ
                СИЗСпецУсловияПодразделения.ПодразделенияОрганизаций
            ИЗ
                Справочник.СИЗСпецУсловия.Подразделения КАК СИЗСпецУсловияПодразделения)

УПОРЯДОЧИТЬ ПО
    ТекущееПодразделениеОрганизации,
    ТекущаяДолжностьОрганизации



В этом случае теряется СИЗСпецУсловияПодразделения.ПодразделенияОрганизаций
КАК мне ее вытащить. По что в подзапросе

sava1 Подменю пользователя
сообщение 29.11.16, 11:10
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

А по-человечески объяснить - что надо получить?

alexandr_f Подменю пользователя
сообщение 29.11.16, 11:17
Сообщение #3

Завсегдатай
****
Группа: Пользователи
Сообщений: 192
Из: Украина
Спасибо сказали: 3 раз
Рейтинг: 3

sava1 @ Сегодня, 11:10 * ,
Мне надо вытащить значение из подзапроса
ВЫБРАТЬ
                СИЗСпецУсловияПодразделения.ПодразделенияОрганизаций
            ИЗ
                Справочник.СИЗСпецУсловия.Подразделения КАК СИЗСпецУсловияПодразделения

ИЗСпецУсловияПодразделения.ПодразделенияОрганизаций - которое и совпало с СотрудникиОрганизаций.ТекущееПодразделениеОрганизации
Может надо как-то его переделать.
Просто по этой ссылке мне потом связывать дальше

sava1 Подменю пользователя
сообщение 29.11.16, 12:18
Сообщение #4

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

Цитата(alexandr_f @ 29.11.16, 11:06) *
ВЫБРАТЬ     СотрудникиОрганизаций.ТекущаяДолжностьОрганизации КАК ТекущаяДолжностьОрганизации, 
    СотрудникиОрганизаций.ТекущееПодразделениеОрганизации КАК ТекущееПодразделениеОрганизации
    ИЗ     Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций

   ЛЕВОЕ СОЕДИНЕНИЕ (
         ВЫБРАТЬ   СИЗСпецУсловияПодразделения.ПодразделенияОрганизаций,
                              // тут еще что-то
             ИЗ                 Справочник.СИЗСпецУсловия.Подразделения КАК СИЗСпецУсловияПодразделения
         ) как Табл ПО Табл.ПодразделенияОрганизаций = СотрудникиОрганизаций.ТекущееПодразделениеОрганизации


Сообщение отредактировал Vofka - 29.11.16, 13:05

Vladal Подменю пользователя
сообщение 29.11.16, 13:51
Сообщение #5

Оратор
Иконка группы
Группа: Местный
Сообщений: 365
Из: Slovensko
Спасибо сказали: 78 раз
Рейтинг: 0

Вот не надо так делать - соединять с подзапросом:
ЛЕВОЕ СОЕДИНЕНИЕ (

         ВЫБРАТЬ   СИЗСпецУсловияПодразделения.ПодразделенияОрганизаций,
                              // тут еще что-то
             ИЗ                 Справочник.СИЗСпецУсловия.Подразделения КАК СИЗСпецУсловияПодразделения
         ) как Табл ПО Табл.ПодразделенияОрганизаций = СотрудникиОрганизаций.ТекущееПодразделениеОрганизации


Надо, наверно, сделать так?
ВЫБРАТЬ
    СотрудникиОрганизаций.ТекущаяДолжностьОрганизации КАК ТекущаяДолжностьОрганизации,
    СотрудникиОрганизаций.ТекущееПодразделениеОрганизации КАК ТекущееПодразделениеОрганизации,
    СИЗСпецУсловияПодразделения.*

ИЗ
    Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
    левое соединение Справочник.СИЗСпецУсловия.Подразделения КАК СИЗСпецУсловияПодразделения
        по СИЗСпецУсловияПодразделения.ПодразделенияОрганизаций = СотрудникиОрганизаций.ТекущееПодразделениеОрганизации
И получится табличка с колонками

ТекущаяДолжностьОрганизации, ТекущееПодразделениеОрганизации, и еще что-то , что можно вытянуть из таблицы Справочник.СИЗСпецУсловия. Если поместить этот запрос в конструктор запросов, то он вместо звездочки вытянет все поля и на вкладке ОбъединенияПсевдонимы можно посмотреть их имена.

sava1 Подменю пользователя
сообщение 29.11.16, 14:02
Сообщение #6

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2684
Из: Проскуров
Спасибо сказали: 678 раз
Рейтинг: 656.7

Цитата(Vladal @ 29.11.16, 13:51) *
Вот не надо так делать - соединять с подзапросом:

А откуда Вы знаете ЧТО и КАК будет выбираться из того справочника ?

alexandr_f Подменю пользователя
сообщение 29.11.16, 15:11
Сообщение #7

Завсегдатай
****
Группа: Пользователи
Сообщений: 192
Из: Украина
Спасибо сказали: 3 раз
Рейтинг: 3

Все дело в иерархии. Если ссылки на подразделения совпадают (это если есть подчиненние подразделения) , то все хорошо , а если нет то и ссылки на СИЗСпецУсловияПодразделения я не получаю. Хуже всего я не понимаю как получить именно из ТЧ СИЗСпецУсловияПодразделения ТЧ со всеми подчиненными подразделениями

Запрос = Новый запрос;

Запрос.Текст =

"ВЫБРАТЬ
|    СотрудникиОрганизаций.Ссылка
|ИЗ
|    Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
|ГДЕ
|    СотрудникиОрганизаций.ПодразделениеОрганизации В ИЕРАРХИИ(&Подразделения)";
Запрос.УстановитьПараметр("Подразделения",Подразделение);
alexandr_f @ Сегодня, 14:49 * ,
Где Параметр ТЧ -выборка, а не значение

Vladal Подменю пользователя
сообщение 29.11.16, 16:40
Сообщение #8

Оратор
Иконка группы
Группа: Местный
Сообщений: 365
Из: Slovensko
Спасибо сказали: 78 раз
Рейтинг: 0

Цитата(sava1 @ 29.11.16, 14:02) *
А откуда Вы знаете ЧТО и КАК будет выбираться из того справочника ?
sava1 @ Сегодня, 14:02 * , я не понял Ваш вопрос ко мне, про что и как будет выбираться из справочника, но есть рекомендация [необходимо зарегистрироваться для просмотра ссылки]:
Цитата
Cоединения с подзапросами

Рекомендации
При написании запросов не следует использовать соединения с подзапросами. Следует соединять друг с другом только объекты метаданных или временные таблицы. Если запрос использует соединения с подзапросами, то его следует переписать с использованием временных таблиц.

Если запрос содержит соединения с подзапросами, то это может привести к следующим негативным последствиям:

  • Крайне медленное выполнение запроса при слабой загрузке серверного оборудования. Замедление запроса может быть очень значительным (до нескольких порядков).
  • Нестабильная работа запроса. При некоторых условиях запрос может работать достаточно быстро, при других - очень медленно.
  • Значительная разница по времени выполнения запроса на разных СУБД.
  • Повышенная чувствительность запроса к актуальности и полноте статистик. Сразу после [необходимо зарегистрироваться для просмотра ссылки] запрос может работать быстро, но через некоторое время опять замедлиться.
Пример потенциально опасного запроса, использующего соединение с подзапросом:

ВЫБРАТЬ ...
ИЗ Документ.РеализацияТоваровУслуг
ЛЕВОЕ СОЕДИНЕНИЕ (
   ВЫБРАТЬ ИЗ РегистрСведений.Лимиты
   ГДЕ ...
   СГРУППИРОВАТЬ ПО ...
) ПО ...

и далее по тексту.

Я предложил запрос, в котором будут видны все поля, необходимые для ответа на вопрос в этой теме.
Предостерег от ошибки использвоания подзапроса в левом соединении.

Теперь давайте Вы выволните мой запрос в консоли запросов и скажете, все ли нужные данные теперь показаны и что еще хотелось бы увидеть?

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 22:39
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!