Тип не определен (Запрос) |
Я |
07.11.12 — 12:51
Тип не определен (Запрос)
Запрос = Новый <<?>>Запрос(); (Проверка: Тонкий клиент)
Всем здравствуйте. Создаю новую информационную базу, не из шаблона, для разработки. Создаю справочники, доки, регистры. Собственно вопрос. Если стоит параметр &НаКлиенте я так понимаю тип запрос на клиенте не определен, ставлю на сервере, ничего не происходит
&НаКлиенте
Процедура ПриОткрытии()
Запрос = Новый Запрос();
Запрос.Текст=»ВЫБРАТЬ
|Рег.Цена КАК Цена,
|Рег.Дата КАК Дата
|ИЗ РегистрСведений.Цены КАК Рег
|»;
Рез = Запрос.Выполнить().Выбрать();
Пока Рез.Следующий() Цикл
Сообщить(Рез.Цена);
Сообщить(Рез.Дата);
КонецЦикла;
КонецПроцедуры
Что пишу неправильно?
1 — 07.11.12 — 12:52
&НаСервере
Процедура ПриОткрытии()
Запрос = Новый Запрос();
Запрос.Текст=»ВЫБРАТЬ
|Рег.Цена КАК Цена,
|Рег.Дата КАК Дата
|ИЗ РегистрСведений.Цены КАК Рег
|»;
Рез = Запрос.Выполнить().Выбрать();
Пока Рез.Следующий() Цикл
ЭтаФорма.Элементы.Цена = Рез.Цена;
Сообщить(Рез.Цена);
Сообщить(Рез.Дата);
КонецЦикла;
КонецПроцедуры
или просто
Процедура ПриОткрытии()
Запрос = Новый Запрос();
Запрос.Текст=»ВЫБРАТЬ
|Рег.Цена КАК Цена,
|Рег.Дата КАК Дата
|ИЗ РегистрСведений.Цены КАК Рег
|»;
Рез = Запрос.Выполнить().Выбрать();
Пока Рез.Следующий() Цикл
ЭтаФорма.Элементы.Цена = Рез.Цена;
Сообщить(Рез.Цена);
Сообщить(Рез.Дата);
КонецЦикла;
КонецПроцедуры
ошибок не выдает но и запросы также не исполняются
2 — 07.11.12 — 12:53
с чего решил, что запросы не выполняются?
3 — 07.11.12 — 12:54
С того что никакие сообщения не выводятся, точнее может и исполняются, однако результата нет
4 — 07.11.12 — 12:55
(3) сообщения выводятся, только на сервере
включай уже мосх )
5 — 07.11.12 — 12:56
Новый Запрос;
6 — 07.11.12 — 12:56
Проверка: Тонкий клиент
7 — 07.11.12 — 12:57
Процедура ПриОткрытии()
Запрос = Новый Запрос();
Запрос.Текст=»ВЫБРАТЬ
|Рег.Цена КАК Цена,
|Рег.Дата КАК Дата
|ИЗ РегистрСведений.Цены КАК Рег
|»;
Рез = Запрос.Выполнить().Выбрать();
Пока Рез.Следующий() Цикл
ЭтаФорма.Элементы.Цена = Рез.Цена;
Сообщить(Рез.Цена);
Сообщить(Рез.Дата);
КонецЦикла;
КонецПроцедуры
Здесь куда выводятся?
8 — 07.11.12 — 12:57
тс — глупый тролль, уничтожиить!
9 — 07.11.12 — 12:58
(8) а может 86 год?
10 — 07.11.12 — 12:58
брррр, да нет, не тролль, учусь маленько
11 — 07.11.12 — 12:59
Запрос (Query)
…
Доступность:
Сервер, толстый клиент, внешнее соединение.
(с) СП
12 — 07.11.12 — 12:59
(11) То есть мне нужно создавать новую базу на сервере, так понимаю?
13 — 07.11.12 — 13:00
(10) открываем сп и в первой главе «директивы компиляции» изучаем, хотя может лучше порясят выращивать — ты подумай, что выгоднее
14 — 07.11.12 — 13:00
(12) Не, базу не надо.
15 — 07.11.12 — 13:01
(14+) Медитируй до просветления:
Тип не определен (Запрос)
Запрос = Новый <<?>>Запрос(); (Проверка: Тонкий клиент)
16 — 07.11.12 — 13:01
(14) То есть базу на локальном компьютере я правильно создал. Что дальше делать дабы в ней сожно было работать с запросами?
17 — 07.11.12 — 13:03
(16) В тонком клиенте тип «Запрос» не определен.
18 — 07.11.12 — 13:03
Запрос это сущность или процедура?
19 — 07.11.12 — 13:03
(16) На сервере выполняешь запрос. На клиента возвращаешь сообщения.
20 — 07.11.12 — 13:04
(17+) …в нем толко интерфейс, что-либо делать с базой надо на стороне сервера.
21 — 07.11.12 — 13:04
(19) спасибо, счас попробую.
22 — 07.11.12 — 13:06
(19) Как это с точки зрения синтаксиса будет выглядеть? 2 процедуры?
23 — 07.11.12 — 13:12
Хм, можно пример как возвратить с сервера на клиент? Исполнение так понимаю
&НаСервере
Процедура ПриОткрытии()
Запрос = Новый Запрос();
Запрос.Текст=»ВЫБРАТЬ
|Рег.Цена КАК Цена,
|Рег.Дата КАК Дата
|ИЗ РегистрСведений.Цены КАК Рег
|»;
Рез = Запрос.Выполнить().Выбрать();
КонецПроцедуры
24 — 07.11.12 — 13:16
(23) Запрос = Новый Запрос;
Убери скобочки! И — нескромный вопрос — а что на сервере открывают-то?
25 — 07.11.12 — 13:16
(23) На клиенте этой процедуры просто не будет.
Как вариант — создать общий модуль с галочками «сервер» и «вызов сервера», в нем расположить твою функцию которая вернет данные, ее и вызывать из ПриОткрытии.
26 — 07.11.12 — 13:20
(25) В общем все мои запросы исполнять в общих модулях, При открытии прописывать уже непосредственно передаваемые с сервера параметры?
27 — 07.11.12 — 13:21
Мутновато пока укладывается, ну ладно, спасибо, будем разбираться 🙂
28 — 07.11.12 — 13:25
(27) Поищи видеокурс Гилева по управляемым формам.
29 — 07.11.12 — 13:27
на КЛИЕНТЕ же!!!
сделай на сервере
30 — 07.11.12 — 13:28
ТС как минимум уже год учится, никак не научится
31 — 07.11.12 — 13:28
(27) чего тут укладываться то? УФ — видимость методов и т.п. смотреть обязательно, только и всего.
32 — 07.11.12 — 13:35
Хм, как ИБ без управляемых форм сделать? Конфигурации подревнее поискать?
33 — 07.11.12 — 13:35
(32) нужно как-то себя заставить
34 — 07.11.12 — 13:36
(33)Ога, я пока ток БП ковырял, без УФ.
35 — 07.11.12 — 14:33
Для примера родил следующее. 🙂
&НаСервере
Функция ВыбратьДанные(Найм)
Запрос = Новый Запрос;
Запрос.Текст =»ВЫБРАТЬ
|Ном.Наименование КАК Наим
|ИЗ Справочник.Номенклатура КАК Ном
|ГДЕ Наим.Наименование=&Найм
|»;
Запрос.УстановитьПараметр(«Найм»,Найм);
Рез = Запрос.Выполнить().Выбрать();
Пока Рез.Следующий()Цикл;
Сообщить(Рез.Наим);
КонецЦикла;
КонецФункции
&НаКлиенте
Процедура ПриОткрытии()
Сообщить(ВыбратьДанные(Этаформа.Элементы.Наименование));
КонецПроцедуры
Возвращает ошибку
{Справочник.Номенклатура.Форма.ФормаЭлемента.Форма(20)}: Ошибка при вызове метода контекста (ВыбратьДанные)
Сообщить(ВыбратьДанные(Этаформа.Элементы.Наименование));
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства ‘param’:
форма: Элемент
имя: {http://v8.1c.ru/8.2/managed-application/modules}param
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа ‘ПолеФормы’
36 — 07.11.12 — 14:36
Если Рез.Следующий() Тогда;
Возврат Рез.Наим;
КонецЕсли;
37 — 07.11.12 — 14:39
(36) таже самая ошибка возвращается.
38 — 07.11.12 — 14:44
Посмотри хоть какой тип у «Этаформа.Элементы.Наименование»
39 — 07.11.12 — 14:44
(38) Поле ввода
40 — 07.11.12 — 14:45
=) о чем и речь. Какие типы можно передавать?
41 — 07.11.12 — 14:45
(37) а вот этот бред как объясните? Что это за слово?
ГДЕ Наим.Наименование
42 — 07.11.12 — 14:47
Где Ном.Наименование, простите
43 — 07.11.12 — 14:48
все не читал. Что за прикол менять директиву компиляции у событий формы?
44 — 07.11.12 — 14:49
Не ругайтесь шибко, УФ первый раз юзаю 🙁
45 — 07.11.12 — 14:57
Уррра, нашел 🙂 ЭтаФорма.Объект.Наименование. Передалось таки 🙂
46 — 07.11.12 — 14:58
Можно так:
&НаСервере
Функция ВыбратьДанные(Найм)
Запрос = Новый Запрос;
Запрос.Текст =»ВЫБРАТЬ
|Ном.Наименование КАК Наим
|ИЗ Справочник.Номенклатура КАК Ном
|ГДЕ Наим.Наименование=&Найм
|»;
Запрос.УстановитьПараметр(«Найм»,Найм);
РезультатЗапроса = Запрос.Выполнить();
СпособОбхода = ОбходРезультатаЗапроса.Прямой;
ТабЗнач = РезультатЗапроса.Выгрузить(СпособОбхода);
Возврат ТабЗнач;
КонецФункции
47 — 07.11.12 — 14:59
(46) Спасибо! 🙂
48 — 07.11.12 — 15:00
(46)+
Дальше
&НаКлиенте
Процедура ЗабратьССервера()
ТаблЗначений = ВыбратьДанные(Найм);
// Дальше получай на здоровье данные из Таблицы значений
КонецПроцедуры
49 — 07.11.12 — 15:00
(47) Вот теперь можеш спасибо
50 — 07.11.12 — 15:01
Напиши, что получилось.
51 — 07.11.12 — 15:05
(49) ТаблицаЗначений
Доступность:
Сервер, толстый клиент, внешнее соединение.
52 — 07.11.12 — 15:11
(50) Соединяю с регистромСведений цены.Сообщение выдалось
53 — 07.11.12 — 15:28
Получилось так
&НаСервере
Функция ВыбратьДанные(Найм)
Запрос = Новый Запрос;
Запрос.Текст =»ВЫБРАТЬ
|Ном.Наименование КАК Наим,
|ЕСТЬNULL(Рег.Цена,0) КАК Цена,
|ЕСТЬNULL(Рег.Период,0) КАК Период
|ИЗ Справочник.Номенклатура КАК Ном
|ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены.СрезПоследних(&ДатаСреза)КАК Рег
|ПО Ном.Наименование = Рег.Наименование
|ГДЕ Ном.Наименование=&Найм
|»;
Запрос.УстановитьПараметр(«ДатаСреза», КонецДня(ТекущаяДата()));
Запрос.УстановитьПараметр(«Найм»,Найм);
Рез = Запрос.Выполнить().Выбрать();
Пока Рез.Следующий()Цикл
Сообщить(Рез.Наим);
Сообщить(Рез.Цена);
Сообщить(Рез.Период);
КонецЦикла;
КонецФункции
&НаКлиенте
Процедура ПриОткрытии()
ВыбратьДанные(ЭтаФорма.Объект.Наименование);
КонецПроцедуры
Наименование обьекта текущей формы возвращает. Цену и Период возвращает почему-то пустыми. Хотя в регистресведений Цены эти данные заполнены
54 — 07.11.12 — 15:34
(53) Отладчик в руки и смотри что у тебя в Рез после Рез.Следующий. Попробуй запрос с твоими параметрами в консоли запросов. Так на глаз не вижу почему возвращает пустые значения
55 — 07.11.12 — 15:50
(53) Ну и кто там на сервере это читает
Пока Рез.Следующий()Цикл
Сообщить(Рез.Наим);
Сообщить(Рез.Цена);
Сообщить(Рез.Период);
КонецЦикла;
Засовывай в структуру и возвращай клиенту
56 — 07.11.12 — 15:51
(55) суть то не в этом. суть то в другом
57 — 07.11.12 — 15:55
(55) Рез.Наим возвращает и сообщает. Цену с периодом берет пустые
58 — 07.11.12 — 15:56
(46) (48) не взлетит по той простой причине, что таблица значений не живет на клиенте.
59 — 07.11.12 — 15:58
(53) дык у тебя соединения нет. Кто же соединение по наименованию делает? Самописка что ли полная?
60 — 07.11.12 — 15:58
(56) Суть… Интересно, какой кошмар у него затаился в регистре Цены? Неужто Измерение Наименование строкового типа?

61 — 07.11.12 — 16:01
(60) Измерение Наименование типа СправочникСсылка.Номенклатура
62 — 07.11.12 — 16:02
(61) а измерение Номенклатура типа СправочникСсылка.Номенклатура значит безжалостно удалил?
63 — 07.11.12 — 16:02
(61) Да ну? А это как понимать?
|ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены.СрезПоследних(&ДатаСреза)КАК Рег
|ПО Ном.Наименование = Рег.Наименование
64 — 07.11.12 — 16:02
Может ВыбратьДанные(ЭтаФорма.Объект.Наименование.ТекстРедактирования);
или что там еще
65 — 07.11.12 — 16:03
(63) тут накосячил, Ном.Ссылка = Рег.Ссылка?
66 — 07.11.12 — 16:04
(65) продолжайте наблюдения
67 — 07.11.12 — 16:07
(65) У записи регистра нет ссылки. Да открой ты консоль запросов
GreenDay1986
68 — 07.11.12 — 16:08
Извиняйте ребят, психологических отклонений нет,просто мудаг :))) Измерение Наименование сделал 🙁 В общем переименовал заработало все.
При запросе выдает ошибку.
Автор Серега16, 09 авг 2014, 13:54
0 Пользователей и 1 гость просматривают эту тему.
в 1с 8.2 Почему выдает ошибку
Запрос.УстановитьПараметр(«Наименование»<<?>>Наименование); (Проверка: Сервер)
а вот сам код
Запрос = Новый Запрос;
Запрос.Текст ="ВЫБРАТЬ
| Покупатель.Наименование
|ИЗ
| Справочник.Покупатель КАК Покупатель
|Где
|Покупатель.Наименование = &Наименование" ;
Запрос.УстановитьПараметр("Наименование"Наименование);
Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() Тогда
Сообщить( "Данный покупатель уже существует!");
КонецЕсли;
РS Пробывал и на сервере и на клиенте везде выдает ошибку. Роботает только в модуле объекта. ПередЗаписью
А я хочу при НаименованиеОкончаниеВводаТекста.
Посмотрите описание этого события, по-моему из него запрещено обращаться на сервер.
Используйте событие ПриИзменении
Цитата: GRADUS от 09 авг 2014, 14:07
Посмотрите описание этого события, по-моему из него запрещено обращаться на сервер.
Используйте событие ПриИзменении
ПриИзменении вот такая ошибка.
Тип не определен (Запрос)
Запрос = Новый <<?>>Запрос; (Проверка: Тонкий клиент)
Серега16, после «Наименование» в УстановитьПараметр вообще-то следует ставить запятую.
ЦитироватьРоботает только в модуле объекта
Это я видел;
а прежде сообщение об ошибке:
ЦитироватьЗапрос.УстановитьПараметр(«Наименование»<<?>>Наименование); (Проверка: Сервер)
и далее код с этой ошибкой.
Тогда реально с чем работает автор темы? И что мы обсуждаем?
Цитата: pavl_vs от 09 авг 2014, 18:14
ЦитироватьРоботает только в модуле объекта
Это я видел;
а прежде сообщение об ошибке:
ЦитироватьЗапрос.УстановитьПараметр(«Наименование»<<?>>Наименование); (Проверка: Сервер)
и далее код с этой ошибкой.
Тогда реально с чем работает автор темы? И что мы обсуждаем?
Запятую я потерял чуть позже когда пытался поменять параметры. Ща перепроверю все свои эксперименты с запятой.
Добавлено: 09 авг 2014, 19:41
&НаКлиенте
Процедура НаименованиеПриИзменении(Элемент)
Проверка();
КонецПроцедуры
&НаСервере
Процедура Проверка()экспорт
Запрос = Новый Запрос;
Запрос.Текст ="ВЫБРАТЬ
| Покупатель.Наименование
|ИЗ
| Справочник.Покупатель КАК Покупатель
|Где
|Покупатель.Наименование = &Наименование" ;
Запрос.УстановитьПараметр("Наименование",Наименование);
Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() Тогда
Сообщить( "Данный покупатель уже существует!");
КонецЕсли;
{Справочник.Покупатель.Форма.ФормаЭлемента.Форма(17,49)}: Переменная не определена (Наименование)
Запрос.УстановитьПараметр(«Наименование»,<<?>>Наименование); (Проверка: Сервер).
Может есть другой способ проверки на уникальность при создании. Хотелось чтоб при заполнении первого регистра была проверка, а не после заполнения всех данных.
И что же у нас в переменной наименование, выложите скрин значения переменной «Наименование» в отладчике. После скрина продолжаем разговор.
В форме элемента просто так ссылаться на поле по его названию нельзя.
Ссылка на значение поля идет через объект, то есть код будет таким:
Запрос.УстановитьПараметр(«Наименование», Объект.Наименование);
И, к тому же, если у вас весь код в модуле формы элемента справочника, а обращаться к серверной процедуре вы из других мест конфигурации не собираетесь, то слово «Экспорт» можно не писать.
Теги:
- Форум 1С
-
►
Форум 1С — ПРЕДПРИЯТИЕ 8.0 8.1 8.2 8.3 8.4 -
►
Конфигурирование, программирование в 1С Предприятие 8 -
►
При запросе выдает ошибку.
Похожие темы (5)
![]()
Поиск
| kosvo |
|
||
|---|---|---|---|
|
|
Доброго времени суток!
Помогите пожалуйста разобраться! При создании нового запроса выдает постоянно ошибку…, причем , даже если вводится пример из справки. ========================= Процедура сталь_055ПриИзменении(Элемент) Запрос = Новый Запрос(); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл КонецПроцедуры Выдает ошибку: {ОбщаяФорма.Вариант.Форма(6,16)}: Тип не определен (Запрос) Учусь в ДемоВерсии 1С.v8 Спасибо! |
| Yandex |
|
||
|---|---|---|---|
|
|
| Mokey |
|
||
|---|---|---|---|
|
|
Что первое в голову пришло, буквы Рус-Лат какие-то в слове «Запрос».
Изменено 02.04.12 11:31:47 |
| E_Migachev |
|
||
|---|---|---|---|
|
|
(0) kosvo,
1. Пишется: Код 1C v 8.х
2. Если это УП, то Запрос можно выполнять только на сервере |
| Mokey |
|
||
|---|---|---|---|
|
|
(2) E_Migachev, вроде же и со скобками работает…
… проверил у себя (засомневался было), всё работает со скобками. Изменено 02.04.12 11:45:04 |
| kosvo |
|
||
|---|---|---|---|
|
|
т.е. причина в «&НаКлиенте» ? |
| E_Migachev |
|
||
|---|---|---|---|
|
|
(3) Mokey, хорошо |
| Mokey |
|
||
|---|---|---|---|
|
|
Ух ты.. а я и не обратил внимание на &НаКлиенте… сорри |
| kosvo |
|
||
|---|---|---|---|
|
|
Всем СПАСИБО! |
| kosvo |
|
||
|---|---|---|---|
|
|
Вопрос закрыт! |
| DJ_Serega |
|
||
|---|---|---|---|
|
|
(5) E_Migachev,
Я обычно так пишу запросы: Код 1C v 8.х
Текст получается компакнтым, и все запросы отдельно написаны в модуле объекта, изза чего можно их использовать из других объектов *07 Изменено 03.04.12 12:02:47 |
| Подсказка: Щелникни по Имени пользователя напротив ответа, и тем самым покажешь, что сообщение адресовано ему. |
Содержание:
1. Пример с внешней обработкой
2. Исправление ошибки в 1С
3. Новое условие при выполнении запроса
Данная ошибка выполнения запроса 1С может возникнуть при выполнении запроса, если в качестве параметра передается таблица значений с колонками, в которых не определен тип.
Разберем на примере почему данная ошибка программы 1С происходит, и как ее избежать при разработке.
1. Пример с внешней обработкой
Для простоты создадим внешнюю обработку 1С 8, которая будет выгружать в табличную часть обработки номенклатуры.
Предположим, у вас есть таблица значений, заполняемая некоторыми данными, например, наименованием производителей (Рисунок 1).
Рис. 1
Теперь напишем запрос, который будет выводить номенклатуру данных производителей (Рисунок 2).
Рис. 2
При попытке запустить заполнение табличной части 1С 8.3 выдает ошибку «Тип не может быть выбран в запросе» (Рисунок 3).
Рис. 3
Данная ошибка при выполнении операции в 1С возникла потому, что в таблице значений не указан тип колонки «Наименование».
2. Исправление ошибки в 1С
Чтобы исправить ошибку, необходимо явно указать тип при добавлении колонки. Сделать это можно при помощи Описания типов. Укажем наименование строкового типа данных (Рисунок 4).
Рис. 4
Также можно указать тип «СправочникСсылка.Производители», но тогда таблица значений не заполнится необходимыми данными, что, впрочем, можно исправить, воспользовавшись поиском по наименованию в справочнике, и подставив найденное значение в поле «Наименование» (Рисунок 5).
Рис. 5
Но остановимся на типе «Строка».
При попытке выполнить код, возникает новая ошибка программы, говорящая о том, что нельзя сравнивать разные типы (Рисунок 6).
Рис. 6
3. Новое условие при выполнении запроса 1С
Вернемся к выполнению запроса 1С и изменим его, заменив жесткое сравнение на условие «Подобно».
Запрос примет следующий вид (Рисунок 7).
Рис. 7
В результате мы получим список всей номенклатуры данных производителей (Рисунок 8).
Рис. 8
Специалист компании «Кодерлайн»
Айдар Фархутдинов
Тип не может быть выбран в запросе
Ошибка при вызове возникает в запросе, когда тип не может быть выбран в качестве источника данных (таблицы), либо не инициализирован в процессе выборки из временной таблицы. Значит вы пытаетесь загрузить таблицу значений в запрос 1С.
Полный текст ошибки:
Ошибка при вызове метода контекста (Выполнить)
ТЗ = Запрос.Выполнить().Выгрузить();
по причине: {(310, 32)}: Тип не может быть выбран в запросе

Сопутствующий ошибке код:
В качестве одного из параметров передается заполненная «Таблица значений», которая помещается во временную таблицу запроса, а затем уже производится ее выборка.
Например:
Запрос.УстановитьПараметр(«ТЗДеньги», Новый ТаблицаЗначений);
Сам текст запроса:
ВЫБРАТЬ * ПОМЕСТИТЬ ТДеньги ИЗ &ТЗДеньги КАК Т
;
ВЫБРАТЬ
ЗарплатныйПериод,
Статья,
Сотрудник,
Подразделение,
Сумма
ИЗ
тДеньги
Ошибка возникает в версиях 8.2 и 8.3 платформы 1С.
Причина ошибки:
Не инициализированные типы колонок в таблице значений.
ТЗДеньги = Новый ТаблицаЗначений;
ТЗДеньги.Колонки.Добавить("ЗарплатныйПериод");
ТЗДеньги.Колонки.Добавить("Статья");
ТЗДеньги.Колонки.Добавить("Сотрудник");
ТЗДеньги.Колонки.Добавить("Подразделение");
ТЗДеньги.Колонки.Добавить("Сумма");
Ошибка может проявится при значениях в таблице, которые не могут быть выбраны: объект Картинка, Диаграмма, Шрифт и прочие интерфейсные, либо не ссылочные типы.
Решение
Верная инициализация, каждой колонки в таблице значений:
ТЗДеньги = Новый ТаблицаЗначений;
ТЗДеньги.Колонки.Добавить("ЗарплатныйПериод",Новый ОписаниеТипов("Дата"));
ТЗДеньги.Колонки.Добавить("Статья",Новый ОписаниеТипов("Строка"));
ТЗДеньги.Колонки.Добавить("Сотрудник",Новый ОписаниеТипов("Строка"));
ТЗДеньги.Колонки.Добавить("Подразделение",Новый ОписаниеТипов("Строка"));
ТЗДеньги.Колонки.Добавить("Сумма",Новый ОписаниеТипов("Число"));
Если колонка должна содержать несколько типов, тогда используйте другой вариант инициализации ОписаниеТипов:
МассивТипов = Новый Массив;
МассивТипов.Добавить("Строка");
МассивТипов.Добавить("Число");
пОписаниеТипов = Новый ОписаниеТипов(МассивТипов);
Основное требование — точное указание для всех колонок.
Также смотрите про статью про тип «ЛюбаяСсылка»
Попутно может возникнуть ошибка, связанная с некорректным типом для агрегатных функций запроса:

«Неверные параметры Сумма», возникает, в случае хотя бы одно из значений в переданной таблице значений равно Null.
Люди кончают самоубийством оттого, что получают по почте одну рекламу.
Тема: Путаница в модулях! Откуда вызывать запрос? (Прочитано 4757 раз)
0 Пользователей и 1 Гость просматривают эту тему.
Всем доброго времени суток! Совсем запуталась в модулях! Объясните, пожалуйста, что делаю не так?
У документа реквизиты: Номер, Дата, СчетДенежныхСредств, ОстатокНаСчете, СуммаФактическая, такие-же на форме. Хочу при выборе счета автоматом получть остаток по нему. Пробовала так:
&НаКлиенте
Процедура СчетДенежныхСредствПриИзменении(Элемент)
СуммаНаСчете = ВернутьОстатокПоСчету();
КонецПроцедуры
&НаСервере
Функция ВернутьОстатокПоСчету()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ОстатокПоСчетамДенежныхСредствОстатки.СуммаОстаток
|ИЗ
| РегистрНакопления.ОстатокПоСчетамДенежныхСредств.Остатки(&НаДату, СчетДенежныхСредств = &Счет) КАК ОстатокПоСчетамДенежныхСредствОстатки";
Запрос.УстановитьПараметр("НаДату", Дата);
Запрос.УстановитьПараметр("Счет", СчетДенежныхСредств);
Результат = Запрос.Выполнить().Выгрузить();
Возврат Результат.СуммаОстаток;
КонецФункции
Орёт, что переменная не определена:
{Документ.КорректировкаСчетаДенежныхСредств.Форма.ФормаДокумента.Форма(13,38)}: Переменная не определена (Дата)
Запрос.УстановитьПараметр(«НаДату», <<?>>Дата); (Проверка: Сервер)
{Документ.КорректировкаСчетаДенежныхСредств.Форма.ФормаДокумента.Форма(14,36)}: Переменная не определена (СчетДенежныхСредств)
Запрос.УстановитьПараметр(«Счет», <<?>>СчетДенежныхСредств); (Проверка: Сервер)
Пыталась передавать их в процедуру:
СуммаНаСчете = ВернутьОстатокПоСчету(Дата, СчетДенжныхСредств);Орёт уже на форму:
{Документ.КорректировкаСчетаДенежныхСредств.Форма.ФормаДокумента.Форма(3,39)}: Переменная не определена (Дата)
СуммаНаСчете = ВернутьОстатокПоСчету(<<?>>Дата, СчетДенжныхСредств); (Проверка: Тонкий клиент)
{Документ.КорректировкаСчетаДенежныхСредств.Форма.ФормаДокумента.Форма(3,45)}: Переменная не определена (СчетДенжныхСредств)
СуммаНаСчете = ВернутьОстатокПоСчету(Дата, <<?>>СчетДенжныхСредств); (Проверка: Тонкий клиент)
Перекинула эту функцию в модуль объекта, пыталась вызывать её из модуля формы, ругается, что функция не определена, хотя я даже добавила к функции «Экспорт».
А в самой процедуре СчетДенежныхСредствПриИзменении(Элемент) не даёт сделать запрос, ругается на запрос.
{Документ.КорректировкаСчетаДенежныхСредств.Форма.ФормаДокумента.Форма(3,17)}: Тип не определен (Запрос)
Запрос = Новый <<?>>Запрос; (Проверка: Тонкий клиент)
Где что не так делаю? Как правильно и почему? 
Заранее благодарна!

Записан
&НаКлиенте
Процедура СчетДенежныхСредствПриИзменении(Элемент) тут надо в отладчике посмотреть и из элемента найти значение нового счета
СуммаНаСчете = ВернутьОстатокПоСчету(ДАТА, СЧЕТ); здесь надо передать значение даты и значение счета(или строку счета а в серверной функции найти счет по коду)
КонецПроцедуры
&НаСервере
Функция ВернутьОстатокПоСчету(ДАТА, СЧЕТ)
Запрос = Новый Запрос;
Запрос.Текст = «ВЫБРАТЬ
| ОстатокПоСчетамДенежныхСредствОстатки.СуммаОстаток
|ИЗ
| РегистрНакопления.ОстатокПоСчетамДенежныхСредств.Остатки(&НаДату, СчетДенежныхСредств = &Счет) КАК ОстатокПоСчетамДенежныхСредствОстатки»;
Запрос.УстановитьПараметр(«НаДату», Дата);
Запрос.УстановитьПараметр(«Счет», СчетДенежныхСредств);
Результат = Запрос.Выполнить().Выгрузить();
Возврат Результат.СуммаОстаток;
КонецФункции

Записан
Ничё не поняла! Можно поподробней?
В отладчике смотрела, но значение даты и счета так и не нашла. 

Записан
На клиенте определите переменную Дата И Счет
&НаКлиенте
Процедура СчетДенежныхСредствПриИзменении(Элемент)
Дата = Объект.Дата;
Счет = Объект. СчетДенежныхСредств;
//Затем передайте эти переменный в процедуру на сервер в качестве параметров
СуммаНаСчете = ВернутьОстатокПоСчету(Дата, Счет);
КонецПроцедуры
//После чего можно вызывать функцию на сервере без контекста
&НаСервереБезКонтекста
Функция ВернутьОстатокПоСчету(Дата, Счет)
Запрос = Новый Запрос;
Запрос.Текст = «ВЫБРАТЬ
| ОстатокПоСчетамДенежныхСредствОстатки.СуммаОстаток
|ИЗ
| РегистрНакопления.ОстатокПоСчетамДенежныхСредств.Остатки(&НаДату, СчетДенежныхСредств = &Счет) КАК ОстатокПоСчетамДенежныхСредствОстатки»;
Запрос.УстановитьПараметр(«НаДату», Дата);
Запрос.УстановитьПараметр(«Счет», Счет);
Результат = Запрос.Выполнить().Выгрузить();
Возврат Результат.СуммаОстаток;
КонецФункции

Записан
Данная ошибка возникает в том случае, когда вы пытаетесь использовать значение типа, о котором платформа не знает.
Вы зададитесь вопросом: «Как она может его не знать!?» Очень просто: либо используемый Вами релиз платформы ниже 1С:Предприятие 8.3.14, либо в свойствах конфигурации установлен режим совместимости ниже 8.3.14. Начиная с него тип УправляемаяФорма стал называться ФормаКлиентскогоПриложения. Это не означает, что старый тип не работает, но он устарел и фирма «1С» не дает никаких гарантий, что его не удалят в одном из будущих релизов.
Возможные варианты решений:
- Найти и заменить в коде все упоминания типа
ФормаКлиентскогоПриложенияна типУправляемаяФорма - Переключить режим совместимости в свойствах конфигурации на 8.3.14 и выше
- Выполнить апгрейд технологической платформы на версию 8.3.14 и выше
Внимание! В последних двух случаях не забывайте выполнить проверку остальных ключевых механизмов на тестовой среде перед обновлением платформы на рабочем контуре
Читайте также:
- Ошибка «Отсутствует отображение для типа (ФормаКлиентскогоПриложения)»

, я всегда без () пишу…