Ошибка 1с модуль объекта 1с
Такие ошибки чаще всего возникают при некорректной работе базы 1С.
Для решения воспользуйтесь следующим алгоритмом:
-
. После запуска 1С повторите действия.
- Проверьте права пользователя в 1С. После запуска 1С повторите действия.
- Отключите (при наличии) внешний модуль документооборота.
Для управляемых приложений:
Сделайте копию информационной базы и перейдите в Отчеты → Регламентированные отчеты → Настройки → Прочие настройки обмена и в этом разделе уберите внешний модуль. Перезапустите 1С. После запуска 1С повторите действия.
Для неуправляемых приложений:
Сделайте копию базы и перейдите в Отчеты → Регламентированные отчеты → Настройки → Для настройки параметров документооборота нажмите здесь (внизу)→ выбрать пункт Использовать внешний модуль. Перезапустите 1С. После запуска 1С повторите действия.
- Сделайте Диагностику 1С-отчетности, отправьте отчет по диагностике и сообщите номер обращения специалисту технической поддержки 1С-Отчетность.
- Запустите Конфигуратор 1С. Выберите пункт Отладка → Начать отладку. После запуска 1С повторите действия.
- Удостоверьтесь, что конфигурация находится на полной поддержке 1С, т.е. в нее не были внесены изменения и она соответствует конфигурации поставщика.
Запустите Конфигуратор 1С. Если конфигурация закрыта, то необходимо ее открыть: Конфигурация → Открыть конфигурацию. Слева в меню напротив названия конфигурации должен быть значок замка – объект поставщика не редактируется.
- Попробуйте запустить 1С в тонком клиенте, для этого после нажатия на ярлык 1С выберите базу, затем нажмите Изменить → Далее → Основной режим запуска: выберите пункт Тонкий клиент → Готово. Запустите 1С. . Рекомендуем обратиться к системному администратору для выполнения данных действий.
- Проверьте кодировку в операционной системе Windows по инструкции Смена Кодировки. Рекомендуем обратиться к системному администратору для выполнения данных действий.
В случае системного языкового пакета, отличного от русского, программа 1С не может работать с внешней компонентой для отображения сертификатов. Для решения этой ситуации можно изменить параметры в системном реестре. Рекомендуем обратиться к системному администратору для выполнения данных действий.
Как и любая программа, программа 1С состоит из модулей, частей. Существует несколько видов модулей:
- общие модули (проведение, отчеты, процедуры общего назначения и т.д.);
- модуль объекта (валюты);
- модуль формы (форма: списка, элемента, подбора и выбора);
- модуль приложения.
Программные модули состоят из разделов:
- объявления переменных;
- процедур и функций;
- основной программы.
Контекст в 1С заключается в окружении модуля и его разделов, т.е. это конкретные переменные, свойства, объекты, метод и события которые могут быть доступны в каждой конкретной точке.
- Глобальный контекст указывает открытые для вызова функции;
- Локальный контекст (более низкий уровень) становится доступен в каждой модульной части.
Существуют правила для доступа процедур, переменных, и функций в модулях:
- В общем модуле не будут доступны для экспорта переменные, процедуры и функции модульных приложений;
- В модульных приложениях существует доступ для экспорта процедур и функций общих модулей;
- В общих модульных частях открыт доступ к экспорту процедур и функций прочих общих модулей;
- Для модульных прикладных объектов и для модульных форм являются доступными переменные, функции и процедуры модулей приложений для экспорта и общих модулей.
Если какой-либо из форм присвоен основной реквизит, то в настройках этой формы будут содержаться свойство и метод, которые отвечают этому основному реквизиту.
Ошибка модуля
Готовые работы на аналогичную тему
Самые распространенные пояснения:
- записать;
- создать;
- подключиться;
- connect;
- проверить вывод;
- previewFile1C;
- прочитать;
- выполнить;
- выполнить пакет;
- прочитать изменения.
Данная ошибка может возникнуть по причинам:
- нарушена логическая и физическая целостность информационной базы;
- ошибки при обращении с программой;
- разработчиком ошибочно был введен код;
- внезапное закрытие программы.
Вы можете провести анализ ошибки:
Способы устранения ошибки
Перед началом работы с базой обязательно сделайте архивную копию!
Данная ошибка в 99% случаях легко решается. Для этого вам достаточно проанализировать проблему и вызвать справку. Так же вы можете забить конкретную ошибку с пояснением в поиск и найти решение проблемы.
Перед использованием любого метода вы можете получить подсказку о том, как его использовать. Для этого выберете требуемую функцию и нажмите на клавиши на клавиатуре «Ctrl + F1». Программа откроет подсказку по необходимому методу. В конце работы проверьте параметры, которые передаются в функцию, и правильность её использования.
Ребята привет!
Есть общий модуль. В ней есть процедура, она вызывается из регзадания. В этой процедуре создается документ.
Далее пытаюсь обратиться к экпспортной процедуре этого документа в модуле объекта.
Выдается ошибка: : Метод объекта не обнаружен
Ребята что за Х?
Мне кажется я понял почему. Не смотря на то что это обычные формы. Документ создается на сервере и к процедурам этого документа не возможно обратиться. Можно только из под клиентского приложения. Интересно почему так.
(5) я искал, вроде интерактивных таких функций я не видел. Хотя не исключаю, что где то может встретиться.
В конфигураторе в меню
сервис / параметры / модули / проверка
поставьте галочку "внешнее соединение" и выполните синтакс контроль.
Имея объект документа, можно обратиться к его процедурам/функциям при условии что они экспортные.
Еще надо чтобы у пользователя регламентных заданий хватало прав на "кручу-верчу-запутать-хочу" с данным документом. (попробуй ему дать полные права)
(9) Это администратор.
Сделал самое простое. В процедуре в общем модуле, которая вызывается рег заданием делаю
(10) Попробуй так, скажи что увидишь:
- Создай обработку, напиши вызов регламентной процедуры
- в общем модуле установи флаг "ТолстыйКлиент", остальные сними
- установи брейкпоинт в начало вызова процедуры
- запусти обработку, нажми кнопку выполнить
- отладчиком шуруй до создания документа
- посмотри какой тип принял документ
(11) Я делал так. создал обработку. В ней вызывал процедуру из общего модуля. ТАм все нормально отрабатывает. Только флаги не снимал, щас попробую.
(11) "- в общем модуле установи флаг "ТолстыйКлиент", остальные сними "
Клиент (обычное приложение)? Или сервер? Если обычный приложение, то код выполнится, я уверен, спросил может вы описались. Просто не вижу в этом смысла. Но ради чистоты эксперимента проверю.
(14) А ты на сервере сможешь отладчик использовать?
Ставь "Клиент (обычное приложение)", отлаживай под пользователем регламентных заданий.
ЭлПисьмо Электронное письмо от 01.01.0001 0:00:00 ДокументОбъект.ЭлектронноеПисьмо
Ошибки нет как я и предполагал
Наверно все таки изза этого, что документ создается на сервере, не из под пользователя и процедуры становятся недоступными.
(18) как вариант, попробуй пользователем в качестве регламентного задания указать себя, и не забудь на общий модуль поставить галки сервер и внешнее соединение, отпишись.
У нас на УПП вообще страшно аж что крутится в регламентных заданиях.
Не верю я что нельзя выполнить экспортную (надеюсь?) функцию объекта!
(20) При том, что либо прав не хватает, либо метод не экспортный.
Смотри в (21), там вызывается экспортная функция, что какбы намекает.
(22) под этим же пользователем заходишь в 1С нажимаешь кнопку на обработке и она вызывает эту же процедуру, все отрабатывает на ура. Но как только вызываешь эту же процедуру рег заданием, все! Ошибка! Значит прав хватает, и код корректный. Что то связано с самим вызовом этой процедуры
И на модуле (том что в (21)) галки стоят:
Сервер
Внешнее соединение
Клиент (Обычное приложение)
Вызов сервера
(25) Ок, добавь запись в журнал регистрации либо лог в файл, интересует в первую очередь, какой тип объекта получается после:
ЭлПисьмо = Документы.ЭлектронноеПисьмо.СоздатьДокумент();
(26) Сто раз уже написал :-)
Электронное письмо Т0000066784 от 23.03.2017 13:20:35
Документ объект: Электронное письмо
Из-за данной инструкции препроцессора, такая процедура выполнится только локально. :(
Вы (или пользователь) работаете в 1С. Вдруг – ошибка. Что делать?
Конечно самое правильное – проанализировать — что за ошибка 1С, ее причины, провести в отладчике 1С часик-другой, чтобы выяснить что к чему.
Что делать, если это невозможно? Нет времени, нет желания, недостаточно знаний. Вот несколько очень вредных советов по быстрому исправлению ошибок в 1С.
-
, в котором произошла ошибка 1С
- Функция этого модуля, в котором произошла ошибка 1С
- Номер строки этого модуля, в котором произошла ошибка 1С.
Также Вы можете нажать на кнопку Конфигуратор, и тогда будет открыт конфигуратор, этот модуль, эта функция на этой строке, после чего Вы можете провести исправление ошибки 1С.
Хитрости понимания ошибок
Как только что было сказано, в тексте ошибки 1С очень часто следствие выполненных ранее неверных действий.
Например, очень распространенный текст ошибки 1С гласит:
Значение не является значением объектного типа (КакоетоИмя)
Что бы это значило.
А это значит следующее:
- Есть переменная
- В программе предполагается, что значение переменной – справочник или документ или что то другое подобное – в общем у него есть реквизиты(поля)
- В программе делается попытка обратиться к полю этого объекта
- Однако ошибка 1С состоит в том, что по какой-то причине в предыдущих строчках программы эта переменная получила значение, у которого нет никаких реквизитов (полей), например значение «Неопределено».
Исправление ошибок 1С, которые чаще встречаются
Конечно же все ошибки, которые могут быть в 1С — мы сейчас рассмотреть не можем.
Попробуем кратко перечислить ошибки 1С, которые бывают часто, а также вредные советы по быстрому исправлению ошибок 1С.
-
Если переменная имеет тип булево (то есть принимает значения Истина и Ложь), то к ней можно обращаться вот так:
Если ИмяПеременной Тогда
Такое написание аналогично:
Если ИмяПеременной = Истина Тогда
В клиент-серверном варианте 1С часть модулей выполняется на сервере. Мало того, некоторые функции одного и того же модуля могут выполняться на сервере или на клиенте.
При этом может возникнуть ошибка 1С, что из функции работающей на сервере идет обращение к функции, которая выполняется на клиенте. В этом случае будет такая ошибка 1С.
Аналогично предыдущей ошибке 1С. Если в программе прописано обращение к функции, которая находится в общем модуле, то это выглядит так:
ИмяМодуля.ИмяФункции();
Если при этом в свойствах модуля установлено, что он выполняется на клиенте, а мы обращаемся из тех строчек программы, которые выполняются на сервере – то будет ошибка 1С
«Переменная не обнаружено – ИмяМодуля»
Под словом «метод» понимается функция/процедура в модуле этого объекта.
Это значит в тексте запроса ошибка 1С. Текст запроса определяется в программе обычно раньше (то есть выше), чем выполняется. Поищите текст запроса в этом модуле (глазами выше или по поиску слова «ВЫБРАТЬ»).
Данная ошибка 1С означает или ошибку 1С в тексте запроса или ошибку 1С настроек СКД (часто в группировках, в выбранных полях, в условном форматировании).
Попробуйте начать с настроек, сильно упростив их. Проверьте, что в выбранных полях и условном форматировании — в списке нет полей, отмеченных крестиком.
Любая программа состоит из программного кода, то есть собственно из написанных на каком-либо языке последовательности действий, которые должны быть выполнены.
Однако эта самая программа должна быть где-то написана, то есть где-то находиться. В большинстве случаев код программы пишется в обычных текстовых файлов. Разница только в том, что расширение в них не .txt, а .cpp или .php.
Где пишется программа 1С?
Что такое Модуль 1С?
Конечно код 1С можно было бы тоже написать в каком-нибудь текстовом файле. Однако есть понятие Конфигурация 1С – которое включает в себя не только список настроек, шаблонов форм и прочего, но и программный код 1С. Поэтому код 1С хранится в конфигурации.
Конфигурация состоит из объектов 1С, как мы уже рассматривали в предыдущих уроках. Каждый объект 1С содержит в себе вложенные объекты, например справочник имеет несколько форм.
Каждый объект 1С, включая некоторые вложенные, имеет свой Модуль – некий текстовый файл, который содержит программный код.
Также есть независимые от объектов модули, в которых может быть написан программный код, независимый от конкретного объекта.
Таким образом в 1С нет «единой» программы. Есть набор модулей для написания программного кода для каждого объекта конфигурации 1С.
Как используются Модули 1С?
Всю программу можно грубо поделить на два вида:
Методы. Как мы уже говорили ранее – объект 1С является цельной структурой, которая включает в себя как данные, так и способы их обработки. Эти способы – это набор действий (методов), которые можно вызывать для обработки данных. Пример такого действия СправочникОбъект.Записать() – записывает элемент справочника в базу данных.
Методы многих объектов 1С могут быть стандартными (т.е. запрограммированными в платформе 1С) и написанными программистом на языке 1С. С помощью вторых – можно расширять функционал объектов 1С по своему желанию.
События. События есть во множестве других средств разработки. Цель программы не только что-то вычислить при запуске, но и поддерживать работу пользователя.
Пользовательское события – пользователь нажал кнопку. В ответ какая-то часть кода выполнится, осуществив реакцию на действия пользователя.
Системные события – мы записали объект 1С в базу данных. Возникло системное событие «Запись объекта». Возможно настроить реакцию, которая возникнет на события, вызванные не пользователем (которые нажал на кнопку или что-то еще сделал), а самой системой. Яркий пример такого события – при запуске программы.
Порядок выполнения модулей 1С
Во многих языках есть такое понятие как «точка входа». Это та самая первая строчка или функция которая будет выполнена при запуске программы.
В 1С таких точек входа несколько – на каждый вид клиента. То есть при запуске толстого клиента точка входа одна, при запуске тонкого клиента – другая. Это позволяет запрограммировать особенности, различные в разных видах клиентов.
Точкой входа в соответствующем модуле является обработчики системного события ПередНачаломРаботыСистемы() и ПриНачалеРаботыСистемы() соответственно (т.е. по порядку). Эти функции выполняется первыми, они может запустить что-то автоматически.
Если ничего запущено автоматически не было, то перед пользователем открывается интерфейс 1С и далее все зависит от него. Он нажимает на кнопку – происходит выполнение обработчика нажатия этой кнопки (который в свою очередь тоже может что-то запустить автоматически).
Работа с модулями 1С
Производится в конфигураторе. Открыть модуль можно с помощью окна Конфигурация.
-
Модули точки входа (в разрезе разных клиентов) можно открыть нажав правой кнопкой на верхнем элементе окна конфигурации. Называться он может по разному, но находится всегда в самом верху.
Состав модуля 1С
Модуль состоит из набора функций и процедур – т.е. обработчиков событий и методов.
В самом начале модуля можно расположить переменные, которые будут использовать обработчики и события в этом модуле.
В самом низу модуля можно расположить программный код без оформления процедуры или функции. Это можно назвать автостартом конкретного модуля. При попытке первого обращения к любой процедуре или функции этого модуля – будет выполнен автостарт (код внизу модуля).
Обычно его используют для начального заполнения переменных расположенных в начале модуля.
Клиент и сервер 1С
В серверном варианте 1С разные части программы выполняются на клиентской машине или на сервере. Зачем это нужно мы обсудим потом, для начала можно взять хотя бы производительность клиентского компьютера и сервера.
У общих модулей (Общие / Общие модули) есть свойства. Нажмите правой кнопкой мыши и далее – свойства. Галочками можно отметить где будет доступен этот модуль.
Клиент и Сервер видят только те части модуля, которые находятся между этими директивами. Если директив нет – модуль виден весь.
В версии 1С 8.2 для тонкого клиента можно указывать для каждого метода и обработчика где он будет выполняться. Для этого непосредственно перед функцией или процедурой указывается &НаСервере и &НаКлиенте. При этом клиентские функции могут вызывать серверные, но не наоброт.
Каждый модуль существует сам по себе и в него нет точек входа извне – из других модулей.
Если мы хотим создать метод или переменную, видимую из другого модуля, она помечается словом ЭКСПОРТ.
Однако большое количество модулей и правил клиент-сервера пораждает некоторое количество проблем у программиста с использованием модуля извне. Где-то все просто, а где-то можно тупить пол часа – почему написано ЭКСПОРТ, но вызов оканчивается ошибкой «метод не найден..».
Контекст – это очень сложное потому что очень расплывчатое понятие.
Под контекстом подразумевается весь тот набор функций, процедур и переменных, доступных на определенной строке выполнения программы, с теми значениями переменных, которые они уже имеют на данном этапе выполнения.
Читайте также: