Сравнение значения реквизита ТЧ с значением запроса

1. BigBoss 2 31.01.17 13:52 Сейчас в теме
Получаю из запроса ссылку на документ. Нужно если пользователь в реквизите табличной части выбрал документ, и он совпал с результатом запроса, то документ не проводиться.

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

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


Не работает, выдаёт ошибку:
Значение не является значением объектного типа (Источник)
	Если ТекущаяСтрока.Источник <> Результат Тогда
По теме из базы знаний
Найденные решения
14. antz 01.02.17 10:02 Сейчас в теме
(12)

Я же в (7) все написал. Результатом метода ВыгрузитьКолонку является массив, поэтому правильно все в Сообщить пишет. Если этот массив передать параметром в запрос в (7) и результат запроса будет непустым - документы есть, не проводим.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. sommid 31.01.17 14:03 Сейчас в теме
а отладчиком посмотреть, что такое ТекущаяСтрока и что в ней есть?
3. BigBoss 2 31.01.17 14:07 Сейчас в теме
4. sommid 31.01.17 14:14 Сейчас в теме
ну вот и ответ. значит нет текущей строки в момент выполнения обработчика, соответственно и из ничего вы ничего достать не сможете
5. BigBoss 2 31.01.17 14:15 Сейчас в теме
(4) создал чистую конфу для тестов, такой же код, тоже в отладчике ТекущаяСтрока показывает "Неопрделенно". Однако там работает
6. sommid 31.01.17 14:22 Сейчас в теме
(5) что-то из области фантастики. ни в какой конфе не отработает код Неопределено.Что-то.
Вероятно, что-то не то или не так смотрите..
8. DrBlack 23 31.01.17 14:26 Сейчас в теме
(5)
создал чистую конфу для тестов

Ну вот и ответ :)
Вы создали новую базу, в которой нет данных
Перед выполнением вашего кода, добавьте заглушку:
Если ТекущаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;

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

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

Запрос.УстановитьПараметр("Источники", Источники);
Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() Тогда// документы есть
Показать
9. BigBoss 2 31.01.17 14:30 Сейчас в теме
(7) вы имеете ввиду что лучше работать в модуле документа?
10. antz 31.01.17 14:32 Сейчас в теме
И там и тут можно. Обычные формы? Тогда в модуле формы не Объект, а ЭтотОбъект.
11. vadim1011985 100 31.01.17 14:33 Сейчас в теме
  Результат = Запрос.Выполнить();
    
    Если ТекущаяСтрока.Источник <> Результат Тогда 


Эммм А не нужно там типо писать ???
Результат = Результат.выбрать();

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

...
Ганс; +1 Ответить
12. BigBoss 2 01.02.17 06:45 Сейчас в теме
Не работает ничего, решил посмотреть что передаётся из реквизита тч
Функция Сметы()
Источники = ЭтотОбъект.ТЧ.Выгрузить().ВыгрузитьКолонку("Источник");
Сообщить(Источники );
КонецФункции

Процедура ПриЗаписи(Отказ)
	
	       Сметы();
	
КонецПроцедуры
Показать


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

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

П.С. Передал массив в ТЗ(Создал программно), теперь выводиться как я хотел : "Смета 00000000017 от 16.01.2017 12:00:00". Вопрос: можно ли сравнить значение ТЗ с результатом запроса и если такое значение есть в результате то выполнить определённые действия
14. antz 01.02.17 10:02 Сейчас в теме
(12)

Я же в (7) все написал. Результатом метода ВыгрузитьКолонку является массив, поэтому правильно все в Сообщить пишет. Если этот массив передать параметром в запрос в (7) и результат запроса будет непустым - документы есть, не проводим.
15. BigBoss 2 01.02.17 11:06 Сейчас в теме
13. vadim1011985 100 01.02.17 08:44 Сейчас в теме
У массива есть метод "найти" в качестве параметра передаётся искомое значение если какой-либо элемент массива содержит искомое значение будет возвращён этот элемент если нет , то вернётся Неопределено У ТЗ есть методы НайтиСтроки действует так же как и Найти у массива , но передаются 2 параметра имя колонки в которой осуществляется поиск и искомое значение
16. Plash 4 01.02.17 11:54 Сейчас в теме
У Вас возвращает "Неопределено" когда пользователь не выбрал текущую строку, хотя и курсор спозиционарован на первую строку.
Вам люди правильно советуют поставить заглушку на тот случай когда не выбрано.

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

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот