Как мы тащили выгрузки в SQL из болота

01.12.22

Интеграция - Внешние источники данных

Ускорение, оптимизация и автоматизация выгрузок в SQL.

Попал на проект DWH. 

Входные данные: 

  • Разработчик SQL DWH ETL (Мастер на все руки)
  • Разработчик 1С (Я)
  • Аналитик (Смысловой нагрузки не несёт)
  • Много баз
  • Объемы в несколько тысяч строк в день

Цель: Обеспечить стабильную выгрузку данных из 1С в SQL. Желательно максимально быстро и часто.

Как работало:

  • Так как баз много, происходило подключение ко всем базам по очереди через WebСервис для подключения SQL к 1с который передает строковый параметр. Так как это DWH и идея была в том, что расписание было настроено на стороне Менеджмент студио через ssis пакеты (Это делал аналитик).
  • WebСервис вызывал внешнюю обработку, из которой в зависимости от параметра вызывал процедуры выгрузки. (Внешняя обработка нужна для оперативного изменения выгрузок)
  • Внешняя обработка собирала данные и делала стандартные "Инсерты" и "Апдейты", которые давал разработчик SQL.

Проблемы:

  • Блокировки в SQL. 
  • Время обновления (от 0.5 до 2.5 часов)
  • Постоянные подключения к базе SQL 

Решение:

Если вкратце, то 1с очень не очень работает с SQl напрямую.

Что сделали, чтобы взлетело:

  • SISS пакеты стали подключаться параллельно ко всем базам.
  • 1с больше не стучится в SQL. Теперь 1с собирает CSV файл с результатом запроса и складывает файл в конкретную папку. (Пример кода будет в конце).
  • Ожидаемый вопрос. Как же SQL забирает данные, если ей никто об этом не говорит? На самом деле говорит. Web сервис в конце возвращает параметр обратно Менеджемент студии.
  • Она в свою очередь понимает, что выгрузка окончена, и начинает вызывать хранимые процедуры SQL, которые в свою очередь из конкретной папки забирается конкретные файлы для конкретной таблицы. 

Важный момент. Можно задуматься о том, а как же потери данных? А всё просто. 1с при выгрузке не создает новый файл с данными, а дописывает в старый, если он есть. Удалением занимается SQL, если у него успешно удалось загрузить данные.

Итог:

  • Время уменьшилось до максимального 0.5 часа при экстраординарных объёмах данных.
  • Блокировки пропали.
  • Частота обновлений увеличилась в 3 раза.
    Запрос = Новый Запрос;
	Запрос.Текст = "";
	//Запрос
	
	РезультатЗапроса = Запрос.Выполнить();
	
    //Ими базы или любой другой идентификатор для разделение баз.
	ИмяБазы = XMLСтрока(Константы.Станция.Получить());
	
	Выборка= РезультатЗапроса.Выбрать();
	
	ФайлВыгрузки = ""; // Путь к конкертной папке + Имя базы чтобы создавался новый файл для каждой базы			
	ЗаписьТекста = Новый ЗаписьТекста(ФайлВыгрузки, КодировкаТекста.UTF16,, Истина); //Последняя истина обеспечивает дописывание
	Пока Выборка.Следующий() Цикл
		
		ЗаписьТекста.Записать(XMLСтрока(Выборка.Ссылка); // 
		ЗаписьТекста.Записать(";");
		ЗаписьТекста.Записать(XMLСтрока(СтрЗаменить(СокрЛП(Выборка.Артикул),";",""))); 
		ЗаписьТекста.Записать(";");
		ЗаписьТекста.Записать(XMLСтрока(СтрЗаменить(СокрЛП(Выборка.КоличествоПовторений),";",""))); 
		ЗаписьТекста.Записать(";");
		ЗаписьТекста.Записать(Строка(Выборка.СкладКомпании)); 
		ЗаписьТекста.Записать(";");
		ЗаписьТекста.Записать(XMLСтрока(Выборка.КоличествоОстаток)); 
		ЗаписьТекста.Записать(";");
		ЗаписьТекста.Записать(XMLСтрока(Выборка.Себестоимость)); 
		ЗаписьТекста.Записать(";");
		ЗаписьТекста.Записать(Строка(Выборка.ВерхнийСклад)); 
		ЗаписьТекста.Записать(";");
		ЗаписьТекста.Записать(XMLСтрока(СТО)); 
		
		ЗаписьТекста.Записать(Символы.ПС);
		
	КонецЦикла;
	ЗаписьТекста.Закрыть();  


Первая статья. Закидывайте помидорами. Задавайте вопросы в комментариях и расскажите, что где-то работает лучше.

SQL Обмен

См. также

Перенос данных из Парус 8 в ЗГУ 3

Зарплата Внешние источники данных Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 8 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

84000 руб.

19.08.2020    22662    19    1    

22

Экстрактор данных 1С в BI - выгрузка данных из 1С в BI-аналитику

Внешние источники данных Платформа 1С v8.3 Управляемые формы Анализ и прогнозирование Конфигурации 1cv8 Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)

Готовое решение для автоматической выгрузки данных из 1С 8.3 в базу данных ClickHouse, PostgreSQL или Microsoft SQL для работы с данными 1С в BI-системах. «Экстрактор данных 1С в BI» работает со всеми типовыми и нестандартными конфигурациями 1С 8.3 и упрощает работу бизнес-аналитиков. Благодаря этому решению, специалистам не требуется быть программистами, чтобы легко получать данные из 1С в вашей BI-системе.

15.11.2022    13946    12    SQV0    47    

30

Перенос данных из Парус 10 в ЗГУ ред.3

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Перенос данных 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    9332    9    8    

11

Перенос данных из Парус 7.хх в ЗГУ ред.3

Внешние источники данных Зарплата Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 7.хх учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

24000 руб.

24.04.2017    48929    97    163    

86

Перенос данных из Парус 10 (Торнадо) в ЗГУ ред.3 через Excel

Внешние источники данных Загрузка и выгрузка в Excel Зарплата Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате из Парус 10(Торнадо) учреждений через файлы Excel в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ). В принципе, обработка может быть использована для загрузки из файлов Excel, полученных из любых информационных систем.

24000 руб.

16.11.2018    30110    20    31    

21

Загрузка в БГУ из УРМ "Криста"

Внешние источники данных Банковские операции Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия государственного учреждения Россия Бухгалтерский учет Платные (руб)

Обработки для загрузки данных из УРМ "Криста" в бухгалтерию государственного учреждения редакция 2.0. Есть Демо доступ на вкладке Бесплатные файлы на 1 месяц со дня получения демонстрационного ключа регистрации. Поддерживает ПО "Web-исполнение" от НПО "Криста".

4800 руб.

19.06.2013    38604    136    90    

30
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. TMV 14 01.12.22 08:11 Сейчас в теме
Статья
Смысловой нагрузки не несёт
2. triviumfan 93 05.12.22 14:38 Сейчас в теме
Раз он
Разработчик SQL DWH ETL Мастер на все руки
, то дай ему описание структуры хранения БД - нехай сам получает, что ему нужно! :)
Оставьте свое сообщение