|
NativAPI. НачатьВызов<ИмяМетода>, а если свойство ? | ☑ | ||
---|---|---|---|---|
0
Mr_Best
21.02.19
✎
15:53
|
Доброго дня уважаемые коллеги !
Вопрос предсказуемый и кажется я знаю на него ответ, но хочется убедится, что я не ошибаюсь. Итак: Есть внешняя компонента DLL, написанная по технологии создания внешних компонент типа NativAPI версии 2.0 на языке C++. Данная компонента реализует набор методов и свойств. Вариант 1. В режиме разрешенных синхронных вызывов я могу спокойно обратится к методу или свойству моей компоненты из 1С, например так: МояКомпонента.МетодВыполнить(); МояКомпонента.СвойствоВключен; В примере я вызываю метод и обращаюсь к свойству. Все просто, все работает, ровно до тех пор пока не запретить синхронные вызовы. Вариант 2. В режиме запрещенных синхронных вызывов я могу вызвать метод дописав в начале словосочетание "НачатьВызов" и передав описание оповещения, которое сработает по окончании вызова и будет содержать результат вызова, конечно, если метод возвращает его. Например так: МояКомпонента.НачатьВызовМетодВыполнить(); Но как быть с свойством ? Я не могу обратится к свойству, так как это синхронный вызов, и не могу дописать вначале имени свойства "НачатьВызов". Что же получается, при асинхронных вызывах использование свойств внешних компонентов не возможно ? Вместо этого, необходимо писать методы которые будут возвращать значение свойств ? Или я чего то упустил ? |
|||
1
Mr_Best
21.02.19
✎
16:09
|
Выходит, что в реализации свойств внешней компоненты не имеет смысла, только и исключительно метода ))))) Гг
|
|||
2
SleepyHead
гуру
21.02.19
✎
16:49
|
Запили метод НачатьПолучениеЗначениеСвойства()
|
|||
3
Mr_Best
21.02.19
✎
16:55
|
(2) Ну это понятно, но вопрос теории, где можно узнать, что ТОЧНО НЕВОЗМОЖНО ? Свойства для асинхронных внешних компонент 1С больше не поддерживает и про их существование можно забыть, использовать только методы. Как называется эта техническая документация, где можно это прочесть ? Вот в чем вопрос.
|
|||
4
Mr_Best
21.02.19
✎
16:58
|
Вот разрабатываю я внешнюю компоненту, сижу и думаю, а может к свойству можно дописать какую либо приставочку и все заработает ? Поискал тех доки на ИТС, а там и слова нету даже про "НачатьВызов", плохо искал ? Догадываться ? Ну .... это ж 1С ))))
|
|||
5
SleepyHead
гуру
21.02.19
✎
17:05
|
Я вот ООП довольно давно изучал, и мало намнем программировал, в основном в начале 90-х годов.
Тогда считалось правильным делать свойства приватными, т.е. невидимыми снаружи, а для их чтения и установки делать методы. Возможно, что разработка вк подчиняется той же парадигме. |
|||
6
Nyoko
21.02.19
✎
17:17
|
посмотри в отладчике на объект да висе
|
|||
7
Mr_Best
21.02.19
✎
17:19
|
(5) совершенно верно, очень часто свойство только в коде выглядит как свойство, а на самом деле является методом, и компилятор его так и реализует, который контролирует доступ на чтение или на запись и т.д. Но в терминологии технологических компонент вообще не пишут про "новые старые фичи" типа асинхронных вызывов. Просто тупо забили, хочешь асинхронную ВК, вот бери и угадывай )))) И по здравой логики, свойств существовать не может теперь в 1с. Но так как мы имеем дело с 1С, то о здравой логике можно и не мечтать! Вдруг они бабахнули специальную приставку типа "НачатьЧтение<ИмяСвойства>"))))
|
|||
8
int32i
21.02.19
✎
18:00
|
Вы бы хоть в синтаксис-помощник глянули..
Объект внешней компоненты (Add-in object) НачатьПолучение<ИмяСвойства> (BeginGetting<PropertyName>) Синтаксис: НачатьПолучение<ИмяСвойства>(<ОписаниеОповещения>) Параметры: <ОписаниеОповещения> (обязательный) Тип: ОписаниеОповещения. Содержит описание процедуры, которая будет вызвана после завершения вызова метода со следующими параметрами: <Значение> - значение свойства <ДополнительныеПараметры> - значение, которое было указано при создании объекта ОписаниеОповещения. Описание: Начинает получение свойства внешней компоненты. Доступность: Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение(клиент). Объект внешней компоненты (Add-in object) НачатьУстановку<ИмяСвойства> (BeginSetting<PropertyName>) Синтаксис: НачатьУстановку<ИмяСвойства>(<ОписаниеОповещения>, <НовоеЗначение>) Параметры: <ОписаниеОповещения> (необязательный) Тип: ОписаниеОповещения. Содержит описание процедуры, которая будет вызвана после завершения установки внешней компоненты со следующими параметрами: <ДополнительныеПараметры> - значение, которое было указано при создании объекта ОписаниеОповещения. <НовоеЗначение> (обязательный) Устанавливаемое значение свойства. Описание: Начинает установку свойства внешней компоненты. Доступность: Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение(клиент). |
|||
9
Mr_Best
21.02.19
✎
18:04
|
(8) спасибо)))
|
|||
10
Diversus
21.02.19
✎
19:30
|
(8) Обратите внимание на:
Методы Начать…() автоматически добавляются платформой к существующим свойствам и методам внешней компоненты. Саму внешнюю компоненту не требуется отдельно перерабатывать для поддержки работы в асинхронном режиме, однако необходимо выполнить перекомпиляцию существующей внешней компоненты для поддержки асинхронной работы. Для метода НачатьВызов…() первым параметров следует указывать описание оповещения, а остальные параметры соответствуют набору параметров оригинального метода внешней компоненты. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |