Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
20 мая 2024, 13:15

Помогите с выводом результата запроса!

Автор kynin, 12 сен 2011, 12:58

0 Пользователей и 1 гость просматривают эту тему.

kynin

Доброго времени суток.
(Платформа 8.1 "управление торговлей" 10.3)
у меня есть запрос. он находится в документ чекиККМ: ФормаДокумента. на форме есть поле ввода "ДисконтнаяКарта"(Открывает Справочник: Информационные карты, где есть код карты и Ф.И.О владельца карты) и добавил еще одно поле ввода "ТелефонПокупателя" мне нужно что бы при изменении "ДисконтнаяКарта" в "ТелефонПокупателя" отображался телефон контрагента.
в консоле запросов запрос работает и выдает один номер.
Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Код", ДисконтнаяКарта);
    Запрос.УстановитьПараметр("Телефон"   , Перечисления.ТипыКонтактнойИнформации.Телефон);
     Запрос.УстановитьПараметр("ТелефонКонтрагента"   , Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента);
    Запрос.Текст ="ВЫБРАТЬ
   ВЫБОР
      КОГДА КонтактнаяИнформация.Тип = &Телефон
            И КонтактнаяИнформация.Вид = &ТелефонКонтрагента
         ТОГДА ПОДСТРОКА(КонтактнаяИнформация.Представление, 1, 100)
      ИНАЧЕ NULL
   КОНЕЦ КАК ТелефонКонтрагента
ИЗ
   РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
      ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ИнформационныеКарты КАК ИнформационныеКарты
      ПО КонтактнаяИнформация.Объект = ИнформационныеКарты.ВладелецКарты
ГДЕ
   (ВЫРАЗИТЬ(КонтактнаяИнформация.Объект КАК Справочник.Контрагенты)) = КонтактнаяИнформация.Объект
   И (НЕ ВЫБОР
            КОГДА КонтактнаяИнформация.Тип = &Телефон
                  И КонтактнаяИнформация.Вид = &ТелефонКонтрагента
               ТОГДА ПОДСТРОКА(КонтактнаяИнформация.Представление, 1, 100)
            ИНАЧЕ NULL
         КОНЕЦ ЕСТЬ NULL )
   И ИнформационныеКарты.КодКарты = &Код"

И в общем то сама моя проблема: возможно ли вывести результат запроса в форму документа?
если возможно то как это сделать?

p.s. КонтактнаяИнформация - это регистр сведений, где есть столбцы объект (фио покупателя), тип (телефон, адрес, и .т.д), Вид (ту уточняется какой телефон:телефонКонтрагента или дополнительныйТелефон), значение (тут сам телефон или адрес в зависимости от типа и вида).

has

Как-то так

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

kynin

Спасибо.
но он мне при выборе номера карты все время пишет "не найден".
можно предположить что это потому что результат выборке не одно значение а несколько. хотя в консоли запросов показывает один результат. или я что то не понимаю???

has

Если бы было несколько, то он бы подставил самое первое. Тут запрос смотреть надо. Попробуй так. Вобще можно и без эти параметров обойтись

//Запрос.УстановитьПараметр("Телефон"   , Перечисления.ТипыКонтактнойИнформации.Телефон);
//Запрос.УстановитьПараметр("ТелефонКонтрагента"   , Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента);

Просто указывай в запросе значение

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

kynin

Спасибо огромное) много мне нового подсказали. не знал что значение можно в запросе указать значение.
проблема была в следующем:
параметр &код я брал с элемента формы "Дисконтные карты", в общем нужно было просто изменить параметр
Запрос.УстановитьПараметр("Код", Строка(ДисконтнаяКарта)); т.е. значени этого поля представить как строка. и все. номер показывает))

Georg Podolian

Добрый день!!! помогите!
Я хочу перевести 1с с обычных на уф.
Проблема в том, что не знаю как организовать запросы.
Обязательно ли запускать "Клиент-серверный" режим, или можно сделать в "файловом"?

Хочу сделать в УП по окончании воода по строке вызывать процедуру

Процедура ТелАвтоПодборНаСервере()

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Документ1.Тел
|ИЗ
| Документ.Документ1 КАК Документ1
|ГДЕ
| Документ1.Тел = &Телефон";

Запрос.УстановитьПараметр("Телефон", "097");
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();

Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Телефон);
КонецЦикла;
КонецПроцедуры

alex0402

Цитата: Georg Podolian от 09 мар 2017, 11:48|ГДЕ | Документ1.Тел = &Телефон"; Запрос.УстановитьПараметр("Телефон", "097");

В базе есть телефон 097? если нет, то нужно:
|ГДЕ
| Документ1.Тел Подобно &Телефон"; Запрос.УстановитьПараметр("Телефон", "097%");
Спасибо за Сказать спасибо

Georg Podolian

Цитата: alex0402 от 09 мар 2017, 14:32
Цитата: Georg Podolian от 09 мар 2017, 11:48|ГДЕ | Документ1.Тел = &Телефон"; Запрос.УстановитьПараметр("Телефон", "097");

В базе есть телефон 097? если нет, то нужно:
|ГДЕ
| Документ1.Тел Подобно &Телефон"; Запрос.УстановитьПараметр("Телефон", "097%");



Да, в базе есть такой... Но сам запрос у меня есть рабочий, просто я не знаю как организовать получение в УФ...

Нужно как то выполнять часть кода на сервере или как?
у меня файловая система

alex0402

Ну да все запросы к базе выполняются на стороне севера. Для этого перед функцией или процедурой должна быть директива &НаСервере,&НаСервереБезКонтекста,&НаСервереКлиентеБезКонтекста.
Спасибо за Сказать спасибо

Georg Podolian

Цитата: alex0402 от 09 мар 2017, 15:17
Ну да все запросы к базе выполняются на стороне севера. Для этого перед функцией или процедурой должна быть директива &НаСервере,&НаСервереБезКонтекста,&НаСервереКлиентеБезКонтекста.
Хорошо, так работает, только теперь мне нужно указать не "097", а значение поля которое называеться "Тел"???

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск