Как правильно обратиться к PlanMaker 2018 из 1С и работать с ним программно

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В современных ИТ-ландшафтах предприятий часто возникают ситуации, когда на сервере вместо привычного пакета Microsoft Office установлены альтернативные решения, такие как SoftMaker Office и его табличный редактор PlanMaker. Это создает определенные трудности для разработчиков 1С, привыкших использовать стандартный Excel.Application. В рамках данной статьи мы подробно разберем, как адаптировать ваш код для работы с PlanMaker 2018, проанализируем возможности его COM-интерфейса и рассмотрим альтернативные способы обработки данных, которые предоставляет сама платформа 1С.

Использование COM-объекта для управления PlanMaker

Если ваша задача требует именно автоматизации приложения (например, для формирования сложных печатных форм с использованием макросов или специфического форматирования), необходимо использовать механизм OLE Automation. Главная ошибка при переходе с Excel на PlanMaker заключается в попытке использовать старый программный идентификатор. Для PlanMaker 2018 (и более поздних версий) идентификатор объекта в системе отличается.

Рассмотрим процесс инициализации соединения. Вместо привычного создания объекта Excel, мы будем использовать идентификатор PlanMaker.Application. Давайте разберем этот процесс по шагам:


// Инициализация COM-соединения с PlanMaker
Попытка
    ПМ = Новый COMОбъект("PlanMaker.Application");
Исключение
    Сообщить("Не удалось запустить PlanMaker. Проверьте, установлена ли программа на сервере.");
    Возврат;
КонецПопытки;

// Настройка видимости приложения
ПМ.Visible = Истина; // Установите Ложь, если работа должна идти в фоновом режиме

После успешного создания объекта ПМ мы получаем доступ к объектной модели приложения. Она во многом напоминает структуру Microsoft Excel, что значительно облегчает перенос существующего кода. Основная иерархия выглядит следующим образом: Application -> Workbooks -> Workbook -> Sheets -> Sheet -> Cells. Выясним, как создать новый документ или открыть существующий.


// Создание новой книги
Книга = ПМ.Workbooks.Add();

// Или открытие существующего файла
ПутьКФайлу = "C:\Docs\Report.xlsx";
Книга = ПМ.Workbooks.Open(ПутьКФайлу);

// Обращение к активному листу
Лист = ПМ.ActiveSheet;

Манипуляция данными в ячейках

Для записи или чтения данных в PlanMaker используются знакомые методы Cells и Range. Проанализируем ситуацию, когда нам необходимо заполнить таблицу данными из запроса 1С. Важно отметить, что PlanMaker корректно обрабатывает свойство Value, однако в некоторых специфических случаях может потребоваться использование свойства Contents.

Рассмотрим пример заполнения данных:


// Запись значения в конкретную ячейку по координатам (строка, колонка)
Лист.Cells(1, 1).Value = "Наименование товара";
Лист.Cells(1, 2).Value = "Количество";

// Запись через обращение к диапазону (Range)
Лист.Range("A2").Value = "Смартфон";
Лист.Range("B2").Value = 10;

// Чтение значения из ячейки
ТекЗначение = Лист.Range("A2").Value;

По завершении работы с документом крайне важно правильно освободить ресурсы. В отличие от интерактивной работы, программные процессы могут "зависать" в памяти сервера, если их не закрыть явно. Мы рекомендуем всегда использовать метод Quit() в блоке завершения алгоритма.


// Сохранение файла в нужном формате
Книга.SaveAs("C:\Docs\Result.xlsx");

// Закрытие приложения
ПМ.Quit();
ПМ = Неопределено;

Альтернативный способ: работа через ТабличныйДокумент 1С

Как мы выяснили из обсуждения, часто использование COM-объекта является избыточным, особенно если на сервере нет Excel, а PlanMaker установлен лишь как средство просмотра. Если ваша цель — просто прочитать данные из файла .xlsx (который является форматом по умолчанию для PlanMaker 2018), платформа 1С предоставляет мощный встроенный инструмент, не требующий наличия стороннего ПО.

Проанализируем преимущества использования ТабличныйДокумент:

  1. Независимость: Не требуется установленный Office или PlanMaker на стороне сервера.
  2. Скорость: Прямое чтение файла платформой происходит значительно быстрее, чем запуск тяжелого внешнего приложения через COM-интерфейс.
  3. Стабильность: Исключаются ошибки, связанные с правами доступа пользователя, под которым запущен сервер 1С, к внешним COM-объектам.

Разберем пример кода для быстрого чтения данных из файла PlanMaker:


ТабДок = Новый ТабличныйДокумент;
Попытка
    // Используем метод Прочитать, указывая путь к файлу и способ чтения
    ТабДок.Прочитать(ИмяФайла, СпособЧтенияЗначенийТабличногоДокумента.Значение);
    
    // Теперь данные доступны в объекте ТабДок, и мы можем обходить их в цикле
    Для Стр = 1 По ТабДок.ВысотаТаблицы Цикл
        Товар = ТабДок.Область(Стр, 1).Текст;
        Колво = ТабДок.Область(Стр, 2).Значение;
        // Обработка данных...
    КонецЦикла;
Исключение
    Сообщить("Ошибка при чтении файла: " + ОписаниеОшибки());
КонецПопытки;

Важные технические нюансы и документация

При работе с PlanMaker через COM-соединение следует учитывать несколько важных моментов, которые помогут избежать ошибок в промышленной эксплуатации:

Таким образом, мы рассмотрели два полноценных подхода к решению задачи. Выбор между использованием прямого обращения через COMОбъект("PlanMaker.Application") и встроенными методами платформы 1С должен зависеть от сложности ваших задач по форматированию и наличия лицензионного ПО на сервере приложений.

← На главную