Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Как передать СписокЗначений в базе через OLE?

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

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

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

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

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

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

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


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.