Вставка таблицы из Excel в 1С: цифры, даты и коды остаются на месте

· 12 мин

Содержание

Выделите диапазон в Excel, нажмите Ctrl+C, поставьте курсор в первую ячейку нужной области в 1С и нажмите Ctrl+V. Это вся механика. Искажения возникают не при вставке, а из-за того, что лежит в ячейках: числа с неразрывным пробелом, коды без ведущих нулей, даты-тексты, объединённые ячейки.

Типичная ситуация: менеджер прислал прайс на 800 позиций, вы вставили его в табличную часть, а суммы не считаются, артикул 00415 превратился в 415, а часть строк «уехала» на соседние. Разберём, как подготовить лист, куда вставлять, чем заменить буфер обмена, когда объём большой, и что делать, если данные приходят каждый день.

Подготовьте лист Excel до копирования

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

Что проверить на листе:

  • 🔹 Одна строка шапки, дальше только данные. Заголовок отчёта, логотип, строки «Итого» и пустые строки в середине таблицы удалите. Они превратятся в мусорные строки.
  • 🔹 Нет объединённых ячеек. Выделите лист, на вкладке «Главная» нажмите «Объединить и поместить в центре» ещё раз: объединение снимется. Заполните образовавшиеся пустоты значениями (выделить пустые ячейки через «Найти и выделить» → «Выделить группу ячеек» → «Пустые ячейки», ввести = и стрелку вверх, подтвердить Ctrl+Enter).
  • 🔹 Нет скрытых строк и столбцов. Копирование выделенного диапазона с фильтром берёт только видимые строки, а скрытые столбцы могут сместить порядок колонок. Раскройте всё либо уберите лишнее.
  • 🔹 Формулы заменены значениями. Скопируйте колонку, вставьте поверх через «Специальная вставка» → «Значения». Ссылки на другие книги в 1С не перенесутся.
  • 🔹 Порядок колонок совпадает с порядком в 1С. Если в табличной части идут Номенклатура, Количество, Цена, сделайте так же на листе. Колонки удобно переставить в Excel, чем потом переназначать в обработке.

Числа, которые не являются числами

Самая частая причина искажений: число выглядит как число, но в ячейке лежит текст. Признаки: зелёный уголок в ячейке, выравнивание по левому краю, СУММ по колонке даёт ноль.

Чаще всего виноваты:

  1. Неразрывный пробел (код 160) как разделитель разрядов. Он приходит из выгрузок банков и других программ. Обычная замена пробела его не находит, нужно в «Найти и заменить» вставить сам символ: зажмите Alt и наберите 0160 на цифровой клавиатуре.
  2. Запятая и точка. Если в 1С десятичный разделитель настроен запятой, а в листе стоит точка, значение вставится как строка.
  3. Пробелы в начале и конце текста. Уберите функцией СЖПРОБЕЛЫ либо через «Текст по столбцам».
  4. Апостроф перед числом. Excel хранит его как признак текста, на экране он не виден.

Быстрый способ превратить текстовые числа в настоящие: выделить колонку, «Данные» → «Текст по столбцам» → «Готово». Либо умножить колонку на единицу через специальную вставку.

Коды, которые нельзя превращать в числа

Артикул 00415, ИНН 0278123456, штрихкод из 13 цифр, номер счёта, КПП. Если Excel сделал из них числа, ведущие нули потеряны, а длинный штрихкод превращён в запись вида 4,6E+12. Исправлять это после вставки в 1С поздно: восстановить ноль можно только зная длину кода.

Порядок действий:

  1. До вставки данных в лист задайте колонке формат «Текстовый» (Ctrl+1 → «Текстовый»).
  2. Если данные уже в числовом виде, одного смены формата мало. Нужно заново ввести значения или воспользоваться формулой =ТЕКСТ(A2;"0000000000"), где количество нулей равно длине кода.
  3. Проверьте, что в ячейке слева не появился зелёный уголок «число сохранено как текст». Для кодов это нормально.

Не открывайте CSV с кодами двойным щелчком. Excel сам решит, что это числа, и сразу обрежет нули. Откройте файл через «Данные» → «Получение внешних данных из текста» и для колонок с кодами выберите формат «Текстовый» в мастере.

Даты

Дата в Excel хранится числом. Если ячейка выровнена по левому краю, это текст вида 05.10.26 или 5 окт 2026. Такой текст 1С не распознает как дату. Приведите колонку к формату ДД.ММ.ГГГГ и убедитесь, что ячейки хранят настоящие даты: после смены формата на «Общий» должно появиться число около 46000.

Куда вставлять: табличный документ, табличная часть, список

Одна и та же комбинация Ctrl+V ведёт себя по-разному в разных местах. Выбирайте место по задаче.

Куда вставляетеЧто происходитКогда подходит
Табличный документ (макет, печатная форма, результат отчёта)Ячейки переносятся как есть, вместе с форматированиемНужно посмотреть данные, подготовить печатную форму, потом обработать программно
Табличная часть документаДанные ложатся в строки, колонки сопоставляются по порядку отображенияНебольшие списки: десятки строк товаров, услуг, сотрудников
Список справочникаПрямая вставка, как правило, недоступнаДля справочников используйте загрузку данных из файла

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

Вставка в табличный документ

Это самый безопасный вариант для проверки. Создайте пустой табличный документ, например, в обработке или через внешнюю печатную форму, либо воспользуйтесь любой формой с полем табличного документа. Вставьте данные и посмотрите: ровные ли колонки, не слиплись ли значения, не появились ли строки с одной ячейкой.

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

Перед большой вставкой в рабочий документ проведите репетицию на копии базы или на пустом документе. Табличная часть после вставки 800 строк не откатывается одной кнопкой: придётся удалять строки вручную.

Вставка в табличную часть

Алгоритм:

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

Если вставка искажает кириллицу и спецсимволы

Когда данные идут через буфер обмена, кодировка почти никогда не страдает: Windows передаёт текст в Юникоде. «Кракозябры» возникают на промежуточных файлах, чаще всего на CSV.

Что происходит. Excel по умолчанию сохраняет CSV (разделитель — запятая) в кодировке Windows-1251, а в российской локали разделителем становится точка с запятой. Программа, ожидающая UTF-8, увидит ТеÑ.... Обратная ситуация: файл в UTF-8 без метки порядка байтов Excel открывает в 1251 и показывает те же иероглифы.

Что сделать:

  • Сохраняйте через «Сохранить как» → «CSV UTF-8 (разделитель — запятая)», если принимающая сторона ждёт UTF-8.
  • При загрузке в 1С из текстового файла указывайте кодировку явно, если в настройках чтения она предлагается. Не полагайтесь на значение по умолчанию.
  • Перед отправкой файла другому человеку откройте его в блокноте: если видите читаемый текст, кодировка подходит.

Невидимые символы и переносы

Отдельный класс проблем: символы, которые не видны на листе, но ломают данные.

  • Перенос строки внутри ячейки (Alt+Enter). В CSV и в буфере такая ячейка берётся в кавычки, но не каждая обработка это корректно читает. Строка наименования превращается в две. Замените переносы пробелами: в «Найти и заменить» в поле «Найти» нажмите Ctrl+J, в поле «Заменить на» поставьте пробел.
  • Неразрывный пробел внутри наименований. Поиск по справочнику «Привет мир» с обычным пробелом не найдёт «Привет мир» с неразрывным. Заменяйте их на обычные.
  • Табуляция в тексте. Буфер обмена Excel разделяет ячейки табуляцией, лишняя табуляция внутри текста сдвигает колонки.
  • Кавычки. Типографские «ёлочки» и прямые " в наименованиях могут по-разному обрабатываться в CSV. Если в файле встречаются прямые кавычки, они должны быть удвоены, иначе строка разорвётся.

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

Промежуточный файл для больших объёмов

Буфер обмена удобен до нескольких сотен строк. На десятках тысяч строк Excel подвисает при копировании, а клиент 1С при вставке. Для больших таблиц надёжнее файл.

Варианты, от простого к универсальному:

МетодПлюсыРиски
Файл .xlsx или .xls, который читает штатная загрузка из файлаНе нужно думать о кодировке, сохраняются типыСлишком «навороченный» лист с макросами и формулами читается медленно
Файл .csvЛёгкий, открывается где угодноКодировка, разделитель, ведущие нули, переносы строк
Табличный документ 1С, сохранённый как .mxlФормат платформы, ничего не теряется внутри 1СБесполезен для обмена с внешними программами

Рабочая схема для объёма от нескольких тысяч строк:

  1. В Excel оставьте только нужные колонки и один лист. Уберите форматирование и условные форматы, они раздувают файл.
  2. Сохраните копию файла, а не оригинал. Работайте с копией.
  3. Разбейте файл на части по 5-10 тысяч строк, если загрузка идёт на сервере с ограниченной памятью или если вы боитесь, что ошибка в середине не даст понять, что уже загружено.
  4. Загрузите первую порцию и проверьте результат отчётом или списком, прежде чем грузить остальное.

Загрузка данных из табличного документа и из файла

Для справочников и документов в типовых конфигурациях есть штатный механизм загрузки из файла. В списках справочников, например, номенклатуры или контрагентов, поищите в меню «Ещё» либо в командной панели список команду со словами «Загрузить» или «Загрузка данных из файла». Точное расположение зависит от конфигурации и релиза, поэтому открывайте именно тот список, куда грузите.

Как проходит загрузка:

  1. Выбираете файл либо вставляете данные в окно загрузки прямо из буфера. Многие реализации принимают вставку из Excel.
  2. Сопоставляете колонки файла с реквизитами. Обязательные реквизиты (наименование, единица измерения) отмечены. Можно сохранить сопоставление, чтобы в следующий раз не повторять.
  3. Выбираете режим: создавать только новые элементы либо обновлять существующие. Для обновления нужно указать реквизит, по которому система найдёт элемент: код, артикул, ИНН.
  4. Запускаете проверку (если она есть), смотрите список ошибок, исправляете файл и загружаете снова.

Отдельная обработка «Загрузка данных из табличного документа» тоже существует. Она распространяется как внешняя, её скачивают с диска ИТС или со страниц поддержки конфигураций. Её идея та же: данные из табличного документа раскладываются в справочник или документ по настроенному соответствию колонок. Внешнюю обработку подключайте только из надёжных источников и сначала проверяйте на тестовой базе: обработка получает полный доступ к данным.

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

Автоматизация: чтение Excel из кода и обмен по правилам

Когда файл приходит еженедельно, а вставлять его вручную надоело, пора программировать загрузку. Здесь два пути.

Чтение через COM

Самый распространённый способ в клиентской части: открыть Excel как COM-объект и пройти по ячейкам. Требует установленного Excel на машине, где работает код (на сервере или на клиенте).

Excel = Новый COMОбъект("Excel.Application");
Excel.DisplayAlerts = Ложь;
Книга = Excel.Workbooks.Open(ПутьКФайлу);
Лист = Книга.Worksheets(1);
ПоследняяСтрока = Лист.UsedRange.Rows.Count;

Для Сч = 2 По ПоследняяСтрока Цикл
	Артикул = СокрЛП(Строка(Лист.Cells(Сч, 1).Value));
	Количество = СтрЗаменить(СокрЛП(Строка(Лист.Cells(Сч, 2).Value)), Символы.НПП, "");
	Количество = Число(СтрЗаменить(Количество, ",", "."));
	// дальше: найти номенклатуру по артикулу и заполнить строку
КонецЦикла;

Книга.Close(Ложь);
Excel.Quit();

Что здесь решает проблемы из первой части. Значение читается из ячейки, а не из буфера, поэтому форматирование не мешает. Неразрывные пробелы убираются явно. Артикул читается как строка, ведущие нули сохраняются, если в ячейке они были (для этого колонка должна быть текстовой).

Excel остаётся в памяти, если код упал до Excel.Quit(). Оберните чтение в Попытка ... Исключение ... КонецПопытки и закрывайте приложение в любом случае, иначе на сервере накопятся зависшие процессы.

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

Обмен по правилам

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

Критерии, чтобы не строить лишнее:

  • Один раз в квартал и меньше 500 строк: вставка вручную с подготовленным листом.
  • Регулярно, формат файла стабилен: настроенная загрузка из файла или своя обработка.
  • Нужен двусторонний обмен с другой системой: правила обмена, но это уже отдельный проект.

Когда вставка всё равно пошла не так

Практичные диагнозы по симптомам.

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

Частые вопросы

Сколько строк можно вставить через буфер обмена за раз?
Жёсткого предела для пользователя нет, но уже на нескольких тысячах строк и десятках колонок вставка заметно тормозит, а клиент может зависнуть. Разумный потолок для рабочей вставки порядка нескольких сотен строк, дальше удобнее файл.
Почему вставка работает в одной форме и не работает в другой?
Вставка нескольких строк доступна не во всех формах и колонках: ссылочные реквизиты, нередактируемые поля и формы без подходящей команды вставку не принимают. В этом случае используйте загрузку из файла.
Можно ли вставить не только значения, но и формат ячеек?
В табличный документ формат переносится вместе с данными. В табличную часть и в справочник форматирование не нужно: переносятся только значения.
Excel открывает CSV из 1С с одной колонкой. Это ошибка?
Нет. Excel использует разделитель из региональных настроек Windows. Если в файле точка с запятой, а у вас в системе запятая, всё окажется в одной колонке. Откройте файл через мастер импорта текста и выберите нужный разделитель.
Как не потерять данные, если вставка прошла неудачно?
Не проводите документ до проверки. Запишите его, сверьте количество строк и итоговую сумму с исходным листом. Если что-то не сходится, удалите документ целиком и повторите вставку на исправленном листе.