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

Вот код:

```1c
    Процедура ПриЗаписи(Отказ)
    ТекущаяСтрока = ЭлементыФормы.ТЧ.ТекущаяСтрока;

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

    Запрос.Текст = "ВЫБРАТЬ
    | ДокументСмета.Ссылка КАК Смета
    |ИЗ
    | Документ.Смета КАК ДокументСмета
    |ГДЕ
    | ДокументСмета.Проведен
    | И ДокументСмета.Утвержден";

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

    Если ТекущаяСтрока.Источник <> Результат Тогда
    ЭтотОбьект.Записать(РежимЗаписиДокумента.ОтменаПроведения);
    КонецЕсли;
```

Не работает, выдаёт ошибку:
```1c
    Значение не является значением объектного типа (Источник)
    Если ТекущаяСтрока.Источник <> Результат Тогда
```
---
Я же в (7) все написал. Результатом метода ВыгрузитьКолонку является массив, поэтому правильно все в Сообщить пишет. Если этот массив передать параметром в запрос в (7) и результат запроса будет непустым - документы есть, не проводим.
---
а отладчиком посмотреть, что такое ТекущаяСтрока и что в ней есть?
---
"Неопределено"
---
ну вот и ответ. значит нет текущей строки в момент выполнения обработчика, соответственно и из ничего вы ничего достать не сможете
---
создал чистую конфу для тестов, такой же код, тоже в отладчике ТекущаяСтрока показывает "Неопрделенно". Однако там работает
---
что-то из области фантастики. ни в какой конфе не отработает код Неопределено.Что-то.
Вероятно, что-то не то или не так смотрите..
---
создал чистую конфу для тестов
Ну вот и ответ :)
Вы создали новую базу, в которой нет данных
Перед выполнением вашего кода, добавьте заглушку:

```1c
    Если ТекущаяСтрока = Неопределено Тогда
    Возврат;
    КонецЕсли;
```

Хотя наверное не спасет это вас, т.к. весь код у вас корявый... =\
---
А зачем обращаться в процедуре ПриЗаписи к какой-то там текущей строке на форме, когда можно постучаться к Объекту?

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

    Запрос.УстановитьПараметр("Источники", Источники);
    Результат = Запрос.Выполнить();
    Если НЕ Результат.Пустой() Тогда// документы есть
```
---
вы имеете ввиду что лучше работать в модуле документа?
---
И там и тут можно. Обычные формы? Тогда в модуле формы не Объект, а ЭтотОбъект.
---
```1c
    Результат = Запрос.Выполнить();

    Если ТекущаяСтрока.Источник <> Результат Тогда
```

Эммм А не нужно там типо писать ???

```1c
    Результат = Результат.выбрать();

    пока Результат.Следующий() Цикл
```

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

```1c
    Функция Сметы()
    Источники = ЭтотОбъект.ТЧ.Выгрузить().ВыгрузитьКолонку("Источник");
    Сообщить(Источники );
    КонецФункции

    Процедура ПриЗаписи(Отказ)

    Сметы();

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

И при записи дока выводиться "Массив" а хотя я ожидал увидеть "Смета 00000000017 от 16.01.2017 12:00:00"...Может по этому не работает сравнение с тем что выбрал пользователь в реквизите тч с результатом запроса?

П.С. Прочитал в синтаксисе-помощнике что возвращаемое значение "Массив". Тогда вопрос всё равно в силе:Может по этому не работает сравнение с тем что выбрал пользователь в реквизите тч с результатом запроса?

П.С. Передал массив в ТЗ(Создал программно), теперь выводиться как я хотел : "Смета 00000000017 от 16.01.2017 12:00:00". Вопрос: можно ли сравнить значение ТЗ с результатом запроса и если такое значение есть в результате то выполнить определённые действия
---
Я же в (7) все написал. Результатом метода ВыгрузитьКолонку является массив, поэтому правильно все в Сообщить пишет. Если этот массив передать параметром в запрос в (7) и результат запроса будет непустым - документы есть, не проводим.
---
Спасибо, всё верно
---
У массива есть метод "найти" в качестве параметра передаётся искомое значение если какой-либо элемент массива содержит искомое значение будет возвращён этот элемент если нет , то вернётся Неопределено У ТЗ есть методы НайтиСтроки действует так же как и Найти у массива , но передаются 2 параметра имя колонки в которой осуществляется поиск и искомое значение
---
У Вас возвращает "Неопределено" когда пользователь не выбрал текущую строку, хотя и курсор спозиционарован на первую строку.
Вам люди правильно советуют поставить заглушку на тот случай когда не выбрано.

Если у Вас многострочный выбор, тогда тут совершенно другая функция выборки через "ВыделенныеСтроки" а не "ТекущаяСтрока".