Запрос

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

  1. VlasovSergey

    VlasovSergey Гость

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

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

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

    puh14 Well-Known Member
    1C Team

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

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

    всё гробят.

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

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


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

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

    VlasovSergey Гость

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

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

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

    puh14 Well-Known Member
    1C Team

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

    VlasovSergey Гость

    Репутация:
    0
    токо что пробовал,и все равно выдает ошибку

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

    puh14 Well-Known Member
    1C Team

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

    VlasovSergey Гость

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

    puh14 Well-Known Member
    1C Team

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

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

    VlasovSergey Гость

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

    VlasovSergey Гость

    Репутация:
    0
    теперь выдает вот что

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


    :)
     
  11. puh14

    puh14 Well-Known Member
    1C Team

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

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

    VlasovSergey Гость

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

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

    puh14 Well-Known Member
    1C Team

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

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

    VlasovSergey Гость

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

    puh14 Well-Known Member
    1C Team

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

    VlasovSergey Гость

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

    puh14 Well-Known Member
    1C Team

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

    VlasovSergey Гость

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

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

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


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

    VlasovSergey Гость

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

    Darlock Well-Known Member
    1C Team

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

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

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