Запрос

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

VlasovSergey

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

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

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

puh14

Well-Known Member
11.07.2008
1 412
0
НеРезиновая
#2
Скорее всего у тебя

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

всё гробят.

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

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


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

"Мир".... Гм -антигадин сработал.
 
V

VlasovSergey

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

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

и не знаю что с ней сделать
 
V

VlasovSergey

Гость
#5
токо что пробовал,и все равно выдает ошибку

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

puh14

Well-Known Member
11.07.2008
1 412
0
НеРезиновая
#6
Ну так ты таблицу переобозвал, надо писать не контрагент.ссылка, а контрагенты.ссылка. Кстати - при чем тут документ? этот запрос выберет все заполненные фактические адреса для всех контрагентов их имеющих. Тебе нужен адрес конкретного контрагента?
 
V

VlasovSergey

Гость
#7
мне нужен адрес конкретного контрагента,в этом документе при изменений контрагента необходимо что бы менялся адрес
 

puh14

Well-Known Member
11.07.2008
1 412
0
НеРезиновая
#8
смотри функцию УправлениеКонтактнойИнформацией.ПолучитьАдресИзКонтактнойИнформации(Объект, ТипАдреса = "")

нафига велосипед изобретать?
 
V

VlasovSergey

Гость
#9
в России не ищут легких путей))))голову токо себе ломаю)))
 
V

VlasovSergey

Гость
#10
теперь выдает вот что

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


:)
 

puh14

Well-Known Member
11.07.2008
1 412
0
НеРезиновая
#11
Значит нет у тебя предопределенного элемета с таким именем. А есть ФактАдресКонтрагента и ЮрАдресКонтрагента.

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

VlasovSergey

Гость
#12
извеняюсь конечно за глупый вопрос где написать эту функцию(что то не пойму)?(((

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

puh14

Well-Known Member
11.07.2008
1 412
0
НеРезиновая
#13
Значит так - это стандартная функция, живущая в общем модуле УправлениеКонтактнойИнформацией. Ты ей скармиливааешь контрагента и каакой параметр хочешь получить а она возвращает некую строку. Куда ты потом приткнешь эту строку - это уже твое дело. можешь хоть никуда не притыкать.

Ты куда хотел вывести результат запроса? вот приваивай значение полученное этой функцией в нужное место.
 
V

VlasovSergey

Гость
#14
результат хотел вывести в некий документ ДоверенностиВОрганы.Значит в модуле объекта вставить эту функцию. и там написать куда я хочу привить полученные значения. я так понял?)
 
V

VlasovSergey

Гость
#16
подскажите еще плиз,как эту функцию правильнее написать,а то я уже и так и так писал ни каких результатов(
 
V

VlasovSergey

Гость
#18
у меня пока вот это написано,я ту функцию удалил и начал с этим опять разбираться

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

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


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

VlasovSergey

Гость
#19
этот запрос выдает мне какой-то адрес которого вообще нет в контрагенте,и постоянно один и тот же,в чем проблема...не врубаюсь
 

Darlock

Well-Known Member
04.01.2008
560
1
Москва
#20
1 - Из "Внутреннее соединение" сделайте "Левое"
2 - у вас обход короткий. будет только 1 строка (или я не узрел условие по контрагенту)
3 - у вас соединение организовано с приоритетом к контактной информации, а не к контрагенту.

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