Бухгалтерия / Говнокод #18802 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
Функция ПолучитьДоговорКонтрагента(Организация,Подразделение,Контрагент) Экспорт
	
	 ЗапросДоговор = Новый Запрос;
		ЗапросДоговор.Текст = "ВЫБРАТЬ
		               |	ДоговорыКонтрагентов.Ссылка
		               |ИЗ
		               |	Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
		               |ГДЕ
		               |	ДоговорыКонтрагентов.Организация = &Организация
		               |	И ДоговорыКонтрагентов.Подразделение = &Подразделение
		               |	И ДоговорыКонтрагентов.Владелец = &Владелец
		               |
		               |СГРУППИРОВАТЬ ПО
		               |	ДоговорыКонтрагентов.Ссылка";
		ЗапросДоговор.УстановитьПараметр("Организация",Организация);
		ЗапросДоговор.УстановитьПараметр("Подразделение",Подразделение);
		ЗапросДоговор.УстановитьПараметр("Владелец",Контрагент);
		Результат = ЗапросДоговор.Выполнить();
		Если НЕ Результат.Пустой() Тогда
			Возврат Результат.Выбрать().Следующий();
		Иначе
			
			Возврат Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
			
		КонецЕсли;
	
КонецФункции

Вот вроде функция общего модуля называется ПолучитьДоговорКонтрагента, и ты, не заглядывая в неё, конечно же, ждёшь возврата ссылки на спр-к ДоговорыКонтрагентов, но нет!!

Запостил: SkyHunter SkyHunter, (Updated )

Комментарии (16) RSS

    • Если результат не пустой, то возвращается следующая запись из результата запроса, а не ссылка, например.
      Ответить
      • Но ведь результат будет множество со столбцом ДоговорыКонтрагентов.Ссылка, т.е. Результат.Выбрать().Следующий() вернет ссылку. Вроде всё правильно.
        Ответить
        • Да, но функция называется ПолучитьДоговорКонтрагента, а не ПолучитьМножествоСоСтолбцом. Эта функция судя по названию должна возвращать ссылку, а возвращает не ссылку. Для получения ссылки нужно будет обратится через точку к результату запроса.
          Ответить
            • Шта? Речь о 8.2, если что. Рекомендую покурить Синтакс-Помощник, методы объекта ВыборкаИзРезультатаЗапроса.
              Ответить
              • Да я вообще 1с ни разу не запускал 😉

                Что делает этот метод? Переходит к следующей записи и возвращает Ложь, если уже стояли на последней?
                Ответить
                • Ну да.

                  "Возвращаемое значение:

                  Тип: Булево.
                  Истина - следующая запись выбрана; Ложь - достигнут конец выборки.
                  Описание:

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

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8