Модуль объекта несколко раз вызывается?! #377563


#0 by Pitbull-1С
Подскажите, что за фигня происходит. Если написать в модуле справочника, например, Организации И потом открыть в режиме предприятие справочник Организации то сообщение "Это Я" выпадает 2 раза И еще...Если вызвать эту функцию в справочнике,например, Должности Справочники.Организации.НайтиПоКоду("000000001").ПолучитьОбъект.ПриветПривет; И потом открыть в режиме предприятие справочник Должности то сообщение "Это Я" выпадает 4 раза!
#1 by Pitbull-1С
Это все для 8.1
#2 by Immortal
да. два.
#3 by Pitbull-1С
Почему так происходит?
#4 by Pitbull-1С
А если в справчнике Организации написать Справочники.Должности.ПолучитьФорму("ФормаЭлемента").Открыть; То при создании/открытии элемента справочника откроется 2-е формы справочника должности. Че за фигня.Кто нибудь разъясните... Т.е. полуается модуль два раз выполняется?
#5 by Garkin
Модуль выполняется каждый раз при создании объекта.
#6 by Pitbull-1С
Ну а почему два раза?
#7 by Immortal
а подумать?
#8 by Pitbull-1С
Если я открываю справочник Организации, потом создаю элемент справочника Организации, то и обращение к модулю 1 раз должно идти...Что не так?
#9 by Adoff
а при создании нового элемента вроде как 3 раза должно выполняться :)
#10 by Pitbull-1С
Все равно не доходит как так...
#11 by hhhh
лучше никаких функций не пиши в теле модуля объекта. Это чревато. Они запускаются каждый раз когда происходит ПолучитьОбъект явно или неявно.
#12 by Pitbull-1С
Но ведь в типовых решениях 1С в теле модуля объекта пишут функции.Неужели это неправильно?
#13 by Efr
Там мы говорим об описании или о вызове? В модуле объекта описывать функции правильно. На счет вызова см
#14 by Serg_1960
Ничего, привыкнишь :( к тому, что тело модуля объекта выполняется дважды при открытии формы...
#15 by Pitbull-1С
Т.е. это ниоткуда не следует.Просто два раза вызывается?А при создании элемента просто 3 раза вызывается?
#16 by Fragster
Справочник.ВидСправочника(раз).ПолучитьОбъект(два)
#17 by Pitbull-1С
Хорошо...Объявим общий модуль глобальным и напишем в нем Вызовем эту функцию в модуле справочника Организции ПриветОбщийМодуль; Теперь при открытии/создании элемента справочника сообщение "это ОбщийМодуль" снова выскакивает 2 раза... Т.е. здесь не подходит...
#18 by BabySG
Ты вообще не читал?
#19 by Pitbull-1С
ну а в где ты видишь Справочники.Организации.НайтиПоКоду("000000001").ПолучитьОбъект<РАЗ>.ПриветПривет<ДВА>; Там же одна строчка ПриветОбщийМодуль;
#20 by Serg_1960
Источник: Особенности написания тела модуля При разработке модулей следует учитывать, что тело модуля (часть модуля, которая располагается ниже всех процедур и функций) выполняется системой при инициализации модуля. Эта особенность определяет некоторые ограничения на использование тела модуля. Фактически тело модуля служит только для инициализации переменных модуля объявленных в его верхней части. Для модуля формы в теле модуля не могут выполняться некоторые методы, которые управляют элементами управления и свойствами формы. Все эти действия рекомендуется выполнять в процедуре "ПриОткрытии". Для глобального модуля в теле модуля также могут не выполняться некоторые функции встроенного языка. Например, в теле модуля не допускается открытие форм. Для модуля документа если документ проводится из формы документа, то тело модуля будет выполнено только один раз, хотя проведение может быть выполнено несколько раз без закрытия формы. При групповом проведении тело модуля не будет выполняться перед началом проведения каждого документа (групповое проведение документов выполняется системой при переносе точки актуальности вперед и в режиме "Проведение документов"). Таким образом, переменные, которые должны инициализироваться при каждом проведении следует инициализировать в процедуре "ОбработкаПроведения", а не в теле модуля.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С