Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
Функция ПолучитьДоговорКонтрагента(Организация,Подразделение,Контрагент) Экспорт
ЗапросДоговор = Новый Запрос;
ЗапросДоговор.Текст = "ВЫБРАТЬ
| ДоговорыКонтрагентов.Ссылка
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
|ГДЕ
| ДоговорыКонтрагентов.Организация = &Организация
| И ДоговорыКонтрагентов.Подразделение = &Подразделение
| И ДоговорыКонтрагентов.Владелец = &Владелец
|
|СГРУППИРОВАТЬ ПО
| ДоговорыКонтрагентов.Ссылка";
ЗапросДоговор.УстановитьПараметр("Организация",Организация);
ЗапросДоговор.УстановитьПараметр("Подразделение",Подразделение);
ЗапросДоговор.УстановитьПараметр("Владелец",Контрагент);
Результат = ЗапросДоговор.Выполнить();
Если НЕ Результат.Пустой() Тогда
Возврат Результат.Выбрать().Следующий();
Иначе
Возврат Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
КонецЕсли;
КонецФункции
Вот вроде функция общего модуля называется ПолучитьДоговорКонтрагента, и ты, не заглядывая в неё, конечно же, ждёшь возврата ссылки на спр-к ДоговорыКонтрагентов, но нет!!
Да, но функция называется ПолучитьДоговорКонтрагента, а не ПолучитьМножествоСоСтолбцом. Эта функция судя по названию должна возвращать ссылку, а возвращает не ссылку. Для получения ссылки нужно будет обратится через точку к результату запроса.
Тип: Булево.
Истина - следующая запись выбрана; Ложь - достигнут конец выборки.
Описание:
Получает следующую запись из результата запроса. Для обхода результата запроса нужно после получения выборки вызвать данный метод для позиционирования на первый элемент и далее вызывать до тех пор, пока не будет возвращено значение Ложь."
Если функции возвращают значения различных типов в зависимости от звезд на небе - это, как минимум, быдлокод! Хочешь вернуть что-то отличающееся от основного типа возвращаемого значения - измени значения во входящих параметрах, как например определяют "Отказ".
Если в запросе из одного поля производится группировка, то на всякий случай можно использовать "ВЫБРАТЬ РАЗЛИЧНЫЕ" и ТаблицаЗначений.Свернуть("Ссылка").
Что делает этот метод? Переходит к следующей записи и возвращает Ложь, если уже стояли на последней?
"Возвращаемое значение:
Тип: Булево.
Истина - следующая запись выбрана; Ложь - достигнут конец выборки.
Описание:
Получает следующую запись из результата запроса. Для обхода результата запроса нужно после получения выборки вызвать данный метод для позиционирования на первый элемент и далее вызывать до тех пор, пока не будет возвращено значение Ложь."