Имя: Пароль:
1C
1C 7.7
v7: Как передать СписокЗначений в базе через OLE?
0 evgpinsk_
 
01.04.21
11:35
Стоит задача из текущей 1с запустить обработку другой базы 1с, при этом передав ей в качестве параметра список значений /пусть это будет несколько строк/

Прог =СоздатьОбъект("v77.Application");
Прог.Initialize(...);
перПараметры=СоздатьОбъект("СписокЗначений");
команда="ОткрытьФорму(""Обработка.ИмпортСчетов"","+          КАК ЗДЕСЬ УКАЗАТЬ СПСИОК ЗНАЧЕНИЕ В КАЧЕСТВЕ ПАРАМЕТРА??      +")";

Прог.ExecuteBatch(команда);
1 Mikeware
 
01.04.21
11:36
не нужно так делать.
2 Провинциальный 1сник
 
01.04.21
11:37
Сериализуй
3 acanta
 
01.04.21
11:39
Список значений требуется создать в контексте вызываемой базы данных Прог.createobject()
И заполнить его значениями базовых типов или типов контекста вызываемой базы.
4 Mikeware
 
01.04.21
11:40
(2) а откуда "та" форма знает, что нужно будет десериализовывать
или ты про ЗначениеИзСтрокиВнутр-ЗначениевСТрокуВнутр
5 Bigbro
 
01.04.21
11:42
Прог.CreateObject()
6 Bigbro
 
01.04.21
11:43
Прог.EvalExpr()

а в базе подключения создать в глобальнике функции которые выполнят все что надо.
7 Провинциальный 1сник
 
01.04.21
11:53
(4) Вообще считаю что всё через оле надо передавать лишь сериализованным. Иначе потери точности могут вылезти на числах, потому что в оле они преобразуются в float.
8 evgpinsk_
 
01.04.21
12:43
(1) а как нужно. Задача передать вид и номер документа, для дальнейшего его импорта
9 evgpinsk_
 
01.04.21
12:44
Сейчас пока передается только номер документа, нужно доапгрейдить - чтобы ещё передавать и вид документа
10 evgpinsk_
 
01.04.21
12:45
(3) ок, попробую так
11 Builder
 
01.04.21
12:50
(9) В чем проблема передать такие простые типы данных как число и строка?
Сделай хоть текст, заполни номером и типом и передавай его.
12 evgpinsk_
 
01.04.21
12:52
Стоп. Я ведь вызываю открытие формы через Прог.ExecuteBatch(команда)
И мне в открытой форме нужно прочитать два параметра. Разве (3) поможет?
13 evgpinsk_
 
01.04.21
12:54
(11) да, соединить в одну строку два параметра можно, но как-то не очень красиво. Красивей через список значений. В другом варианте их например может быть разное количество
14 Mikeware
 
01.04.21
12:56
(12) это можно сделать разными методами. но передавать тетей олей _принято_ простые типы
15 Bigbro
 
01.04.21
12:56
Перем СписокДляОЛЕ Экспорт;

Функция глВернутьСписокДляОЛЕ()
  список = СоздатьОбъект("СписокЗначений");
  Возврат список;
КонецФункции

и Прог.EvalExpr(@@)
16 Builder
 
01.04.21
12:57
(13) Чем красивей?
Тебе шашечки или ехать?
Многострочный текст по сути точно такой же список значений.
17 evgpinsk_
 
01.04.21
12:59
(16) если в другой задаче будет разное количество параметров, числа целые или с запятой, строки. Куча кода написать придется чтобы универсально обрабатывать это
18 evgpinsk_
 
01.04.21
13:02
(15) точно, затупил я. Создать во внешней базе глобальный список значений и его заполнять.
19 azernot
 
01.04.21
13:49
Много всякой инфы о работе с 7.7 по OLE

Основы работы с V7 через OLE
http://my1c-archive.narod.ru/knowhow/v7_OLE.html
20 Mikeware
 
01.04.21
13:54
(19) ойзря...
21 Mikeware
 
01.04.21
13:54
а хотя пофиг..
AdBlock убивает бесплатный контент. 1Сергей