Массив в тонком клиенте

1. vpivo 07.12.18 15:31 Сейчас в теме
Добрый день всем. Подскажите каким образом и где объявить массив, чтобы "&НаКлиенте" к нему можно было достучаться?
В процедуре с открытием файла эксель есть такой код:
 
Область = ExcelЛист.Range(ExcelЛист.Cells(1,1), ExcelЛист.Cells(ВсегоСтрок,ВсегоКолонок));
МассивДанных = Область.Value.Выгрузить();

Отладчик показывает, что это массив, и в пределах процедуры я нормально с ним работаю, но...
Из произвольного файла нужно закачать значения в справочники. Есть обработка с полями ввода типа номерлистаэксель, номер колонкиэксельсартикулом, номерколонкисценой... но это так топорно...
Хочу, чтобы пользователь визуально находил колонку с ключами и колонку со значениями после открытия файла. Причем колонку с ключами для нужных справочников я и так нахожу. Для визуализации на форме есть грид с двумя колонками. И есть поле ввода типа комбобокса со списком имеющихся колонок в файле (заполняется при открытии файла). Остается дело за малым - при выборе колонки просто переписать содержимое второго столбца грида. Но в чем хранить эти данные? Для анализа беру первые 10-15 строк из экселя.
По теме из базы знаний
Найденные решения
2. antz 07.12.18 15:40 Сейчас в теме
Прочитать экселевский файл в табличный документ и стучаться к нему откуда угодно.

Метод Прочитать доступен на сервере и в толстом клиенте, поэтому данные файла через временное хранилище передать на сервер.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. antz 07.12.18 15:40 Сейчас в теме
Прочитать экселевский файл в табличный документ и стучаться к нему откуда угодно.

Метод Прочитать доступен на сервере и в толстом клиенте, поэтому данные файла через временное хранилище передать на сервер.
3. vpivo 07.12.18 16:01 Сейчас в теме
(2)Спасибо. Единственно... Отладчик показывает, что у меня тонкий клиент. Просто не уверен, что это понятие на самом деле то, что обычно подразумевается под тонким клиентом.
Но не хочется монстра тащить. Хотя все равно при закачке по новой придется открывать и нужные колонки тащить. Так что воспользуюсь Вашим советом. Я надеюсь реквизит формы "ТабличныйДокумент" - это ТабличныйДокумент? А то уже нарвался с ТаблицаЗначений. На форме реквизит только так называется, вернее у него тот же, видимо, синоним.
4. antz 07.12.18 16:03 Сейчас в теме
(3) Это табличный документ, но некоторые методы у него на тонком клиенте недоступны.
5. vpivo 07.12.18 16:10 Сейчас в теме
(4)Ого... какой это монстр. Подскажите, а как обращаться к содержимому? С размерами все понятно. Мне нужно вытащить конкретные две колонки полностью или (для визуализации) десяток-полтора строк из них. Не сердитесь, просто тяжеловато с этим 1С-ом.
6. antz 07.12.18 16:15 Сейчас в теме
(5) Ну можно его передать источником данных в построитель запроса, но я им никогда не пользовался. А так самый простой способ - перебором

Для НомСтр = 1 По ТабДок.ВысотаТаблицы Цикл
    ТекущееЗначение = ТабДок.Область(НомСтр, НомКол).Текст
    ....
КонецЦикла;

Это уже можно и с клиента и с сервера делать.
7. vpivo 07.12.18 16:19 Сейчас в теме
(6)Спасибо. Я надеюсь, это не откровенная чушь
			Область = ExcelЛист.Range(ExcelЛист.Cells(1,1), ExcelЛист.Cells(ВсегоСтрок,ВсегоКолонок));
			ДанныеЭксель.ВставитьОбласть(Область);

???
8. vpivo 07.12.18 17:00 Сейчас в теме
9. antz 07.12.18 17:20 Сейчас в теме
(8) Да, Range - это COM-объект, а во ВставитьОбласть надо передавать область ячеек ТД - 1с-ную сущность.
10. vpivo 07.12.18 17:57 Сейчас в теме
Блин... А массив как-нибудь можно в ТабличныйДокумент скормить?
12. antz 07.12.18 18:17 Сейчас в теме
(10) Ну тоже перебором. А какой массив? Из Экселя который выгружается? Да прочитайте файл табдоком, содержимое у вас на форме отобразится, пользователь выберет колонки и всё.
11. vpivo 07.12.18 18:12 Сейчас в теме
Ура, получилось. Не без дегтя,
ДанныеЭксель.Прочитать(ДиалогВыбораФайла.ПолноеИмяФайла,СпособЧтенияЗначенийТабличногоДокумента.Текст

ТабличныйДокумент ни хрена не видит "краев". Эксель четко засек количество использованных колонок и строк, а этот только в строках не ошибся, а колонок "начитал" аж 252. Наверное больше просто не смог.
13. soft_wind 07.12.18 18:45 Сейчас в теме
а не пробовали получить нужные массивы из екселя
и просто циклом добавить их в коллекцию формы (таблица значений связанная с полем формы)
и тогда при обработке формы на Сервере вы получаете данныеформыколлекция или
таблицу значений! из РеквизитФормыВЗначение(...)
Прикрепленные файлы:
Шаблон_ЗагрузкаИзЕкселя_ТонкийКлиентУФ.epf
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот