Обработка загрузки данных из Битрикс в 1С

Обработка загрузки данных из Битрикс в 1С 8

Доброго времени суток, уважаемые коллеги! Выкладываю обработку, которая загружает данные из Битрикс с помощью внешних источников данных в базу данных 1С конфигурации Бухгалтерии для Казахстана, редакции 3.0 на управляемых формах. В прошлый раз была выложена неплохая обработка для установки главного узла базы, а также обработка для копирования файлов и папок из 1С 8.

Внешний вид обработки для загрузки данных из Битрикс:

Форма обработки 1С8 установки главного узла распределенной информационной базы

Описание работы загрузки данных из Битрикс в 1С

В этой обработке показаны различные примеры использования и модификации данных во внешнем источнике данных из прикладного решения «1С:Предприятия». В качестве внешних источников данных выступают реляционные схемы (базы данных), созданные с помощью СУБД MySQL. Подключение к этой базе данных выполняется помощью полной строки соединения, хотя можно сделать, чтобы было подключение с помощью заранее созданного DSN.

Обработка позволяет увидеть, как программно заполнить данные документа на основе данных, содержащихся во внешней таблице. Также в обработке показана работа с функцией внешнего источника, которая была создана самостоятельно на языке MySQL. Работа с этой обработкой не составляет большого труда, если в обработке указан путь к вашей базе и прописаны актуальные учетные данные доступа. Эти данные записываются в следующей процедуре:

&НаСервере
Процедура Соединение(ВнешнийИсточникДанных = Неопределено)
	
	Если ВнешнийИсточникДанных = Неопределено Тогда
		ПараметрыСоединения = Новый ПараметрыСоединенияВнешнегоИсточникаДанных;
	Иначе
		ПараметрыСоединения = ВнешнийИсточникДанных.ПолучитьОбщиеПараметрыСоединения();   
		ВнешнийИсточникДанных.РазорватьСоединение();
	КонецЕсли;
	
	ПараметрыСоединения.СтрокаСоединения = "...";
	ПараметрыСоединения.ИмяПользователя = "u0124942_default";
	ПараметрыСоединения.Пароль = "123456";
	ПараметрыСоединения.АутентификацияСтандартная = Истина;
	ПараметрыСоединения.СУБД = "MySQL";
	ВнешнийИсточникДанных.УстановитьОбщиеПараметрыСоединения(ПараметрыСоединения);
	ВнешнийИсточникДанных.УстановитьСоединение();
	
КонецПроцедуры

Кроме того необходимо создать подходящие к ней внешний источник данных Bitrix и таблицы, которые встречаются в коде. Еще, нужно на вашем компьютере установить драйвер MySQL ODBC 5.3 Unicode Driver для соединения с удалённой базой.

  • Скачайте обработку по ссылке в конце статьи.
  • Затем откройте её в режиме 1С:Предприятие 8.
  • Перейдите к пункту меню «Файл» | «Открыть…» (Ctrl+O).
  • После открытия нужно выбрать период, за который вы хотите выбирать данные.
  • Затем нужно нажать кнопку Получить данные, чтобы данные с Битрикс были загружены в табличный реквизит управляемой формы.
  • После этого нужно нажать на кнопку Загрузить, чтобы были созданы документы НачисленияПоЗайму на основании, полученных с сайта Битрикс данных.

Часть программного кода обработки на встроенном языке 1С

Когда вы нажимаете кнопку Получить данные срабатывает команда ПолучитьДанные и выполняется следующий код:

&НаКлиенте
Процедура ПолучитьДанные(Команда)
	ПрогрессБар = 0;
	Если Элементы.Страницы.ТекущаяСтраница.Имя = "Начисления"  Тогда
		Состояние ("Подождите, выполняется операция получения данных займов", ПрогрессБар, , БиблиотекаКартинок.КонтактнаяИнформацияПерейтиПоСсылке);
		ТЗ = ПолучитьИдентификаторыЗаймовНаСервере();
		Если ТЗ.Количество() <> 0 Тогда
			IBLOCK_ELEMENT_ID_1  = ТЗ.ВыгрузитьКолонку("IBLOCK_ELEMENT_ID");
			Результат = ВывестиДанныеНаФорму(IBLOCK_ELEMENT_ID_1,4);   // 319
			IBLOCK_ELEMENT_ID_1  = Результат.ВыгрузитьКолонку("personal_data");
			i=0;
			Для каждого ID_1 Из IBLOCK_ELEMENT_ID_1 Цикл
				IBLOCK_ELEMENT_ID_1[i] = Число(ID_1);
				i=i+1;	
			КонецЦикла;
			Если Результат.Количество() > 0 Тогда
				ВывестиДанныеНаФорму(IBLOCK_ELEMENT_ID_1, 5);
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

&НаСервере
Функция ПолучитьИдентификаторыЗаймовНаСервере()
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	v_find_date_test.IBLOCK_ELEMENT_ID,
	|	v_find_date_test.VALUE КАК VALUE
	|ИЗ
	|	ВнешнийИсточникДанных.Bitrix.Таблица.v_find_date_test КАК v_find_date_test
	|ГДЕ
	|	v_find_date_test.VALUE МЕЖДУ &ДатаНачала И &ДатаОкончания
	|
	|УПОРЯДОЧИТЬ ПО
	|	VALUE";
	
	Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
	Запрос.УстановитьПараметр("ДатаОкончания", КонецДня(ДатаОкончания));
	
	Возврат Запрос.Выполнить().Выгрузить();
	
КонецФункции

&НаСервере
Функция ВывестиДанныеНаФорму(IBLOCK_ELEMENT_ID, IBLOCK_ID)
	
	ПолучитьСписокЧисловыхПолей();
	
	ТекущийПользователь = Пользователи.ТекущийПользователь();
	Организация = ПользователиБКВызовСервераПовтИсп.ПолучитьЗначениеПоУмолчанию(ТекущийПользователь, "ОсновнаяОрганизация");
	
	//Определяем валюту создаваемого счета
	КодВалюты   = Организация.ОсновнойБанковскийСчет.ВалютаДенежныхСредств.Код;
	ВалютаСчета = Справочники.Валюты.НайтиПоКоду(КодВалюты);
	
	Результат = СформироватьДанныеНаСервере(IBLOCK_ELEMENT_ID, IBLOCK_ID);	
	
	// Cоздаем программно таблицу значений и связываем ее с элементом формы
	Если IBLOCK_ID = 4 Тогда
		ВывестиТаблицуЗначенияВКодеВТаблицуНаФорме(Результат, "ТабРеквизит" + IBLOCK_ID, "ТабРеквизит" + IBLOCK_ID);
		Возврат Результат;	
	Иначе
		ВывестиТаблицуЗначенияВКодеВТаблицуНаФорме(Результат, "ТабРеквизит" + IBLOCK_ID, "ТабРеквизит" + IBLOCK_ID);
	КонецЕсли;
	
КонецФункции // ВывестиДанныеНаФорму(IBLOCK_ELEMENT_ID, IBLOCK_ID)

Конечно, здесь опубликован не весь программный код обработки для загрузки данных с сайта Битрикс в 1С. Но его можно увидеть, да и опробовать саму эту обработку, если скачать по ссылке.

Демонстрация работы обработки загрузки из Битрикс

ПОДПИСКА