|
Выгрузка в 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
|
||||
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
|
с Победой! :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |