|   |   | 
| 
 | 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 | 
        а хотя пофиг..     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |