Имя: Пароль:
1C
1С v8
Банальные мелочи при сохранении в Excel. Боян, но мож кому надо.
0 Лодырь
 
06.11.12
09:16
При составлении из 1С сложных многостраничных книг в Excel наткнулся на нижеприведенные проблемы, и тк решил их, выкладываю тут. Может кому пригодится )

Если админы посчитают ненужным - сносите смело.

1. "Кривая" расцветка. Цвета абсолютно не те какие закладывались изначально.
Проблема возникает при сборке различных страниц Excel выгруженных из 1С в одну книгу. Тк сборка обычно происходит на основе существующей либо новой книги Excel то палитра книги отличается от палитры сохраняемых из 1С листов. Решение - стандартизировать палитру, подгоняя ее под палитру используемую 1С. Если сборка идет на основе некого шаблона, то надо предварительно на этапе его разработки скопировать туда палитру из "1Сного" листа Excel. Если сборка идет в пустой файл - то просто скопировать палитру (благо это очень просто).

БольшойОтчет.Colors = СтраницаИз1С.Colors;

2. Стандартная сетка Excel зачастую раздражает и мешается. Лучше ее отключать. Например так.

БольшойОтчет.Application.Activewindow.DisplayGridLines = 0;

3. По умолчанию желательно открывать некий определенный лист книги. Делаем:

БольшойОтчет.WorkSheets(Х).Activate(); // где Х - номер листа

4. Вечно один из пользователей отчетов не имеет 2007 хотя бы Excel. Логично что приходится сохранять в xls а не xlsx. Это легко иделать из 1С, а вот используя хз какую версию Excel на компьютере пользователя (которую переодически меняют админы по своему усмотрению) сложнее (тк он для новых книг сам выбирает формат по умолчанию). Приходится анализировать версию:

Если  Число(Excel.version) < 12 Тогда
// Excel это ComОбъект("Excel.application")
  FileFormatNum = -4143 // ага, загадочное число
Иначе
  FileFormatNum = 56 // ну что мешало сделать форматы стандартными?
КонецЕсли;
БольшойОтчет.SaveAs(ИмяОтчета,FileFormatNum);

Собственно все. Удачи.
1 Wobland
 
06.11.12
09:19
мои пять копеек:
ПоследняяСтрока=Sheet.Cells.SpecialCells(11).Row;
2 Defender aka LINN
 
06.11.12
09:22
(0) Есть подозрение, что "сложные многостраничные книги" нужны для того, чтобы пользователи там еще что-то шаманили, т.е. нужно тупо в 1С сделать отчеты, которые давали бы им сразу нудные данные. Правда, убедить в этом пользователей это уже задача нетривиальная.
3 D_Pavel
 
06.11.12
09:23
(0) Круть! Молодец
(1) Это все знают
4 Wobland
 
06.11.12
09:24
(3) вчера только товарищ циклом строки перебирал, пока значения не кончались ;)
5 D_Pavel
 
06.11.12
09:27
(4) Погуглить что-ли не мог...
6 mikecool
 
06.11.12
09:28
о сколько нам открытий чудных готовит UsedRAnge дух...
7 mikecool
 
06.11.12
09:28
(4) иногда это лучше, поскольку внизу всякие подвалы могут быть
8 Песец
 
06.11.12
09:31
(1) Спешлселлз иногда какую-то хрень выдает :(
9 Лодырь
 
06.11.12
09:31
(7) кстати сам перебираю строчки циклом ) просто так надежнее и удобнее в ряде случаев.
10 Serg_1960
 
06.11.12
09:32
Автору мои +5 :)

PS: не портите карму ветки своими мелкими дрязгами - вносите свой вклад молча :))
11 mikecool
 
06.11.12
09:37
еще - оформлять выводимые данные(рамки, цвета и етс) надо после вывода данных перед сохранением книги - работает в десятки раз быстрее
12 mikecool
 
06.11.12
09:37
+11 я для этого писал в отдельную колонку признаки, по которым потом анализировал, что делать с данной ячейкой
13 D_Pavel
 
06.11.12
09:38
(10) Что ты внес этим своим сообщением?
14 zulu_mix
 
06.11.12
09:40
тоже кину 5 коп. правда на чтение данных.
Артикул = RecordSet.Fields(НомерКолонкиАртикул).value; //если читать так артикул 00956 то прочтется 956

Артикул = RecordSet.Fields(НомерКолонкиАртикул).text; //если читать так артикул 00956 то прочтется 00956
15 Лодырь
 
06.11.12
09:51
(11)(12) Интересно, надо попробовать.
16 mikecool
 
06.11.12
09:53
(15) попробуй ) при выводе порядка 250тыщ записей ускорение составило х50 где то
17 vde69
 
06.11.12
09:53
18 Armando
 
06.11.12
09:57
19 Wobland
 
06.11.12
10:00
если уж добавлять в базу знаний, то ветку тогда переименуйте. Древнерусский сказитель тут не к месту