Ошибка тип не определен запрос 1с

Тип не определен (Запрос) Запрос = Новый <<?>>Запрос; (Проверка: Тонкий клиент)

Я
   Mikhail Volkov

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

в тонком клиенте нет запросов. Управление надо передать на сервер

   youalex

2 — 23.06.22 — 13:19

Возврат Выборка.Количество() <= 1

   TormozIT

3 — 23.06.22 — 13:39

Инструкциями препроцессора (#Если Не ТонкийКлиент И Не ВебКлиент И Не МобильныйКлиент Тогда) можно заэкранировать фрагменты модуля, если не хочется делать отдельный модуль.

   Mikhail Volkov

4 — 23.06.22 — 14:31

(1) На счет запросов понятно — клиент их не может делать. Но вопрос: что может клиент, но не может сервер?

   lodger

5 — 23.06.22 — 14:33

(4)

ТекстовыйДокумент (TextDocument)

Показать (Show)

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

Тонкий клиент, веб-клиент, толстый клиент.

   arsik

6 — 23.06.22 — 14:42

(4) В настройках синтаксис помощника

https://i.imgur.com/W1Nf3eh.png

   timurhv

7 — 23.06.22 — 14:56

(4) чтобы не было каши в названиях модулей и галочках

https://its.1c.ru/db/v8std#content:469:hdoc

   Mikhail Volkov

8 — 23.06.22 — 16:00

(5) ТекстовыйДокумент() — этого точно нет в общем модуле мвДоработки.

(6), (7) Спс. Значит можно снять галочку Клиент с мвДоработки.

   Mikhail Volkov

9 — 23.06.22 — 16:07

Эта тему можно закрыть. Может кто поможет с вопросом КД2: Сравнение и объединение правил обмена а то он не по теме.

   Mikhail Volkov

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 и ужаснулся: не уже ли так, больше никак?

   lubitelxml

11 — 28.07.22 — 10:52

(10) «и ужаснулся: не уже ли так, больше никак?» — уже давно так, ничего сложного там нет

   rudnitskij

12 — 28.07.22 — 11:12

(10) я больше ужаснулся, когда увидел, как зверски слово «неужели» разорвали на три части

   lodger

13 — 28.07.22 — 11:22

(12) разорвало в клочья.

   DayDreamer

14 — 28.07.22 — 11:52

(10)  «знаю что Com-обмены могут работать на разных платформах», можете поделиться ссылкой на описание, как это организовать?

   Aleksey

15 — 28.07.22 — 12:09

   Mikhail Volkov

16 — 28.07.22 — 15:25

(11) Давно, но так-то что-то настраивал в службе компонентов Службы компонентов: возможно ли создать обертку OLE соединения V83.Application Что-то создавал там, но сейчас найти не могу где? Не давно обновил высокую платформу, может там что перенастроить нужно? Но где ранее сделанные настройки?

(15) самое неприятное: «Ну и самое главное: не забываем, что работать это будет только при запуске 1С с административными правами.» — а обычным пользователям как работать!?

   Mikhail Volkov

17 — 29.07.22 — 08:28

Нашел, последняя была 8.3.16.1959, сейчас 8.3.19.1522 https://ibb.co/ZHk8XsH Как исправить? Менять цифры в наименовании наверное бесполезно.

   TormozIT

18 — 29.07.22 — 10:05

   Mikhail Volkov

19 — 29.07.22 — 10:41

Вроде сделал по инструкции (10). Не знаю как перезапустить службу компонентов?

(18) Что за «Управление СОМ классами 1С (ИР)» — где ее взять?

   TormozIT

20 — 29.07.22 — 11:38

(19) ИР — Инструменты разработчика Tormozit для 1С

http://devtool1c.ucoz.ru/

   Mikhail Volkov

21 — 30.07.22 — 08:49

(20) Скачал ИНСТРУМЕНТЫ РАЗРАБОТЧИКА ПОРТАТИВНЫЙ 1С 8.2+ V6.37.1P, как его запустить?

(19) Ночью перезагрузил сервер, похоже ничего не изменилось.

   TormozIT

22 — 30.07.22 — 09:45

   MrKartez

23 — 30.07.22 — 10:10

Капец, деректив не знаешь, функцию СтрШаблон видимо тоже(

«Но вопрос: что может клиент, но не может сервер?» В синтакспомощнике забанен походу)

   Hans

24 — 30.07.22 — 10:14

Что может клиент и не может сервер —  много чего. В основном интерактивная работа —  формы, диалоги.

А еще сервер много чего может чего не может клиент. Новичков в УФ обычно начинает бомбить от того, что на клиенте нельзя использовать таблицу значений.

   СеменовСемен

25 — 30.07.22 — 10:29

(24) зачем было запрещать таблицу на клиенте вообще не понятно. Тем более что через хаки ее можно там получить

   Кура-Цеце

26 — 30.07.22 — 11:06

(25) > через хаки

Ну давай, получи её в веб-клиенте. Через хаки.

   Hans

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с знают

   Mikhail Volkov

32 — 30.07.22 — 11:55

У текущего пользователя ИБ включен флажок «Защита от опасных действий». Для корректной работы инструментов его рекомендуется выключить!

Как это сделать?

   СеменовСемен

33 — 30.07.22 — 12:21

Эта галка только в конфигураторе

   Hans

34 — 30.07.22 — 12:24

Галка у пользователя в конфигураторе. Есть еще защита от опасных действий, безопасный режим у расширения.

   Mikhail Volkov

35 — 30.07.22 — 12:33

(33),(34) Обычный реквизит? — найти не могу.

   СеменовСемен

36 — 30.07.22 — 12:33

Пользователи это не справочник

   Mikhail Volkov

37 — 30.07.22 — 12:36

(36) Как так, не только?

   Mikhail Volkov

38 — 30.07.22 — 13:07

Где еще?

   Mikhail Volkov

39 — 30.07.22 — 14:00

(34) у расширения? А если его не использую…

   Hans

40 — 30.07.22 — 15:42

(39) если не используешь, значит это тебе не надо.

   Hans

41 — 30.07.22 — 15:42

Пользователи Информационной базы. В конфигураторе.

   Mikhail Volkov

42 — 30.07.22 — 16:22

(40) Не понял.

   Hans

43 — 30.07.22 — 17:08

Если нет расширений значит это ограничениев расширении не работает. Остается только пользователь.

   Mikhail Volkov

44 — 31.07.22 — 07:07

(43) В справочнике Пользователи, или где он?

   Mikhail Volkov

45 — 31.07.22 — 07:33

Почему в службе компонентов в свойствах V83COMConnector_8_3_19_1522 не вижу версию comcntr.dll (пункт 9 инструкции (10)). Почему в имени V83COMConnector_ в написании версии не могу использовать точки вместо подчеркиваний 8_3_19_1522?

   Mikhail Volkov

46 — 31.07.22 — 08:25

D свойствах V83COMConnector_8_3_19_1522 на вкладке «Удостоверение» обязательно указывать пользователь/пароль? Если Да, то какого?

   Hans

47 — 31.07.22 — 08:28

   Mikhail Volkov

48 — 31.07.22 — 09:35

(47) Администрирование/Пользователи

   Mikhail Volkov

49 — 31.07.22 — 09:52

Но там не стоит «защита от опасных действий» https://ibb.co/MhcBtGW .

   Mikhail Volkov

50 — 01.08.22 — 06:49

Вернемся к нашей ошибке: -2147221005(0x800401F3): Недопустимая строка с указанием класса — как ее исправить?

   TormozIT

51 — 01.08.22 — 07:29

Сумел открыть инструмент (18) по подсказке (22) ?

   МимохожийОднако

52 — 01.08.22 — 07:39

(50) Используй для начала 32-разрядную платформу

   Mikhail Volkov

53 — 01.08.22 — 08:06

(52) НЕ хотелось бы…

   МимохожийОднако

54 — 01.08.22 — 08:07

(53) Начни с малого. Возможно, натолкнёт на решение большего.

   Mikhail Volkov

55 — 01.08.22 — 08:14

(54) Платформа 8.3.19.1522 у меня стоит 2-й платформой на сервере (на других портах) не хотелось бы ее трогать.

   МимохожийОднако

56 — 01.08.22 — 08:49

(55) Дело не в том, что ты хочешь, а в том, чтобы разобраться в причинах. Что мешает проверить на копии локально хотя бы в файловом режиме?

   Mikhail Volkov

57 — 01.08.22 — 10:39

(56) Не пойму какие выводы я должен вынести из этого эксперимента, ну сменю версию платформы, ну исчезнет ошибка, а дальше что делать?

   Mikhail Volkov

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 вроде все по этой инструкции, но ошибка: «Недопустимая строка с указанием класса» осталась!?

   TormozIT

59 — 16.08.22 — 14:17

С таким подходом к концу года сам разберешься наверное.

   Mikhail Volkov

60 — 16.08.22 — 14:28

(59) Хотелось бы раньше.

   lodger

61 — 16.08.22 — 14:38

(60) тогда вернись к (20) и попробуй утильку от TormozIT

   Mikhail Volkov

62 — 16.08.22 — 15:52

(61) Ну скачал его, а что делать с ним не знаю?

   TormozIT

63 — 16.08.22 — 18:09

(62) Открыть в нем инструмент «Управление СОМ классами 1С»

   Mikhail Volkov

64 — 16.08.22 — 18:13

(63) И дальше что, как сделать правильно, чтобы работало?

   TormozIT

65 — 16.08.22 — 18:29

Надо понять где выполняется код, вызывающий COM-соединение. Если на сервере, то тебе надо запустить на сервере терминальный сеанс под тем же пользователем ОС, под которым работает служба 1С. Открываешь «Управление СОМ классами 1С (ИР)» и показываешь нам картинку.

   Mikhail Volkov

66 — 16.08.22 — 18:34

(65) Прежде чем показать нужно это запустить. Как это сделать?

   TormozIT

67 — 16.08.22 — 18:40

   Mikhail Volkov

68 — 16.08.22 — 19:13

(67) Не удачный пример с расширением. Расширением я не пользуюсь, оно в 8.3.10 недоступно. Другие примеры есть без расширений?

   Mikhail Volkov

69 — 16.08.22 — 19:19

Для обычных форм.

   TormozIT

70 — 16.08.22 — 22:28

(68) Обманываешь. Для варианта «Расширение» на странице скачивания указано «Для 1С 8.3.10+ в режиме совместимости 8.3.9+»

Если же не пользуешься по религиозным причинам, то значит ты скачал вариант «Портативный». Тогда идешь и читаешь раздел «Запуск» (целое одно предложение) в его описании http://devtool1c.ucoz.ru/index/variant_portativnyj/0-39

   Mikhail Volkov

71 — 17.08.22 — 11:49

(70) Не понял, по ссылке: 404 Не Найдено!?

   Mikhail Volkov

72 — 17.08.22 — 12:00

(70) > то значит ты скачал вариант «Портативный»

Да, писал в (21).

   Mikhail Volkov

73 — 17.08.22 — 14:37

Нашел COM-соединение и версии платформ в ней ссылка на Книга знаний: Вызов 32-битных COM-объектов на стороне 64-битного сервера 1С — мало отличается от инструкции в (58), но есть неясные места, например, 5. Учетная запись для запуска приложения: выбираем учетку под которой стартует сервер 1С — как выбирать? Или 6. В ветке созданного приложения переходим на ветку «Роли» открываем роль «CreatorOwner» и далее в разделе «Пользователи» создаем пользователя — учетную запись под которой работает сервер 1С. — это как? Пароль я знаю, ввожу его, когда устанавливаю или обновляю сервер 1С. Открываю роль «CreatorOwner» в папке Пользователи вижу свою учетную запись — она и есть, ничего вводить не надо?

Далее все как (58), а нет: 9. Открываем свойства только что созданного компонента, идем на вкладку «Безопасность», проверяем в списке «Явно установленные для выделенных объектов роли» стоит ли «птичка» напротив роль CreatorOwner — если нет, тогда устанавливаем эту «птичку». Попробую с птичкой.

   Mikhail Volkov

74 — 17.08.22 — 14:53

Птичка не помогла.

   TormozIT

75 — 17.08.22 — 15:36

   Mikhail Volkov

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?

   Mikhail Volkov

77 — 17.08.22 — 17:07

Создал пустой ирКэш.epf, получил:

Ошибка инициализации модуля: ВнешняяОбработка.ирПортативный.МодульОбъекта

по причине:

{ВнешняяОбработка.ирПортативный.МодульОбъекта(3928)}: Ошибка при вызове метода контекста (Создать)

по причине:

Ошибка подключения внешних метаданных

по причине:

Ошибка загрузки документа.

Как открыть, запустить ирПортативный.erp?

   TormozIT

78 — 17.08.22 — 18:54

(76) Ладно. Бросай ты этот ИР. Там слишком сложно запускать. Тебе подойдут только инструменты из одной внешней обработки. У меня таких нет.

   Mikhail Volkov

79 — 17.08.22 — 19:46

Нашел еще более старую картинку с платформой 8.3.14.1779: https://ibb.co/LvGfVX8, жаль не показано внутреннее содержимое вкладок.

   Mikhail Volkov

80 — 17.08.22 — 20:05

Может кто подскажет что должно быть на вкладке Безопасность?

   Сергиус

81 — 18.08.22 — 00:01

(50)Попробуй перерегистрировать dll из командной строки.

   Mikhail Volkov

82 — 18.08.22 — 08:15

   Mikhail Volkov

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, надо что-то делать? Судя по старым картинкам приложения не ставил, только Компоненты.

   Mikhail Volkov

84 — 18.08.22 — 08:54

   Mikhail Volkov

85 — 18.08.22 — 15:25

Сделал все по Книга знаний: Вызов 32-битных COM-объектов на стороне 64-битного сервера 1С , но все равно ошибка: «Недопустимая строка с указанием класса» осталась!? Раньше не проверял OLE-соединение, только Com-соединение. Может все инструкции (которые здесь упоминал) не предназначены для OLE?

   Mikhail Volkov

86 — 18.08.22 — 16:35

(83) В свойствах приложения на вкладку Удостоверение добавил администратора компьютера (сервера) ИмяСервераUSR1CV82, но это не помогло. Не знаю правильно ли понял фразу из (83)?

   Сергиус

87 — 19.08.22 — 01:42

(82)консоль надо с правами админа запускать, а у тебя явно пользовательский запуск судя по картинке.

   Mikhail Volkov

88 — 19.08.22 — 07:49

(87) Консоль командной строки запущена под Администратором.

   Mikhail Volkov

89 — 19.08.22 — 07:54

(87) Смотри заголовок командной строки, или я чего-то не понимаю.

   Mikhail Volkov

90 — 19.08.22 — 09:26

Каюсь база КА1 (УПП), к которой я цепляюсь по COM-соединению, оказывается открыта конфигуратором в 8.3.10.2466, перезапустил в 8.3.19.1522, но все равно ошибка: «Недопустимая строка с указанием класса» осталась!?

   Mikhail Volkov

91 — 19.08.22 — 12:10

Удалил V83.COMConnector_8.3.19.1522 из службы компонентов совсем, Альфа-Авто ведет себя также как будь-то не было V83.COMConnector_8.3.19.1522 вовсе!?

   Mikhail Volkov

92 — 19.08.22 — 12:41

Нет ошибки, например: Не найдена указанная процедура.

   Kassern

93 — 19.08.22 — 12:44

Используйте веб сервисы и будет вам счастье

   Mikhail Volkov

94 — 19.08.22 — 14:32

(93) Раньше же до перехода (обновления) на другую версию платформы работало.

   Kassern

95 — 19.08.22 — 14:36

(94) Удалите все ком коннекторы, на клиенте и на сервере и заново зарегайте библиотеку комконнектор. Самостоятельно ее пропишите в компонентах по инструкциям. Может повезет и заработает

   Mikhail Volkov

96 — 19.08.22 — 14:54

(95) Уточни, где, что удалить? В конфигураторе или в Службе компонентов? А то формы общие.

   Kassern

97 — 19.08.22 — 15:22

(96) А как вы в конфигураторе удалите ком коннекторы?))

Речь идет о службах компонентов. Поймите уже наконец как работает ком соединение. Если на пальцах, есть библиотека 1с КомКоннектор.Длл. Через службу компонентов мы создаем обертку для этой библиотеки. Указываем права и прочие параметры. 1ска же цепляется к этой обертке и уже через нее работает с библиотекой. Нужно так же правильно прописывать путь до коннектора.

   Kassern

98 — 19.08.22 — 15:23

Обычно, при установке платформы, 1ска сама это дело регистрирует и прописывает, но вот иногда бывают косяки. Или бывает несколько платформ развернуто с разными версиями, что тоже может вызывать косяки.

   lodger

99 — 19.08.22 — 16:23

(98) >> Обычно

это достаточно новая мулька. раньше вообще всегда надо было регать вручную

и теперь, когда ты ставишь дистриб на компе, где понах.ячено как у (0), то автоматически ничего не срабатывает — надо так же вручную вписывать новые компоненты.

   Mikhail Volkov

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
02.04.2012 10:44 Прочитано: 9491

Доброго времени суток!
Помогите пожалуйста разобраться! При создании нового запроса выдает постоянно ошибку…, причем , даже если вводится пример из справки.

=========================
&НаКлиенте

Процедура сталь_055ПриИзменении(Элемент)

Запрос = Новый Запрос();
Запрос.Текст = «ВЫБРАТЬ
| Номенклатура.Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Услуга»;

Выборка = Запрос.Выполнить().Выбрать();

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

КонецПроцедуры
================================

Выдает ошибку:

{ОбщаяФорма.Вариант.Форма(6,16)}: Тип не определен (Запрос)
Запрос = Новый <<?>>Запрос();

Учусь в ДемоВерсии 1С.v8

Спасибо!

Yandex
Возможно, вас также заинтересует

Реклама на портале

Mokey
02.04.2012 11:31 Ответ № 1

Что первое в голову пришло, буквы Рус-Лат какие-то в слове «Запрос».


Изменено 02.04.12 11:31:47

E_Migachev
02.04.2012 11:42 Ответ № 2

(0) kosvo,
1. Пишется: Код 1C v 8.х

 Запрос = Новый Запрос;   

2. Если это УП, то Запрос можно выполнять только на сервере

Mokey
02.04.2012 11:43 Ответ № 3

(2) E_Migachev, вроде же и со скобками работает…

… проверил у себя (засомневался было), всё работает со скобками.


Изменено 02.04.12 11:45:04

kosvo
02.04.2012 11:53 Ответ № 4

т.е. причина в «&НаКлиенте» ?

E_Migachev
02.04.2012 12:04 Ответ № 5

(3) Mokey, хорошо ), я всегда без () пишу…
(4) kosvo, да

Mokey
02.04.2012 12:37 Ответ № 6

Ух ты.. а я и не обратил внимание на &НаКлиенте… сорри

kosvo
02.04.2012 12:47 Ответ № 7

Всем СПАСИБО!

kosvo
02.04.2012 12:47 Ответ № 8

Вопрос закрыт!

DJ_Serega
03.04.2012 11:59 Ответ № 9

(5) E_Migachev,
Я обычно так пишу запросы:
Код 1C v 8.х

 
Процедура БлаБлаБла
Запрос = Новый Запрос(ПолучитьТекстЗапроса());
КонецПроцедуры

Функция ПолучитьТекстЗапроса()
ТекстЗапроса =
"БлаБлаБла"
;
Возврат ТекстЗапроса;
КонецФункции

Текст получается компакнтым, и все запросы отдельно написаны в модуле объекта, изза чего можно их использовать из других объектов *07


Изменено 03.04.12 12:02:47

Подсказка: Вы получили ответ на свой вопрос — закройте вопрос!

Студворк — интернет-сервис помощи студентам

Доброго времени суток. Появляются такие ошибки:
{Форма.ФормаОтчета.Форма(31,17)}: Тип не определен (Запрос)
Запрос = Новый <<?>>Запрос; (Проверка: Тонкий клиент)
{Форма.ФормаОтчета.Форма(203,23)}: Тип не определен (Запрос)
ЗапрУвол = Новый <<?>>Запрос; (Проверка: Тонкий клиент)
{Форма.ФормаОтчета.Форма(274,21)}: Тип не определен (Запрос)
ЗапрУвол = Новый <<?>>Запрос; (Проверка: Тонкий клиент)
{Форма.ФормаОтчета.Форма(348,23)}: Тип не определен (Запрос)
ЗапрОтпуск = Новый <<?>>Запрос; (Проверка: Тонкий клиент)
{Форма.ФормаОтчета.Форма(418,23)}: Тип не определен (Запрос)
ЗапрОтпуск = Новый <<?>>Запрос; (Проверка: Тонкий клиент)
{Форма.ФормаОтчета.Форма(581,17)}: Тип не определен (Запрос)
Запрос = Новый <<?>>Запрос; (Проверка: Тонкий клиент)

Прошу объяснить, что не так, пожалуйста

Содержание:

1.     Пример с внешней обработкой

2.     Исправление ошибки в 1С

3.     Новое условие при выполнении запроса

Данная ошибка выполнения запроса 1С может возникнуть при выполнении запроса, если в качестве параметра передается таблица значений с колонками, в которых не определен тип.

Разберем на примере почему данная ошибка программы 1С происходит, и как ее избежать при разработке.  

1. Пример с внешней обработкой

Для простоты создадим внешнюю обработку 1С 8, которая будет выгружать в табличную часть обработки номенклатуры.

Предположим, у вас есть таблица значений, заполняемая некоторыми данными, например, наименованием производителей (Рисунок 1).

Пример с внешней обработкой

Рис. 1

Теперь напишем запрос, который будет выводить номенклатуру данных производителей (Рисунок 2).

выводить номенклатуру данных

Рис. 2

При попытке запустить заполнение табличной части 1С 8.3 выдает ошибку «Тип не может быть выбран в запросе» (Рисунок 3).

Тип не может быть выбран

Рис. 3

Данная ошибка при выполнении операции в 1С возникла потому, что в таблице значений не указан тип колонки «Наименование».  

2. Исправление ошибки в 1С

Чтобы исправить ошибку, необходимо явно указать тип при добавлении колонки. Сделать это можно при помощи Описания типов. Укажем наименование строкового типа данных (Рисунок 4).

Тип выбран в запросе

Рис. 4

Также можно указать тип «СправочникСсылка.Производители», но тогда таблица значений не заполнится необходимыми данными, что, впрочем, можно исправить, воспользовавшись поиском по наименованию в справочнике, и подставив найденное значение в поле «Наименование» (Рисунок 5).

Исправление ошибки в 1С

Рис. 5

Но остановимся на типе «Строка».

При попытке выполнить код, возникает новая ошибка программы, говорящая о том, что нельзя сравнивать разные типы (Рисунок 6).

ошибки в 1С

Рис. 6 

3. Новое условие при выполнении запроса 1С

Вернемся к выполнению запроса 1С и изменим его, заменив жесткое сравнение на условие «Подобно».

Запрос примет следующий вид (Рисунок 7).

Новое условие 1С

Рис. 7

В результате мы получим список всей номенклатуры данных производителей (Рисунок 8).

при выполнении запроса 1С

Рис. 8

Специалист компании «Кодерлайн»

Айдар Фархутдинов

Тип не определен (Запрос)

Я

  

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)

Рейтинг@Mail.ru

Rambler's Top100

Поиск

kosvo
02.04.2012 10:44 Прочитано: 9133

Доброго времени суток!
Помогите пожалуйста разобраться! При создании нового запроса выдает постоянно ошибку…, причем , даже если вводится пример из справки.

=========================
&НаКлиенте

Процедура сталь_055ПриИзменении(Элемент)

Запрос = Новый Запрос();
Запрос.Текст = «ВЫБРАТЬ
| Номенклатура.Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Услуга»;

Выборка = Запрос.Выполнить().Выбрать();

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

КонецПроцедуры
================================

Выдает ошибку:

{ОбщаяФорма.Вариант.Форма(6,16)}: Тип не определен (Запрос)
Запрос = Новый <<?>>Запрос();

Учусь в ДемоВерсии 1С.v8

Спасибо!

Yandex
Возможно, вас также заинтересует

Реклама на портале

Mokey
02.04.2012 11:31 Ответ № 1

Что первое в голову пришло, буквы Рус-Лат какие-то в слове «Запрос».


Изменено 02.04.12 11:31:47

E_Migachev
02.04.2012 11:42 Ответ № 2

(0) kosvo,
1. Пишется: Код 1C v 8.х

 Запрос = Новый Запрос;   

2. Если это УП, то Запрос можно выполнять только на сервере

Mokey
02.04.2012 11:43 Ответ № 3

(2) E_Migachev, вроде же и со скобками работает…

… проверил у себя (засомневался было), всё работает со скобками.


Изменено 02.04.12 11:45:04

kosvo
02.04.2012 11:53 Ответ № 4

т.е. причина в «&НаКлиенте» ?

E_Migachev
02.04.2012 12:04 Ответ № 5

(3) Mokey, хорошо ), я всегда без () пишу…
(4) kosvo, да

Mokey
02.04.2012 12:37 Ответ № 6

Ух ты.. а я и не обратил внимание на &НаКлиенте… сорри

kosvo
02.04.2012 12:47 Ответ № 7

Всем СПАСИБО!

kosvo
02.04.2012 12:47 Ответ № 8

Вопрос закрыт!

DJ_Serega
03.04.2012 11:59 Ответ № 9

(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).

Исправление ошибки в 1С

Рис. 5

Но остановимся на типе «Строка».

При попытке выполнить код, возникает новая ошибка программы, говорящая о том, что нельзя сравнивать разные типы (Рисунок 6).

ошибки в 1С

Рис. 6 

3. Новое условие при выполнении запроса 1С

Вернемся к выполнению запроса 1С и изменим его, заменив жесткое сравнение на условие «Подобно».

Запрос примет следующий вид (Рисунок 7).

Новое условие 1С

Рис. 7

В результате мы получим список всей номенклатуры данных производителей (Рисунок 8).

при выполнении запроса 1С

Рис. 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С» не дает никаких гарантий, что его не удалят в одном из будущих релизов.

Возможные варианты решений:

  1. Найти и заменить в коде все упоминания типа ФормаКлиентскогоПриложения на тип УправляемаяФорма
  2. Переключить режим совместимости в свойствах конфигурации на 8.3.14 и выше
  3. Выполнить апгрейд технологической платформы на версию 8.3.14 и выше

Внимание! В последних двух случаях не забывайте выполнить проверку остальных ключевых механизмов на тестовой среде перед обновлением платформы на рабочем контуре

Читайте также:

  1. Ошибка «Отсутствует отображение для типа (ФормаКлиентскогоПриложения)»

Тип не определен (Запрос) Запрос = Новый <<?>>Запрос; (Проверка: Тонкий клиент) Всем здравствуйте. Создаю новую информационную базу, не из шаблона, для разработки. Создаю справочники, доки, регистры. Собственно вопрос. Если стоит параметр &НаКлиенте я так понимаю тип запрос на клиенте не определен, ставлю на сервере, ничего не происходит КонецПроцедуры Что пишу неправильно?

&НаСервере КонецПроцедуры ошибок не выдает но и запросы также не исполняются

с чего решил, что запросы не выполняются?

С того что никакие сообщения не выводятся, точнее может и исполняются, однако результата нет

сообщения выводятся, только на сервере включай уже мосх )

КонецПроцедуры Здесь куда выводятся?

тс — глупый тролль, уничтожиить!

брррр, да нет, не тролль, учусь маленько

… Доступность: Сервер, толстый клиент, внешнее соединение. (с) СП

То есть мне нужно создавать новую базу на сервере, так понимаю?

открываем сп и в первой главе «директивы компиляции» изучаем, хотя может лучше порясят выращивать — ты подумай, что выгоднее

(14+) Медитируй до просветления: Тип не определен (Запрос) Запрос = Новый <<?>>Запрос; (Проверка: Тонкий клиент)

То есть базу на локальном компьютере я правильно создал. Что дальше делать дабы в ней сожно было работать с запросами?

В тонком клиенте тип «Запрос» не определен.

Запрос это сущность или процедура?

На сервере выполняешь запрос. На клиента возвращаешь сообщения.

(17+) …в нем толко интерфейс, что-либо делать с базой надо на стороне сервера.

Как это с точки зрения синтаксиса будет выглядеть? 2 процедуры?

Хм, можно пример как возвратить с сервера на клиент? Исполнение так понимаю

Запрос = Новый Запрос; Убери скобочки! И — нескромный вопрос — а что на сервере открывают-то?

На клиенте этой процедуры просто не будет. Как вариант — создать общий модуль с галочками «сервер» и «вызов сервера», в нем расположить твою функцию которая вернет данные, ее и вызывать из ПриОткрытии.

В общем все мои запросы исполнять в общих модулях, При открытии прописывать уже непосредственно передаваемые с сервера параметры?

Мутновато пока укладывается, ну ладно, спасибо, будем разбираться :)

Поищи видеокурс Гилева по управляемым формам.

на КЛИЕНТЕ же!!! сделай на сервере

ТС как минимум уже год учится, никак не научится

чего тут укладываться то? УФ — видимость методов и т.п. смотреть обязательно, только и всего.

Хм, как ИБ без управляемых форм сделать? Конфигурации подревнее поискать?

нужно как-то себя заставить

Ога, я пока ток БП ковырял, без УФ.

Для примера родил следующее. :) &НаСервере Возвращает ошибку {Справочник.Номенклатура.Форма.ФормаЭлемента.Форма}: Ошибка при вызове метода контекста (ВыбратьДанные)    Сообщить(ВыбратьДанные(Этаформа.Элементы.Наименование));   по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Запись значения свойства ‘param’:    форма: Элемент    имя: { по причине: Ошибка отображения типов: Отсутствует отображение для типа ‘ПолеФормы’

таже самая ошибка возвращается.

Посмотри хоть какой тип у «Этаформа.Элементы.Наименование»

=) о чем и речь. Какие типы можно передавать?

а вот этот бред как объясните? Что это за слово?

Где Ном.Наименование, простите

все не читал. Что за прикол менять директиву компиляции у событий формы?

Не ругайтесь шибко, УФ первый раз юзаю :(

Уррра, нашел :) ЭтаФорма.Объект.Наименование. Передалось таки :)

ТаблицаЗначений Доступность: Сервер, толстый клиент, внешнее соединение.

Соединяю с регистромСведений цены.Сообщение выдалось

Наименование обьекта текущей формы возвращает. Цену и Период возвращает почему-то пустыми. Хотя в регистресведений Цены эти данные заполнены

Отладчик в руки и смотри что у тебя в Рез после Рез.Следующий. Попробуй запрос с твоими параметрами в консоли запросов. Так на глаз не вижу почему возвращает пустые значения

Ну и кто там на сервере это читает КонецЦикла; Засовывай в структуру и возвращай клиенту

суть то не в этом. суть то в другом

Рез.Наим возвращает и сообщает. Цену с периодом берет пустые

не взлетит по той простой причине, что таблица значений не живет на клиенте.

дык у тебя соединения нет. Кто же соединение по наименованию делает? Самописка что ли полная?

Суть… Интересно, какой кошмар у него затаился в регистре Цены? Неужто Измерение Наименование строкового типа?

Измерение Наименование типа СправочникСсылка.Номенклатура

а измерение Номенклатура типа СправочникСсылка.Номенклатура значит безжалостно удалил?

Да ну? А это как понимать?

Может ВыбратьДанные(ЭтаФорма.Объект.Наименование.ТекстРедактирования); или что там еще

тут накосячил, Ном.Ссылка = Рег.Ссылка?

У записи регистра нет ссылки. Да открой ты консоль запросов

Извиняйте ребят, психологических отклонений нет,просто мудаг :))) Измерение Наименование сделал :( В общем переименовал заработало все.

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

Тема: Путаница в модулях! Откуда вызывать запрос?  (Прочитано 5033 раз)

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

Всем доброго времени суток! Совсем запуталась в модулях! Объясните, пожалуйста, что делаю не так?

У документа реквизиты: Номер, Дата, СчетДенежныхСредств, ОстатокНаСчете, СуммаФактическая, такие-же на форме. Хочу при выборе счета автоматом получть остаток по нему. Пробовала так:

&НаКлиенте
Процедура СчетДенежныхСредствПриИзменении(Элемент)
СуммаНаСчете = ВернутьОстатокПоСчету();
КонецПроцедуры

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

Орёт, что переменная не определена:

{Документ.КорректировкаСчетаДенежныхСредств.Форма.ФормаДокумента.Форма(13,38)}: Переменная не определена (Дата)
   Запрос.УстановитьПараметр(«НаДату», <<?>>Дата); (Проверка: Сервер)
{Документ.КорректировкаСчетаДенежныхСредств.Форма.ФормаДокумента.Форма(14,36)}: Переменная не определена (СчетДенежныхСредств)
   Запрос.УстановитьПараметр(«Счет», <<?>>СчетДенежныхСредств);    (Проверка: Сервер)

Пыталась передавать их в процедуру:

СуммаНаСчете = ВернутьОстатокПоСчету(Дата, СчетДенжныхСредств);Орёт уже на форму:

{Документ.КорректировкаСчетаДенежныхСредств.Форма.ФормаДокумента.Форма(3,39)}: Переменная не определена (Дата)
   СуммаНаСчете = ВернутьОстатокПоСчету(<<?>>Дата, СчетДенжныхСредств);       (Проверка: Тонкий клиент)
{Документ.КорректировкаСчетаДенежныхСредств.Форма.ФормаДокумента.Форма(3,45)}: Переменная не определена (СчетДенжныхСредств)
   СуммаНаСчете = ВернутьОстатокПоСчету(Дата, <<?>>СчетДенжныхСредств);       (Проверка: Тонкий клиент)

Перекинула эту функцию в модуль объекта, пыталась вызывать её из модуля формы, ругается, что функция не определена, хотя я даже добавила к функции «Экспорт».
А в самой процедуре СчетДенежныхСредствПриИзменении(Элемент) не даёт сделать запрос, ругается на запрос.

{Документ.КорректировкаСчетаДенежныхСредств.Форма.ФормаДокумента.Форма(3,17)}: Тип не определен (Запрос)
   Запрос = Новый <<?>>Запрос; (Проверка: Тонкий клиент)

Где что не так делаю? Как правильно и почему?  ???
Заранее благодарна!


Записан


&НаКлиенте
Процедура СчетДенежныхСредствПриИзменении(Элемент)   тут надо в отладчике посмотреть и из элемента найти значение нового счета
   СуммаНаСчете = ВернутьОстатокПоСчету(ДАТА, СЧЕТ);   здесь надо передать значение даты и значение счета(или строку счета а в серверной функции найти счет по коду)   
КонецПроцедуры

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


Записан



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


Записан


На клиенте определите переменную Дата И Счет

&НаКлиенте
Процедура СчетДенежныхСредствПриИзменении(Элемент)   
        Дата = Объект.Дата;
        Счет = Объект. СчетДенежныхСредств;

//Затем передайте эти переменный в процедуру на сервер в качестве параметров

   СуммаНаСчете = ВернутьОстатокПоСчету(Дата, Счет);      
КонецПроцедуры

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


Записан



Что я люблю в 1с, так это непонятные непредвиденные ошибки. На днях нужно было помочь человеку обновить старую бухгалтерию до современного релиза, я согласился. Как же я был удивлен когда 1с подкинула мне ошибку тип не определен.

Предистория: Бухгалтерия предприятия базовая 2.0.66.138 нужно обновить до актуального релиза бухгалтерии 3.0.

Каких-то особых выдумок я применять не стал, скачал обновление с https://releases.1c.ru/total и установил его. Я сильно удивился увидев ошибку тип не определен.

В начале я попробовал откатится к версии до обновления. Хорошо что я перед работами всегда делаю бекап. Сделал тестирование и исправление, проверил базу на повреждения, обновил повторно, но получил ту же ошибку. После этого решил посмотреть журнал регистрации и поправить ошибку в отладке.

Журнал регистрации всеми силами направлял меня в общий модуль управление доступом служебный.

тип не определен, журнал регистрации

тип не определен, журнал регистрации
Тип не определен
{ОбщийМодуль.УправлениеДоступомСлужебный.Модуль(26085)}:
{ОбщийМодуль.УправлениеДоступомСлужебный.Модуль(25277)}:
{ОбщийМодуль.УправлениеДоступомСлужебный.Модуль(24362)}:
{ОбщийМодуль.УправлениеДоступомСлужебный.Модуль(23491)}:
{ОбщийМодуль.УправлениеДоступомСлужебный.Модуль(23243)}:
{ОбщийМодуль.УправлениеДоступомСлужебный.Модуль(22956)}:
{ОбщийМодуль.УправлениеДоступомСлужебный.Модуль(22337)}:
{ОбщийМодуль.УправлениеДоступомСлужебный.Модуль(22217)}:
{РегистрСведений.ПараметрыОграниченияДоступа.МодульМенеджера(206)}:ДействующиеПараметры = УправлениеДоступомСлужебный.ДействующиеПараметрыОграниченияДоступа(
{РегистрСведений.ПараметрыОграниченияДоступа.МодульМенеджера(157)}:ЗапланироватьОбновление_00_00268406("ПереходНаВерсиюБСП_3.0.3.168");
{ОбщийМодуль.УправлениеДоступомСлужебный.Модуль(4489)}:
{(1)}:УправлениеДоступомСлужебный.ОбновитьВспомогательныеДанныеПоИзменениямКонфигурации()
{ОбщийМодуль.ОбщегоНазначения.Модуль(5113)}:Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
{ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(6320)}:ОбщегоНазначения.ВыполнитьМетодКонфигурации(Обработчик.Процедура, ПараметрыОбработчика);
{ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(2155)}:ВыполнитьОбработчикОбновления(Обработчик, ПараметрыОбработчика, ДополнительныеПараметры);
{ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(1707)}:ИтерацияОбновления.ВыполненныеОбработчики = ВыполнитьИтерациюОбновления(ИтерацияОбновления, Параметры);
{ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(93)}:ВыполнитьДействияПриОбновленииИнформационнойБазы(ПараметрыОбновления, ДополнительныеПараметры);
{ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(2289)}:Результат = ВыполнитьОбновлениеИнформационнойБазы(ПараметрыОбновления);
{(1)}:ОбновлениеИнформационнойБазыСлужебный.ВыполнитьОбновлениеИнформационнойБазыВФоне(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(5113)}:Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
{ОбщийМодуль.ДлительныеОперации.Модуль(1036)}:ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова);
{ОбщийМодуль.ДлительныеОперации.Модуль(1026)}:ВызватьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры);

Перехожу в конфигуратор ищу ОбщийМодуль.УправлениеДоступомСлужебный и что же я вижу. Исходный текст модуля отсутствует, конфигурация на поддержке и снимать и ломать модуль для рядового обновления это точно ложный путь.

Общий Модуль Управление Доступом Служебный

Общий Модуль Управление Доступом Служебный

Пришло время изучать ошибку тип не определен, вот что удалось выяснить. Ссылки с решением долго не заставили себя ждать, давний баг, который привели в порядок, но старые версии БСП и старая версия платформы написаны так, словно это не ошибка.

https://bugboard.v8.1c.ru/error/000100482
https://partners.v8.1c.ru/forum/topic/1950512

В версиях платформы до 8.3.22.1704 конструкция Тип(“”) (где в качестве аргумента – пустая строка), возвращала пустое значение типа Тип, в новой версии платформы попытка выполнения данной конструкции приводит к ошибке.

Причем если взять и разные версии платформы и потестировать, что будет возвращаться, поведение и тип возвращаемого значения меняется в каждой версии платформы. Причем если в старых платформах возвращается пустая строка или пустое значение типа, то начиная с 8.3.22.1704 конструкция просто приводит к вылету с ошибкой.

Я не стал выдумывать патчи и писать какие-то доработки, просто использовал более старую версию платформы и все заработало.

Какой можно сделать вывод из этой истории – нужно обновлять платформу и конфигурации вовремя!

Понравилась статья? Поделить с друзьями:

Не пропустите эти материалы по теме:

  • Яндекс еда ошибка привязки карты
  • Ошибка тип аксесс
  • Ошибка тип serial не существует
  • Ошибка тип bigserial не существует
  • Ошибка тинькофф пополнение

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии