Odin | База знаний 1С

Как исправить ошибк...
 

Как исправить ошибку "Невозможно получить свойство Add класса Buttons" в 1С?


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

При сохранении документа в 1с типа excel. Выдает ошибку. Не удалось записать данные в файл. Подробности: Произошла исключительная ситуация (Microsoft Excel): Невозможно получить свойство Add класса Buttons



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

Владимир, ошибка «Невозможно получить свойство Add класса Buttons» при сохранении табличного документа в Excel из 1С обычно связана с проблемами взаимодействия через COM-объект Excel, чаще всего с элементами управления (кнопками) на листе Excel, которые не поддерживаются или повреждены.

Основные причины и решения:

1. **Проблемы с шаблоном Excel**
Если вы используете шаблон Excel с элементами управления (кнопками, ActiveX и т.п.), то при попытке записи табличного документа 1С в такой файл через COM может возникать ошибка.
**Решение:**
- Попробуйте сохранить табличный документ в новый файл без использования шаблона.
- Если нужен шаблон, убедитесь, что в нем нет ActiveX элементов или кнопок, либо удалите их.

2. **Версия Excel и совместимость**
Иногда ошибка возникает из-за несовместимости версии Excel и используемого формата файла (например, попытка сохранить в старом формате XLS, а в книге есть элементы, поддерживаемые только в XLSX).
**Решение:**
- Сохраняйте файл в формате XLSX (тип 51), а не XLS (тип 18).
- В коде 1С при вызове `ActiveWorkbook.SaveAs` укажите формат 51 для XLSX.

3. **Закрытие и очистка COM-объектов**
Если в коде 1С не корректно закрываются объекты Excel, то при повторных вызовах могут возникать ошибки.
**Решение:**
- Убедитесь, что после работы с Excel вызывается `Excel.Application.Quit()` и объекты освобождаются.
- Используйте `Попытка...Исключение...КонецПопытки` для обработки ошибок и корректного завершения.

4. **Обновление и исправление Office**
Иногда проблема связана с багами в установленном Office.
**Решение:**
- Проверьте обновления Office и установите последние патчи.
- Попробуйте выполнить восстановление Office через Панель управления.

5. **Пример корректного кода сохранения табличного документа в Excel (8.х)**

1C
Процедура СохранитьТабличныйДокументВExcel(ТабДокумент, ИмяФайла)
    ИмяФайла = Строка(ИмяФайла) + ".xlsx";
    Каталог = КаталогВременныхФайлов();
    ПолныйПуть = Каталог + ИмяФайла;
    Попытка
        ТабДокумент.Записать(ПолныйПуть, ТипФайлаТабличногоДокумента.XLSX);
        Excel = Новый COMОбъект("Excel.Application");
        Книга = Excel.Workbooks.Open(ПолныйПуть);
        Excel.Visible = Ложь;
        Excel.DisplayAlerts = Ложь;
        // Убедимся, что нет проблем с элементами управления
        // Можно удалить все кнопки, если есть необходимость (пример)
        // Для каждого листа:
        Для Каждого Лист Из Книга.Worksheets Цикл
            Пока Лист.OLEObjects.Count > 0 Цикл
                Лист.OLEObjects(1).Delete();
            КонецЦикла;
        КонецЦикла;
        Книга.SaveAs(ПолныйПуть, 51); // Сохраняем в формате XLSX
        Книга.Close();
        Excel.Quit();
        ОсвободитьПамять(Excel);
        Сообщить("Файл успешно сохранен: " + ПолныйПуть);
    Исключение
        Сообщить("Ошибка при сохранении файла: " + ОписаниеОшибки());
        Если ЗначениеЗаполнено(Excel) Тогда
            Excel.Quit();
            ОсвободитьПамять(Excel);
        КонецЕсли;
    КонецПопытки;
КонецПроцедуры

6. **Если ошибка возникает при работе с кнопками на листе Excel**
- Удалите все элементы управления (кнопки, ActiveX) из шаблона Excel.
- Либо создайте новый чистый шаблон без таких элементов.

---

Если проблема сохраняется, рекомендую проверить:

- Используемый шаблон Excel (если есть).
- Версию Excel и 1С.
- Права доступа к папке сохранения.
- Корректность кода, который работает с Excel через COM.

Рекомендую посмотреть здесь:
https://infostart.ru/1c/articles/323606/
https://helpf.pro/faq8/view/1026.html

Если нужно, могу помочь с адаптацией кода под вашу задачу.

---

Если нужна помощь с конкретным кодом — пришлите его, посмотрю и помогу исправить.

0



   
ОтветитьЦитата