Обработка загрузки данных из Битрикс в 1С 8
Доброго времени суток, уважаемые коллеги! Выкладываю обработку, которая загружает данные из Битрикс с помощью внешних источников данных в базу данных 1С конфигурации Бухгалтерии для Казахстана, редакции 3.0 на управляемых формах. В прошлый раз была выложена неплохая обработка для установки главного узла базы, а также обработка для копирования файлов и папок из 1С 8.
- Описание работы загрузки данных из Битрикс в 1С
- Часть программного кода обработки на встроенном языке 1С
- Демонстрация работы обработки загрузки из Битрикс
Внешний вид обработки для загрузки данных из Битрикс:
Описание работы загрузки данных из Битрикс в 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С. Но его можно увидеть, да и опробовать саму эту обработку, если скачать по ссылке.