Имя: Пароль:
1C
 
Выгрузка в Excel _FilterDatabase
0 Bot002
 
20.12.23
14:05
Добрый день.

Подскажите, кто что может))

1С:Предприятие 8.3
Выгружаю данные в файл xlsx (в xls ошибки не возникает), в столбец на котором установлен фильтр!!!

Excel=Новый COMОбъект("Excel.Application");    
РабочаяКнига=Excel.Workbooks;  
Книга=РабочаяКнига.Open(СокрЛП(ПутьКФайлуСДанными));

На строчке "Книга=" появляется окно с ошибкой
"Конфликт имён. Имя не может совпадать со встроенным именем. Старое имя: _FilterDatabase"
и предложением заменить "старое" имя на "новое". Если заменить, то выполнение кода продолжается...

Если фильтр не трогать, то и ошибки не возникает))
Но им то (фильтром) пользуются(

Пробовал

Книга = ПолучитьCOMОбъект(ПутьКФайлуСДанными)

Ошибки нет, но и после Книга.Save(), файл не читается (открывается пустой).
1 rphosts
 
20.12.23
14:05
А твой комм поддерживает xlsx?
2 Bot002
 
20.12.23
14:13
(1) Да, "Если фильтр не трогать, то и ошибки не возникает))"
3 Tatitutu
 
20.12.23
14:29
попробуй вместо

РабочаяКнига=Excel.Workbooks;  
Книга=РабочаяКнига.Open(СокрЛП(ПутьКФайлуСДанными));

РабочаяКнига=Excel.Workbooks;  
РабочаяКнига.Open(СокрЛП(ПутьКФайлуСДанными));        




///////////////////////////////////////////////////

        Книга = Ехсел.Workbooks;
    
        Попытка
        Книга.Open(ИмяФайла);
        Состояние("Обработка файла Microsoft Excel...");
    Исключение
        Возврат Ложь;
    КонецПопытки;
    
        КолвоЛистов = Ехсел.Sheets.Count();
    
        ИмяАктивногоЛиста = Ехсел.ActiveSheet.name;

    Диапозон = Ехсел.Sheets(Лист).Cells;
    Строк = Диапозон.SpecialCells(11).Row;
    Столбцов = Диапозон.SpecialCells(11).Column;
    
    
    Ехсел.ActiveWorkbook.Close();
4 Bot002
 
20.12.23
15:09
(3) Спасибо.

Excel= Новый COMОбъект("Excel.Application");
Книга = Excel.Workbooks;
Книга.Open(ПутьКФайлуСДанными);

Но ошибка осталась, теперь появляется на строчке
Книга.Open(ПутьКФайлуСДанными)
5 Tatitutu
 
20.12.23
15:38
(0) Ну , тогда
поподробнее с этого места

Выгружаю данные в файл xlsx (в xls ошибки не возникает), в столбец на котором установлен фильтр!
6 Bot002
 
20.12.23
16:48
(5) ) Загружаю в столбец "С".

https://ibb.co/VNYhP8L
7 Bot002
 
20.12.23
17:37
(6) https://ibb.co/bBMzN8R
Зелёная строчка добавляется после изменения фильтра (в столбце С) и сохранения документа.
Она конфликтует с Красной (???) при открытии файла 1С-кой.
Жёлтые - уже переименованные Зелёные (загружал данные и менял фильтр несколько раз).
8 Bot002
 
21.12.23
09:19
Good morning!

Идей никаких не появилось?
9 бегинер
 
21.12.23
10:46
10 Bot002
 
21.12.23
11:08
(9) Спасибо.
Интересный вариант)
11 Bot002
 
21.12.23
12:00
(9) Т.е. перед каждой записью в файл xlsx (а их происходят десятки в день), нужно:
• сделать бэкап файла)
• переименовать его в *.zip
• распаковать
• вырезать из workbook.xml "лишние" строчки
• упаковать
• переименовать обратно в *.xlsx
• вставить в него данные)

Выглядит просто, но не безопасно))

А ещё, ещё какие ни будь варианты есть?
12 бегинер
 
21.12.23
13:48
(11) нет конечно

ответ в вашем вопросе же:

перед каждой записью в файл, соотв. один раз исходный файл этот почистить - и в нем не будет уже <definedName name="_FilterDatabase" или <definedName name="_xlnm._FilterDatabase"

и все.

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

либо если он не ручками а от куда то у вас появляется  - смотри кто его генерит с этой ошибкой и ее устраняйте...
13 Bot002
 
21.12.23
14:31
(12) )) Неа. Чистил, появляется снова)

Кому интересно - макрос, что бы скрытые имена в "Диспетчере имён" посмотреть:

Sub Макрос1()
Dim n As Name
For Each n In ThisWorkbook.Names
    n.Visible = True
Next
End Sub


Добавил перед записью
Лист.Names("_FilterDatabase").Delete();
Вроде работает нормально.
Наблюдаю, что будет дальше))
14 бегинер
 
21.12.23
15:48
с Победой! :)