Всем доброго дня! Подскажите возможно ли соединить в запросе две таблицы по реквизиту через соответствие в таблице значений на Форме ?
---
В конструкторе запросов на закладке Связи 1 соединяете со 2 выбираете поля соединения.
Добавляете новую строку в таблицу, в ней 2 соединяете с 3, выбираете поля соединения.
То есть по очереди.
---
```1c
    ТаблицаПриемник = Новый ТаблицаЗначений;
    ТаблицаПриемник.Колонки.Вставить(0, "Сотрудник ", Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(150)));

    //тут заполняешь типизированную таблицу своими данными

    Запрос = Новый Запрос();
    Запрос.УстановитьПараметр("ТаблицаИсточник" , ТаблицаПриемник );
    Запрос.Текст = "ВЫБРАТЬ
    | ТаблицаИсточник.Сотрудник КАК СотрудникТекст
    |ПОМЕСТИТЬ втТаблицаИсточник
    |ИЗ
    | &ТаблицаИсточник КАК ТаблицаИсточник
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    | втТаблицаИсточник.СотрудникТекст КАК СотрудникТекст,
    | Сотрудники.Ссылка КАК Сотрудник,
    | Сотрудники.Код КАК Код,
    | Сотрудники.ФизическоеЛицо.ДатаРождения КАК ФизическоеЛицоДатаРождения,
    | Сотрудники.ФизическоеЛицо.ИНН КАК ФизическоеЛицоИНН,
    | Сотрудники.ФизическоеЛицо.СтраховойНомерПФР КАК ФизическоеЛицоСтраховойНомерПФР,
    | КадроваяИсторияПрием.Период КАК ДатаПриема,
    | ДОБАВИТЬКДАТЕ(КадроваяИсторияУвольнение.Период, ДЕНЬ, -1) КАК ДатаУвольнения,
    | СогласиеНаОбработкуПерсональныхДанных.Ссылка КАК СогласиеНаОбработкуПерсональныхДанных,
    | ТерриторииСотрудниковСрезПоследних.Территория КАК Территория,
    | ЕСТЬNULL(ТерриторииСотрудниковСрезПоследних.Территория.РайонныйКоэффициентРФ, 0) КАК РайонныйКоэффициентРФ
    |ИЗ
    | втТаблицаИсточник КАК втТаблицаИсточник
    | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК Сотрудники
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников КАК КадроваяИсторияУвольнение
    | ПО Сотрудники.Ссылка = КадроваяИсторияУвольнение.Сотрудник
    | И (КадроваяИсторияУвольнение.ВидСобытия = ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.Увольнение))
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников КАК КадроваяИсторияПрием
    | ПО Сотрудники.Ссылка = КадроваяИсторияПрием.Сотрудник
    | И (КадроваяИсторияПрием.ВидСобытия = ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.Прием))
    | ЛЕВОЕ СОЕДИНЕНИЕ Документ.СогласиеНаОбработкуПерсональныхДанных КАК СогласиеНаОбработкуПерсональныхДанных
    | ПО Сотрудники.ФизическоеЛицо = СогласиеНаОбработкуПерсональныхДанных.Субъект
    | И (СогласиеНаОбработкуПерсональныхДанных.Проведен)
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТерриторииСотрудников.СрезПоследних КАК ТерриторииСотрудниковСрезПоследних
    | ПО Сотрудники.Ссылка = ТерриторииСотрудниковСрезПоследних.Сотрудник
    | ПО втТаблицаИсточник.СотрудникТекст = Сотрудники.Наименование
    |
    |СГРУППИРОВАТЬ ПО
    | втТаблицаИсточник.СотрудникТекст,
    | Сотрудники.Ссылка,
    | Сотрудники.Код,
    | Сотрудники.ФизическоеЛицо.ИНН,
    | Сотрудники.ФизическоеЛицо.СтраховойНомерПФР,
    | Сотрудники.ФизическоеЛицо.ДатаРождения,
    | ДОБАВИТЬКДАТЕ(КадроваяИсторияУвольнение.Период, ДЕНЬ, -1),
    | КадроваяИсторияПрием.Период,
    | СогласиеНаОбработкуПерсональныхДанных.Ссылка,
    | ТерриторииСотрудниковСрезПоследних.Территория,
    | ЕСТЬNULL(ТерриторииСотрудниковСрезПоследних.Территория.РайонныйКоэффициентРФ, 0)";

    ТаблицаИсточник = Запрос.Выполнить().Выгрузить();
```
---
Таблицу соответствия тоже добавляете в запрос, и соединяете эти 3 таблицы.
Таблицу 1 с таблицей соответствия, а таблицу соответствия с таблицей 2.
---
3 таблицы тоже можно соединить... не знал
---
И 4 тоже. Только тссс...
---
буду гуглить )
---
Две таблицы понимаю как соединить , а три как ?
---
В конструкторе запросов на закладке Связи 1 соединяете со 2 выбираете поля соединения.
Добавляете новую строку в таблицу, в ней 2 соединяете с 3, выбираете поля соединения.
То есть по очереди.
---
А как в конструктор запроса ТЗ с формы внешней обработки засунуть ?
---
А как вы две другие таблицы засовываете?
---
типизировать таблицы и передать их в параметры запроса. После чего их выбрать и поместить в виртуальные таблицы и тогда можно их соединять или к ним присоединять таблицы из базы.
---
Это наверное слишком для меня сложно еще ))
---
```1c
    ТаблицаПриемник = Новый ТаблицаЗначений;
    ТаблицаПриемник.Колонки.Вставить(0, "Сотрудник ", Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(150)));

    //тут заполняешь типизированную таблицу своими данными

    Запрос = Новый Запрос();
    Запрос.УстановитьПараметр("ТаблицаИсточник" , ТаблицаПриемник );
    Запрос.Текст = "ВЫБРАТЬ
    | ТаблицаИсточник.Сотрудник КАК СотрудникТекст
    |ПОМЕСТИТЬ втТаблицаИсточник
    |ИЗ
    | &ТаблицаИсточник КАК ТаблицаИсточник
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    | втТаблицаИсточник.СотрудникТекст КАК СотрудникТекст,
    | Сотрудники.Ссылка КАК Сотрудник,
    | Сотрудники.Код КАК Код,
    | Сотрудники.ФизическоеЛицо.ДатаРождения КАК ФизическоеЛицоДатаРождения,
    | Сотрудники.ФизическоеЛицо.ИНН КАК ФизическоеЛицоИНН,
    | Сотрудники.ФизическоеЛицо.СтраховойНомерПФР КАК ФизическоеЛицоСтраховойНомерПФР,
    | КадроваяИсторияПрием.Период КАК ДатаПриема,
    | ДОБАВИТЬКДАТЕ(КадроваяИсторияУвольнение.Период, ДЕНЬ, -1) КАК ДатаУвольнения,
    | СогласиеНаОбработкуПерсональныхДанных.Ссылка КАК СогласиеНаОбработкуПерсональныхДанных,
    | ТерриторииСотрудниковСрезПоследних.Территория КАК Территория,
    | ЕСТЬNULL(ТерриторииСотрудниковСрезПоследних.Территория.РайонныйКоэффициентРФ, 0) КАК РайонныйКоэффициентРФ
    |ИЗ
    | втТаблицаИсточник КАК втТаблицаИсточник
    | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК Сотрудники
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников КАК КадроваяИсторияУвольнение
    | ПО Сотрудники.Ссылка = КадроваяИсторияУвольнение.Сотрудник
    | И (КадроваяИсторияУвольнение.ВидСобытия = ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.Увольнение))
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников КАК КадроваяИсторияПрием
    | ПО Сотрудники.Ссылка = КадроваяИсторияПрием.Сотрудник
    | И (КадроваяИсторияПрием.ВидСобытия = ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.Прием))
    | ЛЕВОЕ СОЕДИНЕНИЕ Документ.СогласиеНаОбработкуПерсональныхДанных КАК СогласиеНаОбработкуПерсональныхДанных
    | ПО Сотрудники.ФизическоеЛицо = СогласиеНаОбработкуПерсональныхДанных.Субъект
    | И (СогласиеНаОбработкуПерсональныхДанных.Проведен)
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТерриторииСотрудников.СрезПоследних КАК ТерриторииСотрудниковСрезПоследних
    | ПО Сотрудники.Ссылка = ТерриторииСотрудниковСрезПоследних.Сотрудник
    | ПО втТаблицаИсточник.СотрудникТекст = Сотрудники.Наименование
    |
    |СГРУППИРОВАТЬ ПО
    | втТаблицаИсточник.СотрудникТекст,
    | Сотрудники.Ссылка,
    | Сотрудники.Код,
    | Сотрудники.ФизическоеЛицо.ИНН,
    | Сотрудники.ФизическоеЛицо.СтраховойНомерПФР,
    | Сотрудники.ФизическоеЛицо.ДатаРождения,
    | ДОБАВИТЬКДАТЕ(КадроваяИсторияУвольнение.Период, ДЕНЬ, -1),
    | КадроваяИсторияПрием.Период,
    | СогласиеНаОбработкуПерсональныхДанных.Ссылка,
    | ТерриторииСотрудниковСрезПоследних.Территория,
    | ЕСТЬNULL(ТерриторииСотрудниковСрезПоследних.Территория.РайонныйКоэффициентРФ, 0)";

    ТаблицаИсточник = Запрос.Выполнить().Выгрузить();
```
---
спасибо, буду изучать.
---
Подскажите, возможно ли получить все движения регистра накопления с условием Таблицей или структурой , а потом разобрать их в цикле ?
---
можно получить выборку движений и по ней сформировать таблицу, а условия задать либо в отборах либо в связях, смотря что именно вы хотите отобрать.