Здравствуйте! у меня такая ситуация. Есть определенный набор данных в массиве, и есть определенные значения, которые получились в результате запроса. Мне надо найти общие, подскажите как мне это реализовать?

```1c
    Запрос.УстановитьПараметр("Ссылка", Ссылка);

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

    "ВЫБРАТЬ РАЗЛИЧНЫЕ
    | НачислениеЗарплатыНачисления.Сотрудник КАК Сотрудник1,
    | РаботаСотрудниковНаОбъектеДанные.Сотрудник
    |ИЗ
    | Документ.РаботаСотрудниковНаОбъекте.Данные КАК РаботаСотрудниковНаОбъектеДанные
    | ЛЕВОЕ СОЕДИНЕНИЕ Документ.НачислениеЗарплаты.Начисления КАК НачислениеЗарплатыНачисления
    | ПО (НачислениеЗарплатыНачисления.Сотрудник.Ссылка = РаботаСотрудниковНаОбъектеДанные.Сотрудник.Ссылка)
    |ГДЕ
    | НачислениеЗарплатыНачисления.Ссылка = &Ссылка
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    | НачислениеЗарплатыНачисления.Сотрудник
    |ИЗ
    | Документ.НачислениеЗарплаты.Начисления КАК НачислениеЗарплатыНачисления
    |ГДЕ
    | НачислениеЗарплатыНачисления.Ссылка = &Ссылка";

    Результат = Запрос.ВыполнитьПакет();

    Выборка1 = Результат[0].Выбрать();

    Выборка2 = Результат[1].Выбрать();

    //Сообщить (Выборка1.Сотрудник);

    Сотрудники = Новый Массив;

    Пока Выборка2.Следующий() Цикл

    Сотрудники.Добавить(Выборка2.Сотрудник);

    КонецЦикла;
```

Выборка2.Сотрудник это массив где есть все данные и мне нужна проверить элементы выборки1 в выборке 2 а я не знаю как это сделать....подскажите пожалуйста.
---
Тогда как я писал выше, используйте внутреннее соединение:

```1c
    "ВЫБРАТЬ РАЗЛИЧНЫЕ
    | НачислениеЗарплатыНачисления.Сотрудник КАК Сотрудник1,
    | РаботаСотрудниковНаОбъектеДанные.Сотрудник
    |ИЗ
    | Документ.РаботаСотрудниковНаОбъекте.Данные КАК РаботаСотрудниковНаОбъектеДанные
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.НачислениеЗарплаты.Начисления КАК НачислениеЗарплатыНачисления
    | ПО (НачислениеЗарплатыНачисления.Сотрудник= РаботаСотрудниковНаОбъектеДанные.Сотрудник)
    |ГДЕ
    | НачислениеЗарплатыНачисления.Ссылка = &Ссылка
```

Никакие массивы не нужны, как и пакетный запрос.
---
обе таблицы во временные, если большие то индекс по полю соединения

 Из ВтТабл1 КАК ВтТабл1
   внутреннее соединение ВтТабл2 КАК ВтТабл2
   По ...
---
Если в результате нужны только общие то передавай свой массив в качестве параметра в запрос. И получишь результат только по тем записям что есть в массиве и в результате запроса.
---
а не подскажете как передать массив в параметр запроса? просто я могу задать их в конструкторе запросов а как задать массив как параметр не догоняю
---
Передать запросто, Запрос.УстановитьПараметр("МойПараметр", Массив).
Только ведь у вас массив и так в запросе получается? Тогда вам это не нужно делать.
---
вот я и решил сделать запрос который находит всех сотрудников в документе начисление зп и всех сотрудников в новом документе и выбрает сотрудников которые в новом документе из тех что есть в документе начисление зп
---
Тогда как я писал выше, используйте внутреннее соединение:

```1c
    "ВЫБРАТЬ РАЗЛИЧНЫЕ
    | НачислениеЗарплатыНачисления.Сотрудник КАК Сотрудник1,
    | РаботаСотрудниковНаОбъектеДанные.Сотрудник
    |ИЗ
    | Документ.РаботаСотрудниковНаОбъекте.Данные КАК РаботаСотрудниковНаОбъектеДанные
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.НачислениеЗарплаты.Начисления КАК НачислениеЗарплатыНачисления
    | ПО (НачислениеЗарплатыНачисления.Сотрудник= РаботаСотрудниковНаОбъектеДанные.Сотрудник)
    |ГДЕ
    | НачислениеЗарплатыНачисления.Ссылка = &Ссылка
```

Никакие массивы не нужны, как и пакетный запрос.
---
блин а ведь точно тогда он выберет тех которые используется в обоих документах. спасибо большое.
---
```1c
    ВЫБРАТЬ
    Таблица1.Сотрудник
    ПОМЕСТИТЬ Таблица1
    ИЗ
    Таблица1 КАК Таблица1
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    Таблица2.Сотрудник
    ПОМЕСТИТЬ Таблица2
    ИЗ
    Таблица2 КАК Таблица2
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    Таблица1.Сотрудник КАК СотрудникТаблица1,
    Таблица2.Сотрудник КАК СотрудникТаблица2
    ИЗ
    Таблица1 КАК Таблица1
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ Таблица2 КАК Таблица2
    ПО Таблица1.Сотрудник = Таблица2.Сотрудник
```

Соответственно меняешь в тексте Таблица 1 и Таблица 2 на свои значения.
---
Всё можно сделать в самом запросе, просто в первом запросе вашего пакета меняете левое соединение на внутренее. Но если запрос менять неудобно, то можно загнать выборку 2 тоже в массив и сравнить два массива:

```1c
    Функция НайтиОбщиеЭлементыМассивов(Массив1, Массив2)
    МассивОбщихЭлементов = Новый Массив;
    Для каждого элемент из Массив1 цикл
    если Массив2.найти(элемент)<>неопределено тогда
    МассивОбщихЭлементов.добавить(элемент);
    конецесли;
    КонецЦикла;
    возврат МассивОбщихЭлементов;
    КонецФункции
```
---
попробовал но в консоли запросов результат один и тот же хотя он видимо и не должен меняться видимо)
---
А что вы вообще хотите получить? Зачем всё это с пакетными запросами, массивами и т.п? Как у вас задача поставлена?
---
Задача там непростая долго объяснять но сейчас именно у меня есть сотрудники которым начислена зп, и есть сотрудники с определенными показателями (это отдельно созданный документ, проведен по отдельному регистру) так вот мне нужно выбрать этих сотрудников с определенными показателями из списка всех сотрудников.
---
Всех или указанных в определенном документе? Вы же передаете в запрос параметр - ссылку на документ начисление зарплаты.
---
И вот тут по моему ошибочка:
ПО (НачислениеЗарплатыНачисления.Сотрудник.Ссылка = РаботаСотрудниковНаОбъектеДанные.Сотрудник.Ссылка)

У вас разве сотрудник это не ссылка сама по себе?
---
а это играет большое значение? просто тут у меня тоже есть недопонимания.
---
Да, это ухудшает производительность запроса. Старайтесь не писать .ссылка от полей, которые и так ссылки.
---
спасибо, буду знать но смысл же идет верный? сотрудник и сотрудник.ссылка вроде одно и то же?
---
Смысл то верный, но есть парочка НО:
1) если со временем база будет расти, такие запросы начнут сильно влиять на скорость работы. А если это в какой-то транзакции, например в процедуре проведения, то пойдут избыточные блокировки, ошибки отказы в проведении документов по причине превышения времени на блокировке. Т.е. это будет у пользователей выглядеть как ошибки проведения в документах. Такие явления носят лавинообразный характер как правило, т.к. об одну зависшую транзакцию начинают "спотыкаться" остальные. Начальство такие вещи будут нервировать.
2) если вам придется трудоустраиваться или сдавать экзамен на специалиста по платформе, то с такими запросами вас запросто могут завернуть:)
---
буду знать) спасибо)
---
Одно и то же. Только программа при обращении через точку к полю делает не явное левое соединение. И к ссылке ещё раз присоединяет ссылку.
---
Спасибо за пояснение, вроде все понятно.