Данные из табличного документа MXL — в справочник или документ 1С 8.3
Содержание
Загрузить файл MXL в 1С 8.3 проще всего командой «Загрузить» в списке справочника или в табличной части документа: в Бухгалтерии 3.0 она есть, например, в списке Справочники → Товары и услуги → Номенклатура и в табличной части поступления. Если такой команды нет — открывают универсальную обработку «Загрузка данных из табличного документа» или пишут короткий код на ТабличныйДокумент.Прочитать().
Просто посмотреть файл ещё проще: главное меню → Файл → Открыть в любой базе 1С. Но открыть и загрузить — разные вещи. Открытый MXL — это картинка с ячейками. Чтобы данные легли в справочник, нужен механизм загрузки с сопоставлением колонок.
Что за формат MXL и откуда он берётся
MXL — родной формат табличного документа 1С. В нём сохраняются печатные формы, отчёты, прайсы и выгрузки, сделанные кнопкой «Сохранить» из любой таблицы 1С. Внутри — ячейки, формат, объединения и оформление, как в Excel.
Откуда обычно приходит MXL:
- 📄 поставщик сохранил прайс или накладную из своей 1С;
- 📊 коллега выгрузил отчёт или список справочника через
Ещё → Вывести список; - 🔄 файл получен из Excel: его открыли в 1С и сохранили как MXL;
- 🗂️ старая выгрузка из 1С 7.7 — тоже MXL, но в своём формате.
Что важно знать до загрузки:
| Задача | Что использовать |
|---|---|
| Посмотреть, распечатать, переслать | Файл → Открыть в клиенте 1С или бесплатная программа «1С:Предприятие 8. Работа с файлами» |
| Перенести строки в справочник | Команда «Загрузить» или универсальная обработка |
| Заполнить табличную часть документа | Команда «Загрузить» в табличной части или обработка в режиме «Табличная часть» |
| Регулярный обмен между базами | Не MXL, а XML-обмен: «Конвертация данных», «Универсальный обмен» |
| Своя логика, нестандартный файл | Внешняя обработка с кодом |
Excel-файл не обязательно превращать в MXL. Команда «Загрузить» и универсальная обработка принимают и .xlsx. MXL удобен, когда файл уже пришёл из 1С или когда Excel на компьютере не установлен.
Проверка MXL-файла до загрузки
Неудачная загрузка чаще упирается не в 1С, а в сам файл. Откройте его через Файл → Открыть и пройдитесь по списку ниже. Если нужно править — правьте прямо в 1С: открытый табличный документ редактируется, как обычная таблица.
Что проверить в структуре
- Одна строка заголовков. Шапка из трёх объединённых строк сбивает сопоставление. Оставьте одну строку с названиями колонок.
- Нет объединённых ячеек в данных. Объединение «Группа: Канцтовары» на всю ширину загрузится как товар с именем «Группа: Канцтовары».
- Нет итоговых строк. «Итого», «Всего по разделу» — удалить.
- Нет пустых строк в середине. Часть обработок считает пустую строку концом данных.
- Одна колонка — один реквизит. «Артикул / наименование» в одной ячейке придётся разделить.
Что проверить в значениях
- 🔢 Числа. Разделитель тысяч часто сохраняется как неразрывный пробел:
1 250,00. Визуально всё верно, а 1С видит строку. Выделите колонку и задайте числовой формат или замените пробелы. - 📅 Даты. Должны быть в одном виде:
15.03.2025, а не вперемешку с «15 марта». - 🔤 Лишние пробелы. «Бумага А4 » и «Бумага А4» — для 1С два разных товара.
- 🏷️ Ключ поиска. Решите заранее, по какому полю 1С будет искать существующие элементы: артикул, код или ИНН. Колонка с ключом должна быть заполнена во всех строках без повторов.
Пробную загрузку делайте на копии базы. Массовая загрузка в рабочую базу без проверки — самый быстрый способ получить 500 дублей номенклатуры, которые потом придётся помечать на удаление вручную.
Способ 1. Встроенная команда «Загрузить» — быстрее всего
В типовых конфигурациях на Библиотеке стандартных подсистем (БП 3.0, УТ 11, ЗУП 3.1, КА 2, ERP) есть механизм «Загрузка данных из файла». Он работает с MXL, XLSX, XLS, ODS и CSV. Команда появляется там, где её включили разработчики конфигурации: в списках части справочников и в табличных частях документов.
Загрузка MXL в справочник
На примере номенклатуры в Бухгалтерии 3.0:
- Откройте
Справочники → Товары и услуги → Номенклатура. - Встаньте в нужную группу — новые элементы попадут в неё.
- Нажмите «Загрузить» в командной панели списка.
- В открывшейся форме выберите файл MXL. Как вариант — скопируйте строки из открытого MXL и вставьте их в таблицу формы через
Ctrl+V. - На шаге сопоставления проверьте, какая колонка файла легла в какой реквизит. Колонки без пары оставьте без сопоставления.
- Посмотрите итог: 1С покажет, какие строки сопоставлены с существующими элементами, а какие будут созданы как новые.
- Подтвердите загрузку и проверьте результат в списке.
Загрузка MXL в табличную часть документа
Подходит для поступления товаров, реализации, заказов и других документов со списком позиций:
- Создайте документ и заполните шапку: контрагент, договор, склад.
- В табличной части «Товары» нажмите «Загрузить».
- Выберите MXL-файл, сопоставьте колонки: номенклатура, количество, цена.
- Строки, для которых 1С не нашла товар, будут подсвечены. Их можно сопоставить вручную, выбрав элемент из справочника.
- Подтвердите перенос — строки появятся в документе.
Если в файле есть артикулы, сопоставляйте номенклатуру по артикулу, а не по наименованию. Названия у поставщика и у вас почти никогда не совпадают символ в символ.
Способ 2. Универсальная обработка «Загрузка данных из табличного документа»
Когда команды «Загрузить» в нужном месте нет — например, нужно залить регистр сведений
с ценами или справочник, где разработчики её не предусмотрели, — выручает универсальная внешняя обработка. Её файл обычно называется ЗагрузкаДанныхИзТабличногоДокумента.epf. Обработка распространяется фирмой 1С для пользователей с действующей поддержкой; берите версию для управляемых форм.
Как запустить обработку
- Главное меню →
Файл → Открыть→ выберите файл.epf. - Если 1С показывает предупреждение о безопасности, нужен пользователь с правом открывать внешние обработки. В карточке пользователя (
Администрирование → Настройки пользователей и прав → Пользователи) администратор может снять флажок защиты от опасных действий.
Порядок загрузки
- Выберите режим загрузки: в справочник, в табличную часть или в регистр сведений.
- Укажите вид объекта: например, справочник «Номенклатура».
- Откройте MXL-файл командой открытия файла в форме обработки. Данные появятся на вкладке табличного документа.
- Перейдите к настройке колонок. Для каждого реквизита отметьте флажок загрузки и укажите номер колонки файла.
- Задайте поле поиска — реквизит, по которому обработка найдёт уже существующий элемент. Без него каждая строка создаст новый элемент.
- Укажите номер первой строки с данными — обычно 2, если в первой строке заголовки.
- Запустите контроль заполнения. Обработка покажет строки, где значение не нашлось или не преобразовалось.
- Только после чистого контроля — загрузка.
Настройки колонок можно сохранить в файл и использовать при следующей загрузке. Если поставщик присылает прайс каждый месяц в одном виде, это экономит время на сопоставлении.
Способ 3. Чтение MXL встроенным языком
Код нужен, когда загрузка повторяется регулярно, файл нестандартный или после загрузки надо что-то посчитать. Табличный документ читается методом Прочитать(), а значения ячеек берутся через Область().
Пример ниже читает MXL с колонками «Наименование», «Артикул», «Цена», пропускает пустые строки, чистит числа от неразрывных пробелов и складывает всё в таблицу значений. Файл предварительно помещается во временное хранилище на клиенте — стандартным диалогом выбора файла (в платформе 8.3.13 и новее — методом НачатьПомещениеФайлаНаСервер).
&НаСервере
Функция ПрочитатьMXL(АдресФайла)
ИмяФайла = ПолучитьИмяВременногоФайла("mxl");
ДанныеФайла = ПолучитьИзВременногоХранилища(АдресФайла);
ДанныеФайла.Записать(ИмяФайла);
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ИмяФайла);
УдалитьФайлы(ИмяФайла);
Результат = Новый ТаблицаЗначений;
Результат.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
Результат.Колонки.Добавить("Артикул", Новый ОписаниеТипов("Строка"));
Результат.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число"));
// Строка 1 - заголовки, данные со строки 2
Для НомерСтроки = 2 По ТабДок.ВысотаТаблицы Цикл
Наименование = СокрЛП(ТабДок.Область(НомерСтроки, 1, НомерСтроки, 1).Текст);
Если ПустаяСтрока(Наименование) Тогда
Продолжить;
КонецЕсли;
ЦенаТекст = СокрЛП(ТабДок.Область(НомерСтроки, 3, НомерСтроки, 3).Текст);
ЦенаТекст = СтрЗаменить(ЦенаТекст, Символы.НПП, "");
ЦенаТекст = СтрЗаменить(ЦенаТекст, " ", "");
ЦенаТекст = СтрЗаменить(ЦенаТекст, ",", ".");
НоваяСтрока = Результат.Добавить();
НоваяСтрока.Наименование = Наименование;
НоваяСтрока.Артикул = СокрЛП(ТабДок.Область(НомерСтроки, 2, НомерСтроки, 2).Текст);
Попытка
НоваяСтрока.Цена = Число(ЦенаТекст);
Исключение
Сообщить(СтрШаблон("Строка %1: цена ""%2"" не распознана",
Формат(НомерСтроки, "ЧГ=0"), ЦенаТекст));
КонецПопытки;
КонецЦикла;
Возврат Результат;
КонецФункции
Дальше таблицу значений можно показать пользователю для проверки, а затем записать: найти элемент по артикулу через НайтиПоРеквизиту("Артикул", ...) и создать новый, если не найден. Набор обязательных реквизитов при создании зависит от конфигурации — в БП 3.0 у номенклатуры, например, обязателен вид номенклатуры.
Не пишите такую загрузку прямо в типовую конфигурацию. Оформите её внешней обработкой или расширением — иначе первое же обновление конфигурации потребует ручного переноса доработки.
А «Конвертация данных»? Когда MXL — не тот формат
Частый вопрос: можно ли загрузить MXL через «Конвертацию данных» или «Универсальный обмен данными в формате XML». Нельзя. Эти механизмы работают с XML-файлами обмена, где передаются объекты с внутренними ссылками и правилами сопоставления. MXL — это просто таблица с текстом в ячейках.
Как выбрать путь:
- ✅ Разовый перенос списка (прайс, остатки, сотрудники в виде таблицы) — MXL и любой из трёх способов выше.
- ✅ Перенос между двумя базами 1С со ссылками, документами и движениями — XML-обмен по правилам «Конвертации данных». Таблица здесь потеряет связи.
- ✅ Регулярный обмен (раз в день, раз в час) — стандартная синхронизация данных или обмен по правилам, а не загрузка файлов вручную.
Если таблицу всё же выгрузили из другой 1С в MXL ради переноса справочника — это работает. Но ссылочные реквизиты (единица измерения, группа, ставка НДС) придут текстом и при загрузке сопоставятся по наименованию. Сверьте их заранее.
Загрузка MXL в разных конфигурациях 1С
Механизм «Загрузить» общий для конфигураций на БСП, различаются места, где он включён.
| Конфигурация | Где искать загрузку из файла | Типичный сценарий |
|---|---|---|
| Бухгалтерия 3.0 | Список Справочники → Товары и услуги → Номенклатура, табличные части документов поступления и реализации | Номенклатура поставщика, строки накладной |
| Управление торговлей 11 | Команда «Загрузить» в табличных частях заказов и документов продажи и закупки | Прайс поставщика, заказ клиента из таблицы |
| ЗУП 3.1 и другие конфигурации на БСП | Команда «Загрузить» там, где она включена в списке или табличной части; иначе — универсальная обработка | Данные по списку сотрудников, разовые таблицы |
| Регистры сведений и объекты без команды | Универсальная обработка (способ 2) | Цены в регистр сведений, нестандартные справочники |
Если команды в нужном списке не видно, загляните в меню Ещё командной панели — часть команд скрыта туда по умолчанию. Не нашлось и там — переходите к универсальной обработке.
Ошибки при загрузке файла MXL и что с ними делать
Отдельно про файлы из 1С 7.7. Платформа 8.3 обычно открывает их табличные документы, но оформление может съехать, а кодировка текста — исказиться на редких символах. Проверьте содержимое после открытия и при необходимости пересохраните файл уже из 8.3.
Частые вопросы
Чем открыть файл MXL без установленной 1С?
Как перевести MXL в Excel?
Файл → Открыть, затем Файл → Сохранить как и выберите тип «Лист Excel». Формулы не появятся — переносятся значения и оформление.Как сделать MXL из Excel?
Файл → Открыть и сохраните как «Табличный документ». Но для загрузки это обычно не нужно: механизм «Загрузить» принимает XLSX напрямую.