Запрос

Тема в разделе "1C и всё что с ней связано", создана пользователем VlasovSergey, 20 дек 2011.

  1. VlasovSergey

    VlasovSergey Гость

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

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

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

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Скорее всего у тебя

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

    всё гробят.

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

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


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

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

    VlasovSergey Гость

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

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

    и не знаю что с ней сделать
     
  4. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Ты петаешся сравнить ссылку со строкой, правильно писать Контрагент.ссылка
     
  5. VlasovSergey

    VlasovSergey Гость

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

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

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Ну так ты таблицу переобозвал, надо писать не контрагент.ссылка, а контрагенты.ссылка. Кстати - при чем тут документ? этот запрос выберет все заполненные фактические адреса для всех контрагентов их имеющих. Тебе нужен адрес конкретного контрагента?
     
  7. VlasovSergey

    VlasovSergey Гость

    мне нужен адрес конкретного контрагента,в этом документе при изменений контрагента необходимо что бы менялся адрес
     
  8. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    смотри функцию УправлениеКонтактнойИнформацией.ПолучитьАдресИзКонтактнойИнформации(Объект, ТипАдреса = "")

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

    VlasovSergey Гость

    в России не ищут легких путей))))голову токо себе ломаю)))
     
  10. VlasovSergey

    VlasovSergey Гость

    теперь выдает вот что

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


    :)
     
  11. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Значит нет у тебя предопределенного элемета с таким именем. А есть ФактАдресКонтрагента и ЮрАдресКонтрагента.

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

    VlasovSergey Гость

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

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

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Значит так - это стандартная функция, живущая в общем модуле УправлениеКонтактнойИнформацией. Ты ей скармиливааешь контрагента и каакой параметр хочешь получить а она возвращает некую строку. Куда ты потом приткнешь эту строку - это уже твое дело. можешь хоть никуда не притыкать.

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

    VlasovSergey Гость

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

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Хочешь - в модуле объекта,хочешь - в модуле формы. А так - да, правильно.
     
  16. VlasovSergey

    VlasovSergey Гость

    подскажите еще плиз,как эту функцию правильнее написать,а то я уже и так и так писал ни каких результатов(
     
  17. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    выложи то что у тебя сейчас написано.
     
  18. VlasovSergey

    VlasovSergey Гость

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

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

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


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

    VlasovSergey Гость

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

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    1 - Из "Внутреннее соединение" сделайте "Левое"
    2 - у вас обход короткий. будет только 1 строка (или я не узрел условие по контрагенту)
    3 - у вас соединение организовано с приоритетом к контактной информации, а не к контрагенту.

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

Поделиться этой страницей