Вход | Регистрация
 
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) наверное детский вопрос, но не пойму, как через конвертор загружать определённый лист?


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.