Перенос сложных печатных форм, таких как доверенность М-2 или путевые листы, из формата Excel в макет 1С — задача, с которой часто сталкиваются разработчики. Основная проблема заключается в том, что при обычном копировании часто "съезжает" ширина колонок, теряются границы ячеек или объединения. Разберем несколько эффективных способов, как сделать это быстро и профессионально, сохранив структуру документа. Если требуется именно эта форма, можно использовать готовые шаблоны путевых листов в формате MXL.
Современные версии платформы 1С:Предприятие позволяют открывать файлы Excel напрямую в режиме "Предприятие". Это лучший способ, так как платформа сама интерпретирует стили Excel в понятный для 1С формат ТабличныйДокумент.
Проанализируем шаги выполнения этого метода:
.xls или .xlsx..mxl файла в ваш макет.Этот метод позволяет сохранить до 95% исходного форматирования, включая высоту строк и ширину столбцов.
Если вам нужно автоматизировать процесс или перенести данные максимально точно программным путем, можно воспользоваться методом Прочитать объекта ТабличныйДокумент. Этот метод появился в платформе начиная с версии 8.3.10.
Рассмотрим пример кода, который загружает Excel-файл в табличный документ:
ТабДок = Новый ТабличныйДокумент;
Попытка
// Указываем путь к файлу и тип файла Excel
ТабДок.Прочитать("C:\MyFiles\M2_Form.xls", СпособЧтенияЗначенийТабличногоДокумента.Значение);
// Теперь ТабДок содержит структуру Excel-файла
// Его можно вставить в макет или вывести на экран
Исключение
Сообщить("Ошибка при чтении файла: " + ОписаниеОшибки());
КонецПопытки;
При использовании этого метода 1С старается сопоставить цвета, шрифты и объединения ячеек. Однако помните, что сложные графические объекты (логотипы, вставленные поверх сетки) могут не перенестись. Их придется добавить в макет 1С вручную.
Если вы все же решили копировать данные напрямую из Excel в Конфигуратор 1С, выясним одну важную деталь. Большинство ошибок с шириной колонок возникает из-за того, что выделяются только ячейки.
Посмотрим, как сделать это правильно:
Ctrl+C.Ctrl+V.При выделении строк Excel передает в буфер обмена информацию о высоте строк и ширине колонок более полно, что позволяет 1С лучше подстроить свою сетку под оригинал.
Для очень сложных форм, где стандартные методы платформы дают сбой, профессионалы рекомендуют использовать старую, но проверенную утилиту xls2mxl. Хотя она была создана довольно давно, алгоритмы конвертации в ней зачастую работают точнее, чем встроенные средства, особенно в части перевода размеров из "экселевских" единиц в единицы 1С.
Рассмотрим алгоритм работы с такими инструментами:
.mxl через внешнюю программу..mxl в Конфигураторе 1С.Проанализируем ситуацию, когда после вставки в 1С появляется огромное количество очень узких колонок. Это происходит из-за того, что границы ячеек в Excel не были выровнены по одной вертикальной линии.
Чтобы избежать этой проблемы, выполните следующие действия перед переносом:
Если ни один из вышеперечисленных способов не дал идеального результата, можно использовать метод обхода ячеек через COM-соединение. Это наиболее трудозатратный путь, но он дает полный контроль.
Выясним логику работы такого скрипта:
Excel.Application.ТабличныйДокумент 1С копируются свойства: Шрифт, ЦветФона, ТипЛиннии (границы) и Текст.Важное примечание: Формулы Excel никогда не переносятся в макет 1С. После импорта вам необходимо будет заменить статические значения или пустые ячейки на Параметры (например, <Код>ПараметрНомерДокумента</Код>), чтобы заполнять их данными из информационной базы при печати. Если же принципиально сохранить расчеты на стороне электронной таблицы, можно использовать инструмент для прямого заполнения шаблонов Excel из 1С.
Таким образом, для большинства задач оптимальным решением будет Способ 1 (открытие через Файл-Открыть в 1С), так как он требует минимум усилий и дает предсказуемый результат на современных версиях платформы.