Тип не определен (Запрос) Запрос = Новый <<?>>Запрос; (Проверка: Тонкий клиент) |
Я |
23.06.22 — 13:05
Таких тем здесь много, ответ понятен, нельзя на клиенте использовать: Запрос = Новый Запрос; Но вопрос не в этом. Обычно работаю с конфигурациями ОФ: Альфа-Авто, КА1 (УПП)… Везде использую общий модуль мвДоработки с галочками: Сервер, Клиент (обычное приложение), Внешнее соединение (в Альфа-Авто не использую), Вызов сервера. Когда в конфигурацию надо внести более 2-х строк, то пишу их в этот модуль в виде функции, а вызов этой функции вставляю в то место, где нужно внести изменение. Когда поддержка КА1 закончилась, сделал базу на КА2 (еще вроде на КА2.1), но в ней пока не работаем, обновляем КА1 УПП. В КА2 тоже сделал общий модуль мвДоработки с галочками: Клиент, Сервер, Внешнее соединение. В нем написал несколько функций (в УФ я начинающий). Среди них есть:
// Возвращает Истина, если у номенклатуры единственное наименование
//
Функция ЕдинственноеНаименованиеНоменклатуры(Номенклатура) Экспорт
Запрос = Новый Запрос;
Запрос.Текст = »
|ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Наименование = &Наименование»;
Запрос.УстановитьПараметр(«Наименование», Номенклатура.Наименование);
Выборка = Запрос.Выполнить().Выбрать();
Счетчик = 0;
Пока Выборка.Следующий() Цикл
Если Счетчик > 0 Тогда
Возврат Ложь;
КонецЕсли;
Счетчик = Счетчик + 1;
КонецЦикла;
Возврат Истина;
КонецФункции
// Возвращает полное наименование ключа аналитики номенклатуры
// без дублей по наименованию
Функция ПолучитьПолноеНаименованиеКлючаАналитикиНоменклатуры(МенеджерЗаписи) Экспорт
Попытка
НаименованиеСклада = СокрЛП(МенеджерЗаписи.МестоХранения);
Исключение
НаименованиеСклада = СокрЛП(МенеджерЗаписи.Склад);
КонецПопытки;
Наименование = СокрЛП(МенеджерЗаписи.Номенклатура) + ?(ЕдинственноеНаименованиеНоменклатуры(МенеджерЗаписи.Номенклатура), «», «, »
+ ?(ПустаяСтрока(МенеджерЗаписи.Номенклатура.Артикул), СокрЛП(МенеджерЗаписи.Номенклатура.Код), СокрЛП(МенеджерЗаписи.Номенклатура.Артикул))) + «; »
+ ?(ЗначениеЗаполнено(МенеджерЗаписи.Характеристика), СокрЛП(МенеджерЗаписи.Характеристика) + «; «, «»)
+ ?(ЗначениеЗаполнено(МенеджерЗаписи.Серия), СокрЛП(МенеджерЗаписи.Серия) + «; «, «»)
+ ?(ЗначениеЗаполнено(МенеджерЗаписи.Назначение), СокрЛП(МенеджерЗаписи.Назначение) + «; «, «»)
+ ?(ЗначениеЗаполнено(МенеджерЗаписи.СтатьяКалькуляции), СокрЛП(МенеджерЗаписи.СтатьяКалькуляции) + «; «, «»)
+ СокрНаименованиеСклада(НаименованиеСклада);
Если СтрДлина(Наименование) > 100 Тогда
Наименование = Лев(СокрЛП(МенеджерЗаписи.Номенклатура), СтрДлина(СокрЛП(МенеджерЗаписи.Номенклатура)) — СтрДлина(Наименование) + 97) + «…»
+ ?(ЕдинственноеНаименованиеНоменклатуры(МенеджерЗаписи.Номенклатура), «», «, »
+ ?(ПустаяСтрока(МенеджерЗаписи.Номенклатура.Артикул), СокрЛП(МенеджерЗаписи.Номенклатура.Код), СокрЛП(МенеджерЗаписи.Номенклатура.Артикул))) + «; »
+ ?(ЗначениеЗаполнено(МенеджерЗаписи.Характеристика), СокрЛП(МенеджерЗаписи.Характеристика) + «; «, «»)
+ ?(ЗначениеЗаполнено(МенеджерЗаписи.Серия), СокрЛП(МенеджерЗаписи.Серия) + «; «, «»)
+ ?(ЗначениеЗаполнено(МенеджерЗаписи.Назначение), СокрЛП(МенеджерЗаписи.Назначение) + «; «, «»)
+ ?(ЗначениеЗаполнено(МенеджерЗаписи.СтатьяКалькуляции), СокрЛП(МенеджерЗаписи.СтатьяКалькуляции) + «; «, «»)
+ СокрНаименованиеСклада(НаименованиеСклада);
КонецЕсли;
Возврат Наименование;
КонецФункции
которая вызывается из РС АналитикаУчетаНоменклатуры:
Функция ПолучитьПолноеНаименованиеКлючаАналитики(МенеджерЗаписи)
Возврат мвДоработки.ПолучитьПолноеНаименованиеКлючаАналитикиНоменклатуры(МенеджерЗаписи); //+МВ 12.05.2019
// Возврат СокрЛП(МенеджерЗаписи.Номенклатура) + «; »
// + ?(ЗначениеЗаполнено(МенеджерЗаписи.Характеристика), СокрЛП(МенеджерЗаписи.Характеристика) + «; «, «»)
// + ?(ЗначениеЗаполнено(МенеджерЗаписи.Серия), СокрЛП(МенеджерЗаписи.Серия) + «; «, «»)
// + ?(ЗначениеЗаполнено(МенеджерЗаписи.Назначение), СокрЛП(МенеджерЗаписи.Назначение) + «; «, «»)
// + ?(ЗначениеЗаполнено(МенеджерЗаписи.СтатьяКалькуляции), СокрЛП(МенеджерЗаписи.СтатьяКалькуляции) + «; «, «»)
// + СокрЛП(МенеджерЗаписи.МестоХранения);
КонецФункции
В данном случае галочка Клиент на мвДоработки не нужна, но можно ли ее убрать? Наверное это зависит от других функций модуля. Как навскидку определить: может ли функция выполняться только на клиенте? Вопрос наверное глупый, но в УФ я начинающий. Убрал галочку Клинт — ошибка: Тип не определен (Запрос) исчезла. Потом вернул ее, сохранил конфигурацию, ошибка не появилась!? Раньше она появлялась, до обновления на 2.5.8.221.
Модератор
1 — 23.06.22 — 13:08
в тонком клиенте нет запросов. Управление надо передать на сервер
2 — 23.06.22 — 13:19
Возврат Выборка.Количество() <= 1
3 — 23.06.22 — 13:39
Инструкциями препроцессора (#Если Не ТонкийКлиент И Не ВебКлиент И Не МобильныйКлиент Тогда) можно заэкранировать фрагменты модуля, если не хочется делать отдельный модуль.
4 — 23.06.22 — 14:31
(1) На счет запросов понятно — клиент их не может делать. Но вопрос: что может клиент, но не может сервер?
5 — 23.06.22 — 14:33
(4)
ТекстовыйДокумент (TextDocument)
Показать (Show)
Доступность:
Тонкий клиент, веб-клиент, толстый клиент.
6 — 23.06.22 — 14:42
(4) В настройках синтаксис помощника
https://i.imgur.com/W1Nf3eh.png
7 — 23.06.22 — 14:56
(4) чтобы не было каши в названиях модулей и галочках
https://its.1c.ru/db/v8std#content:469:hdoc
8 — 23.06.22 — 16:00
(5) ТекстовыйДокумент() — этого точно нет в общем модуле мвДоработки.
(6), (7) Спс. Значит можно снять галочку Клиент с мвДоработки.
9 — 23.06.22 — 16:07
Эта тему можно закрыть. Может кто поможет с вопросом КД2: Сравнение и объединение правил обмена а то он не по теме.
10 — 28.07.22 — 10:48
Рано еще зарывать. Раньше УПП работала 8.3.10, как и все базы, Альфа-Авто выше не работала. Теперь решил перевести на 8.3.19.1522 (установлена для КА2), знаю что Com-обмены могут работать на разных платформах, а вот OLE — не знаю? При загрузки Выписки из УПП выскочила ошибка Тип не определен Запрос = ОбъектКА.NewObject(«Запрос»); а затем: Ошибка при вызове конструктора (COMОбъект): -2147221005(0x800401F3): Недопустимая строка с указанием класса. Как убрать ошибку 1С «-2147221005(0x800401F3): Недопустимая строка с указанием класса» нашел статью: https://zen.yandex.ru/media/nastroyka1c/kak-ubrat-oshibku-1s-21472210050x800401f3-nedopustimaia-stroka-s-ukazaniem-klassa-5e56042f5c1f4e2533321a22 и ужаснулся: не уже ли так, больше никак?
11 — 28.07.22 — 10:52
(10) «и ужаснулся: не уже ли так, больше никак?» — уже давно так, ничего сложного там нет
12 — 28.07.22 — 11:12
(10) я больше ужаснулся, когда увидел, как зверски слово «неужели» разорвали на три части
13 — 28.07.22 — 11:22
(12) разорвало в клочья.
14 — 28.07.22 — 11:52
(10) «знаю что Com-обмены могут работать на разных платформах», можете поделиться ссылкой на описание, как это организовать?
15 — 28.07.22 — 12:09
16 — 28.07.22 — 15:25
(11) Давно, но так-то что-то настраивал в службе компонентов Службы компонентов: возможно ли создать обертку OLE соединения V83.Application Что-то создавал там, но сейчас найти не могу где? Не давно обновил высокую платформу, может там что перенастроить нужно? Но где ранее сделанные настройки?
(15) самое неприятное: «Ну и самое главное: не забываем, что работать это будет только при запуске 1С с административными правами.» — а обычным пользователям как работать!?
17 — 29.07.22 — 08:28
Нашел, последняя была 8.3.16.1959, сейчас 8.3.19.1522 https://ibb.co/ZHk8XsH Как исправить? Менять цифры в наименовании наверное бесполезно.
18 — 29.07.22 — 10:05
19 — 29.07.22 — 10:41
Вроде сделал по инструкции (10). Не знаю как перезапустить службу компонентов?
(18) Что за «Управление СОМ классами 1С (ИР)» — где ее взять?
20 — 29.07.22 — 11:38
(19) ИР — Инструменты разработчика Tormozit для 1С
http://devtool1c.ucoz.ru/
21 — 30.07.22 — 08:49
(20) Скачал ИНСТРУМЕНТЫ РАЗРАБОТЧИКА ПОРТАТИВНЫЙ 1С 8.2+ V6.37.1P, как его запустить?
(19) Ночью перезагрузил сервер, похоже ничего не изменилось.
22 — 30.07.22 — 09:45
23 — 30.07.22 — 10:10
Капец, деректив не знаешь, функцию СтрШаблон видимо тоже(
«Но вопрос: что может клиент, но не может сервер?» В синтакспомощнике забанен походу)
24 — 30.07.22 — 10:14
Что может клиент и не может сервер — много чего. В основном интерактивная работа — формы, диалоги.
А еще сервер много чего может чего не может клиент. Новичков в УФ обычно начинает бомбить от того, что на клиенте нельзя использовать таблицу значений.
25 — 30.07.22 — 10:29
(24) зачем было запрещать таблицу на клиенте вообще не понятно. Тем более что через хаки ее можно там получить
26 — 30.07.22 — 11:06
(25) > через хаки
Ну давай, получи её в веб-клиенте. Через хаки.
27 — 30.07.22 — 11:07
Чо за хаки?
28 — 30.07.22 — 11:19
(26) уж в веб клиенте на жс реализовать ничего не мешало
29 — 30.07.22 — 11:19
(27) через внешнюю компоненту
30 — 30.07.22 — 11:45
(28) > ничего не мешало
Ну, то есть тема с хаками закрывается и начинается традиционное «да я сам жаваскрипт знаю, там все просто».
31 — 30.07.22 — 11:46
(30) ничего не мешало, просто не сделали.
Почему? Это только внутри 1с знают
32 — 30.07.22 — 11:55
У текущего пользователя ИБ включен флажок «Защита от опасных действий». Для корректной работы инструментов его рекомендуется выключить!
Как это сделать?
33 — 30.07.22 — 12:21
Эта галка только в конфигураторе
34 — 30.07.22 — 12:24
Галка у пользователя в конфигураторе. Есть еще защита от опасных действий, безопасный режим у расширения.
35 — 30.07.22 — 12:33
(33),(34) Обычный реквизит? — найти не могу.
36 — 30.07.22 — 12:33
Пользователи это не справочник
37 — 30.07.22 — 12:36
(36) Как так, не только?
38 — 30.07.22 — 13:07
Где еще?
39 — 30.07.22 — 14:00
(34) у расширения? А если его не использую…
40 — 30.07.22 — 15:42
(39) если не используешь, значит это тебе не надо.
41 — 30.07.22 — 15:42
Пользователи Информационной базы. В конфигураторе.
42 — 30.07.22 — 16:22
(40) Не понял.
43 — 30.07.22 — 17:08
Если нет расширений значит это ограничениев расширении не работает. Остается только пользователь.
44 — 31.07.22 — 07:07
(43) В справочнике Пользователи, или где он?
45 — 31.07.22 — 07:33
Почему в службе компонентов в свойствах V83COMConnector_8_3_19_1522 не вижу версию comcntr.dll (пункт 9 инструкции (10)). Почему в имени V83COMConnector_ в написании версии не могу использовать точки вместо подчеркиваний 8_3_19_1522?
46 — 31.07.22 — 08:25
D свойствах V83COMConnector_8_3_19_1522 на вкладке «Удостоверение» обязательно указывать пользователь/пароль? Если Да, то какого?
47 — 31.07.22 — 08:28
48 — 31.07.22 — 09:35
(47) Администрирование/Пользователи
49 — 31.07.22 — 09:52
Но там не стоит «защита от опасных действий» https://ibb.co/MhcBtGW .
50 — 01.08.22 — 06:49
Вернемся к нашей ошибке: -2147221005(0x800401F3): Недопустимая строка с указанием класса — как ее исправить?
51 — 01.08.22 — 07:29
Сумел открыть инструмент (18) по подсказке (22) ?
52 — 01.08.22 — 07:39
(50) Используй для начала 32-разрядную платформу
53 — 01.08.22 — 08:06
(52) НЕ хотелось бы…
54 — 01.08.22 — 08:07
(53) Начни с малого. Возможно, натолкнёт на решение большего.
55 — 01.08.22 — 08:14
(54) Платформа 8.3.19.1522 у меня стоит 2-й платформой на сервере (на других портах) не хотелось бы ее трогать.
56 — 01.08.22 — 08:49
(55) Дело не в том, что ты хочешь, а в том, чтобы разобраться в причинах. Что мешает проверить на копии локально хотя бы в файловом режиме?
57 — 01.08.22 — 10:39
(56) Не пойму какие выводы я должен вынести из этого эксперимента, ну сменю версию платформы, ну исчезнет ошибка, а дальше что делать?
58 — 16.08.22 — 13:18
Нашел картинку старой службы компонентов https://ibb.co/318LvJV — до обновления 8.3.19, и инструкцию как ее создавал: https://infostart.ru/public/610960/ — COM соединения с базами 1С на различных версиях платформы «Без перерегистрации и СМС». Старые платформы 8.3.14 и 16 удалил. Добавил новую 8.3.19 вроде все по этой инструкции, но ошибка: «Недопустимая строка с указанием класса» осталась!?
59 — 16.08.22 — 14:17
С таким подходом к концу года сам разберешься наверное.
60 — 16.08.22 — 14:28
(59) Хотелось бы раньше.
61 — 16.08.22 — 14:38
(60) тогда вернись к (20) и попробуй утильку от TormozIT
62 — 16.08.22 — 15:52
(61) Ну скачал его, а что делать с ним не знаю?
63 — 16.08.22 — 18:09
(62) Открыть в нем инструмент «Управление СОМ классами 1С»
64 — 16.08.22 — 18:13
(63) И дальше что, как сделать правильно, чтобы работало?
65 — 16.08.22 — 18:29
Надо понять где выполняется код, вызывающий COM-соединение. Если на сервере, то тебе надо запустить на сервере терминальный сеанс под тем же пользователем ОС, под которым работает служба 1С. Открываешь «Управление СОМ классами 1С (ИР)» и показываешь нам картинку.
66 — 16.08.22 — 18:34
(65) Прежде чем показать нужно это запустить. Как это сделать?
67 — 16.08.22 — 18:40
68 — 16.08.22 — 19:13
(67) Не удачный пример с расширением. Расширением я не пользуюсь, оно в 8.3.10 недоступно. Другие примеры есть без расширений?
69 — 16.08.22 — 19:19
Для обычных форм.
70 — 16.08.22 — 22:28
(68) Обманываешь. Для варианта «Расширение» на странице скачивания указано «Для 1С 8.3.10+ в режиме совместимости 8.3.9+»
Если же не пользуешься по религиозным причинам, то значит ты скачал вариант «Портативный». Тогда идешь и читаешь раздел «Запуск» (целое одно предложение) в его описании http://devtool1c.ucoz.ru/index/variant_portativnyj/0-39
71 — 17.08.22 — 11:49
(70) Не понял, по ссылке: 404 Не Найдено!?
72 — 17.08.22 — 12:00
(70) > то значит ты скачал вариант «Портативный»
Да, писал в (21).
73 — 17.08.22 — 14:37
Нашел COM-соединение и версии платформ в ней ссылка на Книга знаний: Вызов 32-битных COM-объектов на стороне 64-битного сервера 1С — мало отличается от инструкции в (58), но есть неясные места, например, 5. Учетная запись для запуска приложения: выбираем учетку под которой стартует сервер 1С — как выбирать? Или 6. В ветке созданного приложения переходим на ветку «Роли» открываем роль «CreatorOwner» и далее в разделе «Пользователи» создаем пользователя — учетную запись под которой работает сервер 1С. — это как? Пароль я знаю, ввожу его, когда устанавливаю или обновляю сервер 1С. Открываю роль «CreatorOwner» в папке Пользователи вижу свою учетную запись — она и есть, ничего вводить не надо?
Далее все как (58), а нет: 9. Открываем свойства только что созданного компонента, идем на вкладку «Безопасность», проверяем в списке «Явно установленные для выделенных объектов роли» стоит ли «птичка» напротив роль CreatorOwner — если нет, тогда устанавливаем эту «птичку». Попробую с птичкой.
74 — 17.08.22 — 14:53
Птичка не помогла.
75 — 17.08.22 — 15:36
76 — 17.08.22 — 16:54
(75) Открыл по ссылке http://devtool1c.ucoz.ru/index/variant_portativnyj/0-39 (части твой), далее скачал rdtt.zip, извлек из него ирПортативный.erp, попытался его открыть в Альфа-Авто на 8.3.10.2466, которая не может COM-соединится с КА1 (УПП) на 8.3.19.1522, получил:
Ошибка инициализации модуля: ВнешняяОбработка.ирПортативный.МодульОбъекта
по причине:
{ВнешняяОбработка.ирПортативный.МодульОбъекта(3928)}: Ошибка при вызове метода контекста (Создать)
по причине:
Ошибка подключения внешних метаданных
по причине:
Каталог не обнаружен ‘\corp.akitworkspace$1c1с_АрхивыCAМодулиирКэш.epf’
Папку Модули создал, а где взять ирКэш.epf?
77 — 17.08.22 — 17:07
Создал пустой ирКэш.epf, получил:
Ошибка инициализации модуля: ВнешняяОбработка.ирПортативный.МодульОбъекта
по причине:
{ВнешняяОбработка.ирПортативный.МодульОбъекта(3928)}: Ошибка при вызове метода контекста (Создать)
по причине:
Ошибка подключения внешних метаданных
по причине:
Ошибка загрузки документа.
Как открыть, запустить ирПортативный.erp?
78 — 17.08.22 — 18:54
(76) Ладно. Бросай ты этот ИР. Там слишком сложно запускать. Тебе подойдут только инструменты из одной внешней обработки. У меня таких нет.
79 — 17.08.22 — 19:46
Нашел еще более старую картинку с платформой 8.3.14.1779: https://ibb.co/LvGfVX8, жаль не показано внутреннее содержимое вкладок.
80 — 17.08.22 — 20:05
Может кто подскажет что должно быть на вкладке Безопасность?
81 — 18.08.22 — 00:01
(50)Попробуй перерегистрировать dll из командной строки.
82 — 18.08.22 — 08:15
83 — 18.08.22 — 08:50
(80) В инструкции https://infostart.ru/public/610960/ в комментариях написано:
2. В оснастке служб компонентов, «Службы компонентов» — «Компьютеры» — «Мой компьютер» — «Приложения COM+»
3. Создаем новое приложение, правой кнопкой по «Приложения COM+» — «Создать» — «Приложение»
4*. Выбираем «Создать новое приложение», называем например «1cv8», тип выбираем «Серверное приложение»,
Учетная запись — Текущий пользователь, Пользователь с ролью Owner — поставил администратора компьютера (сервера).
(без этого возможна ошибка -2147024769(0x8007007F): Не найдена указанная процедура)
Мне не понятна фраза: «Пользователь с ролью Owner — поставил администратора компьютера (сервера)» — у меня лишь роль CreatorOwner https://ibb.co/7GrSHgm, надо что-то делать? Судя по старым картинкам приложения не ставил, только Компоненты.
84 — 18.08.22 — 08:54
85 — 18.08.22 — 15:25
Сделал все по Книга знаний: Вызов 32-битных COM-объектов на стороне 64-битного сервера 1С , но все равно ошибка: «Недопустимая строка с указанием класса» осталась!? Раньше не проверял OLE-соединение, только Com-соединение. Может все инструкции (которые здесь упоминал) не предназначены для OLE?
86 — 18.08.22 — 16:35
(83) В свойствах приложения на вкладку Удостоверение добавил администратора компьютера (сервера) ИмяСервераUSR1CV82, но это не помогло. Не знаю правильно ли понял фразу из (83)?
87 — 19.08.22 — 01:42
(82)консоль надо с правами админа запускать, а у тебя явно пользовательский запуск судя по картинке.
88 — 19.08.22 — 07:49
(87) Консоль командной строки запущена под Администратором.
89 — 19.08.22 — 07:54
(87) Смотри заголовок командной строки, или я чего-то не понимаю.
90 — 19.08.22 — 09:26
Каюсь база КА1 (УПП), к которой я цепляюсь по COM-соединению, оказывается открыта конфигуратором в 8.3.10.2466, перезапустил в 8.3.19.1522, но все равно ошибка: «Недопустимая строка с указанием класса» осталась!?
91 — 19.08.22 — 12:10
Удалил V83.COMConnector_8.3.19.1522 из службы компонентов совсем, Альфа-Авто ведет себя также как будь-то не было V83.COMConnector_8.3.19.1522 вовсе!?
92 — 19.08.22 — 12:41
Нет ошибки, например: Не найдена указанная процедура.
93 — 19.08.22 — 12:44
Используйте веб сервисы и будет вам счастье
94 — 19.08.22 — 14:32
(93) Раньше же до перехода (обновления) на другую версию платформы работало.
95 — 19.08.22 — 14:36
(94) Удалите все ком коннекторы, на клиенте и на сервере и заново зарегайте библиотеку комконнектор. Самостоятельно ее пропишите в компонентах по инструкциям. Может повезет и заработает
96 — 19.08.22 — 14:54
(95) Уточни, где, что удалить? В конфигураторе или в Службе компонентов? А то формы общие.
97 — 19.08.22 — 15:22
(96) А как вы в конфигураторе удалите ком коннекторы?))
Речь идет о службах компонентов. Поймите уже наконец как работает ком соединение. Если на пальцах, есть библиотека 1с КомКоннектор.Длл. Через службу компонентов мы создаем обертку для этой библиотеки. Указываем права и прочие параметры. 1ска же цепляется к этой обертке и уже через нее работает с библиотекой. Нужно так же правильно прописывать путь до коннектора.
98 — 19.08.22 — 15:23
Обычно, при установке платформы, 1ска сама это дело регистрирует и прописывает, но вот иногда бывают косяки. Или бывает несколько платформ развернуто с разными версиями, что тоже может вызывать косяки.
99 — 19.08.22 — 16:23
(98) >> Обычно
это достаточно новая мулька. раньше вообще всегда надо было регать вручную
и теперь, когда ты ставишь дистриб на компе, где понах.ячено как у (0), то автоматически ничего не срабатывает — надо так же вручную вписывать новые компоненты.
100 — 19.08.22 — 16:57
Сделал опять приложение (в конфигураторе прописал его имя: БазаКА = Новый COMОбъект(«V8_ComConnector»); — правильно? как в Книга знаний: Вызов 32-битных COM-объектов на стороне 64-битного сервера 1С в компоненте на вкладке Безопасность для роли CreatorOwner поставил галочку. Получил ошибку: Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V83.COMConnector.1): Неверные или отсутствующие параметры соединения с информационной базой. Хотя компоненту V83.COMConnector.1 заменил на псевдоним V83.COMConnector_8.3.19.1522 — правильно?
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 |
Подсказка: Вы получили ответ на свой вопрос — закройте вопрос! |
При запросе выдает ошибку.
Автор Серега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С — ПРЕДПРИЯТИЕ 8.0 8.1 8.2 8.3 8.4 -
►
Конфигурирование, программирование в 1С Предприятие 8 -
►
При запросе выдает ошибку.
Похожие темы (5)
Поиск
Тип не определен (Запрос) |
Я |
GreenDay1986
07.11.12 — 12:51
Тип не определен (Запрос)
Запрос = Новый <<?>>Запрос(); (Проверка: Тонкий клиент)
Всем здравствуйте. Создаю новую информационную базу, не из шаблона, для разработки. Создаю справочники, доки, регистры. Собственно вопрос. Если стоит параметр &НаКлиенте я так понимаю тип запрос на клиенте не определен, ставлю на сервере, ничего не происходит
&НаКлиенте
Процедура ПриОткрытии()
Запрос = Новый Запрос();
Запрос.Текст=»ВЫБРАТЬ
|Рег.Цена КАК Цена,
|Рег.Дата КАК Дата
|ИЗ РегистрСведений.Цены КАК Рег
|»;
Рез = Запрос.Выполнить().Выбрать();
Пока Рез.Следующий() Цикл
Сообщить(Рез.Цена);
Сообщить(Рез.Дата);
КонецЦикла;
КонецПроцедуры
Что пишу неправильно?
GreenDay1986
1 — 07.11.12 — 12:52
&НаСервере
Процедура ПриОткрытии()
Запрос = Новый Запрос();
Запрос.Текст=»ВЫБРАТЬ
|Рег.Цена КАК Цена,
|Рег.Дата КАК Дата
|ИЗ РегистрСведений.Цены КАК Рег
|»;
Рез = Запрос.Выполнить().Выбрать();
Пока Рез.Следующий() Цикл
ЭтаФорма.Элементы.Цена = Рез.Цена;
Сообщить(Рез.Цена);
Сообщить(Рез.Дата);
КонецЦикла;
КонецПроцедуры
или просто
Процедура ПриОткрытии()
Запрос = Новый Запрос();
Запрос.Текст=»ВЫБРАТЬ
|Рег.Цена КАК Цена,
|Рег.Дата КАК Дата
|ИЗ РегистрСведений.Цены КАК Рег
|»;
Рез = Запрос.Выполнить().Выбрать();
Пока Рез.Следующий() Цикл
ЭтаФорма.Элементы.Цена = Рез.Цена;
Сообщить(Рез.Цена);
Сообщить(Рез.Дата);
КонецЦикла;
КонецПроцедуры
ошибок не выдает но и запросы также не исполняются
mikecool
2 — 07.11.12 — 12:53
с чего решил, что запросы не выполняются?
GreenDay1986
3 — 07.11.12 — 12:54
С того что никакие сообщения не выводятся, точнее может и исполняются, однако результата нет
mikecool
4 — 07.11.12 — 12:55
(3) сообщения выводятся, только на сервере
включай уже мосх )
Magic Dick
5 — 07.11.12 — 12:56
Новый Запрос;
Песец
6 — 07.11.12 — 12:56
Проверка: Тонкий клиент
GreenDay1986
7 — 07.11.12 — 12:57
Процедура ПриОткрытии()
Запрос = Новый Запрос();
Запрос.Текст=»ВЫБРАТЬ
|Рег.Цена КАК Цена,
|Рег.Дата КАК Дата
|ИЗ РегистрСведений.Цены КАК Рег
|»;
Рез = Запрос.Выполнить().Выбрать();
Пока Рез.Следующий() Цикл
ЭтаФорма.Элементы.Цена = Рез.Цена;
Сообщить(Рез.Цена);
Сообщить(Рез.Дата);
КонецЦикла;
КонецПроцедуры
Здесь куда выводятся?
vmv
8 — 07.11.12 — 12:57
тс — глупый тролль, уничтожиить!
Magic Dick
9 — 07.11.12 — 12:58
(8) а может 86 год?
GreenDay1986
10 — 07.11.12 — 12:58
брррр, да нет, не тролль, учусь маленько
Песец
11 — 07.11.12 — 12:59
Запрос (Query)
…
Доступность:
Сервер, толстый клиент, внешнее соединение.
(с) СП
GreenDay1986
12 — 07.11.12 — 12:59
(11) То есть мне нужно создавать новую базу на сервере, так понимаю?
vmv
13 — 07.11.12 — 13:00
(10) открываем сп и в первой главе «директивы компиляции» изучаем, хотя может лучше порясят выращивать — ты подумай, что выгоднее
Песец
14 — 07.11.12 — 13:00
(12) Не, базу не надо.
Песец
15 — 07.11.12 — 13:01
(14+) Медитируй до просветления:
Тип не определен (Запрос)
Запрос = Новый <<?>>Запрос(); (Проверка: Тонкий клиент)
GreenDay1986
16 — 07.11.12 — 13:01
(14) То есть базу на локальном компьютере я правильно создал. Что дальше делать дабы в ней сожно было работать с запросами?
Песец
17 — 07.11.12 — 13:03
(16) В тонком клиенте тип «Запрос» не определен.
Sammo
18 — 07.11.12 — 13:03
Запрос это сущность или процедура?
ptiz
19 — 07.11.12 — 13:03
(16) На сервере выполняешь запрос. На клиента возвращаешь сообщения.
Песец
20 — 07.11.12 — 13:04
(17+) …в нем толко интерфейс, что-либо делать с базой надо на стороне сервера.
GreenDay1986
21 — 07.11.12 — 13:04
(19) спасибо, счас попробую.
GreenDay1986
22 — 07.11.12 — 13:06
(19) Как это с точки зрения синтаксиса будет выглядеть? 2 процедуры?
GreenDay1986
23 — 07.11.12 — 13:12
Хм, можно пример как возвратить с сервера на клиент? Исполнение так понимаю
&НаСервере
Процедура ПриОткрытии()
Запрос = Новый Запрос();
Запрос.Текст=»ВЫБРАТЬ
|Рег.Цена КАК Цена,
|Рег.Дата КАК Дата
|ИЗ РегистрСведений.Цены КАК Рег
|»;
Рез = Запрос.Выполнить().Выбрать();
КонецПроцедуры
Шапокляк
24 — 07.11.12 — 13:16
(23) Запрос = Новый Запрос;
Убери скобочки! И — нескромный вопрос — а что на сервере открывают-то?
Песец
25 — 07.11.12 — 13:16
(23) На клиенте этой процедуры просто не будет.
Как вариант — создать общий модуль с галочками «сервер» и «вызов сервера», в нем расположить твою функцию которая вернет данные, ее и вызывать из ПриОткрытии.
GreenDay1986
26 — 07.11.12 — 13:20
(25) В общем все мои запросы исполнять в общих модулях, При открытии прописывать уже непосредственно передаваемые с сервера параметры?
GreenDay1986
27 — 07.11.12 — 13:21
Мутновато пока укладывается, ну ладно, спасибо, будем разбираться
le_
28 — 07.11.12 — 13:25
(27) Поищи видеокурс Гилева по управляемым формам.
Xapac_2
29 — 07.11.12 — 13:27
на КЛИЕНТЕ же!!!
сделай на сервере
Wobland
30 — 07.11.12 — 13:28
ТС как минимум уже год учится, никак не научится
Aprobator
31 — 07.11.12 — 13:28
(27) чего тут укладываться то? УФ — видимость методов и т.п. смотреть обязательно, только и всего.
GreenDay1986
32 — 07.11.12 — 13:35
Хм, как ИБ без управляемых форм сделать? Конфигурации подревнее поискать?
Wobland
33 — 07.11.12 — 13:35
(32) нужно как-то себя заставить
GreenDay1986
34 — 07.11.12 — 13:36
(33)Ога, я пока ток БП ковырял, без УФ.
GreenDay1986
35 — 07.11.12 — 14:33
Для примера родил следующее.
&НаСервере
Функция ВыбратьДанные(Найм)
Запрос = Новый Запрос;
Запрос.Текст =»ВЫБРАТЬ
|Ном.Наименование КАК Наим
|ИЗ Справочник.Номенклатура КАК Ном
|ГДЕ Наим.Наименование=&Найм
|»;
Запрос.УстановитьПараметр(«Найм»,Найм);
Рез = Запрос.Выполнить().Выбрать();
Пока Рез.Следующий()Цикл;
Сообщить(Рез.Наим);
КонецЦикла;
КонецФункции
&НаКлиенте
Процедура ПриОткрытии()
Сообщить(ВыбратьДанные(Этаформа.Элементы.Наименование));
КонецПроцедуры
Возвращает ошибку
{Справочник.Номенклатура.Форма.ФормаЭлемента.Форма(20)}: Ошибка при вызове метода контекста (ВыбратьДанные)
Сообщить(ВыбратьДанные(Этаформа.Элементы.Наименование));
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства ‘param’:
форма: Элемент
имя: {http://v8.1c.ru/8.2/managed-application/modules}param
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа ‘ПолеФормы’
salvator
36 — 07.11.12 — 14:36
Если Рез.Следующий() Тогда;
Возврат Рез.Наим;
КонецЕсли;
GreenDay1986
37 — 07.11.12 — 14:39
(36) таже самая ошибка возвращается.
Romich1981
38 — 07.11.12 — 14:44
Посмотри хоть какой тип у «Этаформа.Элементы.Наименование»
GreenDay1986
39 — 07.11.12 — 14:44
(38) Поле ввода
Romich1981
40 — 07.11.12 — 14:45
=) о чем и речь. Какие типы можно передавать?
hhhh
41 — 07.11.12 — 14:45
(37) а вот этот бред как объясните? Что это за слово?
ГДЕ Наим.Наименование
GreenDay1986
42 — 07.11.12 — 14:47
Где Ном.Наименование, простите
samozvanec
43 — 07.11.12 — 14:48
все не читал. Что за прикол менять директиву компиляции у событий формы?
GreenDay1986
44 — 07.11.12 — 14:49
Не ругайтесь шибко, УФ первый раз юзаю
GreenDay1986
45 — 07.11.12 — 14:57
Уррра, нашел ЭтаФорма.Объект.Наименование. Передалось таки
sidalexsandr
46 — 07.11.12 — 14:58
Можно так:
&НаСервере
Функция ВыбратьДанные(Найм)
Запрос = Новый Запрос;
Запрос.Текст =»ВЫБРАТЬ
|Ном.Наименование КАК Наим
|ИЗ Справочник.Номенклатура КАК Ном
|ГДЕ Наим.Наименование=&Найм
|»;
Запрос.УстановитьПараметр(«Найм»,Найм);
РезультатЗапроса = Запрос.Выполнить();
СпособОбхода = ОбходРезультатаЗапроса.Прямой;
ТабЗнач = РезультатЗапроса.Выгрузить(СпособОбхода);
Возврат ТабЗнач;
КонецФункции
GreenDay1986
47 — 07.11.12 — 14:59
(46) Спасибо!
sidalexsandr
48 — 07.11.12 — 15:00
(46)+
Дальше
&НаКлиенте
Процедура ЗабратьССервера()
ТаблЗначений = ВыбратьДанные(Найм);
// Дальше получай на здоровье данные из Таблицы значений
КонецПроцедуры
sidalexsandr
49 — 07.11.12 — 15:00
(47) Вот теперь можеш спасибо
sidalexsandr
50 — 07.11.12 — 15:01
Напиши, что получилось.
hhhh
51 — 07.11.12 — 15:05
(49) ТаблицаЗначений
Доступность:
Сервер, толстый клиент, внешнее соединение.
GreenDay1986
52 — 07.11.12 — 15:11
(50) Соединяю с регистромСведений цены.Сообщение выдалось
GreenDay1986
53 — 07.11.12 — 15:28
Получилось так
&НаСервере
Функция ВыбратьДанные(Найм)
Запрос = Новый Запрос;
Запрос.Текст =»ВЫБРАТЬ
|Ном.Наименование КАК Наим,
|ЕСТЬNULL(Рег.Цена,0) КАК Цена,
|ЕСТЬNULL(Рег.Период,0) КАК Период
|ИЗ Справочник.Номенклатура КАК Ном
|ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены.СрезПоследних(&ДатаСреза)КАК Рег
|ПО Ном.Наименование = Рег.Наименование
|ГДЕ Ном.Наименование=&Найм
|»;
Запрос.УстановитьПараметр(«ДатаСреза», КонецДня(ТекущаяДата()));
Запрос.УстановитьПараметр(«Найм»,Найм);
Рез = Запрос.Выполнить().Выбрать();
Пока Рез.Следующий()Цикл
Сообщить(Рез.Наим);
Сообщить(Рез.Цена);
Сообщить(Рез.Период);
КонецЦикла;
КонецФункции
&НаКлиенте
Процедура ПриОткрытии()
ВыбратьДанные(ЭтаФорма.Объект.Наименование);
КонецПроцедуры
Наименование обьекта текущей формы возвращает. Цену и Период возвращает почему-то пустыми. Хотя в регистресведений Цены эти данные заполнены
DionisSergeevich
54 — 07.11.12 — 15:34
(53) Отладчик в руки и смотри что у тебя в Рез после Рез.Следующий. Попробуй запрос с твоими параметрами в консоли запросов. Так на глаз не вижу почему возвращает пустые значения
Шапокляк
55 — 07.11.12 — 15:50
(53) Ну и кто там на сервере это читает
Пока Рез.Следующий()Цикл
Сообщить(Рез.Наим);
Сообщить(Рез.Цена);
Сообщить(Рез.Период);
КонецЦикла;
Засовывай в структуру и возвращай клиенту
DionisSergeevich
56 — 07.11.12 — 15:51
(55) суть то не в этом. суть то в другом
GreenDay1986
57 — 07.11.12 — 15:55
(55) Рез.Наим возвращает и сообщает. Цену с периодом берет пустые
Aprobator
58 — 07.11.12 — 15:56
(46) (48) не взлетит по той простой причине, что таблица значений не живет на клиенте.
Aprobator
59 — 07.11.12 — 15:58
(53) дык у тебя соединения нет. Кто же соединение по наименованию делает? Самописка что ли полная?
Шапокляк
60 — 07.11.12 — 15:58
(56) Суть… Интересно, какой кошмар у него затаился в регистре Цены? Неужто Измерение Наименование строкового типа?
GreenDay1986
61 — 07.11.12 — 16:01
(60) Измерение Наименование типа СправочникСсылка.Номенклатура
hhhh
62 — 07.11.12 — 16:02
(61) а измерение Номенклатура типа СправочникСсылка.Номенклатура значит безжалостно удалил?
Шапокляк
63 — 07.11.12 — 16:02
(61) Да ну? А это как понимать?
|ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены.СрезПоследних(&ДатаСреза)КАК Рег
|ПО Ном.Наименование = Рег.Наименование
Serginio1
64 — 07.11.12 — 16:02
Может ВыбратьДанные(ЭтаФорма.Объект.Наименование.ТекстРедактирования);
или что там еще
GreenDay1986
65 — 07.11.12 — 16:03
(63) тут накосячил, Ном.Ссылка = Рег.Ссылка?
salvator
66 — 07.11.12 — 16:04
(65) продолжайте наблюдения
DionisSergeevich
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,
2. Если это УП, то Запрос можно выполнять только на сервере |
Mokey |
|
||
---|---|---|---|
(2) E_Migachev, вроде же и со скобками работает… … проверил у себя (засомневался было), всё работает со скобками. Изменено 02.04.12 11:45:04 |
kosvo |
|
||
---|---|---|---|
т.е. причина в «&НаКлиенте» ? |
E_Migachev |
|
||
---|---|---|---|
(3) Mokey, хорошо , я всегда без () пишу… |
Mokey |
|
||
---|---|---|---|
Ух ты.. а я и не обратил внимание на &НаКлиенте… сорри |
kosvo |
|
||
---|---|---|---|
Всем СПАСИБО! |
kosvo |
|
||
---|---|---|---|
Вопрос закрыт! |
DJ_Serega |
|
||
---|---|---|---|
(5) E_Migachev,
Текст получается компакнтым, и все запросы отдельно написаны в модуле объекта, изза чего можно их использовать из других объектов *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 и выше
Внимание! В последних двух случаях не забывайте выполнить проверку остальных ключевых механизмов на тестовой среде перед обновлением платформы на рабочем контуре
Читайте также:
- Ошибка «Отсутствует отображение для типа (ФормаКлиентскогоПриложения)»
Доброго времени суток. Появляются такие ошибки:
{Форма.ФормаОтчета.Форма(31,17)}: Тип не определен (Запрос)
Запрос = Новый <<?>>Запрос; (Проверка: Тонкий клиент)
{Форма.ФормаОтчета.Форма(203,23)}: Тип не определен (Запрос)
ЗапрУвол = Новый <<?>>Запрос; (Проверка: Тонкий клиент)
{Форма.ФормаОтчета.Форма(274,21)}: Тип не определен (Запрос)
ЗапрУвол = Новый <<?>>Запрос; (Проверка: Тонкий клиент)
{Форма.ФормаОтчета.Форма(348,23)}: Тип не определен (Запрос)
ЗапрОтпуск = Новый <<?>>Запрос; (Проверка: Тонкий клиент)
{Форма.ФормаОтчета.Форма(418,23)}: Тип не определен (Запрос)
ЗапрОтпуск = Новый <<?>>Запрос; (Проверка: Тонкий клиент)
{Форма.ФормаОтчета.Форма(581,17)}: Тип не определен (Запрос)
Запрос = Новый <<?>>Запрос; (Проверка: Тонкий клиент)
Прошу объяснить, что не так, пожалуйста