Ребятки, не судите строго, только начал вникать в сию систему. Стараюсь во всём разобраться самостоятельно, но тут произошла какая-то дичь.

После выполнения строки кода

<Выборка = Запрос.Выполнить().Выбрать()>

Чудным образом начинается перебор значений в выборке ВНЕ ЗАВИСИМОСТИ ОТ ТОГО, КАКАЯ СТРОКА В КОДЕ СЛЕДУЮЩАЯ! Т.е., даже не приходится ждать когда выполнится строка <Пока Выборка.Следующий>
Это я при отладке "Выборка.Сотрудник" в Табло отслеживаю. У меня скоро пол головы седой станет, а вторая половина лысой. Вот процедура:

```1c
    Функция МедосмотрСотрудника (Водитель, Грузчик1, Грузчик2, ДатаПрохожденияМО)
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ПрохождениеМедосмотра.Сотрудник,
    | ПрохождениеМедосмотра.ОтметкаОМедосмотре
    |ИЗ
    | РегистрСведений.ПрохождениеМедосмотра КАК ПрохождениеМедосмотра
    |ГДЕ
    | (ПрохождениеМедосмотра.Сотрудник = &Водитель
    | ИЛИ ПрохождениеМедосмотра.Сотрудник = &Грузчик1
    | ИЛИ ПрохождениеМедосмотра.Сотрудник = &Грузчик2)
    | И ПрохождениеМедосмотра.Период = &Период";

    Запрос.УстановитьПараметр("Водитель", Водитель);
    Запрос.УстановитьПараметр("Грузчик1", Грузчик1);
    Запрос.УстановитьПараметр("Грузчик2", Грузчик2);
    Запрос.УстановитьПараметр("Период", НачалоДня(ДатаПрохожденияМО));

    РезМедосм = Истина;

    Выборка = Запрос.Выполнить().Выбрать();

    ЕстьВодитель = Ложь;
    ЕстьГрузчик1 = Ложь;
    ЕстьГрузчик2 = Ложь;

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

    Если Водитель = Выборка.Сотрудник Тогда
    ЕстьВодитель = Истина;
    Если Выборка.ОтметкаОМедосмотре = Перечисления.ОтметкаОМедосмотре.НеДопущен Тогда
    Сообщить( "Сотрудник "+Водитель+
    " не допущен по результатам медосмотра "+Формат(ДатаПрохожденияМО,"ДЛФ=DD") );
    РезМедосм = Ложь;
    КонецЕсли;
    Продолжить;
    КонецЕсли;

    Если Грузчик1 = Выборка.Сотрудник Тогда
    ЕстьГрузчик1 = Истина;
    Если Выборка.ОтметкаОМедосмотре = Перечисления.ОтметкаОМедосмотре.НеДопущен Тогда
    Сообщить( "Грузчик "+Грузчик1+
    " не допущен по результатам медосмотра "+Формат(ДатаПрохожденияМО,"ДЛФ=DD") );
    РезМедосм = Ложь;
    КонецЕсли;
    Продолжить;
    КонецЕсли;

    Если Грузчик2 = Выборка.Сотрудник Тогда
    ЕстьГрузчик2 = Истина;
    Если Выборка.ОтметкаОМедосмотре = Перечисления.ОтметкаОМедосмотре.НеДопущен Тогда
    Сообщить( "Грузчик "+Грузчик2+
    " не допущен по результатам медосмотра "+Формат(ДатаПрохожденияМО,"ДЛФ=DD") );
    РезМедосм = Ложь;
    КонецЕсли;
    Продолжить;
    КонецЕсли;
    КонецЦикла;

    Если Не ЕстьВодитель Тогда
    Сообщить( "Запись о медосмотре водителя "+Водитель+" на "
    +Формат(ДатаПрохожденияМО,"ДЛФ=DD")+" не найдена!");
    РезМедосм = Ложь;
    КонецЕсли;

    Если Не ЕстьГрузчик1 Тогда
    Сообщить( "Запись о медосмотре грузчика "+Грузчик1+" на "
    +Формат(ДатаПрохожденияМО,"ДЛФ=DD")+" не найдена!");
    РезМедосм = Ложь;
    КонецЕсли;

    Если Не ЕстьГрузчик2 Тогда
    Сообщить( "Запись о медосмотре грузчика "+Грузчик2+" на "
    +Формат(ДатаПрохожденияМО,"ДЛФ=DD")+" не найдена!");
    РезМедосм = Ложь;
    КонецЕсли;

    Возврат РезМедосм;
    КонецФункции
```
---
в табло так же выполняется код.
Судя по скрину там есть Выборка.Следующий(). Это равноценно выполнения этого кода в программе в момент остановки в точке отладки. Причем сразу.
---
Так у вас наверное Выборка пустая. Попробуйте сделать так:

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

    Если РезультатВыборки.Пустой() Тогда
    Возврат Новый Структура("Водитель,Грузчик1,Грузчик2",Ложь,Ложь,Ложь);
    КонецЕсли;

    Выборка = РезультатВыборки .Выбрать();

    Пока Выборка.Следующий() Цикл
    // Код обработки
    КонецЦикла;
```
---
РезультатВыборки = Запрос.Выполнить();

Если РезультатВыборки.Пустой() Тогда
Возврат Новый Структура("Водитель,Грузчик1,Грузчик2",Ложь,Ложь,Ложь);
КонецЕсли;

Выборка = РезультатВыборки .Выбрать();

Пока Выборка.Следующий() Цикл
// Код обработки
КонецЦикла;

Спасибо за ответ большое. Но не пустой он. Скрин прилагаю. Из него видно, что результат уже в строке есть, а до Выборка.Следующий ещё скакать и скакать.
---
в табло так же выполняется код.
Судя по скрину там есть Выборка.Следующий(). Это равноценно выполнения этого кода в программе в момент остановки в точке отладки. Причем сразу.
---
ТОЧНО!!! Стоило только убрать из табло Выборка.Следующий(). и всё заработало!))) Спасибище тебе огромное, добрейший человек)) У меня аж отлегло))
---
Значения в табло просто не очищаются с прошлого прохода. Попробуйте вычислить выражение и посмотреть, что в Выборка.Сотрудник.
---
У меня не настолько всё плохо с этим делом))

прилагаю видео, как всё происходит
---
Применяйте полученные знания в будущем. Учитывайте, что есть много случаев, когда просмотр значения выражения в отладке уже сам по себе производит какие-то действия.

Например, нельзя дважды выполнять запрос, помещающий временные таблицы в МенеджерВременныхТаблиц. Если первый раз выполнение запроса произошло в отладчике по команде "Вычислить выражение" до того, как выполнение кода дошло до выполнения запроса, то в этом случае, позже, когда, Вы продолжите отладку и, собственно, выполнение кода дойдет до выполнения запроса, платформа сгенерирует исключение, потому что нельзя два раза помещать в МенеджерВременныхТаблиц временную таблицу с одним и тем же именем.
---
Вот это да! Сегодня для меня это было открытием! Благодарю за подсказку!
(8)
(6)