Чтобы получить методы в модуле объекта, обязательно создавать новый экземпляр?
Посмотрел видео, там рассказали про модуль объекта, но к методам, которые там расположены, обращались чем объект, полученный функцией .СоздатьЭлемент(), а если я хочу обратиться к методам модуля объекта через объект справочника, который не был создан программно, то как это сделать? У меня есть, например, СправочникСклад, как методы его модуля вызвать?
Модуль объекта (как следует из названия) доступен для объекта. Для СправочникСклад можно написать методы в модуле менеджера и использовать их без создания объекта.
Вы можете не только программно создать объект, но и также программно получить ранее созданный (как программно, так и пользователем, интерактивно). Как ниже написали, для этого есть функция ПолучитьОбъект().
Без разницы как создан элемент справочника/документа.
Обратиться к методам, расположенным в модуле объекта можно только через экземпляр объекта. Он создается
То есть, я могу создать методы в модуле объекта, но могу их использовать только в новом, программно созданном экземпляре этого справочника? Не догоняю немного, если это так, то почему так сделали и вообще часто ли создают экземпляры прикладных объектов программно?
foonfyrick, новые экземпляры создают программно очень часто. Но Вам нужно понять, что есть разные места хранения методов:
Модуль формы - те процедуры, которые нужны при интерактивной работе непосредственно с элементами формы (помощники заполнения, например)
Модуль объекта - те процедуры, которые используются при работе с конкретным элементов справочника или документом, как при программном создании, так и при обработке уже существующего в базе
Модуль менеджера - те процедуры, связанные со справочником или документами, которые, например, нужно вызывать из других модулей базы. Скажем, запрос, возвращающий всех контрагентов, расположенных в определенном городе.
Александр Прохорович, Спасибо, но сейчас я не могу разобраться, почему я не могу изменить объект:
Если я получаю ссылку, есть метод ПолучитьОбъект(), в справочнике написано:Получает по ссылке объект, предназначенный для чтения, изменения, добавления и удаления справочника.
Но, мне сразу же выдает ошибку :Нельзя изменять поле, содержащее объект данных формы.
Но при этом же я ничего не меняю. Ошибка вызывается сразу же при вызове метода ПолучитьОбъект()
foonfyrick, у Вас конфликт переменных. В серверном контексте формы переменная "Объект" - служебная. Переименуйте свою как-нибудь по другому и заработает.
Sgr_A, Понял, еще вопрос:
Почему в реальном времени не вводятся данные, если я пишу МойОбъект.Реквизит = "123"; по нажатию кнопки реквизит должен заполниться, но после нажатия кнопки реквизит остается неизменный, только после закрытия и нажатия кнопки Обновить, реквизит меняется. Вот здесь я кнопку нажал, но везде нолики стоят, потом я закрою форму, нажму обновить, и данные заполнятся.
foonfyrick, с кнопкой не надо получать объект, в этом случае объект уже находится в системной переменной Объект, и если Вы напишете Объект.Реквизит=123, то изменения применятся сразу.
А для принудительного обновления данных формы после программного изменения вроде бы есть какая то процедура, поищите в синтакс-помощнике, на память не назову.