Справочники и Данные · 10 мин
Как загрузить данные в регистр сведений в 1С
Способы загрузки данных в регистр сведений 1С: вручную, через обработку, программно и из Excel. Примеры кода, типичные ошибки и проверка результата.
Регистр сведений в 1С хранит информацию в разрезе заданных измерений: курсы валют, цены номенклатуры, адреса контрагентов, настройки обмена. Загрузить в него данные можно несколькими способами — вручную через форму списка, типовыми обработками загрузки из табличного документа, программно через встроенный язык или через механизмы обмена. Выбор зависит от объёма данных, периодичности задачи и того, есть ли у вас доступ к конфигуратору.
Главная особенность регистра сведений — уникальность записи определяется набором измерений (и периодом, если регистр периодический). Поэтому при загрузке важно заранее решить, что делать с дублями: обновлять существующие записи, пропускать их или очищать регистр перед загрузкой. Ошибка на этом этапе приводит либо к отказу записи, либо к незаметному затиранию актуальных данных старыми.
Ниже разобраны рабочие способы загрузки: от простого ручного ввода до пакетной записи программным кодом, с примерами, типичными ошибками и способами проверить результат.
Как устроен регистр сведений и что проверить перед загрузкой
Прежде чем грузить данные, откройте структуру регистра в конфигураторе или через «Функции для технического специалиста» и зафиксируйте три вещи: состав измерений, состав ресурсов и периодичность. Измерения — это ключи записи (например, «Номенклатура» и «ТипЦен»), ресурсы — хранимые значения (например, «Цена»). Если регистр периодический, к ключу добавляется поле «Период», и одна комбинация измерений может иметь несколько записей на разные даты.
Также важно понять, подчинён ли регистр регистратору. Регистр сведений с режимом «Подчинение регистратору» заполняется только движениями документов — напрямую записать в него данные штатными средствами нельзя, потребуется создать документ-регистратор и провести его. Независимый регистр можно заполнять любым способом.
Загрузка вручную через форму списка
Самый простой способ подходит для небольшого количества записей — до нескольких десятков. Откройте регистр через меню «Все функции» → «Регистры сведений» (в обычном приложении) или через раздел, куда регистр включён в интерфейсе конфигурации. Нажмите «Создать», заполните измерения и ресурсы, сохраните запись.
Для периодических регистров при создании записи обязательно указывайте дату — от неё зависит, какое значение будет считаться актуальным при срезе последних. Ручной способ хорош прозрачностью: вы видите каждую запись и сразу замечаете ошибку. Но при сотнях строк он непрактичен и чреват опечатками.
Загрузка из Excel обработкой «Загрузка данных из табличного документа»
Для разовой загрузки большого массива данных удобна универсальная обработка «Загрузка данных из табличного документа» — она входит в состав Библиотеки стандартных подсистем и доступна во многих типовых конфигурациях, а также распространяется как внешняя обработка. Порядок работы типовой: открыть обработку, выбрать объект загрузки (нужный регистр сведений), вставить данные из Excel в табличный документ, настроить соответствие колонок полям регистра и выполнить загрузку.
- 1Откройте обработку «Загрузка данных из табличного документа» (раздел «Администрирование» или через «Все функции»)
- 2На первой закладке выберите тип объекта «Регистр сведений» и нужный регистр
- 3Скопируйте данные из Excel и вставьте в табличный документ обработки
- 4Укажите для каждой колонки соответствующее поле регистра (измерение или ресурс)
- 5Включите режим контроля дублей по измерениям
- 6Нажмите «Загрузить» и проверьте протокол: сколько записей создано, сколько пропущено
- 7Откройте регистр и выборочно сверьте несколько записей с источником
Критичный момент — режим работы с существующими записями. Если обработка настроена «не искать, только создавать», при совпадении ключа вы получите либо ошибку, либо дубль (в периодическом регистре с разными датами). Если стоит режим обновления, старые значения ресурсов будут перезаписаны новыми — убедитесь, что это именно то, что нужно.
Программная загрузка через менеджер записи и набор записей
Когда загрузку нужно выполнять регулярно или по сложным правилам, используют встроенный язык. Есть два базовых подхода. Менеджер записи (РегистрыСведений.ИмяРегистра.СоздатьМенеджерЗаписи()) создаёт или изменяет одну запись — подходит для точечных операций. Набор записей (СоздатьНаборЗаписей()) работает с группой записей и записывается одним действием — это быстрее при массовой загрузке.
Пример записи одной строки в независимый непериодический регистр:
МенеджерЗаписи = РегистрыСведений.ЦеныНоменклатуры.СоздатьМенеджерЗаписи();
МенеджерЗаписи.Номенклатура = НоменклатураСсылка;
МенеджерЗаписи.ТипЦен = ТипЦенСсылка;
МенеджерЗаписи.Прочитать();
// Если записи нет — менеджер будет пустым, заполняем ключи заново
МенеджерЗаписи.Номенклатура = НоменклатураСсылка;
МенеджерЗаписи.ТипЦен = ТипЦенСсылка;
МенеджерЗаписи.Цена = НоваяЦена;
МенеджерЗаписи.Записать(Истина);
Для массовой загрузки эффективнее набор записей с отбором по измерениям. Важный нюанс: если установить отбор и вызвать Записать() без добавления строк, набор очистит все записи по этому отбору. Это удобно для перезаписи среза данных, но опасно при ошибке в отборе — можно удалить чужие записи.
Набор = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
Набор.Отбор.Период.Установить(ДатаКурса);
Набор.Отбор.Валюта.Установить(ВалютаСсылка);
НоваяЗапись = Набор.Добавить();
НоваяЗапись.Период = ДатаКурса;
НоваяЗапись.Валюта = ВалютаСсылка;
НоваяЗапись.Курс = Курс;
НоваяЗапись.Кратность = 1;
Набор.Записать(Истина);
Загрузка через конвертацию данных и обмен
Если данные приходят из другой базы 1С или внешней системы регулярно, рассмотрите механизмы обмена: «Конвертацию данных» (правила обмена XML), универсальный формат EnterpriseData или планы обмена. В типовых конфигурациях регистры сведений часто включены в состав планов обмена, и записи переносятся автоматически при синхронизации.
Этот путь требует начальной настройки, но окупается при регулярной загрузке: правила сопоставления полей настраиваются один раз, дальше обмен выполняется по расписанию. Для разовой задачи настройка конвертации обычно избыточна — проще обработка загрузки из табличного документа.
Сравнение способов загрузки
Подходит для единичных записей. Прозрачно, но медленно и риск опечаток при большом объёме.
Оптимально для разовой загрузки из Excel. Требует аккуратной настройки соответствия колонок и режима дублей.
Для регулярной или сложной загрузки с логикой. Нужны навыки разработки и тестирование на копии.
Для регулярной синхронизации между базами. Долгая настройка, зато дальше работает автоматически.
Проверка результата и типичные ошибки
После загрузки обязательно сверьте результат с источником. Минимальная проверка: количество записей в регистре против количества строк в файле, выборочная сверка значений ресурсов по нескольким ключам, а для периодических регистров — корректность дат и правильность среза последних. Удобно построить отчёт по регистру через консоль запросов или универсальный отчёт.
Как проверить результат
Совпадает с числом строк источника (с учётом осознанных дублей)
Записей меньше — часть строк отклонена; больше — созданы дубли
Выборочно совпадают с источником по нескольким ключам
Значения сдвинуты или из другой колонки — неверное сопоставление полей
Даты корректны, срез последних даёт ожидаемые значения
Все записи на одну дату или дата пустая — ошибка в колонке периода
Отчёты, использующие регистр, показывают новые данные
Отчёты пустые — возможно, данные загружены не в тот регистр
Частые вопросы
Можно ли загрузить данные в регистр сведений из Excel без программирования?
Да. Обработка «Загрузка данных из табличного документа» позволяет вставить данные из Excel, сопоставить колонки полям регистра и выполнить загрузку без написания кода. В некоторых конфигурациях она доступна в разделе «Администрирование», иначе используется внешняя версия обработки.
Почему запись в регистр сведений не сохраняется?
Чаще всего причины три: регистр подчинён регистратору и требует документ; нарушена уникальность ключа — запись с таким набором измерений и периодом уже существует; у текущего пользователя нет прав на изменение регистра. Проверьте эти три момента по порядку.
Как обновить существующие записи, а не создавать дубли?
При программной загрузке используйте менеджер записи: заполните измерения, вызовите «Прочитать», затем обновите ресурсы и запишите. В обработке загрузки из табличного документа включите режим поиска существующих записей по измерениям с обновлением значений.
Чем отличается менеджер записи от набора записей?
Менеджер записи работает с одной строкой регистра — удобен для точечных изменений. Набор записей оперирует группой строк с общим отбором и записывается одним действием, что значительно быстрее при массовой загрузке. При сотнях и тысячах записей используйте набор.
Как очистить регистр сведений перед повторной загрузкой?
Создайте набор записей без отбора (или с отбором по нужным измерениям) и вызовите «Записать(Истина)» без добавления строк — записи в области отбора будут удалены. Обязательно выполняйте это на копии базы или после резервного копирования: операция необратима.
Можно ли загружать данные в регистр сведений через COM-соединение или веб-сервис?
Да. Внешняя система может подключиться к базе 1С через COM-коннектор, OData или HTTP-сервис и создавать записи теми же объектами (менеджер записи, набор записей). Стандартный OData-интерфейс позволяет читать и изменять независимые регистры сведений без дополнительной разработки, если он включён в публикации базы.
Что важно запомнить
Перед загрузкой проверьте режим записи регистра и состав измерений. Для разовой загрузки из Excel используйте обработку «Загрузка данных из табличного документа», для регулярной — программную запись набором записей. Всегда контролируйте дубли по ключу измерений, делайте резервную копию перед массовых операциях и сверяйте результат с источником.