powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / COM компонента. Передача параметров по ссылке и их возврат.
8 сообщений из 8, страница 1 из 1
COM компонента. Передача параметров по ссылке и их возврат.
    #37720336
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем доброго дня !
Я дико извиняюсь за неправильную постановку вопроса ...
Конечно передача параметров по ссылке !!!
Еще раз изложу ситуацию:

Работаем с внешней сторонней компоненты (для Cache') в 1С 77.
Все прекрасно работает, только один нюанс.
Передача параметра ссылкой, т.е. что должны возвращаться ( ByRef ) -не возвращаются

Код: ruby
1.
2.
3.
4.
5.
6.
7.
Перем RetA,RetB;
Процедура Array() 
.....
 RetA="Это некоторый текст переданный из 1С в DB ..."
 Ver=m.Do("start^start",RetA,RetB);
 Сообщить (ver + RetA + RetB);   
 ....



т.е. передаются по ссылке некие данные в базу (допустим RetA)
потом обратно в Ver, RetA, RetB должны получать "что-то другое, из базы ..."
В Ver получаем обратно строку с данными, все нормально !
A вот в RetA старое значение , а RetB - "пусто"
Как решается это в 1С ?
В других языках это работает (VB6, Delphi, C ++)

Спасибо.
Еще раз извините.
...
Рейтинг: 0 / 0
COM компонента. Передача параметров по ссылке и их возврат.
    #37720359
The Dim!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или приведите реальный пример кода или дайте нормальное описание, это сумбурное.

...Насколько знаком с COM, то передача параметра по ссылке возможна только в том случае, когда тип(класс) этого параметра известен обработчику, который его вызывает. Да и вообще, в COM есть описанные типа данных, которые им поддерживаются, что не является ими должно быть другим COM-объектом.
...
Рейтинг: 0 / 0
COM компонента. Передача параметров по ссылке и их возврат.
    #37720380
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я хочу вставить код, но он превращается в абракадабру ...
Долго опять все набрать да без ошибок...
Почему нельзя вставить нормально ?
Все что на русском написано.
...
Рейтинг: 0 / 0
COM компонента. Передача параметров по ссылке и их возврат.
    #37720394
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
Нашел !



Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
Procedure MDo() 
Try
   	m = CreateObject("m.Command");
   	Except
   	Message(ОписаниеОшибки() + "m.Command non create "); 
   	Return;
EndTry;
   
//.......................................   
Try 
Transmit="Это текст из окружения 1С переданный в Cache' ..."; 
//Ret="что-то содержит ...";
ver="";
m.Server = "192.168.1.101"; 		       	 // Адресс сервера БД
m.PORT = 2222;            			    	 // Номер порта
m.Login();                			    	 // Команда соединения с БД
m.Xecute("zn ""user""");  			     	 // Комманда смены области(БД)
ver=m.Do("start^start",Transmit,Ret);  
//Возврат Ret;
Сообщить("1      "+Ret); 
// Делаем запрос(в Transmit данные для запроса)в БД в программе "start^start" и получаем данные
Except
    DoMessageBox(GetErrorDescription());
	Return;
EndTry;  
DoMessageBox("В переменную <ver> получаем обратно из Cache, то что содержит переменная <Transmit> из 1С - " + ver);
DoMessageBox("Здесь должны получать строковую перемменую(ByRef)из Cache, но она не меняется! ... - " + Ret);  
ver= Number(ver);
For i = 1 to ver Do              // Читаю в цикле переменную b(i) из Cache  
    a5=a5+m.Xecute("w b("+i+")");
EndDo;
Message(a5); 
cislo=StrLineCount(a5);                        							// Вычисляем Число вхождений "перевод строки"
DoMessageBox("Nr.вхождений ПЕРЕВОД СТРОКИ " + cislo);                   // Афишируем сколько разделителей "перевод строки"
nomer=StrGetLine(a5,150);					  						    // Здесь получаем 150-ю строку
DoMessageBox(nomer); 
EndProcedure 
//....................................... 
//Процедура Piece()
// Для i=1 По Дт1.КоличествоСтрок() Цикл
//  СтрДт=Дт1.ПолучитьСтроку(i);
//  Стр_=СтрЗаменить(СтрДт,"\",РазделительСтрок);
//  СтрСчет=СтрПолучитьСтроку(Стр_,1);
//  СтрТМЦ=СтрПолучитьСтроку(Стр_,2);	
//КонецПроцедуры
//.......................................
...
Рейтинг: 0 / 0
COM компонента. Передача параметров по ссылке и их возврат.
    #37720545
AHDP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu, а счего вы решили, что компонента должна данные, переданные по ссылке менять?
Она получила данные, вернула вам результат. Всё честно.
...
Рейтинг: 0 / 0
COM компонента. Передача параметров по ссылке и их возврат.
    #37720593
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AHDP Valeriu, а счего вы решили, что компонента должна данные, переданные по ссылке менять?
Она получила данные, вернула вам результат. Всё честно.
Я работаю с этой компонентой давно, правда в других средах.
Там все работает как часики.
Я никогда не думал что здесь она поведет себя по другому.
Да, одну переменную с данными я получил, но ведь еще в придачу
я мог бы получить 16 !!!
Только в другой конструкции :
Код: vbnet
1.
m.Do ("start^start",v1,v2,......v16);


Но я их не получаю в этом случае, тогда и прибег ко второму методу(благо что он есть)
Код: vbnet
1.
ver=m.Do("start^start",Transmit,Ret);
...
Рейтинг: 0 / 0
COM компонента. Передача параметров по ссылке и их возврат.
    #37721701
AHDP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно по подробнее?
...
Рейтинг: 0 / 0
COM компонента. Передача параметров по ссылке и их возврат.
    #37722158
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оба конструкции работают почти одинаково.
То есть, в первом случае мы можем передавать в переменных данные и
в них же обратно получить из базы другие, уже измененные.
Я пробовал стандартно как должно быть :
Код: vbnet
1.
m.Do "start^start",v1,v2,......v16


Но пришлось обрамлять в скобках, а то 1С воспринимал как ошибку !
Код: vbnet
1.
m.Do ("start^start",v1,v2,......v16);


Вторая конструкция с возвратом как функция работает (так же и в других средах в скобках !)
Код: vbnet
1.
ver=m.Do("start^start",v1,v2,......v16);


только возвращает одну переменную, до знака "равно" (ver) остальные нет - (v1 ...v16)

Спасибо.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / COM компонента. Передача параметров по ссылке и их возврат.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]