Маленькие хитрости при работе с Excel

Как при работе с Excel через OLE обойти предупреждения
Excel требует подтверждений пользователя, например, при удалении листа из рабочей книги. При этом процесс обработки останавливается. Как сделать чтобы он не задавал таких вопросов?
Эксель = СоздатьОбъект(“Excel.Application”);
.....
Эксель.DisplayAlerts = 0;
..... а здесь делаешь что-нибудь
Эксель.DisplayAlerts = 1;

Формат числа при выгрузке в Excel
При выгрузке данных в Excel числа типа 9237642437 отображаются 9,23764Е+11. Есть такая фича у Excel: если перед числом (или другим значением) поставить апостроф (’), эксель это понимает как то, что ему подсовывают текст, а апостроф отображаться не будет, т.е. напиши так:
’9237642437
Для того, чтобы открыть файл *.mxl в Excel
Необходимо внести в реестр следующую информацию:
REGEDIT
[HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Excel\Converters]
“Moxel”=“1С:Предприятие (*.mxl),...\\bin\\mxl2xl.dll, *.mxl”
где:
<...> это путь к каталогу 1С-Предприятия
<10.0> это номер версии Экселя – XP. Для 2000 это будет 9.0, 97 – 8.0, 95 – 7.0
Как определить, когда закончились данные на листе при загрузке данных из Excel
SpecialCells(11) – “последняя” ячейка
Например, если нужен номер строки последней ячейки, то
LastRow=ExcelApp.Cells(1,1).SpecialCells(11).Row;
Обработка ошибочных значений
При обработке через OLE ячеек, содержащих ошибочные значения (#ДЕЛ/0!; #ЗНАЧ!; #ЧИСЛО! и т.п.) 1С зависает при обращении к свойству Value – не помогает даже конструкция Попытка –Исключение. Обойти эту неприятность можно очень просто – проверять перед обращением к Value свойство Text:
СписокОшибокЁкселя=СоздатьОбъект(“СписокЗначений”);
СписокОшибокЁкселя.ДобавитьЗначение(”#ПУСТО!”);
СписокОшибокЁкселя.ДобавитьЗначение(”#ДЕЛ/0!”);
СписокОшибокЁкселя.ДобавитьЗначение(”#ЗНАЧ!”);
СписокОшибокЁкселя.ДобавитьЗначение(”#ССЫЛКА!”);
СписокОшибокЁкселя.ДобавитьЗначение(”#ИМЯ?”);
СписокОшибокЁкселя.ДобавитьЗначение(”#ЧИСЛО!”);
СписокОшибокЁкселя.ДобавитьЗначение(”#Н/Д”);
//Для англ. версии
СписокОшибокЁкселя.ДобавитьЗначение(”#NULL!”);
СписокОшибокЁкселя.ДобавитьЗначение(”#DIV/0!”);
СписокОшибокЁкселя.ДобавитьЗначение(”#VALUE!”);
СписокОшибокЁкселя.ДобавитьЗначение(”#REF!”);
СписокОшибокЁкселя.ДобавитьЗначение(”#NAME?”);
СписокОшибокЁкселя.ДобавитьЗначение(”#NUM!”);
СписокОшибокЁкселя.ДобавитьЗначение(”#N/A”);
//...
ТекстЯчейки=Ячейка.Text;
Если СписокОшибокЁкселя.НайтиЗначение(ТекстЯчейки)=0 Тогда
Сообщить(Ячейка.Value);
Иначе
Сообщить(ТекстЯчейки);

КонецЕсли;

Комментарии | опубликовано: 19 Март 2009, 17:24

Основы. Программное создание групп

СпрСотр = СоздатьОбъект(“Справочник.Сотрудники”);
СпрСотр.НоваяГруппа();
СпрСотр.Наименование = “Работающие”;
СпрСотр.Записать();
СпрСотр.НоваяГруппа();
СпрСотр.Наименование = “Уволенные”;
СпрСотр.Записать();

Внимание! В Конфигураторе можно задать для реквизита то, что он действителен только для элемента, только для группы или для обоих. Например, поле ДатаПриема не имеет смысла для группы Работающие. Поэтому не стоит обращаться к реквизитам элементов, если вы работаете с группой и наоборот.

Комментарии | опубликовано: 16 Март 2009, 17:13

Как бороться с сообщением "Изменения конфигурации не загружались в ИБ из которой пришел файл переноса"

1) Делаем выгрузку из ПБ;
2) Изменяем конфу в ЦБ и пытаемся загрузить выгрузку -> получаем: “Изменения конфигурации не загружались в ИБ из которой пришел файл переноса”;
3) Делаем выгрузку из ЦБ. Обязательно загружаем этот архив на ПБ, иначе часть документов из ЦБ не выгрузится в ПБ;
4) Просмотрщиком открываем файл 1Cv77Dld.id (выгрузки ЦБ) и наблюдаем строчку похожую на:
{“Download ID”,B32CA7C5-4FC6-431D-ABF8-2A5E6F7658F9,“KL”,3BB40AD2-5DDA-4E39-83BB-ADB5C65A081F,“ЦБ”,8BAA3284-2B8C-450E-868F-781896A54BC4,“9|KL”}
(ага! запоминаем цифру 9);
5) Распаковываем файл 1Cv77Chs.dat, прибывший из ПБ;
6) Ищем строчку похожую на {“8|ЦБ”}} (за ключевым словом Acknowledgements, у меня 4-я сверху);
7) Меняем 8 на 9 и запаковываем обратно;
8) Теперь в ЦБ все замечательно загружается!
Подводя итоги:
1) Номер выгрузки из ЦБ в файле 1Cv77Dld.id всегда должен соответствовать номеру выгрузки из ПБ в файле 1Cv77Chs.dat.
2) ВНИМАНИЕ!!! Такой фокус не рекомендуется проделывать при структурных изменениях конфигурации!

Комментарии | опубликовано: 12 Март 2009, 17:26


<--- Предыдущая страница Следующая страница --->