Подскажите в чем ошибаюсь. Есть два документа "Списаное отгулов" и "карточка РВ". Друг от друга ни как не зависят. Цель: при изменении строки дата отгула (в ТЧ Учет отгулов документа Списание отгулов) происходил поиск проведенных документов "карточка РВ" за выбранную дату (месяц и год, число не учитываем) и если есть порведенные то появлялось предупреждение, что уже документ проведет. Делаю так не получается. Помогите, пожалуйста.

```1c
    &НаСервере
    Функция ПоискЗаписанныхКарточекЗаВыбранныйПериод()

    Для Каждого Стр Из Объект.УчетОтгулов Цикл
    ПолучитьДату = (Стр.ДатаОтгула);
    ДатаОтгулаПолучить = Формат(ПолучитьДату,"ДФ=MM.yyyy");
    КонецЦикла;
    Сотрудник = Объект.Сотрудник;

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

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

    Если НЕ Результат.Пустой() Тогда
    Возврат Истина;
    Иначе
    Возврат ЛОжь;
    КонецЕсли;

    КонецФункции

    &НаКлиенте
    Процедура УчетОтгуловДатаОтгулаПриИзменении(Элемент)

    Если ПоискЗаписанныхКарточекЗаВыбранныйПериод() = Истина Тогда

    Предупреждение("Карточка за заданный период уже проведена!");

    КонецЕсли;

    КонецПроцедуры
```
---
1) запрос в цикле - это как-то не очч, имхо(((
2)
```1c
    | И КарточкаУчетаРабочегоВремени.ПериодРегистрации < &Дата
```

заменить на
```1c
    И КарточкаУчетаРабочегоВремени.ПериодРегистрации МЕЖДУ &ДатаН И &ДатаК
```

3)
```1c
    Запрос.УстановитьПараметр("Дата",ДатаОтгулаПолучить);
```

заменить на

```1c
    Запрос.УстановитьПараметр("ДатаН ",НачалоГода(ПолучитьДату));
```

```1c
    Запрос.УстановитьПараметр("ДатаК",КонецГода(ПолучитьДату));
```

или НачалоМесяца/КонецМесяца, тк не совсем понял что вам надо учитывать - скорее всего если документ был в определенной последовательности месяцев.
А не получается, тк

```1c
    ДатаОтгулаПолучить = Формат(ПолучитьДату,"ДФ=MM.yyyy");
```
 вернет строку, а

```1c
    | И КарточкаУчетаРабочегоВремени.ПериодРегистрации < &Дата";
```
-число
---
1) запрос в цикле - это как-то не очч, имхо(((
2)
```1c
    | И КарточкаУчетаРабочегоВремени.ПериодРегистрации < &Дата
```

заменить на
```1c
    И КарточкаУчетаРабочегоВремени.ПериодРегистрации МЕЖДУ &ДатаН И &ДатаК
```

3)
```1c
    Запрос.УстановитьПараметр("Дата",ДатаОтгулаПолучить);
```

заменить на

```1c
    Запрос.УстановитьПараметр("ДатаН ",НачалоГода(ПолучитьДату));
```

```1c
    Запрос.УстановитьПараметр("ДатаК",КонецГода(ПолучитьДату));
```

или НачалоМесяца/КонецМесяца, тк не совсем понял что вам надо учитывать - скорее всего если документ был в определенной последовательности месяцев.
А не получается, тк

```1c
    ДатаОтгулаПолучить = Формат(ПолучитьДату,"ДФ=MM.yyyy");
```
 вернет строку, а

```1c
    | И КарточкаУчетаРабочегоВремени.ПериодРегистрации < &Дата";
```
-число
---
Спасибо, сработало
---
Результатом функции Формат является строка. Строка дате никогда не будет равна.

Вы в цикле перебираете строки документа и устанавливаете параметром в запрос строку, представляющую дату отгула в одной-единственной последней строке табличной части. И пытаетесь найти карточки по этой единственной строке. Вам немного не такой результат нужен, правда?

```1c
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | тзДаты.ДатаОтгула
    |ПОМЕСТИТЬ ВТ_ДатыОтгула
    |ИЗ
    | &тзДаты КАК тзДаты
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    | КарточкаУчетаРабочегоВремени.Ссылка
    |ИЗ
    | Документ.КарточкаУчетаРабочегоВремениКАК КарточкаУчетаРабочегоВремени
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ДатыОтгула КАК ВТ_ДатыОтгула
    | ПО (ГОД(КарточкаУчетаРабочегоВремени.ДатаРегистрации) = ГОД(ВТ_ДатыОтгула.ДатаОтгула))
    | И (МЕСЯЦ(КарточкаУчетаРабочегоВремени.ДатаРегистрации) = МЕСЯЦ(ВТ_ДатыОтгула.ДатаОтгула))
    |ГДЕ
    | КарточкаУчетаРабочегоВремени.Проведен
    | И КарточкаУчетаРабочегоВремени.Сотрудник = &Сотрудник";

    Запрос.УстановитьПараметр("Сотрудник", Объект.Сотрудник);
    Запрос.УстановитьПараметр("тзДаты", Объект.УчетОтгулов.Выгрузить(, "ДатаОтгула"));

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