Запрос

  • Автор темы Автор темы VlasovSergey
  • Дата начала Дата начала
V

VlasovSergey

Доброго времени суток.
(Платформа 8.1 "Управление торговлей" 10.3
у меня есть запрос,но почему то он не работает,подскажите пожалуйста что тут не так.

Запрос = Новый Запрос;
Запрос.Текст ="ВЫБРАТЬ
|ВЫРАЗИТЬ (КонтактнаяИнформация.Представление КАК Строка(100)) КАК ФактическийАдресКонтрагента
|ИЗ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
|ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
|ПО КонтактнаяИнформация.Объект=Контрагент.Наименование
|И КонтактнаяИнформация.Тип=Значение(Перечисление.ТипыКонтактнойИнформации.Адрес)
|И КонтактнаяИнформация.Вид=Значение(Справочник.ВидыКонтактнойИнформации.Фактически
йАдресКонтрагента)";

Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Количество() > 0 Тогда
Выборка.Следующий();
ЭлементыФормы.ФактическийАдрес.Значение = Выборка.ФактическийАдрес;
Иначе
ЭлементыФормы.ФактическийАдрес.Значение = "Не найден";
КонецЕсли;
 
Скорее всего у тебя

|И КонтактнаяИнформация.Тип=Значение(Перечисление.ТипыКонтактнойИнформации.Адрес)
|И КонтактнаяИнформация.Вид=Значение(Справочник.ВидыКонтактнойИнформации.Фактически

всё гробят.

Поставь лучше

|Где КонтактнаяИнформация.Тип=Значение(Перечисление.ТипыКонтактнойИнформации.Адрес
|И КонтактнаяИнформация.Вид=Значение(Справочник.ВидыКонтактнойИнформации.Фактически
йАдресКонтрагента


апдейт - ой я мир - КонтактнаяИнформация.Объект=Контрагент.Наименование
, вот что гробит. Объект - это ссылка на справочник контрагенты, а не наименование элемента

"Мир".... Гм -антигадин сработал.
 
Выдает ошибку:Ошибка при вызове метода контекста (Выполнить): {(5, 32)}: Поле не найдено "Контрагент.Наименование"

вот эта строчка глюченая
|ПО КонтактнаяИнформация.Объект=Контрагент.Наименование

и не знаю что с ней сделать
 
Ты петаешся сравнить ссылку со строкой, правильно писать Контрагент.ссылка
 
токо что пробовал,и все равно выдает ошибку

{Документ.ДоверенностиВОрганы.Форма.ФормаДокумента(17)}: Ошибка при вызове метода контекста (Выполнить): {(5, 32)}: Поле не найдено "Контрагент.Ссылка"
ПО КонтактнаяИнформация.Объект=<<?>>Контрагент.Ссылка
Выборка = Запрос.Выполнить().Выбрать();
 
Ну так ты таблицу переобозвал, надо писать не контрагент.ссылка, а контрагенты.ссылка. Кстати - при чем тут документ? этот запрос выберет все заполненные фактические адреса для всех контрагентов их имеющих. Тебе нужен адрес конкретного контрагента?
 
мне нужен адрес конкретного контрагента,в этом документе при изменений контрагента необходимо что бы менялся адрес
 
смотри функцию УправлениеКонтактнойИнформацией.ПолучитьАдресИзКонтактнойИнформации(Объект, ТипАдреса = "")

нафига велосипед изобретать?
 
в России не ищут легких путей))))голову токо себе ломаю)))
 
теперь выдает вот что

{Документ.ДоверенностиВОрганы.Форма.ФормаДокумента(17)}: Ошибка при вызове метода контекста (Выполнить): {(7, 37)}: Неверные параметры "Справочник.ВидыКонтактнойИнформации.ФактическийАдресКонтрагента"
И КонтактнаяИнформация.Вид=Значение(<<?>>Справочник.ВидыКонтактнойИнформации.ФактическийАдресКонтрагента)
Выборка = Запрос.Выполнить().Выбрать();


:)
 
Значит нет у тебя предопределенного элемета с таким именем. А есть ФактАдресКонтрагента и ЮрАдресКонтрагента.

А вообще достаточно написать адресконтрагентастрокой = УправлениеКонтактнойИнформацией.ПолучитьАдресИзКонтактнойИнформации(ссылкаНаКонт
рагента, "Фактический");
 
извеняюсь конечно за глупый вопрос где написать эту функцию(что то не пойму)?(((

УправлениеКонтактнойИнформацией.ПолучитьАдресИзКонтактнойИнформации(ссылкаНаКонт
рагента, "Фактический");
 
Значит так - это стандартная функция, живущая в общем модуле УправлениеКонтактнойИнформацией. Ты ей скармиливааешь контрагента и каакой параметр хочешь получить а она возвращает некую строку. Куда ты потом приткнешь эту строку - это уже твое дело. можешь хоть никуда не притыкать.

Ты куда хотел вывести результат запроса? вот приваивай значение полученное этой функцией в нужное место.
 
результат хотел вывести в некий документ ДоверенностиВОрганы.Значит в модуле объекта вставить эту функцию. и там написать куда я хочу привить полученные значения. я так понял?)
 
Хочешь - в модуле объекта,хочешь - в модуле формы. А так - да, правильно.
 
подскажите еще плиз,как эту функцию правильнее написать,а то я уже и так и так писал ни каких результатов(
 
выложи то что у тебя сейчас написано.
 
у меня пока вот это написано,я ту функцию удалил и начал с этим опять разбираться

Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() тогда
ЭлементыФормы.ФактическийАдрес.Значение = Выборка.ФактическийАдрес;
Иначе
ЭлементыФормы.ФактическийАдрес.Значение = "Не найден";
КонецЕсли;

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


Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() тогда
ЭлементыФормы.ЮридическийАдрес.Значение = Выборка.ЮридическийАдрес;
Иначе
ЭлементыФормы.ЮридическийАдрес.Значение = "Не найден";
КонецЕсли;
 
этот запрос выдает мне какой-то адрес которого вообще нет в контрагенте,и постоянно один и тот же,в чем проблема...не врубаюсь
 
1 - Из "Внутреннее соединение" сделайте "Левое"
2 - у вас обход короткий. будет только 1 строка (или я не узрел условие по контрагенту)
3 - у вас соединение организовано с приоритетом к контактной информации, а не к контрагенту.

В общем, насколько понял поменяйте таблицы местами в запросе и левое соединение установите. Должно полегчать запросу
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!