Вставка таблицы из Excel в 1С: цифры, даты и коды остаются на месте
Содержание
Выделите диапазон в Excel, нажмите Ctrl+C, поставьте курсор в первую ячейку нужной области в 1С и нажмите Ctrl+V. Это вся механика. Искажения возникают не при вставке, а из-за того, что лежит в ячейках: числа с неразрывным пробелом, коды без ведущих нулей, даты-тексты, объединённые ячейки.
Типичная ситуация: менеджер прислал прайс на 800 позиций, вы вставили его в табличную часть, а суммы не считаются, артикул 00415 превратился в 415, а часть строк «уехала» на соседние. Разберём, как подготовить лист, куда вставлять, чем заменить буфер обмена, когда объём большой, и что делать, если данные приходят каждый день.
Подготовьте лист Excel до копирования
Девять проблем из десяти решаются в Excel, а не в 1С. Пять минут на лист сэкономят час на исправление документа.
Что проверить на листе:
- 🔹 Одна строка шапки, дальше только данные. Заголовок отчёта, логотип, строки «Итого» и пустые строки в середине таблицы удалите. Они превратятся в мусорные строки.
- 🔹 Нет объединённых ячеек. Выделите лист, на вкладке «Главная» нажмите «Объединить и поместить в центре» ещё раз: объединение снимется. Заполните образовавшиеся пустоты значениями (выделить пустые ячейки через «Найти и выделить» → «Выделить группу ячеек» → «Пустые ячейки», ввести
=и стрелку вверх, подтвердитьCtrl+Enter). - 🔹 Нет скрытых строк и столбцов. Копирование выделенного диапазона с фильтром берёт только видимые строки, а скрытые столбцы могут сместить порядок колонок. Раскройте всё либо уберите лишнее.
- 🔹 Формулы заменены значениями. Скопируйте колонку, вставьте поверх через «Специальная вставка» → «Значения». Ссылки на другие книги в 1С не перенесутся.
- 🔹 Порядок колонок совпадает с порядком в 1С. Если в табличной части идут Номенклатура, Количество, Цена, сделайте так же на листе. Колонки удобно переставить в Excel, чем потом переназначать в обработке.
Числа, которые не являются числами
Самая частая причина искажений: число выглядит как число, но в ячейке лежит текст. Признаки: зелёный уголок в ячейке, выравнивание по левому краю, СУММ по колонке даёт ноль.
Чаще всего виноваты:
- Неразрывный пробел (код 160) как разделитель разрядов. Он приходит из выгрузок банков и других программ. Обычная замена пробела его не находит, нужно в «Найти и заменить» вставить сам символ: зажмите
Altи наберите0160на цифровой клавиатуре. - Запятая и точка. Если в 1С десятичный разделитель настроен запятой, а в листе стоит точка, значение вставится как строка.
- Пробелы в начале и конце текста. Уберите функцией
СЖПРОБЕЛЫлибо через «Текст по столбцам». - Апостроф перед числом. Excel хранит его как признак текста, на экране он не виден.
Быстрый способ превратить текстовые числа в настоящие: выделить колонку, «Данные» → «Текст по столбцам» → «Готово». Либо умножить колонку на единицу через специальную вставку.
Коды, которые нельзя превращать в числа
Артикул 00415, ИНН 0278123456, штрихкод из 13 цифр, номер счёта, КПП. Если Excel сделал из них числа, ведущие нули потеряны, а длинный штрихкод превращён в запись вида 4,6E+12. Исправлять это после вставки в 1С поздно: восстановить ноль можно только зная длину кода.
Порядок действий:
- До вставки данных в лист задайте колонке формат «Текстовый» (
Ctrl+1→ «Текстовый»). - Если данные уже в числовом виде, одного смены формата мало. Нужно заново ввести значения или воспользоваться формулой
=ТЕКСТ(A2;"0000000000"), где количество нулей равно длине кода. - Проверьте, что в ячейке слева не появился зелёный уголок «число сохранено как текст». Для кодов это нормально.
Не открывайте CSV с кодами двойным щелчком. Excel сам решит, что это числа, и сразу обрежет нули. Откройте файл через «Данные» → «Получение внешних данных из текста» и для колонок с кодами выберите формат «Текстовый» в мастере.
Даты
Дата в Excel хранится числом. Если ячейка выровнена по левому краю, это текст вида 05.10.26 или 5 окт 2026. Такой текст 1С не распознает как дату. Приведите колонку к формату ДД.ММ.ГГГГ и убедитесь, что ячейки хранят настоящие даты: после смены формата на «Общий» должно появиться число около 46000.
Куда вставлять: табличный документ, табличная часть, список
Одна и та же комбинация Ctrl+V ведёт себя по-разному в разных местах. Выбирайте место по задаче.
| Куда вставляете | Что происходит | Когда подходит |
|---|---|---|
| Табличный документ (макет, печатная форма, результат отчёта) | Ячейки переносятся как есть, вместе с форматированием | Нужно посмотреть данные, подготовить печатную форму, потом обработать программно |
| Табличная часть документа | Данные ложатся в строки, колонки сопоставляются по порядку отображения | Небольшие списки: десятки строк товаров, услуг, сотрудников |
| Список справочника | Прямая вставка, как правило, недоступна | Для справочников используйте загрузку данных из файла |
Для табличной части платформа сопоставляет колонки по их порядку на экране. Поэтому перед вставкой посмотрите, какие колонки сейчас видны в вашей форме. Скрытые или переставленные пользователем колонки меняют сопоставление. Если порядок отличается от листа, переставьте колонки на листе, а не в 1С.
Вставка в табличный документ
Это самый безопасный вариант для проверки. Создайте пустой табличный документ, например, в обработке или через внешнюю печатную форму, либо воспользуйтесь любой формой с полем табличного документа. Вставьте данные и посмотрите: ровные ли колонки, не слиплись ли значения, не появились ли строки с одной ячейкой.
Если табличный документ показывает всё правильно, дальше можно обрабатывать его программно либо сохранить как промежуточный файл. Если картинка уже кривая, проблема на стороне листа Excel, и в 1С лезть бессмысленно.
Перед большой вставкой в рабочий документ проведите репетицию на копии базы или на пустом документе. Табличная часть после вставки 800 строк не откатывается одной кнопкой: придётся удалять строки вручную.
Вставка в табличную часть
Алгоритм:
- Создайте документ, откройте закладку с табличной частью. Она должна быть пустой, иначе новые строки добавятся к старым.
- Установите курсор в первую ячейку первой колонки, в которую хотите вставить данные.
- Нажмите
Ctrl+V. Если платформа поддерживает вставку нескольких строк в данной форме, строки добавятся. Если нет, команда вставки либо недоступна, либо вставится одно значение. - Проверьте итоги: количество строк, общую сумму, ссылки в колонке «Номенклатура». Для ссылочных колонок 1С ищет элемент справочника по тексту. Не найдёт, поле останется пустым либо система предложит создать элемент.
- Прогоните документ через «Записать», а не сразу через «Провести». Так видны ошибки заполнения без движений по регистрам.
Если вставка искажает кириллицу и спецсимволы
Когда данные идут через буфер обмена, кодировка почти никогда не страдает: 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С | Бесполезен для обмена с внешними программами |
Рабочая схема для объёма от нескольких тысяч строк:
- В Excel оставьте только нужные колонки и один лист. Уберите форматирование и условные форматы, они раздувают файл.
- Сохраните копию файла, а не оригинал. Работайте с копией.
- Разбейте файл на части по 5-10 тысяч строк, если загрузка идёт на сервере с ограниченной памятью или если вы боитесь, что ошибка в середине не даст понять, что уже загружено.
- Загрузите первую порцию и проверьте результат отчётом или списком, прежде чем грузить остальное.
Загрузка данных из табличного документа и из файла
Для справочников и документов в типовых конфигурациях есть штатный механизм загрузки из файла. В списках справочников, например, номенклатуры или контрагентов, поищите в меню «Ещё» либо в командной панели список команду со словами «Загрузить» или «Загрузка данных из файла». Точное расположение зависит от конфигурации и релиза, поэтому открывайте именно тот список, куда грузите.
Как проходит загрузка:
- Выбираете файл либо вставляете данные в окно загрузки прямо из буфера. Многие реализации принимают вставку из Excel.
- Сопоставляете колонки файла с реквизитами. Обязательные реквизиты (наименование, единица измерения) отмечены. Можно сохранить сопоставление, чтобы в следующий раз не повторять.
- Выбираете режим: создавать только новые элементы либо обновлять существующие. Для обновления нужно указать реквизит, по которому система найдёт элемент: код, артикул, ИНН.
- Запускаете проверку (если она есть), смотрите список ошибок, исправляете файл и загружаете снова.
Отдельная обработка «Загрузка данных из табличного документа» тоже существует. Она распространяется как внешняя, её скачивают с диска ИТС или со страниц поддержки конфигураций. Её идея та же: данные из табличного документа раскладываются в справочник или документ по настроенному соответствию колонок. Внешнюю обработку подключайте только из надёжных источников и сначала проверяйте на тестовой базе: обработка получает полный доступ к данным.
Загрузка с режимом «обновлять существующие» перезаписывает реквизиты. Если сопоставили по ошибке не ту колонку, получите испорченные цены или наименования у сотен элементов сразу. Перед первой загрузкой в рабочую базу сделайте копию информационной базы, либо загрузите сначала в тестовую.
Автоматизация: чтение 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 строк: вставка вручную с подготовленным листом.
- Регулярно, формат файла стабилен: настроенная загрузка из файла или своя обработка.
- Нужен двусторонний обмен с другой системой: правила обмена, но это уже отдельный проект.
Когда вставка всё равно пошла не так
Практичные диагнозы по симптомам.
Ctrl+J на пробел и повторите.ДД.ММ.ГГГГ и убедитесь, что ячейки выровнены по правому краю.