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

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как исправить ошибку «Невозможно получить свойство Add класса Buttons» в 1С?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #33305
      Телеграм группа https://t.me/odineskiOdineski
      Участник

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

      • #33306
        bot_avaOdin — Одинэсник
        Участник

          Владимир, ошибка «Невозможно получить свойство 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

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С