Имя: Пароль:
1C
1С v8
Тип не определен (Запрос)
, , ,
0 GreenDay1986
 
07.11.12
12:51
Тип не определен (Запрос)
Запрос = Новый <<?>>Запрос(); (Проверка: Тонкий клиент)
Всем здравствуйте. Создаю новую информационную базу, не из шаблона, для разработки. Создаю справочники, доки, регистры. Собственно вопрос. Если стоит параметр &НаКлиенте я так понимаю тип запрос на клиенте не определен, ставлю на сервере, ничего не происходит
&НаКлиенте
Процедура ПриОткрытии()
   Запрос = Новый Запрос();
   Запрос.Текст="ВЫБРАТЬ
   |Рег.Цена КАК Цена,
   |Рег.Дата КАК Дата
   |ИЗ РегистрСведений.Цены КАК Рег
   |";
   Рез = Запрос.Выполнить().Выбрать();
   Пока Рез.Следующий() Цикл
   Сообщить(Рез.Цена);
   Сообщить(Рез.Дата);
   КонецЦикла;
КонецПроцедуры
Что пишу неправильно?
1 GreenDay1986
 
07.11.12
12:52
&НаСервере
Процедура ПриОткрытии()
   Запрос = Новый Запрос();
   Запрос.Текст="ВЫБРАТЬ
   |Рег.Цена КАК Цена,
   |Рег.Дата КАК Дата
   |ИЗ РегистрСведений.Цены КАК Рег
   |";
   Рез = Запрос.Выполнить().Выбрать();
   Пока Рез.Следующий() Цикл
   ЭтаФорма.Элементы.Цена = Рез.Цена;
   Сообщить(Рез.Цена);
   Сообщить(Рез.Дата);
   КонецЦикла;
КонецПроцедуры
или просто
Процедура ПриОткрытии()
   Запрос = Новый Запрос();
   Запрос.Текст="ВЫБРАТЬ
   |Рег.Цена КАК Цена,
   |Рег.Дата КАК Дата
   |ИЗ РегистрСведений.Цены КАК Рег
   |";
   Рез = Запрос.Выполнить().Выбрать();
   Пока Рез.Следующий() Цикл
   ЭтаФорма.Элементы.Цена = Рез.Цена;
   Сообщить(Рез.Цена);
   Сообщить(Рез.Дата);
   КонецЦикла;
КонецПроцедуры
ошибок не выдает но и запросы также не исполняются
2 mikecool
 
07.11.12
12:53
с чего решил, что запросы не выполняются?
3 GreenDay1986
 
07.11.12
12:54
С того что никакие сообщения не выводятся, точнее может и исполняются, однако результата нет
4 mikecool
 
07.11.12
12:55
(3) сообщения выводятся, только на сервере
включай уже мосх )
5 Magic Dick
 
07.11.12
12:56
Новый Запрос;
6 Песец
 
07.11.12
12:56
Проверка: Тонкий клиент
7 GreenDay1986
 
07.11.12
12:57
Процедура ПриОткрытии()
   Запрос = Новый Запрос();
   Запрос.Текст="ВЫБРАТЬ
   |Рег.Цена КАК Цена,
   |Рег.Дата КАК Дата
   |ИЗ РегистрСведений.Цены КАК Рег
   |";
   Рез = Запрос.Выполнить().Выбрать();
   Пока Рез.Следующий() Цикл
   ЭтаФорма.Элементы.Цена = Рез.Цена;
   Сообщить(Рез.Цена);
   Сообщить(Рез.Дата);
   КонецЦикла;
КонецПроцедуры
Здесь куда выводятся?
8 vmv
 
07.11.12
12:57
тс - глупый тролль, уничтожиить!
9 Magic Dick
 
07.11.12
12:58
(8) а может 86 год?
10 GreenDay1986
 
07.11.12
12:58
брррр, да нет, не тролль, учусь маленько
11 Песец
 
07.11.12
12:59
Запрос (Query)
...
Доступность:
Сервер, толстый клиент, внешнее соединение.
(с) СП
12 GreenDay1986
 
07.11.12
12:59
(11) То есть мне нужно создавать новую базу на сервере, так понимаю?
13 vmv
 
07.11.12
13:00
(10) открываем сп и в первой главе "директивы компиляции" изучаем, хотя может лучше порясят выращивать - ты подумай, что выгоднее
14 Песец
 
07.11.12
13:00
(12) Не, базу не надо.
15 Песец
 
07.11.12
13:01
(14+) Медитируй до просветления:

Тип не определен (Запрос)
Запрос = Новый <<?>>Запрос(); (Проверка: Тонкий клиент)
16 GreenDay1986
 
07.11.12
13:01
(14) То есть базу на локальном компьютере я правильно создал. Что дальше делать дабы в ней сожно было работать с запросами?
17 Песец
 
07.11.12
13:03
(16) В тонком клиенте тип "Запрос" не определен.
18 Sammo
 
07.11.12
13:03
Запрос это сущность или процедура?
19 ptiz
 
07.11.12
13:03
(16) На сервере выполняешь запрос. На клиента возвращаешь сообщения.
20 Песец
 
07.11.12
13:04
(17+) ...в нем толко интерфейс, что-либо делать с базой надо на стороне сервера.
21 GreenDay1986
 
07.11.12
13:04
(19) спасибо, счас попробую.
22 GreenDay1986
 
07.11.12
13:06
(19) Как это с точки зрения синтаксиса будет выглядеть? 2 процедуры?
23 GreenDay1986
 
07.11.12
13:12
Хм, можно пример как возвратить с сервера на клиент? Исполнение так понимаю
&НаСервере
Процедура ПриОткрытии()
   Запрос = Новый Запрос();
   Запрос.Текст="ВЫБРАТЬ
   |Рег.Цена КАК Цена,
   |Рег.Дата КАК Дата
   |ИЗ РегистрСведений.Цены КАК Рег
   |";
   Рез = Запрос.Выполнить().Выбрать();
КонецПроцедуры
24 Шапокляк
 
07.11.12
13:16
(23) Запрос = Новый Запрос;
Убери скобочки! И - нескромный вопрос - а что на сервере открывают-то?
25 Песец
 
07.11.12
13:16
(23) На клиенте этой процедуры просто не будет.
Как вариант - создать общий модуль с галочками "сервер" и "вызов сервера", в нем расположить твою функцию которая вернет данные, ее и вызывать из ПриОткрытии.
26 GreenDay1986
 
07.11.12
13:20
(25) В общем все мои запросы исполнять в общих модулях, При открытии прописывать уже непосредственно передаваемые с сервера параметры?
27 GreenDay1986
 
07.11.12
13:21
Мутновато пока укладывается, ну ладно, спасибо, будем разбираться :)
28 le_
 
07.11.12
13:25
(27) Поищи видеокурс Гилева по управляемым формам.
29 Xapac_2
 
07.11.12
13:27
на КЛИЕНТЕ же!!!
сделай на сервере
30 Wobland
 
07.11.12
13:28
ТС как минимум уже год учится, никак не научится
31 Aprobator
 
07.11.12
13:28
(27) чего тут укладываться то? УФ - видимость методов и т.п. смотреть обязательно, только и всего.
32 GreenDay1986
 
07.11.12
13:35
Хм, как ИБ без управляемых форм сделать? Конфигурации подревнее поискать?
33 Wobland
 
07.11.12
13:35
(32) нужно как-то себя заставить
34 GreenDay1986
 
07.11.12
13:36
(33)Ога, я пока ток БП ковырял, без УФ.
35 GreenDay1986
 
07.11.12
14:33
Для примера родил следующее. :)
&НаСервере
Функция ВыбратьДанные(Найм)
Запрос = Новый Запрос;
Запрос.Текст ="ВЫБРАТЬ
|Ном.Наименование КАК Наим
|ИЗ Справочник.Номенклатура КАК Ном
|ГДЕ Наим.Наименование=&Найм
|";
Запрос.УстановитьПараметр("Найм",Найм);
Рез = Запрос.Выполнить().Выбрать();
Пока Рез.Следующий()Цикл;
   Сообщить(Рез.Наим);
КонецЦикла;
КонецФункции

&НаКлиенте
Процедура ПриОткрытии()
   Сообщить(ВыбратьДанные(Этаформа.Элементы.Наименование));  
КонецПроцедуры

Возвращает ошибку
{Справочник.Номенклатура.Форма.ФормаЭлемента.Форма(20)}: Ошибка при вызове метода контекста (ВыбратьДанные)
   Сообщить(ВыбратьДанные(Этаформа.Элементы.Наименование));  
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'param':
   форма: Элемент
   имя: {http://v8.1c.ru/8.2/managed-application/modules}param
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'ПолеФормы'
36 salvator
 
07.11.12
14:36
Если Рез.Следующий() Тогда;
   Возврат Рез.Наим;
КонецЕсли;
37 GreenDay1986
 
07.11.12
14:39
(36) таже самая ошибка возвращается.
38 Romich1981
 
07.11.12
14:44
Посмотри хоть какой тип у "Этаформа.Элементы.Наименование"
39 GreenDay1986
 
07.11.12
14:44
(38) Поле ввода
40 Romich1981
 
07.11.12
14:45
=) о чем и речь. Какие типы можно передавать?
41 hhhh
 
07.11.12
14:45
(37) а вот этот бред как объясните? Что это за слово?

ГДЕ Наим.Наименование
42 GreenDay1986
 
07.11.12
14:47
Где Ном.Наименование, простите
43 samozvanec
 
07.11.12
14:48
все не читал. Что за прикол менять директиву компиляции у событий формы?
44 GreenDay1986
 
07.11.12
14:49
Не ругайтесь шибко, УФ первый раз юзаю :(
45 GreenDay1986
 
07.11.12
14:57
Уррра, нашел :) ЭтаФорма.Объект.Наименование. Передалось таки :)
46 sidalexsandr
 
07.11.12
14:58
Можно так:
&НаСервере
Функция ВыбратьДанные(Найм)
Запрос = Новый Запрос;
Запрос.Текст ="ВЫБРАТЬ
|Ном.Наименование КАК Наим
|ИЗ Справочник.Номенклатура КАК Ном
|ГДЕ Наим.Наименование=&Найм
|";
Запрос.УстановитьПараметр("Найм",Найм);
РезультатЗапроса = Запрос.Выполнить();
   
   СпособОбхода = ОбходРезультатаЗапроса.Прямой;
   ТабЗнач = РезультатЗапроса.Выгрузить(СпособОбхода);  
   
   Возврат ТабЗнач;
КонецФункции
47 GreenDay1986
 
07.11.12
14:59
(46) Спасибо! :)
48 sidalexsandr
 
07.11.12
15:00
(46)+

Дальше
&НаКлиенте
Процедура ЗабратьССервера()

      ТаблЗначений =     ВыбратьДанные(Найм);
// Дальше получай на здоровье данные из Таблицы значений
КонецПроцедуры
49 sidalexsandr
 
07.11.12
15:00
(47) Вот теперь можеш спасибо
50 sidalexsandr
 
07.11.12
15:01
Напиши, что получилось.
51 hhhh
 
07.11.12
15:05
(49) ТаблицаЗначений

Доступность:

Сервер, толстый клиент, внешнее соединение.
52 GreenDay1986
 
07.11.12
15:11
(50) Соединяю с регистромСведений цены.Сообщение выдалось
53 GreenDay1986
 
07.11.12
15:28
Получилось так
&НаСервере
Функция ВыбратьДанные(Найм)
Запрос = Новый Запрос;
Запрос.Текст ="ВЫБРАТЬ
|Ном.Наименование КАК Наим,
|ЕСТЬNULL(Рег.Цена,0) КАК Цена,
|ЕСТЬNULL(Рег.Период,0) КАК Период
|ИЗ Справочник.Номенклатура КАК Ном
|ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены.СрезПоследних(&ДатаСреза)КАК Рег
|ПО Ном.Наименование = Рег.Наименование
|ГДЕ Ном.Наименование=&Найм
|";
Запрос.УстановитьПараметр("ДатаСреза", КонецДня(ТекущаяДата()));
Запрос.УстановитьПараметр("Найм",Найм);
Рез = Запрос.Выполнить().Выбрать();
Пока Рез.Следующий()Цикл
   Сообщить(Рез.Наим);
   Сообщить(Рез.Цена);
   Сообщить(Рез.Период);
КонецЦикла;
КонецФункции

&НаКлиенте
Процедура ПриОткрытии()
   ВыбратьДанные(ЭтаФорма.Объект.Наименование);  
КонецПроцедуры

Наименование обьекта текущей формы возвращает. Цену и Период возвращает почему-то пустыми. Хотя в регистресведений Цены эти данные заполнены
54 Dionis Sergeevich
 
07.11.12
15:34
(53) Отладчик в руки и смотри что у тебя в Рез после Рез.Следующий. Попробуй запрос с твоими параметрами в консоли запросов. Так на глаз не вижу почему возвращает пустые значения
55 Шапокляк
 
07.11.12
15:50
(53) Ну и кто там на сервере это читает
Пока Рез.Следующий()Цикл
   Сообщить(Рез.Наим);
   Сообщить(Рез.Цена);
   Сообщить(Рез.Период);
КонецЦикла;
Засовывай в структуру и возвращай клиенту
56 Dionis Sergeevich
 
07.11.12
15:51
(55) суть то не в этом. суть то в другом
57 GreenDay1986
 
07.11.12
15:55
(55) Рез.Наим возвращает и сообщает. Цену с периодом берет пустые
58 Aprobator
 
07.11.12
15:56
(46) (48) не взлетит по той простой причине, что таблица значений не живет на клиенте.
59 Aprobator
 
07.11.12
15:58
(53) дык у тебя соединения нет. Кто же соединение по наименованию делает? Самописка что ли полная?
60 Шапокляк
 
07.11.12
15:58
(56) Суть... Интересно, какой кошмар у него затаился в регистре Цены? Неужто Измерение Наименование строкового типа?
61 GreenDay1986
 
07.11.12
16:01
(60) Измерение Наименование типа СправочникСсылка.Номенклатура
62 hhhh
 
07.11.12
16:02
(61) а измерение Номенклатура типа СправочникСсылка.Номенклатура значит безжалостно удалил?
63 Шапокляк
 
07.11.12
16:02
(61) Да ну? А это как понимать?
|ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены.СрезПоследних(&ДатаСреза)КАК Рег
|ПО Ном.Наименование = Рег.Наименование
64 Serginio1
 
07.11.12
16:02
Может ВыбратьДанные(ЭтаФорма.Объект.Наименование.ТекстРедактирования);
или что там еще
65 GreenDay1986
 
07.11.12
16:03
(63) тут накосячил, Ном.Ссылка = Рег.Ссылка?
66 salvator
 
07.11.12
16:04
(65) продолжайте наблюдения
67 Dionis Sergeevich
 
07.11.12
16:07
(65) У записи регистра нет ссылки. Да открой ты консоль запросов
68 GreenDay1986
 
07.11.12
16:08
Извиняйте ребят, психологических отклонений нет,просто мудаг :))) Измерение Наименование сделал :( В общем переименовал заработало все.