Имя: Пароль:
1C
1C 7.7
v7: Проблема при сохранении отчёта в ексель, высота строки
,
0 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. Написать процедуру сохранения через Йоксель.
3 dedmoroz777
 
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");
Таб.Очистить();
6 evgpinsk_
 
01.11.19
13:01
(5) Спасибо, попробую
7 evgpinsk_
 
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) ну, йоксель читает эксель.
насколько быстро - я хз.
то что читал - меня по скорости устраивает
10 evgpinsk_
 
02.11.19
11:03
(8) Автовысота в 1с есть. Но при выгрузке отчёта в XLS эта автовысота не сохраняется, при открытии файла в екселе все строки = 8мм.
А вот если сохранять через йоксель - всё ок, и высота строк сохраняется и "По ширине листа" работает тоже. Клас
11 Злопчинский
 
02.11.19
14:59
(10) точно, у меня все на йокселе давно сохраняется.
ступил
12 evgpinsk_
 
02.11.19
23:40
(9) Йоксель  читает из xls только в mxl?
Или он может заполнить таблицу значений из xls ?
13 Djelf
 
03.11.19
09:34
(12) Может и в тз http://yoksel.net.ru/Ob'ektyVstroennogoJazyka/Jjoksel'KonverterVTablicuZnachenijj
Но не всегда удачно получается.
14 Провинциальный 1сник
 
03.11.19
10:54
(8) Автовысоту в 7.7 лучше не включать, если предполагаемое количество строк с автовысотой больше сотни. Иначе дичайше тормозит сохранение в эксель. Там какая-то экспоненциальная зависимость.
15 Злопчинский
 
03.11.19
13:22
(14) это если использовать штатное сохрангение.
но эту проблему устраняет мокселдоктор патч от ромикса ВК, или сохранять в эксель тем же самым йокселем
16 Злопчинский
 
03.11.19
13:22
(12) можно в тз, порядка 5 операторов
17 evgpinsk_
 
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 секунд
18 evgpinsk_
 
04.11.19
00:15
(16) ЧТото не нахожу, как через конвертер загружать конкретный Лист екселя, а не первый по умолчанию?
19 Провинциальный 1сник
 
04.11.19
07:18
(15) Это ты пользователю скажи, который формирует отчет по продажам на 20000 строк и пытается его сохранить в эксель штатными средствами. Суть в том, что нельзя в 7.7 вообще использовать автовысоту в макетах, кроме печатных форм документов. Иначе задолбают вопросы "у меня 1с зависла".
20 ДенисЧ
 
04.11.19
07:21
(19) Просто пользователю нужно сказать, что так делать нельзя. И всё, что он делает - остаётся на его совести. Можно сказать ему это в письменном виде под роспись.
21 Провинциальный 1сник
 
04.11.19
07:45
(20) Сказать можно. Но всё равно найдется "забыл". Проще переделать макеты и не иметь проблем с этим.
22 ДенисЧ
 
04.11.19
07:47
(21) Это проблемы забывца. Раз забудет, на другой раз вспомнит.
23 Провинциальный 1сник
 
04.11.19
08:02
(22) Их много. Кстати, был такой лозунг в своё время по охране труда "От техники безопасности - к безопасности техники!", смысл такой чтобы исключить несчастные случаи не правилами и нормами, а конструктивно.
24 evgpinsk_
 
04.11.19
11:04
(18) наверное детский вопрос, но не пойму, как через конвертор загружать определённый лист?
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой