Как получить имя и тип параметра в запросе? #508237


#0 by Волков Денис
Здравствуйте. Не могу понять, как получить имя и тип параметра в запросе. Существую функция НайтиПараметры, как можно из нее вытащить сведения о параметре? Подскажите, пожалуйста.
#1 by Живой Ископаемый
что сделать нужно скажи лучше
#2 by чувак
я тоже не понял
#3 by Волков Денис
Есть Запрос вида: Необходимо получить имя параметра(Город в данном случае) и его тип, чтобы дальше присвоить ему значение. Запрос.НайтиПараметры ... Как то вытащить имя параметра ... Запрос.УстановитьПараметр(Город, Москва) Пишется класс на делфи для работы с запросами в 1С.
#4 by Дарт Вейдер
Для каждого Параметр из Запрос.НайтиПараметры цикл .... КонецЦикла
#5 by Дарт Вейдер
#6 by Волков Денис
Для каждого Параметр из Запрос.НайтиПараметры цикл .... КонецЦикла А в Делфи это никак((
#7 by Дарт Вейдер
в дельфи можно тупо пропарсить текст запроса параметры начинаются с "&" найдешь имена тип - хз
#8 by Волков Денис
в дельфи можно тупо пропарсить текст запроса параметры начинаются с "&" Не не катит... синтаксис языка запросов 1С не стандартизован тильда может измениться и потом заново класс этот разрабатывать?
#9 by Дарт Вейдер
ты пошутил что-ли?
#10 by sash-ml
почему никак?
#11 by Волков Денис
В смысле?
#12 by Волков Денис
А как?
#13 by Дарт Вейдер
что ты передаешь в дельфи вообще?
#14 by Evg-lylyk
Парсить это проблемно. Метод НайтиПараметры автоматом определяет типы (если нужны типы тогда парсить весь запрос).
#15 by Волков Денис
В делфи такая конструкция: А вот как дальше вытаскивать имена и типы я не знаю... В класс должен приходить текст запроса, он его обрабатывает, выводить список параметров и просить подставить значения к ним, дальше выполнить этот запрос и вернуть результат.
#16 by Дарт Вейдер
попробуй vv.Name vv.ValueType
#17 by sash-ml
for each p from vv do begin p.name; p.ValueType; end;
#18 by Волков Денис
(1:) пробовал... не помогло p какого типа? Variant?
#19 by Дарт Вейдер
for i:=1 to vv.Count do begin
#20 by sash-ml
у тебя отладчик в делфях украли? или табло поломалось?
#21 by Дарт Вейдер
попробуй vv[i].Name чтобы с типами переменных не париться
#22 by Волков Денис
vv[i] - не работает пробовал. Ошибка: Variant не является массивом.
#23 by Дарт Вейдер
а какое значение вообще в vv возвращается после vv := query.FindParameters; ?
#24 by Волков Денис
Возвращается указатель на ячейку
#25 by Волков Денис
с vv работает: vv.Count и vv.Find А вот как оттуда имя достать... Есть еще идеи??? Уже который день с этим мучаюсь...
#26 by sash-ml
Имена можно выпарсить по "&"
#27 by Волков Денис
Можно, но этот метод не подходит...(((
#28 by Волков Денис
У типа возвращаемого функцией НайтиПараметры есть свойство <Имя параметра> к нему можно как-то обратиться?
#29 by МихаилМ
нет. мучайтесь до просветления, коли парсинг запрещает религия.
#30 by Дарт Вейдер
НайтиПараметры возвращает список параметров тебе нужно выбрать элементы списка, тогда Элемент.<ИмяПараметра>
#31 by Дарт Вейдер
лучше домучай vv, ты на правильном пути что вернет VarType(vv) ?
#32 by Волков Денис
т.е. это вообще невозможно сделать? Тогда у меня еще есть вопросик. Обрабатываю результаты запроса в следующем виде  for i := 0 to ColCount - 1 do ArrRes[i,0] := OLEQueryRes.Columns.Get(i).Name;  while i < ColCount do Работает достаточно долго, не подскажите почему?
#33 by Волков Денис
Вернула NULL
#34 by hhhh
может vv.items? или vv.item? Ты ведь на Дельфи программируешь, должен в этом разбираться.
#35 by Волков Денис
Вообще с делфи я начинал потом перешел на PHP а потом вообще достаточно долго ничего не кодил...((( Поэтому сейчас сижу и вспоминаю... + 1С изучаю.))) Щас попробую
#36 by Волков Денис
Неа не работает...
#37 by Дарт Вейдер
в общем не получится так получить параметры.. смирись либо парсить запрос, либо.. есть еще один вариант решения, но не универсальный.. требует внесения изменений в конфигурацию 1С
#38 by Волков Денис
не в конфигурацию вносить изменения не надо. Ну чтож ладно буду парсить, раз другого решения нет... Тогда у меня другой вопрос: Как в выборке переходить на следующую строку? Пробовал через Выгрузить, но там получается что-то долго все это происходит...
#39 by Волков Денис
Спасибо Всем!)))
#40 by Дарт Вейдер
while Choose.Next do а вообще посмотри как в 1С с запросами работают, там все то же самое будет
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С