|
Выгрузка табличного документа в excel ↓ (Волшебник 02.12.2024 11:45) | ☑ | ||
---|---|---|---|---|
0
Elena_I
02.12.24
✎
11:46
|
Добрый день! Передо мной стоит задача, оптимизировать выгрузку отчета из 1с в excel. Есть стандартная команда на "ФормаОтчета" сохранить. Которая, соответственно, сохраняет отчет в excel
Так как стандартную команду я не могу дописать, решила сделать свой механизм вывода. Он отрабатывает корректно, табличный документ выводит. Проблема в том, что так и не поняла как его оптимизировать... Прилагаю свой код: &НаКлиенте Процедура ОсновныеДействияФормыДействие(Команда) ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение); ДиалогОткрытияФайла.Каталог = КаталогВременныхФайлов(); ДиалогОткрытияФайла.Фильтр = "Файлы Microsoft Excel (*.xlsx)|*.xlsx|Все файлы (*.*)|*.*"; ДиалогОткрытияФайла.МножественныйВыбор = Ложь; Если ДиалогОткрытияФайла.Выбрать() Тогда Попытка НастройкаТабДокумента(); ЭтотОбъект.ОтчетТабличныйДокумент.Записать(ДиалогОткрытияФайла.ПолноеИмяФайла,ТипФайлаТабличногоДокумента.XLSX); ДокExcel = Новый COMОбъект("Excel.Application"); ДокExcel.Visible = 1; ДокExcel.EnableEvents = 0; ДокExcel.Workbooks.Open(ДиалогОткрытияФайла.ПолноеИмяФайла); // тестовая область Лист = ДокExcel.WorkSheets(1); ВсегоКолонок = Лист.Cells(1, 1).SpecialCells(11).Column; ВсегоСтрок = Лист.Cells(1, 1).SpecialCells(11).Row; Диапазон = Лист.Range(Лист.Cells(1, 1), Лист.Cells(ВсегоСтрок, ВсегоКолонок)); Данные = Диапазон.Value.Выгрузить(); // тестовая область Исключение Сообщить("Excel на компьютере не найден. Необходимо выполнить установку/переустановку Excel."); КонецПопытки; КонецЕсли; КонецПроцедуры &НаСервере Функция НастройкаТабДокумента() ОтчетТабличныйДокумент.ОтображатьГруппировки = Ложь; ОтчетТабличныйДокумент.ОтображатьЗаголовки = Ложь; ОтчетТабличныйДокумент.ОтображатьСетку = Ложь; Если ОтчетТабличныйДокумент.ВысотаСтраницы > ОтчетТабличныйДокумент.ВысотаТаблицы Тогда ОтчетТабличныйДокумент.ВысотаСтраницы = ОтчетТабличныйДокумент.ВысотаТаблицы + 5; КонецЕсли; Если ОтчетТабличныйДокумент.ШиринаСтраницы > ОтчетТабличныйДокумент.ШиринаТаблицы Тогда ОтчетТабличныйДокумент.ШиринаСтраницы = ОтчетТабличныйДокумент.ШиринаТаблицы + 5; КонецЕсли; КонецФункции Проблема следующая. Возможности оптимизировать сам таб.документ, как я поняла, полностью нет(возможно я ошиблась, конечно) Остается только excel Но большую часть действий с самим excel документом я могу делать только после его открытия. Следовательно не понятно, а что там оптимизировать, уже после его открытия? Прошу помощи с данной ситуацией, так как на просторах интернета я нашла информация только о выгрузки данных из excel в 1с |
|||
1
Ногаминебить
02.12.24
✎
11:42
|
Ну может оптимизировать формирование отчета? Вот это через ком точно не про оптимизацию.
|
|||
2
shuhard
02.12.24
✎
11:43
|
(0) вопрос не по адресу, задай его постановщику задачи
|
|||
3
Elena_I
02.12.24
✎
11:43
|
(1) Проблема в том, что механизм который я должна разработать, должен работать самостоятельно по оптимизации, что бы не пришлось переписывать/дописывать все отчеты которые есть сейчас, а так же будущие
|
|||
4
СвинТуз
02.12.24
✎
11:44
|
(0)
Вечер перестает быть томным. ))) Скучно на работе? |
|||
5
Волшебник
02.12.24
✎
11:44
|
(0) Не надо ничего оптимизировать. Я снимаю задачу.
|
|||
6
Волшебник
02.12.24
✎
11:44
|
(3) Вы узнали новое слово "оптимизировать"? Ну так забудьте его и идите работу работать.
|
|||
7
СвинТуз
02.12.24
✎
11:44
|
Ведуны бают, что при готовом отчете это одна команда?
Врут? |
|||
8
Волшебник
02.12.24
✎
11:46
|
(7)
ТД.Записать(Файл, ТипФайлаТабличногоДокумента.XLSX) |
|||
9
СвинТуз
02.12.24
✎
11:46
|
(6) (0)
"оптимизировать" Ой ... Не запоминайте это слово. А то запомните и вся оперативная память занята. |
|||
10
shuhard
02.12.24
✎
11:46
|
(3)[должен работать самостоятельно по оптимизации]
горячечный бред, врача в топик |
|||
11
Волшебник
02.12.24
✎
11:46
|
сегодня какое-то нашествие ботов
|
|||
12
Ногаминебить
02.12.24
✎
11:46
|
(8) Можно оптимизировать красивыми отступами и комментариями.
|
|||
13
СвинТуз
02.12.24
✎
11:47
|
(0)
Спасибо. Рассмешили. Пишите еще. |
|||
14
Elena_I
02.12.24
✎
11:48
|
А в чем собственн проблема данного вопроса? Я не понимаю
|
|||
15
Волшебник
02.12.24
✎
11:50
|
(14) Идите-идите.
|
|||
16
osa1C
02.12.24
✎
12:02
|
(0) Оптимизация тут - это убрать com-соединение. Смотри тут
https://infostart.ru/1c/tools/149432/ |
|||
17
DrShad
02.12.24
✎
12:04
|
(10) я уже тут
|
|||
18
СвинТуз
02.12.24
✎
12:05
|
(14)
Есть встроенная в 1с команда сохранения отчета сформированного в 1с в формате эксель. Смотрите (8) Сложно понять как одну команду можно сделать более простой. |
|||
19
СвинТуз
02.12.24
✎
12:07
|
(16)
Не потянет. 12-й дата статьи. Толстый клиент. Где клиент, где сервер. Не поймет. |
|||
20
StanLee
02.12.24
✎
12:31
|
(0) ниче не понял что тут оптимизировать.. скорость сохранения в xls? внешний вид таблички не устраивает? оптимизация рабочего времени когда заняться нечем? должен сохраняться автоматом в нужную папку? вам все задачи на работе так ставятся что нифига непонятно, может сначала текст задачи оптимизировать?
|
|||
21
Мультук
02.12.24
✎
12:37
|
(0)
Записали отчёт в XLSX ЭтотОбъект.ОтчетТабличныйДокумент.Записать(ДиалогОткрытияФайла.ПолноеИмяФайла,ТипФайлаТабличногоДокумента.XLSX); Открыли COMОбъект Открыли в этом ДокExcel наш файл Выбрали область, выгрузили область в Данные и..... Них@я дальше не происходит. Весь этот код нихрена не делает полезного. Возникает вопрос. А ради чего всё это. ДокExcel = Новый COMОбъект("Excel.Application"); ДокExcel.Visible = 1; ДокExcel.EnableEvents = 0; ДокExcel.Workbooks.Open(ДиалогОткрытияФайла.ПолноеИмяФайла); // тестовая область Лист = ДокExcel.WorkSheets(1); ВсегоКолонок = Лист.Cells(1, 1).SpecialCells(11).Column; ВсегоСтрок = Лист.Cells(1, 1).SpecialCells(11).Row; Диапазон = Лист.Range(Лист.Cells(1, 1), Лист.Cells(ВсегоСтрок, ВсегоКолонок)); Данные = Диапазон.Value.Выгрузить(); // тестовая область |
|||
22
Волшебник
02.12.24
✎
12:50
|
(21) Предлагаю ещё добавить цикл
|
|||
23
Pprog151713
02.12.24
✎
14:31
|
(0) Все уже оптимизировано в 1с. Файл/Сохранить как/. xls. И прикинь будет все тоже самое......
|
|||
24
Климов Сергей
02.12.24
✎
15:00
|
(0) Однажды, в далёкой-далёкой галактике мне нужно было ОЧЕНЬ БОЛЬШОЙ табличный документ сохранять в xls. Платформа тогда этого ещё не умела. Построчная формирование листа через COM шло ОЧЕНЬ долго. Тогда я исхитрился программно поместить всю таблицу в буфер обмена и в экселе её вставить. Деталей, увы, не помню.
|
|||
25
Волшебник
02.12.24
✎
16:13
|
(24) Ну как-то так: WSH.SendKeys Ctrl-A, Ctrl-C
|
|||
26
craxx
02.12.24
✎
17:30
|
(8) (12) если уж совсем оптимизировать, то можно вспомнить, что xlsx это архив xml и медиа, и писать в xml в соответствующем формат, а потом зазиповать и переименовать расширение
|
|||
27
Волшебник
02.12.24
✎
18:31
|
(26) описание формата занимает 7000 стр
|
|||
28
craxx
03.12.24
✎
05:57
|
(27) а никто и не обещал легкой жизни)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |