Интерактивный список событий у объекта конфигурации
не могу в модуле объекта создать шаблон с параметрами для обработчика событий объекта.
Я встретилась с этим, когда изучала пример на стр. 320
"Теперь доработаем справочник Клиенты. В модуль объекта добавим обработчик событий ПриУстановкеНовогоКода.
Получается, что для написания процедур обработчиков событий для объекта я должна рыскать по синтаксис-помощнику и оттуда выуживать параметры обработчиков ?
По логике этого не должно быть. Видимо я что-то упустила, и может быть Вы подскажите, как нужно получать тексты обработчиков событий объектов в модуле объекта.
Во всех традиционных системах программирования, например Delphi, события объектов визуально присутствуют в свойствах объектов и их шаблоны с параметрами
очень просто получить в тексте программы.
Кстати, если в тексте модуля формы обработчик события оказался пустым, удаляется ли он из текста модуля автоматически?
Павел, спасибо. Это то, что я искала.
Вы как всегда на высоте.
> Список доступных в модуле объекта обработчиков событий можно получить, используя элементы панели инструментов "Модуль", показанные на прикрепленном рисунке. В этих списках используемые в модуле обработчики отмечены специальной пиктограммой.
Спасибо!Я хотел бы отметить, что тоже самое и в модуле формы - там нет никаких свойств и кнопок с "лупой" для вставки обработчиков, они есть в Диалоге формы.А, объект в "модуле объекта" (и, вообще в 1С) - это не "объект" в ООП
> Кстати, если в тексте модуля формы обработчик события оказался пустым, удаляется ли он из текста модуля автоматически?
Из соображений здравого смысла, что не удаляется, т.к. не имеет никакого здравого смысла, чтобы что-то вставленное вручную исчезало из под руки разработчика (во время отладки). Впрочем, это не так уж и трудно проверить - вставив пустую процедуру и выполнив её F5
Насколько я понимаю, если тело процедуры (обработчика) пустое, то компилятор (интерпретатор) не будет ничего вставлять (или резервировать) в выполняемом (откомпилированном) коде.
Написавши это, я хотел бы уточнить 1С - компилируемый или интерпретируемый язык?
Извините, но Вы не совсем поняли о чем идет речь.
Я имела ввиду автоматическую вставку заготовки процедуры - обработчика события какого-нибудь объекта, например, справочника,
в модуль объекта при нажатии на "лупу". Это может выполняться только в режиме конфигуратора и способствует меньшему количество ошибок в заголовках процедур, параметрах и т.д.
Наконец, это - удобно иметь список событий всегда под рукой во время написания текста модуля объекта. Речь идет о комфортном программировании, не более.
Компиляция и отладка здесь ни причем.
Именно так сделано в Delphi и Borland C++ Builder. Такая легкость автоматического создания заготовок процедур - обработчиков, конечно, может привести к тому,
что Вы можете случайно создать процедуру - обработчик или открыть ее и передумать. В этих случаях работает компилятор и убирает пустые процедуры - они загромождают текст
и напрасно расходуют время. Никто не трогает ничего вставленного вручную.
Мой вопрос заключался в следующем. Такие комфортные условия программирования есть в 1с при написании процедур - обработчиков событий ФОРМЫ.
Значит люди думали об удобстве программирования обработчиков событий ФОРМЫ.
Hо при написании процедур - обработчиков событий ОБЪЕКТА комфортных условий программирования событий НЕТ. Что-то не додумали или я пропустила и не знаю
Где находится "лупа", которая открывает процедуры - обработчики событий ОБЪЕКТА? Или такой "лупы" нет?
Обратите внимание, когда Вы находитесь в окне конфигурации и открываете палитру свойств справочника «Клиенты», то Вы видите свойства объекта конфигурации. На основании этого объекта в информационной базе будет создана специальная структура для хранения данных. Для программной работы с этим объектом существуют другие объекты, которые называются объектами встроенного языка. Поскольку для размещения текста программы на встроенном языке предназначены модули прикладного решения (Общие модули, модули форм, объектов и т.д.), а каждый модуль связан с остальной частью конфигурации (эта связь называется контекстом выполнения модуля), то именно контекст определяет набор доступных для модуля объектов, переменных, процедур и функций. Таким образом, когда Вы открываете модуль объекта справочника «Клиенты», то имеете дело с объектом встроенного языка «СправочникОбъект.Клиенты», предназначенным для модификации отдельного элемента такой информационной структуры (в нашем случае - элемента справочника).
Если же Вы имеете дело с формой, а у нее есть основной реквизит, то к свойствам, методам и событиям самой формы добавится дополнительный набор свойств, методов и событий, состав которого определяется типом значения основного реквизита формы, называемый расширением. Если основного реквизита у формы - нет, то и расширения нет.
Подробнее можно посмотреть в книге «1С:Предприятие 8.1. Практическое пособие разработчика. Примеры и типовые приемы», стр. 421 «Объекты, объекты, объекты. » и стр. 396 «Формы», а также в книге "Профессиональная разработка в системе 1С:Предприятие 8", глава 3. Использование встроенного языка.
Спасибо. Прочитала все, что Вы рекомендовали. Это действительно очень важно для прояснения взгляда сверху на программирование в 1С.
Но если попытаться перейти в практическую плоскость, то можно ли увидеть контекст( т. е. все доступные методы, переменные, функции, события и т.д.) в модуле объекта
и соответственно расширение (т. е. все доступные методы, переменные, функции, события и т.д.) в модуле формы?
> Но если попытаться перейти в практическую плоскость, то можно ли увидеть контекст( т. е. все доступные методы, переменные, функции, события и т.д.) в модуле объекта
После ввода объекта "точка" выпадет окошко с причиндалами объекта (типа ХХХХХОбъект, где ХХХХХ - Справочник, Документ, etc. . мне так кажется)
> Извините, но Вы не совсем поняли о чем идет речь.
Поняли - у Вас пожелание, а не вопрос. ЧТо тут отвечать-то?
> Я имела ввиду автоматическую вставку заготовки процедуры - обработчика события какого-нибудь объекта, например, справочника,
Всё-таки Вы писали об автоматизированной вставке, инициированной ручным нажатием кнопки с изображением "лупа". Это не автоматическое генерирование
> в модуль объекта при нажатии на "лупу". Это может выполняться только в режиме конфигуратора и способствует меньшему количество ошибок в заголовках процедур, параметрах и т.д.> Наконец, это - удобно иметь список событий всегда под рукой во время написания текста модуля объекта. Речь идет о комфортном программировании, не более.> Компиляция и отладка здесь ни причем. > Именно так сделано в Delphi и Borland C++ Builder. Такая легкость автоматического создания заготовок процедур - обработчиков, конечно, может привести к тому,
> что Вы можете случайно создать процедуру - обработчик или открыть ее и передумать. В этих случаях работает компилятор и убирает пустые процедуры - они загромождают текст > и напрасно расходуют время. Никто не трогает ничего вставленного вручную.
Я не работаю с Borland средами, но почти уверен, что Вы неправильно описываете, т.к. системы визуальной разработки все работают примерно одинаково.
В MS Visual Studio 200x, если Вы вставите случайно пустой текст обработчика, например, двойным щелчком на элементе "кнопка", то он автоматически не убирается компилятором (и не может, и не имеет смысла - см. , что я написал ранее).
Во-первых, везде есть элементарное UNDO - для случайных ошибок
Есть бьюфикаторы и отдельные plug-ins, фичи, которые могут чистить, форматировать, украшать тексты и др., но делать это автоматически, чтобы после каждого запуска отладчика исчезали куски вручную вставленного кода - это бред
> Мой вопрос заключался в следующем. Такие комфортные условия программирования есть в 1с при написании процедур - обработчиков событий ФОРМЫ. > Значит люди думали об удобстве программирования обработчиков событий ФОРМЫ. > Hо при написании процедур - обработчиков событий ОБЪЕКТА комфортных условий программирования событий НЕТ. Что-то не додумали или я пропустила и не знаю> где их найти. > Где находится "лупа", которая открывает процедуры - обработчики событий ОБЪЕКТА? Или такой "лупы" нет?