Здравствуйте!
Подскажите, как обратиться ко всем элементам справочника 1с 8.2?
Есть справочник Контрагенты. Нужно чтобы программа анализировала все элементы этого справочника.
---
В вашем случае должен сработать вариант:

```1c
    ГДЕ
    ВЫБОР КОГДА &Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
    ТОГДА ИСТИНА
    ИНАЧЕ ВзаиморасчетыСКонтрагентамиОстатки.Контрагент = &Контрагент
    И КВ_ДополнениеКДоговору.Контрагент = &Контрагент
    КОНЕЦ
```
---
Это азы программирования. Дай угадаю: школьное задание ? :)
---
Постановка задачи конечно странная, но попробуйте использовать запрос.
---
Не пугайте человека, зачем ему сразу запрос. Обойти все элементы справочника можно используя встроенные методы платформы:

```1c
    Выборка = Справочники.Контрагенты.Выбрать();
    Пока Выборка.Следующий() Цикл
    Объект = Выборка.ПолучитьОбъект();
    Объект.Наименование = "Новое наименование";
    Объект.Записать();
    КонецЦикла;
```
---
один школьник спросил - второй школьник ответил
ЗАПРОС, батенька, только ЗАПРОС
сгенери себе в Контрагенты 20 000 контрагентов (базе 10 лет) и "перебирай" своей выборкой своим подход на своем "сервере" в лучшем случае и3-процессором
---
Не нужно на начинающих высыпать сразу кучу информации. Обучению это не поможет. Впрочем, это дело ТС.

P.S. Не пойму в чем разница между запросом, который выбирает все элементы справочника (как и указанно в задании) и методом Выбрать()? Ведь он так же преобразуется к запросу. А если нет разницы, в чем соль вашего замечания?
---
мои ГЛАЗАААААА, они кровоточааааат. КАК ЭТО РАЗВИДЕТЬ
---
```1c
    КонтрагентПусто = Справочники.Контрагенты.ПустаяСсылка();
    ...
    Если Контрагент = КонтрагентПусто тогда
    пр=0;
    Запрос.Текст = СтрЗаменить(Запрос.Текст,"ГДЕ ВзаиморасчетыСКонтрагентамиОстатки.Контрагент = &Контрагент И КВ_ДополнениеКДоговору.Контрагент = &Контрагент",");

    Иначе
    пр = 1;
    КонецЕсли;
```

Т.е. надо в запросе, чтобы если на форме выбран Контрагент, запрос отработал только по нему, а если нет, то по всем Контрагентам. Данная конструкция не работает по всем , а по одному выбирает
---
бомба!!!!

(5) КонтрагентПусто = Справочники.Контрагенты.ПустаяСсылка(); ... Если Контрагент = КонтрагентПусто тогда

рассмешил....ты это к чему?
Если Контрагент = Справочники.Контрагенты.ПустаяСсылка()
---
```1c
    КонтрагентПусто = Справочники.Контрагенты.ПустаяСсылка();

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

    Запрос.Текст =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    | ВзаиморасчетыСКонтрагентамиОстатки.Контрагент КАК Контрагент,
    | ПРЕДСТАВЛЕНИЕ(ВзаиморасчетыСКонтрагентамиОстатки.Контрагент),
    | ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента КАК Договор,
    | ПРЕДСТАВЛЕНИЕ(ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента) КАК ДоговорПредставление,
    | ВзаиморасчетыСКонтрагентамиОстатки.СуммаУпрОстаток КАК СуммаУпр,
    | ЗначенияСвойствОбъектов.Значение КАК Ответственный,
    | ЗначенияСвойствОбъектов.Значение.Родитель КАК Служба,
    | КВ_ДополнениеКДоговору.СрокиИсполнения.(
    | Ссылка,
    | НомерСтроки,
    | Срок,
    | Процент,
    | Неактивность
    | ),
    | КВ_ДополнениеКДоговору.ПроцентнаяСтавкаШтрафа,
    | КВ_ДополнениеКДоговору.ВременнаяЕдиницаРасчета,
    | ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента.Комментарий КАК Комментарий,
    | ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента.Код КАК ДоговорКод,
    | ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента.Номер КАК ДоговорНомер,
    | ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента.Наименование КАК ДоговорНаименование,
    | ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента.Дата КАК ДоговорДата
    |{ВЫБРАТЬ
    | Контрагент.*,
    | Договор.*,
    | СуммаУпр}
    |ИЗ
    | РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&ДатаКон, {(Контрагент).* КАК Контрагент, (Сделка).* КАК Сделка, (ДоговорКонтрагента).* КАК ДоговорКонтрагента, (Организация).* КАК Организация}) КАК ВзаиморасчетыСКонтрагентамиОстатки
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&ДатаКон, {(Контрагент).* КАК Контрагент, (Сделка).* КАК Сделка, (ДоговорКонтрагента).* КАК ДоговорКонтрагента, (Организация).* КАК Организация}) КАК ВзаиморасчетыСКонтрагентамиОстаткиНужногоТипа
    | ПО ВзаиморасчетыСКонтрагентамиОстатки.Контрагент = ВзаиморасчетыСКонтрагентамиОстаткиНужногоТипа.Контрагент
    | И ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента = ВзаиморасчетыСКонтрагентамиОстаткиНужногоТипа.ДоговорКонтрагента
    | И (ВЫБОР
    | КОГДА &ПереключательЗадолженность = 1
    | ТОГДА ВзаиморасчетыСКонтрагентамиОстаткиНужногоТипа.СуммаУпрОстаток > 0
    | КОГДА &ПереключательЗадолженность = 2
    | ТОГДА ВзаиморасчетыСКонтрагентамиОстаткиНужногоТипа.СуммаУпрОстаток < 0
    | ИНАЧЕ ИСТИНА
    | КОНЕЦ)
    | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КВ_ДополнениеКДоговору КАК КВ_ДополнениеКДоговору
    | ПО ВзаиморасчетыСКонтрагентамиОстатки.Контрагент = КВ_ДополнениеКДоговору.Контрагент
    | И ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента = КВ_ДополнениеКДоговору.Договор
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
    | ПО ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента = ЗначенияСвойствОбъектов.Объект
    |ГДЕ
    | ВзаиморасчетыСКонтрагентамиОстатки.Контрагент = &Контрагент
    | И КВ_ДополнениеКДоговору.Контрагент = &Контрагент
    |{ГДЕ
    | ВзаиморасчетыСКонтрагентамиОстатки.Контрагент.* КАК Контрагент,
    | ВзаиморасчетыСКонтрагентамиОстатки.Организация.* КАК Организация,
    | ВзаиморасчетыСКонтрагентамиОстатки.Сделка.* КАК Сделка,
    | ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента.* КАК ДоговорКонтрагента,
    | ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток КАК СуммаВзаиморасчетов,
    | ВзаиморасчетыСКонтрагентамиОстатки.СуммаУпрОстаток КАК СуммаУпр}
    |{УПОРЯДОЧИТЬ ПО
    | Контрагент.*,
    | Договор.*,
    | СуммаУпр}
    |ИТОГИ
    | СУММА(СуммаУпр)
    |ПО
    | Контрагент
    |{ИТОГИ ПО
    | Контрагент.*,
    | Договор.*}";
    Запрос.УстановитьПараметр("ПереключательЗадолженность", ПереключательЗадолженность);
    Запрос.УстановитьПараметр("ДатаКон", КонецДня(ДатаКон));
    Запрос.УстановитьПараметр("Контрагент", Контрагент);
    Запрос.УстановитьПараметр("КонтрагентПусто",КонтрагентПусто);
    Запрос.УстановитьПараметр("Ответственный", Ответственный);

    Если Контрагент = КонтрагентПусто тогда
    пр=0;
    Запрос.Текст = СтрЗаменить(Запрос.Текст,"ГДЕ ВзаиморасчетыСКонтрагентамиОстатки.Контрагент = &Контрагент И КВ_ДополнениеКДоговору.Контрагент = &Контрагент","ГДЕ значение(ВзаиморасчетыСКонтрагентамиОстатки.Контрагент) = &КонтрагентПусто И Значение(КВ_ДополнениеКДоговору.Контрагент) = &КонтрагентПусто");

    Иначе
    пр = 1;
    КонецЕсли;
```
---
Здесь используешь конструкции построителя запросов и одновременно пытаешься текст запроса сформировать динамически. Выбери что-нибудь одно.
---
```1c
    ВЫБРАТЬ
    Контрагенты.Ссылка
    ИЗ
    Справочник.Контрагенты КАК Контрагенты
    ГДЕ Контрагенты.Ссылка = &Контрагент
```

Если НЕ ЗначениеЗаполнено(ЭлементыФормы.Контрагент.Значение) Тогда
СтрЗаменить(Запрос.Текст, "|ГДЕ Контрагенты.Ссылка = &Контрагент", "")

кури ЖКК
---
Если Контрагент может принимать значение непределено или пустая ссылка или конкретное значение тогда так:

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

    Запрос.УстановитьПараметр("Контрагент",Контрагент);
    Результат=Запрос.Выполнить();
```
---
В вашем случае должен сработать вариант:

```1c
    ГДЕ
    ВЫБОР КОГДА &Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
    ТОГДА ИСТИНА
    ИНАЧЕ ВзаиморасчетыСКонтрагентамиОстатки.Контрагент = &Контрагент
    И КВ_ДополнениеКДоговору.Контрагент = &Контрагент
    КОНЕЦ
```
---
ГДЕ
ВЫБОР КОГДА &Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
ТОГДА ИСТИНА
ИНАЧЕ ВзаиморасчетыСКонтрагентамиОстатки.Контрагент = &Контрагент
И КВ_ДополнениеКДоговору.Контрагент = &Контрагент
КОНЕЦ
Спасибо огромное! Это решение! Все работает!
---
Рад был помочь.
Когда-то и мне было трудно найти красивое решение в похожей ситуации.
---
соглашусь, красивое решение!
---
Изменения текста запроса программным путем следует избегать.
Позже гораздо труднее разбираться в таких "нетленках".