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

v7: Проблема при сохранении отчёта в ексель, высота строки

v7: Проблема при сохранении отчёта в ексель, высота строки
Я
   evgpinsk_
 
01.11.19 - 12:42
сохраняем счёт-фактуру из 1с в формат xlc:
Таб.Записать(ИмяФайла,"xls");

в счёт фактуре название товара длинное, не влазит в ячейку, соответственно в 1с название переносится на новую строчку,
т.е. получается из двух строк.

Проблема в том, что в екселевском файле высота строки получается только 8мм, и название товара видно только одна строка.

Каким образом решить проблему?
 
 
   ДенисЧ
 
1 - 01.11.19 - 12:51
После сохранения программно открыть документ, пробежать по строкам и установить
   Масянька
 
2 - 01.11.19 - 12:52
(0) 1. Растянуть строку в Excel.
2. Написать процедуру сохранения через Йоксель.
   dedmoroz777
 
3 - 01.11.19 - 12:52
   Амулет
 
4 - 01.11.19 - 12:54
Не пользоваться встроенным конвертором.
В нем вообще непредсказуемое, и часто не управляемое форматирование.

Использовать для сохранения в Excel, например, внешнюю компоненту  Йоксель (Yoksel).
   Амулет
 
5 - 01.11.19 - 13:00
(4)+ Пример кода
<…>
Таб.ВывестиСекцию("Подвал");
Таб.ТолькоПросмотр(1);
Таб.Опции(0,0,0,0);  
ЗагрузитьВнешнююКомпоненту ("SpreadSheet.dll");
ВыбИмяФайла=КаталогПользователя()+"Выгрузка СчФ "+СокрП(Док.НомерДок);
Документ = СоздатьОбъект ("ТабличныйДокумент");
Документ.ЗагрузитьИзТаблицы(Таб);
ИмяЛиста = "Лист ";
НомерЛиста = 1;
Конвертер = СоздатьОбъект ("КонвертерExcel");
Книга = Конвертер.Создать ();
Книга.Листы.Добавить (ИмяЛиста + НомерЛиста, Документ);
Книга.ПараметрыКонвертера.РаспознаватьЧисловыеЗначения = 1;
Книга.Записать(ВыбИмяФайла+".xls");
//Сообщить ("Файл сохранен по адресу "+ВыбИмяФайла+".xls");

ЗапуститьПриложение(ВыбИмяФайла+".xls");
Таб.Очистить();
   evgpinsk_
 
6 - 01.11.19 - 13:01
(5) Спасибо, попробую
   evgpinsk_
 
7 - 01.11.19 - 13:06
Параллельно вопрос, через Йоксель возможно "Прямое чтение файлов Excel"
Как со скоростью?

Сейчас я читаю через
    Connection.Open(СтрокаПодключения);
    rs = CreateObject("ADODB.Recordset");
и далее построчное чтение екселевского файла.

Получается долго. 3000 строк - (10-15 секунд)

Может Йоксель быстрее?
   Злопчинский
 
8 - 02.11.19 - 02:50
а сделать автовысоту строки в печформе счетфактуры религия запрещает? или я что-то не понял?
   Злопчинский
 
9 - 02.11.19 - 02:51
(7) ну, йоксель читает эксель.
насколько быстро - я хз.
то что читал - меня по скорости устраивает
   evgpinsk_
 
10 - 02.11.19 - 11:03
(8) Автовысота в 1с есть. Но при выгрузке отчёта в XLS эта автовысота не сохраняется, при открытии файла в екселе все строки = 8мм.
А вот если сохранять через йоксель - всё ок, и высота строк сохраняется и "По ширине листа" работает тоже. Клас
   Злопчинский
 
11 - 02.11.19 - 14:59
(10) точно, у меня все на йокселе давно сохраняется.
ступил
   evgpinsk_
 
12 - 02.11.19 - 23:40
(9) Йоксель  читает из xls только в mxl?
Или он может заполнить таблицу значений из xls ?
   Djelf
 
13 - 03.11.19 - 09:34
(12) Может и в тз http://yoksel.net.ru/Ob'ektyVstroennogoJazyka/Jjoksel'KonverterVTablicuZnachenijj
Но не всегда удачно получается.
   Провинциальный 1сник
 
14 - 03.11.19 - 10:54
(8) Автовысоту в 7.7 лучше не включать, если предполагаемое количество строк с автовысотой больше сотни. Иначе дичайше тормозит сохранение в эксель. Там какая-то экспоненциальная зависимость.
   Злопчинский
 
15 - 03.11.19 - 13:22
(14) это если использовать штатное сохрангение.
но эту проблему устраняет мокселдоктор патч от ромикса ВК, или сохранять в эксель тем же самым йокселем
   Злопчинский
 
16 - 03.11.19 - 13:22
(12) можно в тз, порядка 5 операторов
   evgpinsk_
 
17 - 03.11.19 - 14:03
(16) Абалдеть. Файл XLS 6300 строк
Через ADODB читает 36 секунд:
    СтрокаПодключения = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+СокрЛП(Путь)+";Extended Properties=""Excel 8.0;HDR=No; IMEX=1;""";
    Connection = СоздатьОбъект("ADODB.Connection");
    Connection.Open(СтрокаПодключения);
    Пока rs.Eof() = 0 Цикл
        ТаблПрихода.НоваяСтрока();
        rs.MoveNext();
    КонецЦикла;

через Йоксель - 0,18 секунд
   evgpinsk_
 
18 - 04.11.19 - 00:15
(16) ЧТото не нахожу, как через конвертер загружать конкретный Лист екселя, а не первый по умолчанию?
   Провинциальный 1сник
 
19 - 04.11.19 - 07:18
(15) Это ты пользователю скажи, который формирует отчет по продажам на 20000 строк и пытается его сохранить в эксель штатными средствами. Суть в том, что нельзя в 7.7 вообще использовать автовысоту в макетах, кроме печатных форм документов. Иначе задолбают вопросы "у меня 1с зависла".
   ДенисЧ
 
20 - 04.11.19 - 07:21
(19) Просто пользователю нужно сказать, что так делать нельзя. И всё, что он делает - остаётся на его совести. Можно сказать ему это в письменном виде под роспись.
   Провинциальный 1сник
 
21 - 04.11.19 - 07:45
(20) Сказать можно. Но всё равно найдется "забыл". Проще переделать макеты и не иметь проблем с этим.
   ДенисЧ
 
22 - 04.11.19 - 07:47
(21) Это проблемы забывца. Раз забудет, на другой раз вспомнит.
   Провинциальный 1сник
 
23 - 04.11.19 - 08:02
(22) Их много. Кстати, был такой лозунг в своё время по охране труда "От техники безопасности - к безопасности техники!", смысл такой чтобы исключить несчастные случаи не правилами и нормами, а конструктивно.
   evgpinsk_
 
24 - 04.11.19 - 11:04
(18) наверное детский вопрос, но не пойму, как через конвертор загружать определённый лист?


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