Как перенести форму из Excel в макет 1С с сохранением форматирования?

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

Перенос сложных печатных форм, таких как доверенность М-2 или путевые листы, из формата Excel в макет 1С — задача, с которой часто сталкиваются разработчики. Основная проблема заключается в том, что при обычном копировании часто "съезжает" ширина колонок, теряются границы ячеек или объединения. Разберем несколько эффективных способов, как сделать это быстро и профессионально, сохранив структуру документа. Если требуется именно эта форма, можно использовать готовые шаблоны путевых листов в формате MXL.

Способ 1: Использование встроенных возможностей платформы (самый надежный)

Современные версии платформы 1С:Предприятие позволяют открывать файлы Excel напрямую в режиме "Предприятие". Это лучший способ, так как платформа сама интерпретирует стили Excel в понятный для 1С формат ТабличныйДокумент.

Проанализируем шаги выполнения этого метода:

  1. Запустите 1С в пользовательском режиме (1С:Предприятие).
  2. Перейдите в главное меню и выберите пункт Файл — Открыть.
  3. В диалоговом окне выберите ваш файл в формате .xls или .xlsx.
  4. 1С откроет файл как стандартный табличный документ внутри программы. Проверьте, корректно ли отображаются границы и шрифты.
  5. Снова перейдите в меню Файл — Сохранить как и выберите тип файла Табличный документ (*.mxl).
  6. Теперь откройте Конфигуратор, создайте новый макет или откройте существующий, и просто скопируйте содержимое из полученного .mxl файла в ваш макет.

Этот метод позволяет сохранить до 95% исходного форматирования, включая высоту строк и ширину столбцов.

Способ 2: Программная загрузка через метод Прочитать

Если вам нужно автоматизировать процесс или перенести данные максимально точно программным путем, можно воспользоваться методом Прочитать объекта ТабличныйДокумент. Этот метод появился в платформе начиная с версии 8.3.10.

Рассмотрим пример кода, который загружает Excel-файл в табличный документ:


ТабДок = Новый ТабличныйДокумент;
Попытка
    // Указываем путь к файлу и тип файла Excel
    ТабДок.Прочитать("C:\MyFiles\M2_Form.xls", СпособЧтенияЗначенийТабличногоДокумента.Значение);
    // Теперь ТабДок содержит структуру Excel-файла
    // Его можно вставить в макет или вывести на экран
Исключение
    Сообщить("Ошибка при чтении файла: " + ОписаниеОшибки());
КонецПопытки;

При использовании этого метода 1С старается сопоставить цвета, шрифты и объединения ячеек. Однако помните, что сложные графические объекты (логотипы, вставленные поверх сетки) могут не перенестись. Их придется добавить в макет 1С вручную.

Способ 3: Правильное копирование через буфер обмена

Если вы все же решили копировать данные напрямую из Excel в Конфигуратор 1С, выясним одну важную деталь. Большинство ошибок с шириной колонок возникает из-за того, что выделяются только ячейки.

Посмотрим, как сделать это правильно:

  1. Откройте файл в Excel.
  2. Важный момент: не выделяйте диапазон ячеек мышкой. Вместо этого выделите целые строки, нажав на их номера слева (на серую панель с цифрами).
  3. Нажмите Ctrl+C.
  4. Перейдите в макет 1С в Конфигураторе.
  5. Установите курсор в первую колонку первой строки и нажмите Ctrl+V.

При выделении строк Excel передает в буфер обмена информацию о высоте строк и ширине колонок более полно, что позволяет 1С лучше подстроить свою сетку под оригинал.

Способ 4: Использование специализированных утилит (xls2mxl)

Для очень сложных форм, где стандартные методы платформы дают сбой, профессионалы рекомендуют использовать старую, но проверенную утилиту xls2mxl. Хотя она была создана довольно давно, алгоритмы конвертации в ней зачастую работают точнее, чем встроенные средства, особенно в части перевода размеров из "экселевских" единиц в единицы 1С.

Рассмотрим алгоритм работы с такими инструментами:

  1. Конвертируете файл Excel в формат .mxl через внешнюю программу.
  2. Открываете полученный .mxl в Конфигураторе 1С.
  3. Проверяете объединения ячеек, так как это самое слабое место при конвертации.

Проблемы сетки и "миллиона мелких колонок"

Проанализируем ситуацию, когда после вставки в 1С появляется огромное количество очень узких колонок. Это происходит из-за того, что границы ячеек в Excel не были выровнены по одной вертикальной линии.

Чтобы избежать этой проблемы, выполните следующие действия перед переносом:

Особенности работы с COM-объектами

Если ни один из вышеперечисленных способов не дал идеального результата, можно использовать метод обхода ячеек через COM-соединение. Это наиболее трудозатратный путь, но он дает полный контроль.

Выясним логику работы такого скрипта:

  1. Создается объект Excel.Application.
  2. Открывается нужная книга.
  3. Происходит цикл по строкам и колонкам Excel.
  4. Для каждой ячейки в ТабличныйДокумент 1С копируются свойства: Шрифт, ЦветФона, ТипЛиннии (границы) и Текст.

Важное примечание: Формулы Excel никогда не переносятся в макет 1С. После импорта вам необходимо будет заменить статические значения или пустые ячейки на Параметры (например, <Код>ПараметрНомерДокумента</Код>), чтобы заполнять их данными из информационной базы при печати. Если же принципиально сохранить расчеты на стороне электронной таблицы, можно использовать инструмент для прямого заполнения шаблонов Excel из 1С.

Таким образом, для большинства задач оптимальным решением будет Способ 1 (открытие через Файл-Открыть в 1С), так как он требует минимум усилий и дает предсказуемый результат на современных версиях платформы.

← На главную