Добрый день, понять не могу делаю выборку из РегСвед
3 поля
у ресурс1 дата
у ресурс 2 строка
у ресурс3
строка сравниваю в итоге по дате даже отбор не проходит а если закоментить то работает только второе условие.

```1c
    ДатаДокумента = Объект.Дата;
    НомерДокумента = Объект.Номер;
    Организация = Объект.Организация;

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ДвиженияУФДляСписания.Период КАК ДатаУФ,
    | ДвиженияУФДляСписания.Ресурс2 КАК НомерУФ,
    | ДвиженияУФДляСписания.Ресурс3 КАК ОрганизацияУФ
    |ИЗ
    | РегистрСведений.ДвиженияУФДляСписания КАК ДвиженияУФДляСписания
    |ГДЕ
    | Ресурс1 = ""+ДатаДокумента+""
    |И
    | Ресурс2 = ""+НомерДокумента+""
    |И
    | Ресурс3 = ""+Организация+"" ";

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

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

    ДатаУФ = Выборка.ДатаУФ;
    НомерУФ = Выборка.НомерУФ;
    ОрганизацияУФ = Выборка.ОрганизацияУФ;

    КонецЦикла;

    Если ДатаУФ = ДатаДокумента Тогда

    Если ТипЗнч(НомерУФ) = ТипЗнч(НомерДокумента) Тогда
    Сообщить("Работает0");
    Если ОрганизацияУФ = Тип("СправочникСсылка.Организации") Тогда
    Сообщить("Работает1");
    ЭтаФорма.Объект.СнятьСЗаписи = Истина;

    КонецЕсли;

    КонецЕсли;

    КонецЕсли;
```

В консоле запросов смотрел там отбор даже в таком
```1c
    Ресурс1 = "02.03.2021 12:47:50"
```
  вариате на проходит почему ?
---
Верните в РС ссылочные типы. Так будет проще и надежнее.
Смотрите сами, пользователи возьмут и переименуют туже Организацию. И все. Данные РС устарели. По наименованию уже не будет искать. А ссылка при этом не поменяется.
---
Вы намеренно делаете как хуже?
Я так понял, что нужно найти по всем этим данным запись в РС, и если найдено, то проставить реквизит в истина.
Тогда так:

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

    Запрос.УстановитьПараметр("ДатаДокумента", Объект.Дата);
    Запрос.УстановитьПараметр("НомерДокумента", Объект.Номер);
    Запрос.УстановитьПараметр("Организация", Объект.Организация);

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

    Если НЕ РезультатЗапроса.Пустой() Тогда
    Объект.ДокументГотовДляРедактирования = Истина;
    КонецЕсли;
```
---
РегСвед Ресурс3 в который записывается Организация имеет тип Строка
Неожиданный поворот. Серьезно? Сами делали регистр? Тренируетесь, или это на живой базе?
Почему не ссылочный тип справочника Организации?

Ну, только для Вас, наверно можно и так:

```1c
    Запрос.УстановитьПараметр("Организация", Объект.Организация.Наименование);
```

Только никому не говорите, что это я так посоветовал.
---
потому что тип ДатаВремя и тип Строка это разные типы. Передавайте в запрос тип дата параметром.

Тоже относится и к параметру Организация.
---
(3) Поправил
пока по двум выборкам
Тоже самое

```1c
    ДатаДокумента = Объект.Дата;
    НомерДокумента = Объект.Номер;
    Организация = Объект.Организация;

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ДвиженияУФДляСписания.Период КАК ДатаУФ,
    | ДвиженияУФДляСписания.Ресурс2 КАК НомерУФ,
    | ДвиженияУФДляСписания.Ресурс3 КАК ОрганизацияУФ
    |ИЗ
    | РегистрСведений.ДвиженияУФДляСписания КАК ДвиженияУФДляСписания
    |ГДЕ
    //| Ресурс1 = ""+ДатаДокумента+""
    //|И
    | Ресурс2 = &ВыбРесурс2
    |И
    | Ресурс3 = &ВыбРесурс3 ";

    Запрос.УстановитьПараметр("ВыбРесурс2", НомерДокумента);
    Запрос.УстановитьПараметр("ВыбРесурс3", Справочники.Организации.НайтиПоНаименованию(Организация));

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

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

    ДатаУФ = Выборка.ДатаУФ;
    НомерУФ = Выборка.НомерУФ;
    ОрганизацияУФ = Выборка.ОрганизацияУФ;

    //Если ДатаУФ = ДатаДокумента Тогда
    Сообщить("Работает");
    Если НомерУФ = НомерДокумента Тогда
    Сообщить("Работает0");
    Если ОрганизацияУФ = Организация Тогда
    Сообщить("Работает1");
    ЭтаФорма.Объект.СнятьСЗаписи = Истина;

    КонецЕсли;

    КонецЕсли;

    //КонецЕсли;

    КонецПроцедуры
```
---
И что вы хотите найти по наименованию в справочнике Организаций, если передаете туда уже готовую ссылку из документа?
И что вы хотите вы получить через точку в выборке, если вы еще даже на первую запись не перешли?

Может все-таки в школу?
---
ну и зачем убрали "Пока Выборка.Следующий() Цикл" ? Выборку обходить нужно.
---
Вы противоречите комментатору с ответом (3) кто прав ?
---
нет, просто Вы не поняли его комментарий. Вы внутри цикла присваиваете одним и тем же переменным значения. Это бессмысленно делать, так как они будут содержать значение только последнего прохода в цикле. Но и не означает нельзя. Все зависит от условий выполнения запроса. Если там только одна порция данных, то можно использовать Если Выборка.Следующий() Тогда. Но можно оставить и через Цикл. Главное понимать что делаете. В любом случае, значение выборки нужно получить только проходом через Выборка.Следующий().
---
Запрос.УстановитьПараметр("ВыбРесурс3", Справочники.Организации.НайтиПоНаименованию(Организация));
Это вообще что?
Запрос.УстановитьПараметр("ВыбРесурс3", Организация);
Или Объект.Организация это Строка?
---
Запрос.УстановитьПараметр("ВыбРесурс3", Справочники.Организации.НайтиПоНаименованию(Организация)); ссылочный тип

пример

```1c
    /// Как передать в запрос параметры ссылочных типов в 1с 8.3, 8.2

    &НаСервере
    Процедура КакПередатьВЗапросПараметрыСсылочныхТиповНаСервере()

    // Сделаем отбор продуктов со сладким вкусом.

    Запрос = Новый Запрос(
    "ВЫБРАТЬ
    | Наименование,
    | Вкус
    |ИЗ
    | Справочник.Номенклатура
    |ГДЕ
    | Вкус = &ВыбВкус"
    );

    Запрос.УстановитьПараметр("ВыбВкус",
    Справочники.Вкусы.НайтиПоНаименованию("Сладкий")
    );

    ВыполнитьЗапросИВывестиНаФорму(Запрос);

    КонецПроцедуры
```
---
ссылочный тип
тогда как и использовать напрямую, зачем еще раз ее же получать?

```1c
    Запрос.УстановитьПараметр("ВыбРесурс3", Организация);
```
---
Я уже запутался давайте сначала я получаю от объектов значения и подставляя их в запрос отбираю по ним нужную мне строку из РегСвед.
В РегСвед есть тип Дата у Ресурса1 у Ресурса2 строка Объект.Номер тип строка и Ресурс3 тип строка у Объекта.Организация ссылочный тип на справочники.Организации. Как мне тогда сделать выборку по ссылочному типу ?
---
не до конца понятна задача, что нужно в итоге. Вот, для примера:

```1c
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ДвиженияУФДляСписания.Период КАК ДатаУФ
    |ИЗ
    | РегистрСведений.ДвиженияУФДляСписания КАК ДвиженияУФДляСписания
    |ГДЕ
    | Ресурс2 = &ВыбРесурс2
    |И
    | Ресурс3 = &ВыбРесурс3 ";

    Запрос.УстановитьПараметр("ВыбРесурс2", Объект.Номер);
    Запрос.УстановитьПараметр("ВыбРесурс3", Объект.Организация);

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

    Если Выборка.Следующий() И Выборка.ДатаУФ = Объект.Дата Тогда
    Объект.СнятьСЗаписи = Истина;
    КонецЕсли;
```
---
Вот так всё заработало

```1c
    &НаСервере
    Процедура ПроверяемНаличиеПроведенияДокОтУчреж()

    ДатаДокумента = Дата(Объект.Дата);
    НомерДокумента = Объект.Номер;
    Организация = Объект.Организация;

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

    Запрос.УстановитьПараметр("ДатаДокумента", ДатаДокумента);
    Запрос.УстановитьПараметр("НомерДокумента", НомерДокумента);
    //Запрос.УстановитьПараметр("Организация", Организация);

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

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

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

    ДатаУФ = Выборка.ДатаУФ;
    НомерУФ = Выборка.НомерУФ;
    ОрганизацияУФ = Выборка.ОрганизацияУФ;

    КонецЦикла;
    Если ДатаУФ = ДатаДокумента Тогда

    Если НомерУФ = НомерДокумента Тогда
    Сообщить("Работает0");
    //Если ОрганизацияУФ = Организация Тогда
    Сообщить("Работает1");
    ЭтаФорма.Объект.ДокументГотовДляРедактирования = Истина;

    //КонецЕсли;

    КонецЕсли;

    КонецЕсли;

    КонецПроцедуры
```

Осталось только ссылочный тип ОРГАНИЗАЦИЯ для отбора в запрос предать подскажите пожалуйста как это можно это сделать ?
---
Вы намеренно делаете как хуже?
Я так понял, что нужно найти по всем этим данным запись в РС, и если найдено, то проставить реквизит в истина.
Тогда так:

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

    Запрос.УстановитьПараметр("ДатаДокумента", Объект.Дата);
    Запрос.УстановитьПараметр("НомерДокумента", Объект.Номер);
    Запрос.УстановитьПараметр("Организация", Объект.Организация);

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

    Если НЕ РезультатЗапроса.Пустой() Тогда
    Объект.ДокументГотовДляРедактирования = Истина;
    КонецЕсли;
```
---
Спасибо, но к сожалению ваша конструкция не работает. РегСвед Ресурс3 в который записывается Организация имеет тип Строка это может влиять на сравнение с Объект.Организация ?
---
РегСвед Ресурс3 в который записывается Организация имеет тип Строка
Неожиданный поворот. Серьезно? Сами делали регистр? Тренируетесь, или это на живой базе?
Почему не ссылочный тип справочника Организации?

Ну, только для Вас, наверно можно и так:

```1c
    Запрос.УстановитьПараметр("Организация", Объект.Организация.Наименование);
```

Только никому не говорите, что это я так посоветовал.
---
Про ссылочный тип я писал выше видимо друг друга не поняли. Вы конечно не поверите, но я в РегСвед ставил соответствующие типы, но в тот момент это не работало, начал пробовать другие варианты. Ваш код прост как автомат Калашникова, у меня сразу вопрос, "А что так можно было" )) Да моя конструкция слишком длинная.
---
Верните в РС ссылочные типы. Так будет проще и надежнее.
Смотрите сами, пользователи возьмут и переименуют туже Организацию. И все. Данные РС устарели. По наименованию уже не будет искать. А ссылка при этом не поменяется.
---
Так и сделал. Полностью с вами согласен.
---
Условия в запрос почему не параметром передаются?

И в чем смысл запроса и перебора выборки, если в итоге в переменные попадает только последняя запись выборки?
---
Это не строка, выше по коду присваивается из объекта. А судя по составу полей, это должен быть справочник организаций.
Просто у человека пока нет понимания как правильно делать.
Хотя данная конструкция и будет работать в данном случае и не важно что это "порнография" :-)
---
Разъясните это "порнография" может привести к ошибке, краху базе данных или приложения в настоящем или в будущем ?
---
Разъясняю. То что вы тут привели - это говнокод.
С такой реализацией чего-бы то ни было, удивительно, что вы работаете программистом.
У вас же знаний в этой области буквально ноль.
Почитайте хотя бы Радченко, "Практическое пособие разработчика", выполните сквозной пример.
---
По поводу кода в целом не скажу, так как не понимаю в каком контексте он выполняется.
А вот про этот случай распишу:

```1c
    Запрос.УстановитьПараметр("ВыбРесурс3", Справочники.Организации.НайтиПоНаименованию(Организация));

    //Данный код ищет ссылку справочника организации.
    Справочники.Организации.НайтиПоНаименованию(Организация)
    //В качестве параметра у Вас указана переменная "Организация".
    //Но в самом начале этой переменной вы уже присвоили ссылочный тип справочника организации, то есть искать еще раз ссылку на элемент справочника нет необходимости.
    //Наоборот, данная ситуация может привести к ошибке, если будет два элемента с одинаковыми названиями, так как будет найден произвольный (не совсем так, но не будем вдаваться в подробности), который может быть не верным.
```

Делая вывод из всего написанного, строка кода должна была выглядеть так:

```1c
    Запрос.УстановитьПараметр("ВыбРесурс3", Организация);
    //или
    Запрос.УстановитьПараметр("ВыбРесурс3", Объект.Организация);
```