Имя: Пароль:
1C
1С v8
Не могу разобраться с модулями
0 Pyryrym
 
17.08.20
16:23
У меня есть таблица Excel, которую необходимо передать в модуль объекта в обработке. Изначально я открывал в модуле формы с помощью СОМ объекта, откуда данные записывал в реквизит Объекта Таблица. Однако, мне нужно использовать таблицу значений вместо реквизита, но ее на клиенте нельзя создать. И я не понимаю, как можно передать таблицу в модуль объекта из модуля формы.
1 spiller26
 
17.08.20
16:33
2 hhhh
 
17.08.20
16:33
(0) сделай это на форме в процедуре, которая &НаСервере. Модуль объекта вообще не нужен для этих целей
3 Pyryrym
 
17.08.20
16:37
(2) у меня просто задание именно такое
4 spiller26
 
17.08.20
16:43
(3) Что конкретно нужно сделать?
Передать файл Excel на сервер, обработать и показать на клиенте что-то?
Опиши действия.
5 Pyryrym
 
17.08.20
16:49
(4) вообще получить данные из Excel и загрузить в справочник
6 Pyryrym
 
17.08.20
16:52
(4) И в модуле объекта для каждой строки цикл (строка - реквизиты элемента справочника)
7 Pyryrym
 
17.08.20
16:54
(4) То есть мне нужно открыть таблицу из excel в модуле клиента и в каком то виде передать в модуль объекта
8 mikecool
 
17.08.20
16:59
(7) прочитай файл табличным документом и передай на сервер, там обработай
9 программистище
 
17.08.20
17:08
Попробуй запихнуть данные в ТЗ формы, а в форме вызвать процедуру НаСервере и используй свою таблицу
Ну или в Табличную часть обработки
в чем проблема
10 spiller26
 
17.08.20
17:23
(7) Открыть файл Excel как? Через COM или средствами платформы?
11 Pyryrym
 
17.08.20
17:32
(10) без разницы
12 spiller26
 
17.08.20
17:36
(11) Используй временное хранилище чтобы держать данные, а "АдресХранилища" в реквизите тип (Произвольный).
Связка ПоместитьВоВременноеХранилище и ПолучитьИзВременногоХранилища работает на Клиенте и на Сервере.
13 Pyryrym
 
17.08.20
19:08
(12)  Я не совсем понимаю что именно нужно помещать во временное хранилище? Если табдок, то его нельзя прочитать на клиенте, если СОМ объект, то у меня не получается поместить его во временное хранилище
14 Pyryrym
 
17.08.20
19:09
* Нельзя вызвать метод ТабДок.Прочитать() на клиенте
15 youalex
 
17.08.20
19:32
(14) Как вариант, ты можешь поместить во временное хранилище Двоичные данные:

АдресВХ = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ИмяФайла));

и этот адрес передать на сервер.
А на сервере - получить данные из ВХ, записать во временный файл (я так понял, здесь расширение играет), и уже из этого врем. файла прочитать Таб. документ:

ДвДанные = ПолучитьИзВременногоХранилища(АдресВХ);
ВремФайл = ПолучитьИмяВременногоФайла("xlsx");
ДвДанные.Записать(ВремФайл);

ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.Прочитать(ВремФайл);