1с модуль менеджера ошибка

Обновлено: 04.07.2024

Как и любая программа, программа 1С состоит из модулей, частей. Существует несколько видов модулей:

  • общие модули (проведение, отчеты, процедуры общего назначения и т.д.);
  • модуль объекта (валюты);
  • модуль формы (форма: списка, элемента, подбора и выбора);
  • модуль приложения.

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

  • объявления переменных;
  • процедур и функций;
  • основной программы.

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

  • Глобальный контекст указывает открытые для вызова функции;
  • Локальный контекст (более низкий уровень) становится доступен в каждой модульной части.

Существуют правила для доступа процедур, переменных, и функций в модулях:

  • В общем модуле не будут доступны для экспорта переменные, процедуры и функции модульных приложений;
  • В модульных приложениях существует доступ для экспорта процедур и функций общих модулей;
  • В общих модульных частях открыт доступ к экспорту процедур и функций прочих общих модулей;
  • Для модульных прикладных объектов и для модульных форм являются доступными переменные, функции и процедуры модулей приложений для экспорта и общих модулей.

Если какой-либо из форм присвоен основной реквизит, то в настройках этой формы будут содержаться свойство и метод, которые отвечают этому основному реквизиту.

Ошибка модуля

Готовые работы на аналогичную тему

Получить выполненную работу или консультацию специалиста по вашему учебному проекту Узнать стоимость

Самые распространенные пояснения:

  • записать;
  • создать;
  • подключиться;
  • connect;
  • проверить вывод;
  • previewFile1C;
  • прочитать;
  • выполнить;
  • выполнить пакет;
  • прочитать изменения.

Данная ошибка может возникнуть по причинам:

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

Вы можете провести анализ ошибки:

Способы устранения ошибки

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

Данная ошибка в 99% случаях легко решается. Для этого вам достаточно проанализировать проблему и вызвать справку. Так же вы можете забить конкретную ошибку с пояснением в поиск и найти решение проблемы.

Перед использованием любого метода вы можете получить подсказку о том, как его использовать. Для этого выберете требуемую функцию и нажмите на клавиши на клавиатуре «Ctrl + F1». Программа откроет подсказку по необходимому методу. В конце работы проверьте параметры, которые передаются в функцию, и правильность её использования.

Использование модуля объекта, модуля менеджера объекта и общих модулей

Область применения: управляемое приложение, мобильное приложение, обычное приложение.

Методическая рекомендация (полезный совет)

1. Модуль объекта предназначен для реализации поведения отдельного экземпляра объекта ( СправочникОбъект , ДокументОбъект и т.п.). В модуле объекта размещаются процедуры и функции, которые работают с данными объекта ( ЭтотОбъект и переменные модуля объекта), в том числе когда он еще не записан в информационную базу.

Например, в модуле объекта могут размещаться:

  • обработчики событий объекта
  • процедуры заполнения экземпляра объекта.

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

2. Модуль менеджера объекта предназначен для размещения "статической" функциональности, которая логически неразрывно связана с объектом метаданных, но не зависит от состояния конкретного экземпляра объекта данных. Это могут быть процедуры и функции:

  • относящиеся не к одному, а сразу к некоторой совокупности объектов. Например, это функции для вывода на печать списка объектов; функции, возвращающие информацию, общую для всех экземпляров объекта метаданных; процедуры обновления данных информационной базы, которые связаны с объектом метаданных; и т.п.
  • которые работают с объектом, записанным в ИБ. В таких функциях входным параметром является ссылка на объект. Например, это функции для получения печатной формы по ссылке на объект, процедуры формирования движений по ссылке на объект и т.п.

Для выполнения функций модуля менеджера объекта не должен требоваться экземпляр объекта данных ( СправочникОбъект , ДокументОбъект и т.п.).

3. Если функциональность невозможно однозначно отнести к тому или иному объекту метаданных, то она является логически общей для нескольких объектов. В этом случае ее следует размещать в общем модуле .

Поддержка толстого клиента, управляемое приложение, клиент-сервер

Область применения: управляемое приложение, обычное приложение.

1. В управляемом режиме из-за ряда ограничений тонкого клиента может возникнуть необходимость поддержки запуска толстого клиента (в режиме управляемого приложения). Подробнее см. Функциональность обычного приложения, отсутствующая в управляемом приложении.

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

  • модуль менеджера;
  • модуль объекта;
  • модуль сеанса.

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

Однако в толстом клиенте, в режиме управляемого приложения, клиент-сервер, возможны ситуации, когда указанные модули могут начать компилироваться и выполняться на стороне клиента, в частности:

  • если объект (справочник, документ и т.п.) явно создается и вызывается в клиентском коде;
  • когда платформа 1С:Предприятие неявно обращается к модулям менеджеров и модулю сеанса для вызова их обработчиков событий на клиенте.

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

полностью исключить из клиентского контекста код модулей объектов (наборов записей и т.п.), заключив его в инструкцию препроцессора и дополнив вызовом исключения, которое предотвращает несанкционированную попытку использования объекта на клиенте:
  • полностью исключить из клиентского контекста код модуля сеанса, заключив его в инструкцию препроцессора (так как параметры сеанса требуются для работы серверного, а не клиентского кода конфигурации):
полностью исключить из клиентского контекста код модулей менеджеров всех видов объектов метаданных, заключив его в инструкцию препроцессора:

В последнем случае также будет действовать следующее ограничение: если представление объектов формируется обработчиками событий модуля менеджера ОбработкаПолученияПредставления и ОбработкаПолученияПолейПредставления , то в толстом клиенте, в режиме управляемого приложения, клиент-сервер, представление будет формироваться по умолчанию, без вызова этих обработчиков, и тем самым будет отличаться от остальных режимов работы. (При этом оставшиеся два обработчика модуля менеджера ОбработкаПолученияДанныхВыбора и ОбработкаПолученияФормы вызываются всегда только на сервере, поэтому указанное ограничение на них не распространяется.)

Методическая рекомендация (полезный совет)

3. В тех случаях, когда требуется снять указанное выше ограничение, необходимо дополнительно обеспечить работу на клиенте следующих фрагментов серверного кода:

  • обработчиков событий модулей менеджеров ОбработкаПолученияПредставления и ОбработкаПолученияПолейПредставления
  • а также код подписок на эти события модулей менеджеров.

Для этого код перечисленных обработчиков событий следует вынести за инструкции препроцессора, указанные в п.2, а обработчики подписок разместить в клиент-серверных модулях.

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

Важно: не следует для этих целей всем общим модулям с признаком Сервер принудительно устанавливать флажок Вызов сервера . Подробнее см. Ограничение на установку признака «Вызов сервера» у общих модулей.

Например, обработчик события ОбработкаПолученияПредставления вызывает общий модуль, который не доступен на клиенте:

Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)

Взаимодействия.ОбработкаПолученияПредставления(Данные, Представление);
СтандартнаяОбработка = Ложь;

правильно выполнить переход на сервер (и при этом не передавать на клиент значения мутабельных типов):

Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)

ВзаимодействияВызовСервера.ОбработкаПолученияПредставления(Данные, Представление);
СтандартнаяОбработка = Ложь;

4. Для расстановки фрагментов кода с инструкциями препроцессора можно воспользоваться приложенной обработкой.


Модуль объекта есть почти у всех основных прикладных объектов конфигурации в 1С.


Также модуль объекта можно открыть из контекстного меню объекта:


Или из меню Действия:


Модуль объекта выполняется при создании объекта. В нем можно объявлять переменные модуля. Экспортные процедуры и функции можно вызывать у созданных программных объектов. К экспортным переменным можно обращаться как к свойствам программных объектов. В модуле есть прямой доступ к реквизитам и табличным частям объекта.

Вызов методов модуля объекта


В модуле объекта напишем следующий код:

Теперь создадим обработку с одной формой и в модуле обработки в событии ПриСозданииНаСервере напишем следующий код:

Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка ) ОбъектНоменклатура = Справочники . Номенклатура . СоздатьЭлемент ( ) ; //заполняем экспортную переменную модуля объекта вызвав экспортную функцию ОбъектНоменклатура . ОбщийОстаток = ОбъектНоменклатура . ОбщийОстаток ( ) ;

Здесь мы сначала создаем новый программный объект справочника Номенклатура вызвав встроенный метод Справочники.Номенклатура.СоздатьЭлемент(). Потом через ссылку на этот объект обращаемся к экспортным переменной и функции объекта.

Теперь поменяем код в модуле формы обработки на следующий:

Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка ) ОбъектНоменклатура = Справочники . Номенклатура . СоздатьЭлемент ( ) ; //пытаемся заполнить переменную модуля объекта вызвав функцию модуля объекта ОбъектНоменклатура . ПолноеНаименование = ОбъектНоменклатура . ПолноеНаименованиеНоменклатуры ( ) ; Сообщить ( ОбъектНоменклатура . ПолноеНаименование ) ; //ошибка

Здесь мы делаем все то же самое, но обращаемся к не экспортным переменной и функции.


Так как переменная ПолноеНаименование не является экспортной, то к ней нет доступа из других модулей.

Теперь попробуем обратиться к не экспортной функции модуля объекта. Вставим в модуль формы следующий код и откроем обработку:

Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка ) ОбъектНоменклатура = Справочники . Номенклатура . СоздатьЭлемент ( ) ; Сообщить ( ОбъектНоменклатура . ПолноеНаименованиеНоменклатуры ( ) ) ; //опять ошибка


Теперь вставим в форму обработки такой код и откроем обработку:

Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка ) ОбъектНоменклатура = Справочники . Номенклатура . СоздатьЭлемент ( ) ;

Здесь мы вызываем экспорную процедуру модуля объекта, а потом встроенным методом Записать записываем объект в базу данных.

В результате в базе данных будет создан новый элемент, у которого заполнен артикул и добавлены 2 строки в табличную часть:


В методе ЗаполнитьРеквизиты() мы обращались напрямую к реквизитам объекта, после чего записали его методом Записать(). Значения реквизитов сохранились в базе данных.

Обработчики событий


В результате откроется список возможных событий:


Рассмотрим основные события модуля объекта:

Для примера создадим в модуле объекта 3 обработчика события и вставим в них следующий код:

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