Выгрузка / Загрузка регистра сведений из внешней системы с большим количеством строк

07.02.22

Интеграция - Загрузка и выгрузка в Excel

Часто возникает задача, когда уже вся НСИ загружена и необходимо перегрузить регистры сведений с большим количеством строк (около миллиона строк). Перегрузка может быть из любой информационной системы (на 1С или нет). Для себя определил максимальной быстрый вариант выгрузки/загрузки - через файл Excel с учетом возможности предварительной правки и просмотра результата загрузки.

1. Выгрузить все необходимые поля из системы источника (ключевые поля) в файл Excel.

Предварительно должна быть загружена вся необходимая НСИ (или хотя бы основная её часть).

2. На стороне системы приемника 1С, прочитываем файл Excel и его сохраняем в массиве колонок.

	ЛистЭксель = ДокументExcel.Sheets(НомерЛиста);
	
	Область = ЛистЭксель.Range(ЛистЭксель.Cells(НомерПервойСтроки, НомерПервойКолонки), ЛистЭксель.Cells(НомерПоследнейСтроки, НомерПоследнейКолонки));
	Данные = Область.Value.Выгрузить();

Данная конструкция за несколько секунд загрузит файл с миллионом строк.

3. На форму обработки загрузки добавляем Таблицу значений с количеством колонок, как в файле Excel.

4. Выполняем заполнение таблицы значений на форме, через временную таблицу значений (чтобы можно увидеть результат считывания из файла Excel заранее и возможно что-то подправить).

Каждый элемент массива считанного файла Excel, содержат данные колонки по номеру.

	//временная таблица значений
    ТаблицаЗВрем = Новый ТаблицаЗначений;
	ТаблицаЗВрем.Колонки.Добавить("Колонка1");
	ТаблицаЗВрем.Колонки.Добавить("Колонка2");
	ТаблицаЗВрем.Колонки.Добавить("Колонка3");

    //создаем количество строк соответствующее количеству строк Excel
	Для Н=1 По Данные[0].Количество() Цикл  
   		 ТаблицаЗВрем.Добавить();
	КонецЦикла; 
	
    //загружаем колонки из прочитанного файла Excel в таблицу значений
	ТаблицаЗВрем.ЗагрузитьКолонку(Данные[0], "Колонка1");
	ТаблицаЗВрем.ЗагрузитьКолонку(Данные[1], "Колонка2");
	ТаблицаЗВрем.ЗагрузитьКолонку(Данные[2], "Колонка3");

    //выполняем необходимые преобразования данных из Excel
	Для Н=0 По ТаблицаЗВрем.Количество()-1 Цикл
   		ТаблицаЗВрем[Н].Колонка1= СтрЗаменить(ТаблицаЗВрем[Н].Колонка1, Символы.НПП, ""); 
		ТаблицаЗВрем[Н].Колонка2= СтрЗаменить(ТаблицаЗВрем[Н].Колонка2, Символы.НПП, "");
	КонецЦикла; 	
	
    //загружем таблицу на форму
	ТаблицаЗНаФорме.Загрузить(ТаблицаЗВрем);

5. После того, как файл Excel загружен и проверен, его можно загрузить в регистр сведений используя следующей код:

	Запрос = Новый Запрос("ВЫБРАТЬ
	                      |	ТЧВрем.Колонка1 КАК Колонка1,
	                      |	ТЧВрем.Колонка2 КАК Колонка2,
	                      |	ТЧВрем.Колонка3 КАК Колонка3
	                      |ПОМЕСТИТЬ ТЧВрем
	                      |ИЗ
	                      |	&ТЧВрем КАК ТЧВрем
	                      |;
	                      |
	                      |////////////////////////////////////////////////////////////////////////////////
	                      |ВЫБРАТЬ
	                      |	ТЧВрем.Колонка1 КАК Колонка1,
	                      |	ПервичныйДокумент.Ссылка КАК Документ
	                      |ИЗ
	                      |	ТЧВрем КАК ТЧВрем 
	                      |		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПервичныйДокумент КАК ПервичныйДокумент
	                      |		ПО ТЧВрем.Колонка1 = ПервичныйДокумент.Номер
	                      |			И ТЧВрем.Колонка2 = ПервичныйДокумент.Дата
						  |ГДЕ
						  |	ТЧВрем.Колонка1 <> """"");
	
	Запрос.УстановитьПараметр("ТЧВрем", ТЧВрем.Выгрузить());
	
	ТЧРезультат = Запрос.Выполнить().Выгрузить();
		
	НужныйРегистр = РегистрыСведений.НужныйРегистр.СоздатьНаборЗаписей();	
	НужныйРегистр.Загрузить(ТЧРезультат );
	НужныйРегистр.Записать(ИСТИНА);

Данный код также выполняется достаточно быстро.

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

 

Для примера рабочее место загрузки:

 

В рабочем месте выбираем, от и до какой строки загружаем.

По кнопке - Заполнить, выполняется пункт 4, предварительно выбрав файл.

По кнопке - Сформировать, выполняется пункт 5.

 

Данное решение имеет ряд ограничений:

1) Yаличие 64битной платформы и достаточного количества оперативной памяти (от 32 Гб).

2) На стороне источника - система должна уметь выгрузить в формат Excel, а на стороне приемника 1С - должна быть установлена Excel.

3) Должна быть загружена вся НСИ (или хотя бы основная часть, некоторую часть можно сразу загружать в  данной обработке - но тогда будет потрачено дополнительное время загрузки).

4) Поиск ссылочных объектов по GUID (при загрузке данных в регистр сведений лучше определять ссылочные данные по полям поиска, если это не возможно сделать, то перед загрузкой в регистр сведений. Нужно определить ссылочные объекты по GUID - но тогда будет потрачено дополнительное время загрузки). 

Применять можно на любой конфигурации.

Excel загрузка

См. также

SALE! 20%

Загрузка и выгрузка в Excel Оптовая торговля Печатные формы Бухгалтер Пользователь Платформа 1С v8.3 Управляемые формы Платформа 1C v8.2 Конфигурации 1cv8 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная обработка для загрузки документов из Excel в 1С одним нажатием. Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С. Вместе с номенклатурой может найти контрагента, номер и дату документа, штрих-коды, серии ГТД, страну и т.д. Распознает документы ЛЮБОЙ ФОРМЫ (УПД, ТОРГ-12, заказ, отчет комиссионера и т.д.). Не требует MS Office. Для поиска таблиц используются методы эвристического поиска. Загружает только то, что нужно, т.е. пропускает повторы шапки таблицы, заголовки, промежуточные итоги, подписи и т.д. Содержит модуль работы с электронной почтой и api-загрузчик отчетов о продажах маркетплейсов.

6000 5100 руб.

09.11.2016    237453    1072    904    

1010

SALE! 30%

Загрузка и выгрузка в Excel Документооборот и делопроизводство (СЭД) Учет документов Распознавание документов и образов Бухгалтер Пользователь Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная программа для распознавания сканов или фото товарных документов в 1С. Не требует указания параметров и предварительной настройки. Просто выбираете файл (PDF, JPG, DOC, XLS, HTML) выбираете документ 1С и нажимаете кнопку "Распознать и загрузить".

8400 5880 руб.

04.06.2019    108208    315    173    

326

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Бухгалтер Пользователь Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 09.12.2024, версия 9.8 - 9.13)

16800 руб.

20.11.2015    157204    379    378    

514

Загрузка и выгрузка в Excel Розничная торговля Логистика, склад и ТМЦ Ценообразование, анализ цен Прайсы Системный администратор Программист Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Загрузка номенклатуры из файлов Excel (xls, xlsx, ods, csv, mxl) в УТ11, КА 2, ERP 2, Розница 2. Задействованы все возможности конфигурации - заполнение реквизитов номенклатуры, дополнительных реквизитов и сведений, характеристики, доп.реквизиты и сведения характеристик. Дополнительные обработки для расширения возможностей.

11100 руб.

29.10.2014    217438    662    527    

457

Загрузка и выгрузка в Excel Бухгалтер Пользователь Платформа 1С v8.3 1С:Управление торговлей 10 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика Бухгалтерский учет Управленческий учет Платные (руб)

Загрузка данных отчета о реализации товаров из сервиса "Детский мир" для конфигурации 1С: Бухгалтерия предприятия, редакция 3.0; Управление торговлей, редакция 11; Управление торговлей, редакция 10.3; Управление нашей фирмой, редакция 3.0 и Розница, редакция 3.0 в документ "Отчет комиссионера (агента) о продажах".

4800 руб.

23.01.2022    11388    56    0    

38

SALE! 30%

Логистика, склад и ТМЦ Загрузка и выгрузка в Excel Бухгалтер Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Расширение Умная Супер скоростная загрузка номенклатуры с умным авто поиском и авто сопоставлением миллионов реквизитов, Вы когда-нибудь слышали, что за 3 минуты можно в базу загрузить тысячу позиций номенклатуры, установить свойства характеристики с изображениями и сделать на основе их поступление и заодно создать документ установка цен и сделать документ заказ покупателя. На первый взгляд это кажется фантастикой, потому что все мы привыкли кропотливо заливать номенклатуру или манипулировать новыми документами на основе их. Это расширение позволяет выполнить все задачи моментально.

9990 6993 руб.

11.08.2023    5065    31    5    

34
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. RocKeR_13 1377 28.01.22 17:02 Сейчас в теме
Ну для миллиона строк должно быть как минимум еще пару ограничений: наличие 64битной платформы и достаточного количества оперативки.
Вариант чтения из Excel с помощью ТабличныйДокумент.Прочитать() тестировали с дальнейшей загрузкой в ТЗ с помощью построителя или простого перебора областей?
3. Shining_ninja 2193 29.01.22 14:28 Сейчас в теме
(1) про разрядность платформы отметил в статье - но уже 32-битная все реже встречается у средних и крупных клиентов.
Про оперативную память тоже добавил.

Именно такой вариант не тестировал, но свой вариант на миллионе строк отработал около часа - что меня полностью устраивает.
2. gzharkoj 521 29.01.22 11:47 Сейчас в теме
В коде:
НужныйРегистр.Прочитать();
НужныйРегистр.Загрузить(ТЧРезультат);

первая строка не нужна, так как Загрузить все очистит в наборе, сэкономите еще время на чтении ненужных данных.
Merkalov; Alex_Nash; asg.aleks; Apo; triviumfan; FesenkoA; RocKeR_13; kamisov; +8 Ответить
4. Shining_ninja 2193 07.02.22 06:45 Сейчас в теме
(2) принято, добавил в статью.
Оставьте свое сообщение