Товары из таблицы Excel в документ 1С: встроенная загрузка, обработка с ИТС и свой код

· 10 мин

Содержание

Табличную часть документа в 1С 8.3 заполняют из Excel без программиста: в БП 3.0, УТ 11 и ERP над списком товаров в документе есть команда загрузки из файла. Она открывает окно-таблицу, куда вставляют строки из Excel через Ctrl+C / Ctrl+V, затем программа сопоставляет номенклатуру и переносит строки в документ.

Частое заблуждение: «чтобы загрузить Excel в 1С, нужна платная обработка». Платная нужна редко. Встроенной команды хватает для разовой загрузки сотни-другой строк. Универсальная обработка с диска ИТС закрывает нетиповые случаи, а свой код на встроенном языке оправдан при регулярной загрузке одного и того же формата.

Подготовка таблицы Excel перед загрузкой в 1С

Девять из десяти проблем при импорте рождаются в самом файле. Пять минут на чистку таблицы экономят ручной разбор «несопоставленных» строк.

Требования к файлу:

  • 📌 Одна строка заголовков. Никаких «шапок» накладной сверху, логотипов и итоговых строк снизу.
  • 📌 Без объединённых ячеек. Объединение ломает чтение колонок: значение попадает только в первую ячейку.
  • 📌 Значения, а не формулы. Скопируйте лист и вставьте через Специальная вставка → Значения. Формулы со ссылками на другие книги при чтении могут дать пустоту.
  • 📌 Числа как числа. Количество и цена должны быть числовыми ячейками. Зелёный треугольник в углу ячейки Excel — признак числа, сохранённого как текст.
  • 📌 Артикулы и коды как текст. Колонку с артикулом 00125 переведите в текстовый формат до вставки данных, иначе Excel срежет ведущие нули.
  • 📌 Без пустых строк в середине. Некоторые способы загрузки останавливаются на первой пустой строке.

Отдельно почистите пробелы. Поставщики часто выгружают наименования с неразрывными пробелами и пробелами в конце. Для 1С Кабель ВВГ 3х2,5 и Кабель ВВГ 3х2,5 — разные строки. Функция СЖПРОБЕЛЫ в Excel убирает обычные пробелы, неразрывные заменяют через Ctrl+H (в поле «Найти» вводят символ с кодом 0160 через Alt+0160 на цифровой клавиатуре).

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

Минимальный набор колонок для товарной табличной части:

КолонкаЗачемФормат в Excel
Артикул или штрихкодпоиск номенклатурытекст
Наименованиезапасной поиск, создание новой позициитекст
Количествообязательное поле строкичисло
Ценарасчёт суммычисло, без «руб.»
Ставка НДС (если нужна)заполнение ставкитекст: «20%», «Без НДС»

Встроенная команда загрузки в табличную часть документа

В типовых конфигурациях на базе БСП (БП 3.0, УТ 11, КА 2, ERP 2) загрузка табличной части из файла встроена в формы документов. Обычно команда стоит прямо над таблицей товаров: кнопкой «Загрузить» или пунктом в меню Ещё. В документах поступления и реализации она есть точно; в остальных документах ищите её в меню Ещё над табличной частью.

Порядок загрузки

  1. Создайте документ и заполните шапку: организацию, контрагента, склад. Склад и ставки часто подставляются в строки из шапки.
  2. Перейдите на вкладку с товарами и выберите команду загрузки из файла.
  3. Откроется окно с пустой таблицей. Её колонки — это поля табличной части: номенклатура, количество, цена и т.д.
  4. В Excel выделите диапазон без заголовков и скопируйте. В 1С щёлкните в первую ячейку таблицы и вставьте Ctrl+V. Порядок колонок в Excel должен совпадать с порядком колонок в окне.
  5. Если колонки в файле стоят иначе, переставьте их в Excel или вставляйте по одной колонке.
  6. Нажмите «Далее». Программа ищет номенклатуру и показывает результат сопоставления.
  7. Проверьте несопоставленные строки (о них — в следующем разделе) и подтвердите загрузку.
  8. Строки появятся в документе. Проверьте итог по сумме с итогом в Excel, затем запишите документ.

В том же окне обычно есть вариант загрузки из файла с диска: можно указать .xlsx или .csv вместо копирования. Копирование через буфер надёжнее — сразу видно, что вставилось.

Загрузка добавляет строки к уже существующим. Если повторить её в том же документе, товары задвоятся. Перед повторной попыткой очистите табличную часть кнопкой «Очистить» или удалите строки вручную.

Справочник номенклатуры тоже загружается

Если товаров ещё нет в базе, сначала загрузите их в справочник. В списке Справочники → Товары и услуги → Номенклатура (БП 3.0) или НСИ и администрирование → Номенклатура (УТ 11) есть команда загрузки из файла — работает по тому же принципу: вставка, сопоставление, создание новых элементов. Загружайте в нужную группу, чтобы новые позиции получили правильный вид номенклатуры и счета учёта.

Как 1С находит номенклатуру: настройка поиска и сопоставления

Сопоставление — сердце любой загрузки. Программа берёт значение из колонки и ищет элемент справочника по одному или нескольким реквизитам.

Типичные ключи поиска:

КлючНадёжностьКогда использовать
Штрихкодвысокаятовары с заводской маркировкой, если штрихкоды заведены в базе
Артикулвысокаяу позиций заполнен артикул, и он уникален
Кодвысокаяфайл выгружен из этой же базы
Наименованиенизкаядругих ключей нет

Строки, для которых элемент не найден, выделяются в окне сопоставления. Их можно:

  • 🔗 сопоставить вручную — выбрать элемент справочника в ячейке;
  • ➕ создать новые позиции (если загрузка это позволяет и у вас есть права на добавление номенклатуры);
  • ✂️ исключить из загрузки и разобраться позже.

Если поиск по артикулу находит несколько элементов, загрузка не угадает, какой нужен. Проблема в справочнике, а не в файле: дубли артикулов надо устранить до загрузки.

При регулярных закупках у одного поставщика заполните номенклатуру поставщика: соответствие его артикулов вашим позициям. В УТ 11 и ERP для этого есть отдельный справочник номенклатуры контрагентов, и сопоставление при следующих загрузках проходит само.

Универсальная обработка «Загрузка данных из табличного документа»

Когда встроенной команды нет или её не хватает, берут внешнюю обработку ЗагрузкаДанныхИзТабличногоДокумента.epf. Её распространяет фирма 1С на диске ИТС, есть версии для обычных и для управляемых форм. Обработка подходит для любой конфигурации на платформе 8.3, включая нетиповые.

Что она умеет:

  • 📥 загружать в справочник, в табличную часть документа или справочника, в регистр сведений ;
  • 🔎 искать ссылочные значения по любому реквизиту, который вы укажете;
  • ✏️ подставлять значение по умолчанию, если колонка в файле пустая;
  • 🧮 вычислять значение колонки выражением на встроенном языке.

Как загрузить табличную часть обработкой

  1. Откройте обработку: Файл → Открыть (кнопка главного меню), укажите файл .epf. Для открытия внешних обработок у пользователя должно быть соответствующее право.
  2. Выберите режим загрузки в табличную часть.
  3. Укажите ссылку на документ и имя табличной части (например, «Товары»).
  4. Загрузите данные: откройте файл Excel кнопкой чтения или вставьте строки в табличный документ обработки.
  5. На вкладке настройки колонок отметьте, какие реквизиты загружать. Для каждого укажите номер колонки файла.
  6. Для ссылочных реквизитов (номенклатура, единица измерения, ставка НДС) выберите поле поиска: артикул, код, наименование.
  7. Для реквизитов без колонки задайте значение по умолчанию: например, единицу «шт».
  8. Запустите контроль заполнения, исправьте строки с ошибками и нажмите «Загрузить».

Обработка пишет данные напрямую в объект и не выполняет расчёты формы документа. Если в файле есть только количество и цена, сумма и НДС сами не посчитаются. Загрузите сумму колонкой или задайте её выражением, затем откройте документ и проверьте итоги.

Перед первой загрузкой в рабочую базу сделайте резервную копию или проверьте настройку на копии. Ошибка в поле поиска при загрузке в справочник создаёт сотни дублей.

Своя обработка и правила обмена: когда формат повторяется

Если каждый месяц приходит файл одной структуры (прайс поставщика, выгрузка с маркетплейса, отчёт склада), удобнее один раз написать внешнюю обработку. Пользователь нажимает одну кнопку и не настраивает колонки каждый раз.

Ниже — серверная часть такой обработки. Она читает файл .xlsx через табличный документ платформы (Excel на компьютере не нужен), ищет номенклатуру по артикулу и заполняет табличную часть «Товары» переданного документа. Структура файла: колонка 1 — артикул, 2 — количество, 3 — цена, первая строка — заголовки.

&НаСервере
Функция ВЧисло(Знач Текст)
    Текст = СтрЗаменить(СокрЛП(Текст), Символы.НПП, "");
    Текст = СтрЗаменить(Текст, " ", "");
    Текст = СтрЗаменить(Текст, ",", ".");
    Если ПустаяСтрока(Текст) Тогда
        Возврат 0;
    КонецЕсли;
    Попытка
        Возврат Число(Текст);
    Исключение
        Возврат 0;
    КонецПопытки;
КонецФункции

&НаСервере
Процедура ЗаполнитьТовары(АдресФайла, СсылкаДокумента)
    ИмяФайла = ПолучитьИмяВременногоФайла("xlsx");
    ПолучитьИзВременногоХранилища(АдресФайла).Записать(ИмяФайла);

    ТабДок = Новый ТабличныйДокумент;
    ТабДок.Прочитать(ИмяФайла);
    УдалитьФайлы(ИмяФайла);

    ДокументОбъект = СсылкаДокумента.ПолучитьОбъект();
    Ненайденные = Новый Массив;

    Для НомерСтроки = 2 По ТабДок.ВысотаТаблицы Цикл
        Префикс = "R" + Формат(НомерСтроки, "ЧГ=0") + "C";
        Артикул = СокрЛП(ТабДок.Область(Префикс + "1").Текст);
        Если ПустаяСтрока(Артикул) Тогда
            Продолжить;
        КонецЕсли;

        Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул);
        Если Номенклатура.Пустая() Тогда
            Ненайденные.Добавить(Артикул);
            Продолжить;
        КонецЕсли;

        Строка = ДокументОбъект.Товары.Добавить();
        Строка.Номенклатура = Номенклатура;
        Строка.Количество   = ВЧисло(ТабДок.Область(Префикс + "2").Текст);
        Строка.Цена         = ВЧисло(ТабДок.Область(Префикс + "3").Текст);
        Строка.Сумма        = Строка.Количество * Строка.Цена;
    КонецЦикла;

    ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);

    Для Каждого Артикул Из Ненайденные Цикл
        Сообщить("Не найдена номенклатура с артикулом " + Артикул);
    КонецЦикла;
КонецПроцедуры

На клиенте файл помещают во временное хранилище (например, через НачатьПомещениеФайлаНаСервер или ПоместитьФайл) и передают адрес в процедуру. Ставку и сумму НДС, счета учёта и прочие реквизиты строки дозаполните по правилам вашей конфигурации: в типовых документах для этого есть свои процедуры расчёта, и надёжнее открыть документ после загрузки и пересчитать строки штатными командами формы.

НайтиПоРеквизиту вернёт первый найденный элемент. Если артикулы в базе не уникальны, замените его запросом и выводите предупреждение, когда находится больше одной позиции.

Правила обмена (обработка «Универсальный обмен данными в формате XML» с правилами из «Конвертации данных») для Excel используют редко. Они рассчитаны на перенос между базами 1С через XML. Связка «Excel → промежуточная база → правила обмена → рабочая база» оправдана только для крупной миграции с многоуровневым сопоставлением справочников.

Какой способ загрузки выбрать?

Что ломается при импорте из Excel и как это исправить

Диагностика: выберите симптом

После любой загрузки сверьте два числа: количество строк и итоговую сумму документа с итогами в Excel. Расхождение даже на одну строку — повод найти её сейчас, а не при инвентаризации.

Автоматическая загрузка по расписанию

Регулярную загрузку можно поручить базе. Для этого собственную обработку делают «дополнительной» по стандарту БСП: в её модуле описывается команда с типом вызова серверного метода. Затем обработку загружают в Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки, и в карточке для такой команды настраивают расписание выполнения.

Нюансы, на которых спотыкаются:

  • 🖥️ Файл ищет сервер, а не ваш компьютер. В клиент-серверном варианте путь вида C:\Users\Buh\Desktop\price.xlsx с сервера недоступен. Кладите файл в сетевую папку, к которой есть доступ у учётной записи службы сервера 1С.
  • ⏰ Файловая база. Регламентные задания в файловом варианте выполняются, только пока открыт хотя бы один сеанс 1С. Ночью при закрытой программе загрузка не произойдёт.
  • 📄 Архив обработанных файлов. После загрузки обработка должна переносить файл в папку «Загружено», иначе при следующем запуске тот же файл загрузится повторно.
  • 📝 Протокол. Пишите результат в журнал регистрации (ЗаписьЖурналаРегистрации): сколько строк загружено, какие артикулы не найдены. Без протокола об ошибках узнают через месяц.

Для документов при автозагрузке разумно записывать их без проведения. Бухгалтер проверяет и проводит сам — так ошибка в файле поставщика не попадёт в учёт незаметно.

Частые вопросы о загрузке из Excel

Нужен ли установленный Excel, чтобы загрузить файл в 1С?
Нет. Платформа 8.3 читает .xlsx своим табличным документом. Excel нужен только чтобы подготовить файл, и для этого подойдёт любой табличный редактор.
Что лучше: .xlsx, .xls или .csv?
Надёжнее всего .xlsx. В .csv путаются разделители (запятая или точка с запятой) и кодировка, из-за чего кириллица превращается в нечитаемые символы.
Можно ли отменить загрузку в документ?
Пока документ не записан — закройте его без сохранения. Если записан — удалите лишние строки вручную или очистите табличную часть и загрузите заново.
Работает ли загрузка из Excel в 1С:Фреш и облачных базах?
Встроенная команда загрузки из файла работает и в облаке. Внешние обработки в сервисе подключаются с ограничениями, поэтому в облаке начинайте со встроенных средств.
Сколько строк можно загрузить за раз?
Жёсткого лимита в несколько сотен строк нет, но документ на тысячи строк долго открывается и проводится. Большие объёмы удобнее делить на несколько документов.