Модуль управляемого приложения переменная не определена
Помог совет хорошего человека alex0402 на дружественном форуме:
1) почистить кеш;
2) удалить базу из списка и добавить снова.
Проблема решена, тему можно закрывать.
fisher8282 , интересно стало, что же за дружественный форум? Везде написал, что помог и везде этот секретный дружественный форум?
Уже не интересно.
Помог совет хорошего человека alex0402 на дружественном форуме:
1) почистить кеш;
2) удалить базу из списка и добавить снова.
это, т.е. этот вопрос, просто несерьёзно.
Чистка кэша - стандартные действия, которые надо делать после/при обновлении.
И все делают
Если Вы воспользуетесь обновлятором 1С (есть такая б/п программа в интернете), то там эти действия - чистка кэша - встроены в процесс (автоматического) обновления
А, если бы Вы (с)делали хоть какие-то действия - например, подняли бы копию базы (из другой папки) для изучения-анализа, то и чистить (удалять-добавлять из списка) не пришлось бы.
И вопроса не было бы
Помог совет хорошего человека alex0402 на дружественном форуме:
1) почистить кеш;
2) удалить базу из списка и добавить снова.
это просто несерьёзно.
Это стандартные действия, которые надо делать после/при обновлении
Если Вы воспользуетесь обновлятором 1С (есть такая б/п программа в интернете), то там эти действия - чистка кэша - встроены в процесс (автоматического) обновления
А, если бы Вы (с)делали хоть какие-то действия - например, подняли бы копию базы (из другой папки) для изучения-анализа, то и чистить (удалять-добавлять из списка) не пришлось бы.
И вопроса не было бы
Не судите строго, я свой уровень изначально озвучил - Пользователь. Прежде после обновления проблем не возникало.
По поводу "Обновлятора 1С" почитаю, спасибо.
По поводу копии "из другой папки" - не было копии после обновления, была только до (понятно, что оплошность, согласен). Элементарная ошибка заключалась также в том, что я вновь созданный образ размещал в той же папке, где и располагалась база ранее, и в этой связи "работал" старый кеш.
Цитата |
---|
fisher8282 , интересно стало, что же за дружественный форум? Везде написал, что помог и везде этот секретный дружественный форум? |
Да не секретный он: forum-1c_ru. Обычно не приветствуют ссылки на другой ресурс.
forum-1c_ru/index.php?topic=67815
Использование переменных в программных модулях
Область применения: управляемое приложение, мобильное приложение, обычное приложение.
1. В большинстве случаев, вместо переменных программных модулей следует использовать более подходящие средства разработки платформы 1С:Предприятие . Поскольку область видимости (использования) таких переменных сложно контролировать, то они зачастую становятся источником трудновоспроизводимых ошибок.
Примеры некорректного использования и исключений из этого правила приведены далее. Рекомендации по оформлению переменных в коде программных модулей см. в статье Структура модуля.
2. Неоправданные примеры использования переменных в модулях объектов (справочников, документов, наборов записей, обработок, отчетов и пр.).
2.1. Для передачи параметров между обработчиками подписок на события и в обработчики событий модуля объекта из внешнего кода рекомендуется использовать свойство объекта ДополнительныеСвойства . Например, неправильно:
Перем КонвертацияФайлов Экспорт;
Если КонвертацияФайлов Тогда
.
// вызывающий код
ФайлОбъект.КонвертацияФайлов = Истина;
ФайлОбъект.Записать();
Если ДополнительныеСвойства.Свойство("КонвертацияФайлов") Тогда
.
// вызывающий код
ФайлОбъект.ДополнительныеСвойства.Вставить("КонвертацияФайлов", Истина);
ФайлОбъект.Записать();
В то же время, для передачи внутренних параметров между обработчиками событий модуля объекта целесообразно использовать неэкспортные переменные модуля объекта, которые недоступны из внешнего кода.
Например:
Перем ПредыдущееЗначениеОрганизации; // значение реквизита "Организация" до записи объекта в базу
Процедура ПередЗаписью(Отказ)
ПредыдущееЗначениеОрганизации = . ; // с помощью запроса выясняем значение до записи объекта в базу
КонецПроцедуры
Процедура ПриЗаписи(Отказ)
Если ПредыдущееЗначениеРеквизита <> Организация Тогда
// отрабатываем изменение значения реквизита при записи
.
КонецЕсли;
2.2. Для обработки кодов возврата (ошибок) в логике программного модуля рекомендуется использовать строковые константы.
Например, неправильно:
Перем НетОшибок,
Ошибка_ОбработкиПроверкиЗаполнения, // возникает, если обработка проверки заполнения вернула отказ
Ошибка_ЗаписиОбъекта, // возникает, если во время записи объекта возникло исключение
Ошибка_БлокировкиОбъекта, // возникает, при попытке блокировки объекта
Процедура ВыполнитьПерерасчет()
.
Результат = ОбработатьДокументы(. );
Если Результат = Ошибка_ЗаписиОбъекта Тогда
.
ИначеЕсли Результат = Ошибка_БлокировкиОбъекта Тогда
.
ИначеЕсли .
НетОшибок = 1;
Ошибка_ОбработкиПроверкиЗаполнения = 2;
Ошибка_ЗаписиОбъекта = 3;
Ошибка_БлокировкиОбъекта = 4;
Процедура ВыполнитьПерерасчет()
.
Результат = ОбработатьДокументы(. );
Если Результат = "ОшибкаЗаписиОбъекта" Тогда
.
ИначеЕсли Результат = "ОшибкаБлокировкиОбъекта" Тогда
.
ИначеЕсли .
2.3. Для кеширования долго-вычисляемых и часто-используемых значений в процедурах и функциях рекомендуется применять модули с повторным использованием возвращаемых значений на время вызова сервера.
Исключение из этого правила составляют случаи, когда по соображениям безопасности возвращать результат вычисления в экспортной функции недопустимо. В этом случае они размещаются в локальной переменной модуля.
3. Неоправданные примеры использования переменных в модулях форм.
3.1. Для кеширования долго-вычисляемых и часто-используемых значений в процедурах и функциях рекомендуется применять модули с повторным использованием возвращаемых значений.
При этом не следует кешировать статическую и легко вычисляемую информацию. В частности, не следует кешировать в клиентских переменных модуля формы значения предопределенных элементов и перечислений. Для их получения на клиенте предназначен метод ПредопределенноеЗначение .
3.2. Для хранения и передачи промежуточных результатов вычислений между разными процедурами и функциями формы следует использовать
- Параметры процедур и функций – для передачи результатов по цепочке вызовов дочерних процедур и функций в контексте одного вызова.
- Реквизиты формы – если требуется сохранять промежуточные результаты между разными вызовами с клиента. (Следует иметь в виду, что значения серверных переменных модуля формы не сохраняются между вызовами с клиента.)
Исключение из этого правила составляют случаи использования клиентских переменных формы для хранения промежуточных результатов в обработчиках ожидания формы, в обработчиках внешних событий и в клиентских обработчиках событий элементов формы.
Например:
&НаКлиенте
Перем ПорядковыйНомерИзображения; // счетчик-нумератор для наименования файлов при сканирования нескольких изображений
.
&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
Если Источник = "TWAIN" И Событие = "ImageAcquired" Тогда
Если ПорядковыйНомерИзображения = Неопределено Тогда
ПорядковыйНомерИзображения = 1;
КонецЕсли;
ПорядковыйНомерИзображения = ПорядковыйНомерИзображения + 1;
// Сохранение отсканированного документа в файл с номером ПорядковыйНомерИзображения
// .
КонецЕсли;
КонецПроцедуры
4. Переменные управляемого и обычного приложения следует использовать для хранения «клиентских параметров сеанса». Подробнее см. статью Использование параметров сеанса.
Модуль приложения 1С предназначен в основном для того чтобы поймать момент запуска приложения и момент завершения работы.
Здесь же находятся обработчики, которые позволяют перехватить внешнее событие от оборудования.
Подробно рассказано о модулях 1с их предназначений.
В платформе 8.2 существует два модуля приложения:
• модуль управляемого приложения
• модуль обычного приложения
Модуль управляемого приложения
Модуль управляемого приложения можно вызвать из палитры свойств корневого узла конфигурации или из контекстного меню, вызванного на корневом узле конфигурации.
События модуля управляемого приложения срабатывают при запуске Тонкого клиента, Веб-клиента и Толстого клиента управляемого приложения.
В модуле управляемого приложения отслеживается интерактивный запуск системы.
Модуль управляемого приложения содержит:
• раздел объявление переменных
• раздел описания процедур и функций
• раздел основной программы
Процедуры, функции и переменные управляемого модуля могут быть описаны как экспортные (доступные вне данного модуля). Ещё в данном модуле могут содержаться специальные обработчики событий, которые возникают при некоторых обстоятельствах.
Рассмотрим список обработчиков, который можно вызвать, нажав горячие клавиши 1С (Ctrl+Alt+P).
ПередНачаломРаботыСистемы — действие ещё не произошло (происходит запуск 1С Предприятия 8.2 но само приложение ещё не появилось на экране). Если параметр “Отказ” выставить в значение “Истина” то приложение попросту не запустится. ПриНачалеРаботыСистемы — действие уже совершилось (параметра “отказ” нет). ПередЗавершениемРаботыСистемы — приложение ещё никуда не исчезло (есть параметр “отказ”).
ПриЗавершенииРаботыСистемы — интерактивное окно уже закрылось.
Загляните в синтакс-помощник и почитайте подробней о событиях управляемого и обычного приложения.
Модуля приложения всегда целиком компилируется на стороне клиента. Т.е. из него можем обратиться к серверным процедурам и функциям общих модулей и не сможем обратится к таким объектам конфигурации как например документы, справочники.
При старте системы происходит компилирование модуля управляемого приложения и чем больше в нем объявлено экспортных процедур и функций, тем дольше будет продолжаться запуск системы.
Модуль обычного приложения
Модуль обычного приложения можно увидеть там же где и модуль управляемого приложения, но если он не виден тогда необходимо в параметрах конфигуратора на вкладке “Общие” опции “Редактирование конфигурации для режимов запуска” в положение “Управляемое приложение и обычное приложение”.
Как это сделать смотри в статье: Запуск обычного приложения в УТ 11.
События модуля обычного приложения срабатывают при запуске толстого клиента обычного приложения.
Все что было сказано для модуля управляемого приложения справедливо и для модуля обычного приложения.
События Перед… и При….
Отличие процедур ПередНачаломРаботыСистемы(Отказ) и ПриНачалеРаботыСистемы()
ПередНачаломРаботыСистемы(Отказ) — действие еще не свершилось и мы можем отказаться от его выполнения.
ПриНачалеРаботыСистемы() — действие уже свершилось, и отказаться от запуска приложения или выхода из него мы не можем.
Вот и все, спасибо за внимание с вами был 1С Программист.
Пожалуйста, оставляйте комментарии, мне важно ваше мнение.
Постовой: Оформление медицинских справок за 10 минут. Чтоб оформить справку в ГАЙ надо потратить пару дней, но есть вариант справка на права купить. Возможно и доставка справки также прилагается копия лицензий
Область применения: управляемое приложение, мобильное приложение, обычное приложение.
1. В большинстве случаев, вместо переменных программных модулей следует использовать более подходящие средства разработки платформы 1С:Предприятие . Поскольку область видимости (использования) таких переменных сложно контролировать, то они зачастую становятся источником трудновоспроизводимых ошибок.
Примеры некорректного использования и исключений из этого правила приведены далее. Рекомендации по оформлению переменных в коде программных модулей см. в статье Структура модуля.
2. Неоправданные примеры использования переменных в модулях объектов (справочников, документов, наборов записей, обработок, отчетов и пр.).
2.1. Для передачи параметров между обработчиками подписок на события и в обработчики событий модуля объекта из внешнего кода рекомендуется использовать свойство объекта ДополнительныеСвойства . Например, неправильно:
Перем КонвертацияФайлов Экспорт;
Если КонвертацияФайлов Тогда
.
// вызывающий код
ФайлОбъект.КонвертацияФайлов = Истина;
ФайлОбъект.Записать();
В то же время, для передачи внутренних параметров между обработчиками событий модуля объекта целесообразно использовать неэкспортные переменные модуля объекта, которые недоступны из внешнего кода.
Например:
Процедура ПередЗаписью(Отказ)
ПредыдущееЗначениеОрганизации = . ; // с помощью запроса выясняем значение до записи объекта в базу
КонецПроцедуры
Процедура ПриЗаписи(Отказ)
Если ПредыдущееЗначениеРеквизита <> Организация Тогда
// отрабатываем изменение значения реквизита при записи
.
КонецЕсли;
2.2. Для обработки кодов возврата (ошибок) в логике программного модуля рекомендуется использовать строковые константы.
Например, неправильно:
Перем НетОшибок,
Ошибка_ОбработкиПроверкиЗаполнения, // возникает, если обработка проверки заполнения вернула отказ
Ошибка_ЗаписиОбъекта, // возникает, если во время записи объекта возникло исключение
Ошибка_БлокировкиОбъекта, // возникает, при попытке блокировки объекта
Процедура ВыполнитьПерерасчет()
.
Результат = ОбработатьДокументы(. );
Если Результат = Ошибка_ЗаписиОбъекта Тогда
.
ИначеЕсли Результат = Ошибка_БлокировкиОбъекта Тогда
.
ИначеЕсли .
НетОшибок = 1;
Ошибка_ОбработкиПроверкиЗаполнения = 2;
Ошибка_ЗаписиОбъекта = 3;
Ошибка_БлокировкиОбъекта = 4;
2.3. Для кеширования долго-вычисляемых и часто-используемых значений в процедурах и функциях рекомендуется применять модули с повторным использованием возвращаемых значений на время вызова сервера.
Исключение из этого правила составляют случаи, когда по соображениям безопасности возвращать результат вычисления в экспортной функции недопустимо. В этом случае они размещаются в локальной переменной модуля.
3. Неоправданные примеры использования переменных в модулях форм.
3.1. Для кеширования долго-вычисляемых и часто-используемых значений в процедурах и функциях рекомендуется применять модули с повторным использованием возвращаемых значений.
При этом не следует кешировать статическую и легко вычисляемую информацию. В частности, не следует кешировать в клиентских переменных модуля формы значения предопределенных элементов и перечислений. Для их получения на клиенте предназначен метод ПредопределенноеЗначение .
3.2. Для хранения и передачи промежуточных результатов вычислений между разными процедурами и функциями формы следует использовать
- Параметры процедур и функций – для передачи результатов по цепочке вызовов дочерних процедур и функций в контексте одного вызова.
- Реквизиты формы – если требуется сохранять промежуточные результаты между разными вызовами с клиента. (Следует иметь в виду, что значения серверных переменных модуля формы не сохраняются между вызовами с клиента.)
Исключение из этого правила составляют случаи использования клиентских переменных формы для хранения промежуточных результатов в обработчиках ожидания формы, в обработчиках внешних событий и в клиентских обработчиках событий элементов формы.
Например:
4. Переменные управляемого и обычного приложения следует использовать для хранения «клиентских параметров сеанса». Подробнее см. статью Использование параметров сеанса.
Платформа:
Конфигурация:
Помогите понять с описанием перемнных в данном случае Перем Штрих должна быть глобальной в модуле формы
: Переменная не определена (штрих)
Этаформа.Объект.инфа= >штрих; (Проверка: Тонкий клиент)
: Переменная не определена (штрих)
Сообщить ( >штрих); (Проверка: Тонкий клиент)
Сообщить (штрих); Если здесь закомментировать , то сглатывает без ошибки , но и не срабатывает !
КонецПроцедуры
Добавьте реквизит формы нужного типа и не мучайтесь.
Иногда возникает необходимость передачи параметров 1С, установленных в определенной управляемой форме документа 1С, в модуль объекта 1С 8.3. При этом крайне нежелательно создавать отдельные реквизиты для этого документа. Поэтому в данной ситуации можно пользоваться глобальными переменными 1С. В дальнейшем они могут быть использованы в процедурах и функциях этого модуля. Если переменная определена с ключевым словом «экспорт», то она будет доступна вне данного модуля.
1. Задача передачи параметров 1С
Предположим, есть некий документ, на основной форме документа которого располагается гиперссылка в 1С, вызывающая другую форму с вводом определенных настроек. Необходимо чтобы после выбора настроек они были переданы в модуль объекта 1С 8.3 документа для последующей обработки в процедуре проведения.
2. Реализация с модулем объекта документа 1С
В самом начале модуля объекта документа 1С необходимо определить переменную, в которую будут передаваться выбранные настройки. Также необходимо ей присвоить признак «экспорт», чтобы переменная была доступна в любом месте документа.
В модуле основной формы документа в обработчике события 1С кнопки, открывающей форму с выбором настроек, необходимо указать процедуру Новый ОписаниеОповещения(). Это определяет результат после закрытия формы настроек в 1С 8.3.
В форме настроек для сохранении и передачи параметров 1С (в нашем случаи это структура) необходимо указывать процедуру ОповеститьОВыборе()
Далее нужно создать саму процедуру оповещения, в которой будем обрабатывать в результате закрытия формы настроек. В качестве приемника создаем реквизит основной формы ПараметрыПереоценки (можно создать глобальную переменную в модуле основной формы) и в нее передаем результат закрытия.
И в заключительном этапе (например, в процедуре ПередЗаписьНаСервере() передадим из реквизита формы сохраненную структуру настроек в глобальную переменную, которую определяли в модуле объекта документа.
В итоге настройки, выбранные на дочерней форме открытой из основной формы документа, теперь доступны в модуле объекта и могут быть обработаны в любой его процедуре, например, в процедуре проведения.
Читайте также: