Расширение не видит функции общего модуля |
Я |
22.10.18 — 13:42
День добрый.
Был написан код, он работал, но через какое то время перестал. База еще не боевая, изменения копятся. Что именно мог сломать не пойму.
Суть в том, что в модуле менеджера документа есть заимствованные в расширение процедуры. Из этих заимствованных процедур идет обращение к функциям общего модуля. Аналогичные обращения, к этим же функциям, идет и из соответствующих процедур, которые были заменены расширением, то есть код обращения вообще не модифицировался, в просто тупо копировался из оригинальной процедуры модификации подвергался код ниже. Сам общий модуль в расширение не заимствовался и модификации в основной конфигурации не подвергался.
Еще раз повторюсь — изначально всё работало. Вроде как изменений, которые могли зацепить — не вносилось.
Есть у кого предположения?
1 — 22.10.18 — 13:46
новая информация — пробелема возникает только в толстом клиенте.
Видимо до этого тестировал только в тонком.
Кстати 8.3.11.3034
2 — 22.10.18 — 13:50
Ошибка инициализации модуля: НоменклатураРасширенный Документ.ОтчетОРозничныхПродажах.МодульМенеджера
по причине:
{НоменклатураРасширенный Документ.ОтчетОРозничныхПродажах.МодульМенеджера(134,10)}: Переменная не определена (ПроведениеСерверУТ)
Если НЕ <<?>>ПроведениеСерверУТ.ЕстьТаблицаЗапроса(«ВтАгентскиеУслуги», ТекстыЗапроса) Тогда
{НоменклатураРасширенный Документ.ОтчетОРозничныхПродажах.МодульМенеджера(214,10)}: Переменная не определена (ПроведениеСерверУТ)
Если НЕ <<?>>ПроведениеСерверУТ.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
{НоменклатураРасширенный Документ.ОтчетОРозничныхПродажах.МодульМенеджера(135,3)}: Процедура или функция с указанным именем не определена (ТекстЗапросаВтАгентскиеУслуги)
<<?>>ТекстЗапросаВтАгентскиеУслуги(Запрос, ТекстыЗапроса);
{НоменклатураРасширенный Документ.ОтчетОРозничныхПродажах.МодульМенеджера(138,2)}: Процедура или функция с указанным именем не определена (ИнициализироватьКлючиАналитикиУчетаНоменклатуры)
<<?>>ИнициализироватьКлючиАналитикиУчетаНоменклатуры(Запрос);
3 — 22.10.18 — 14:04
поставил у модуля ПроведениеСерверУТ вызовсервера — проблема ушла. Такое ощущение, что В РАСШИРЕНИИ модульменеджера обрабатывается на клиенте, а В ОСНОВНОЙ — на серврере
4 — 22.10.18 — 14:05
имеется в виду в толстом клиенте
5 — 22.10.18 — 14:14
(3) в «основной» модуль менеджера в толстом клиенте отрабатывает в том контексте, откуда его вызвали. Про расширение ничего не скажу.
6 — 22.10.18 — 14:17
Поведение программы в тонком и толстом клиенте разное. Поведение одного и того же кода в расширении и без него тоже разное.
Удобная штука — расширения, но они добавили вопросов))
7 — 22.10.18 — 14:21
модуль, методы которого нужны, серверный? Флаг «Вызов сервера» стоит ?
8 — 22.10.18 — 14:55
В модуле менеджера отчета инструкции препроцессора никто не отменял
9 — 22.10.18 — 14:55
И модуле менеджера документа тоже
10 — 22.10.18 — 14:57
(9) те при переопределении серверного модуля менеджера происходит передача на толстый клиент?
11 — 22.10.18 — 14:59
Получается я неправильно сформулировал название темы. Не видит не процедуры, а не видит сам модуль. «Переменная не определена (ПроведениеСерверУТ)».
12 — 22.10.18 — 15:00
(7) вызов сервера не стоит, но менять основную конфигурацию на хотелось бы, а поставить чисто в расширении нельзя.
но установка флага проблему решает(см. сообщение 3)
13 — 22.10.18 — 15:01
(9) я же не новые процедуры описываю, а перехватываю существующие. и в основной конфигурации тот же код отрабатывает правильно
14 — 22.10.18 — 15:01
а ту тебя тонкий клиент или как?
15 — 22.10.18 — 15:06
в тонком клиенте отрабатывает ВСЁ без проблем. проблемы начались в толстом
16 — 22.10.18 — 15:06
(10) Хз, что там за передача и куда и про что ты. Ошибка-то на этапе компиляции кода расширения происходит. Компилятор тупо смотрит текст модуля менеджера расширения и видит обращения к ОМ, которые из-за отсутствия инструкций ему не доступны
17 — 22.10.18 — 15:06
(13) «в основной конфигурации тот же код отрабатывает правильно» // Конечно. Ведь там инструкции имеются.
18 — 22.10.18 — 15:09
(17) их там нет
19 — 22.10.18 — 15:11
(18) похоже (17) прав. В БП3 весь модуль менеджера РТиУ сидит в
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
20 — 22.10.18 — 15:12
текст из основной
Функция ТекстЗапросаТаблицаДвиженияСерийТоваров(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = «ДвиженияСерийТоваров»;
Если НЕ ПроведениеСерверУТ.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат «»;
КонецЕсли;
21 — 22.10.18 — 15:13
текст из расширения
&Вместо(«ТекстЗапросаТаблицаДвиженияСерийТоваров»)
Функция Номенклатура_ТекстЗапросаТаблицаДвиженияСерийТоваров(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = «ДвиженияСерийТоваров»;
Если НЕ ПроведениеСерверУТ.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат «»;
КонецЕсли;
22 — 22.10.18 — 15:14
(20) поищи «#Если» в модуле менеджера, оно относится к области, а не конкретной функции
23 — 22.10.18 — 15:15
(22) есть в начале модуля менеджера
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
24 — 22.10.18 — 15:17
добавил аналогично в модуль расширения — проблема ушла
25 — 22.10.18 — 15:18
Автор баклан какой-то
26 — 22.10.18 — 15:18
благодарю.
Видимо нужно лучше учить матчасть, никоргда бы не предположил такого поведения
27 — 22.10.18 — 15:19
(25) что значит баклан))?
28 — 22.10.18 — 15:22
(27) Разговорное для тугодум / глупец, а так это птица
29 — 22.10.18 — 15:23
(28) ааа, согласен ,есть такое дело)) ну ьыл бы другой — разобрался бы сам
30 — 22.10.18 — 15:23
спасибо!
31 — 22.10.18 — 15:24
(28) Скажи как зоолог, к какому виду относится ТС Примитивный запрос, в консоле работает, в конфе выборка пустая.
10+ лет на форуме, обход выборки запроса не осилил.
32 — 22.10.18 — 15:27
интересно, а в каких если режима, кроме (23) может быть модуль менеджера?
33 — 22.10.18 — 15:32
(32) в толстом клиенте он доступен на клиенте, собственно из-за этого вся тема.
34 — 22.10.18 — 15:43
(31) О, это редкое явление Сибири «Семерочник-кустарщик»?
35 — 22.10.18 — 15:46
(33) толстый клиент управляемое приложение?
36 — 22.10.18 — 15:48
(35) да
RomanYS
37 — 22.10.18 — 15:49
(34) В точку! Я думал, они вымерли)
-
1С
Переменная не определена?
В режиме предприятия выскакивает ошибка в расширении, что переменная ПроведениеСерверУТ не определена. С чем это связано? Почему в основной конфигурации он не ругается, а когда вызываю функцию, через расширение, то происходит проблема?
-
Вопрос заданболее года назад
-
667 просмотров
4
комментария
-
При этом таже самая база, но на другом сервере работает без проблем. Я просто выгрузила dt с рабочего сервера и загрузила на сервер заказчика, а там он уже не работает
-
Xris, ох уж эти расширения
-
Xris, не пробовали расширение выгрузить-загрузить? Может «залипло» что-то в кеше. Или просто изменить что-то в расширении и базу обновить.
Пригласить эксперта
Ответы на вопрос 2
Расширение тут не при чем. По вашему скриншоту этого не видно, но логика подсказывает, что вы в клиентском коде вызываете серверный модуль.
-
-
Надо было в расширении прописать следующее
Но мне всё равно не понятно, почему на одной базе работает нормально без этого, а на другой нет
-
Xris, Видимо на той что работает, запускаете в файловом варианте. А на той что не работает в клиент-серверном.
А если пропишите так как вы указали, ошибка конечно выскакивать перестанет, но и код выполняться не будет.
Это не переменная, а общий модуль. Добавь его в расширение.
-
Добавила, всё равно ошибка
Похожие вопросы
-
Показать ещё
Загружается…
13 июн. 2023, в 22:21
10000 руб./за проект
13 июн. 2023, в 21:59
2000 руб./за проект
13 июн. 2023, в 20:23
5000 руб./за проект
Минуточку внимания
Ошибка при запуске ERP с подключенным расширением ОформлениеПереводаНаУдаленнуюРаботу последней версии 1.0.5.1
конфигурация при попытке запуска с подключенным расширением не дает пропустить ошибку, вариант только закрыть или перезапустить (с таким же результатом)
Ошибка инициализации модуля: ОформлениеПереводаНаУдаленнуюРаботу Справочник.ФизическиеЛица.МодульМенеджера
по причине:
{ОформлениеПереводаНаУдаленнуюРаботу Справочник.ФизическиеЛица.МодульМенеджера(17,7)}: Переменная не определена (ОбщегоНазначения)
Полный текст не дает разместить на форуме, в приложенном файле.
Информация по конфигурации, расширение, вызывающее ошибку, отключено для запуска в толстом клиенте и получении этой информации:
Платформа: 8.3.19.900
Режим БД: клиент-серверный
Конфигурация. Название: 1С:ERP Управление предприятием 2 (2.4.13.136)
Конфигурация. Основной режим запуска: Управляемое приложение
Конфигурация. Вариант встроенного языка: Русский
Конфигурация. Режим управления блокировкой данных: Управляемый
Конфигурация. Режим совместимости: Версия8_3_14
Конфигурация. Версия БСП: 3.1.3.427
Инструменты разработчика. Версия: Расширение 5.82e
Инструменты разработчика. Инструмент: Прочее
Инструменты разработчика. Объекты на сервере: Да
Инструменты разработчика. Разрешены имитаторы: Да
Расширения. ИсправлениеОшибок ()
Расширения. ПечатьНепроведенных ()
Расширения. ERP_WMS (2.4.13.103_5_0_1_2)
Расширения. НастройкиДинамическогоСпискаTormozit (1.00)
Расширения. УниверсальныйОбменДанными ()
Расширения. БыстрыйВызов1С ()
Расширения. ПрямыеВыплатыСотрудникамСтарше65Лет (1.0.5.40)
Расширения. ИнструментыРазработчикаTormozit (5.82e)
Расширения. УниверсальныеИнструменты (1.4.7)
Клиент. ОС: Microsoft Windows Server 2012 R2 Standard 64-разрядная Русский
Клиент. Приложение: Управляемое приложение 64б
Клиент. Проверка модальных вызовов: Нет
Клиент. Язык интерфейса конфигурации: ru
Клиент. Язык интерфейса системы: ru_RU
Клиент. От имени администратора Windows: Да
Сервер. ОС: Microsoft Windows Server 2012 R2 Standard 64-разрядная Русский
Сервер. Отладка: http
Переменная
не определена в 1С
В программе 1С для промежуточного хранения информации любого типа используются переменные. В процессе исполнения программного кода, если переменной не присвоено никакого значения, пользователю выдается ошибка в 1С «Переменная не определена». Рассмотрим, как ее исправить.
Использование переменных в 1С
Переменные указываются в структуре кода с использованием знака равенства (=) или перечисляются после ключевого слова Перем в одноименном разделе модулей, кроме общего и модуля сеанса.
Тип переменной заранее не задается, а определяется после присвоения какого-либо значения. В памяти они не хранятся, а создаются в момент исполнения кода и стираются с завершением операций. Различают 3 вида переменных:
- глобальные,
- локальные,
- экспортные.
Глобальные переменные
Объявляются в верхней части модулей до процедур/функций в разделе объявления переменных. Имена перечисляются после ключевого слова Перем через запятую. Присвоение значений происходит в процессе выполнения кода, изначально имеет тип [Неопределено].
Глобальные переменные можно использовать в модулях:
- обычного приложения;
- управляемого приложения;
- команды;
- внешнего соединения;
- менеджера;
- формы;
- объекта;
- набора записей.
В модулях формы и команды для каждой процедуры/функции определяется место исполнения: на сервере (&НаСервере, &НаСервереБезКонтекста) или на клиенте (&НаКлиенте), при этом режим работы программы (серверный или файловый) не имеет значения. Объявленные глобальные переменные в этих модулях во время выполнения кода:
- &НаКлиенте — передаются от одной процедуры к другой с сохранением значения. При переводе исполнения кода на сервер переменные продолжают существовать на стороне клиента со значениями, которые имели до передачи на сервер;
- &НаСервере — уничтожаются по окончании выполнения процедур/функций на сервере, обратная передача переменной на клиент не производится. При повторном обращении к серверу создается вновь со значением по умолчанию [Неопределено].
Локальные переменные
Определяются в процедуре/функции при помощи равенства какому-либо значению, доступны только в пределах своей процедуры/функции, не могут выйти за рамки кода и стираются после ее завершения.
Экспортные переменные
В разделе переменных после имени имеют ключевое слово Экспорт, которое позволяет экспортировать их в любое место программы через обращение к модулю-родителю.
Ошибка «Переменная не определена» в 1С 8.3
Когда программа 1С не может найти переменную, пользователю выдается сообщение «Переменная не определена ([Имя_переменной])».
Сбой может возникнуть после обновления или доработки конфигурации. Первичные действия по устранению ошибки будут такими же, как при появлении других предупреждающих сообщений, например, «Поле объекта не обнаружено» или «Метод объекта не обнаружен»:
- очистка кэш-памяти программы 1С;
- регистрация ошибки на сайте поддержки 1С, загрузка исправленных версий конфигурации;
- тестирование и исправление сбоев в 1С через одноименную команду в конфигураторе.
Если ни один из вышеуказанных способов не дал результата, то для решения проблемы с ошибкой «Переменная не определена» потребуется разобрать в программном коде и при необходимости внести правки.
Кроме текста ошибки в окне указано место ее возникновения:
- Документ — вид объекта метаданных;
- РеализацияТоваровУслуг — имя объекта;
- Форма. ФормаДокументаТовары — модуль возникновения сбоя;
- Форма(299,42) — номер строки в коде модуля и порядковый номер символа в строке.
Для перехода в конфигуратор нажмите Подробно — Конфигуратор. Если кнопки Подробно нет в окне:
- откройте конфигуратор самостоятельно;
- запустите конфигурацию в режиме отладки через меню Отладка — Начать отладку;
- повторите действия, вызывающие ошибку.
В конфигураторе откроется модуль, в котором не удалось определить переменную, а курсор автоматически переместится на ее имя.
Способы устранения ошибки
Если переменная не определена в процедуре/функции, исполняемой на стороне клиента (&НаКлиенте):
1. Проверьте код процедуры/функции до места, где идет обращение к переменной: возможно, произошла опечатка в имени.
2. Просмотрите раздел объявления переменных в начале модуля: если есть сходные по наименованию переменные, исправьте описку в процедуре/функции.
3. До момента использования в процедуре/функции локальной переменной не было присвоено никакого значения, и в памяти 1С ее еще не существует.
С глобальными переменными такие случаи исключены, т. к. они создаются сразу после объявления в начале модуля со значением [Неопределено] и могут подставляться в выражения без предварительной записи в них значения.
Для устранения ошибки потребуется вставить в код строку с присвоением переменной значения. По негласному соглашению программисты 1С при написании исполняемого кода дают имена объектам, реквизитам, процедурам, переменным и т. д., созвучные с записываемой в них информацией или выполняемыми действиями. Обратите внимание:
- когда появляется окно с ошибкой «Переменная не определена»: открытие формы, нажатие на кнопку, выбор из списка и т. д.? В примере окно с сообщением об ошибке выдается при попытке изменить дату документа;
- на наименование процедуры/функции, которая содержит строку кода с ошибкой —ДатаПриИзменении, содержит алгоритм действий при смене даты;
- на имя ненайденной переменной — ТекДатаДокумента, говорит о значении с типом Дата.
Проанализировав эту информацию, определите, какое значение должно быть в переменной. В представленном коде, возможно, программист имел в виду дату документа до изменения.
После определения данных, которые должна содержать переменная, в процедуру/функцию перед местом сбоя дописывается строка кода с присвоением переменной требуемого значения.
В рассмотренном примере это реализовано через функцию, делающую на сервере запрос к базе на получение данных текущего документа, а поскольку он еще не сохранен, будет получена начальная версия объекта. Далее идет обращение к реквизиту документа Дата, который содержит дату до изменения.
Следует помнить, что вмешательство в программный код неопытного пользователя может привести к появлению еще большего числа ошибок, нарушению структуры конфигурации и повреждению базы данных.
4. Попытка прочитать данные базы на стороне клиента. При работе с программой на компьютер пользователя с сервера загружается только необходимая в данный момент информация, все остальные сведения хранятся на сервере. Получить к ним доступ можно через выполнение процедуры/функции на сервере, в противном случае 1С выдаст ошибку «Переменная не определена», даже если код команды указан корректно.
Когда ошибку «Переменная не определена» 1С 8.3 выдает при выполнении серверной процедуры/функции (&НаСервере, &НаСервереБезКонтекста):
- Не присвоено значение локальной переменной, действия аналогичны использованию на клиенте с поправкой на место исполнения.
Глобальные переменные на сервере создаются автоматически при выполнении процедур/функций с пометкой &НаСервере или &НаСервереБезКонтекста, так же, как на клиенте им присваивается начальное значение [Неопределено]. По завершении всех операций на сервере переменная уничтожается. При последующих вызовах сервера глобальная переменная примет начальное значение [Неопределено]. Последовательность процедур/функций в модулях не влияет на порядок их выполнения, переход с клиента на сервер и обратно определяется программным кодом. - Переменная объявлена на стороне клиента, а используется на сервере, где ее не существует. Если переменная должна содержать значение, полученное в клиентской процедуре/функции, то можно передать ее на сервер через параметр.
- Глобальная переменная не объявлена — добавьте в начале модуля переменную для сервера.
- При обращении к базе данных неверно указаны имена объектов, параметров, из-за чего программа ошибочно приняла их за переменные — исправьте опечатку.
При внесении самостоятельных изменений в программный код не удаляйте строки, а превращайте в комментарии, добавляя двойной правый слеш перед текстом. Это позволит восстановить первоначальный вариант кода. Перед корректированием части строчки кода также копируйте ее первоначальный вид в комментарий.
Для исправления ошибки «Переменная не определена» в управляемых формах мало понимать синтаксические конструкции кода: потребуются знания о месте их исполнения — сервер или клиент. Пользователь может выяснить причину сбоя самостоятельно, но для решения проблемы лучше обратиться к программисту.
Заказать консультацию
По этой или иной ошибке Вы можете обратиться к нашим специалистам, мы Вам поможем решить Вашу проблему.
Показывать по
10
20
40
сообщений
Новая тема
Ответить
Юрий
Дата регистрации: 28.10.2021
Сообщений: 1
Доброго времени суток. Подскажите пожалуйста при обновлении версии программы БП 3.0.99.21 вот такая ошибка, как с этим бороться?
Ошибка инициализации модуля: Документ._УПР_КорректировкаВыпуска.МодульМенеджера
по причине:
{Документ._УПР_КорректировкаВыпуска.МодульМенеджера(1124,21)}: Переменная не определена (ОбменСКонтрагентамиСлужебный)
НастройкиОбмена = <<?>>ОбменСКонтрагентамиСлужебный.ЗаполнитьПараметрыЭДПоИсточнику(СсылкаНаОбъект);
{Документ._УПР_КорректировкаВыпуска.МодульМенеджера(1157,25)}: Переменная не определена (ОбменСКонтрагентамиСлужебный)
МассивСтруктурОбмена = <<?>>ОбменСКонтрагентамиСлужебный.СформироватьXMLФайлыДокументов(МассивСсылокНаОбъект,
{Документ._УПР_КорректировкаВыпуска.МодульМенеджера(7398,19)}: Переменная не определена (ОбменСКонтрагентамиСлужебный)
ИмяФайлаАрхива = <<?>>ОбменСКонтрагентамиСлужебный.ТекущееИмяВременногоФайла(«zip»);
{Документ._УПР_КорректировкаВыпуска.МодульМенеджера(7752,20)}: Переменная не определена (ОбменСКонтрагентамиСлужебный)
ИмяФайлаАрхива = <<?>>ОбменСКонтрагентамиСлужебный.ТекущееИмяВременногоФайла(«zip»);
{Документ._УПР_КорректировкаВыпуска.МодульМенеджера(7406,11)}: Переменная не определена (ЭлектронноеВзаимодействиеСлужебный)
Если НЕ <<?>>ЭлектронноеВзаимодействиеСлужебный.ВозможноИзвлечьФайлы(ЧтениеЗИП, ПапкаДляРаспаковки) Тогда
{Документ._УПР_КорректировкаВыпуска.МодульМенеджера(7407,21)}: Переменная не определена (ЭлектронноеВзаимодействиеСлужебныйПовтИсп)
ТекстСообщения = <<?>>ЭлектронноеВзаимодействиеСлужебныйПовтИсп.ПолучитьСообщениеОбОшибке(«006»);
{Документ._УПР_КорректировкаВыпуска.МодульМенеджера(7466,21)}: Переменная не определена (ОбменСКонтрагентамиВнутренний)
ДанныеДокумента = <<?>>ОбменСКонтрагентамиВнутренний.СформироватьДеревоРазбора(ИмяФайлаДанных,
{Документ._УПР_КорректировкаВыпуска.МодульМенеджера(7666,23)}: Переменная не определена (ОбменСКонтрагентамиВнутренний)
ТабличныйДокумент = <<?>>ОбменСКонтрагентамиВнутренний.СформироватьПечатнуюФормуЭД(
{Документ._УПР_КорректировкаВыпуска.МодульМенеджера(7727,2)}: Переменная не определена (ОбменСКонтрагентамиВнутренний)
<<?>>ОбменСКонтрагентамиВнутренний.СформироватьТранспортнуюИнформацию(СтруктураОбмена.СтруктураЭД,
{Документ._УПР_КорректировкаВыпуска.МодульМенеджера(7732,2)}: Переменная не определена (ОбменСКонтрагентамиВнутренний)
<<?>>ОбменСКонтрагентамиВнутренний.СформироватьКарточку(СтруктураОбмена.СтруктураЭД, АдресКаталога, ТекстОшибки);
iRust
Дата регистрации: 18.06.2010
Сообщений: 145
Юрий пишет:
Цитата |
---|
Ошибка инициализации модуля: Документ._УПР_КорректировкаВыпуска.МодульМенеджера…. |
Ошибка начала появляться случайно не после обновления конфигурации?
Откройте Администрирование > Печатные формы, отчеты и обработки > Расширения и посмотрите, что у вас в указано в списке установленных расширений.
Vladko
Дата регистрации: 27.08.2007
Сообщений: 2644
Юрий,у вас самостоятельно разработанный документ УПР_КорректировкаВыпуска. Он был разработан для прошлых релизов бухгалтерии. Сейчас вы обновили бухгалтерию, процедуры там тоже обновились, а в самописном документе у вас эти процедуры вызываются по-старому. Надо дорабатывать ваш документ программисту.
Показывать по
10
20
40
сообщений
Читают тему: