Имя: Пароль:
 
1C
1С v8
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) Обратите внимание на:
Методы Начать…() автоматически добавляются платформой к существующим свойствам и методам внешней компоненты. Саму внешнюю компоненту не требуется отдельно перерабатывать для поддержки работы в асинхронном режиме, однако необходимо выполнить перекомпиляцию существующей внешней компоненты для поддержки асинхронной работы.
Для метода НачатьВызов…() первым параметров следует указывать описание оповещения, а остальные параметры соответствуют набору параметров оригинального метода внешней компоненты.
Ошибка? Это не ошибка, это системная функция.