gifts2017

Подсистема "COMExchange", "Консоль запросов 1C + ADO" - сервис обработки выборки запроса: грузим курс «бакса» ЦБРФ из файла *.dbf или *.xlsx.

Опубликовал Юрий Осипов (yuraos) в раздел Обработки

На примере загрузки курса валюты продемонстрированы возможности консоли запросов в составе подсистемы "COMExchange" для обработки данных из внешних файлов и их синхронизации с данными информационной базы 1С.

Слушай, братан, ихние доллары -
- точь в точь как наши баксы!

Из разговора ново-русских туристов.


Описание сервиса обработки выборки запроса:

Имеющийся в подсистеме «COMExchange» сервис обработки выборки запроса в известном смысле дублирует инструмент
обработки данных «Конструктора Ei»  по произвольному алгоритму. Получилось это не намеренно.  
Сама обработка выборки выполняется в специальной форме «ОбработкаВыборки».  
Исходная идея функционала сервиса принадлежит неизвестному программисту 1С,
оставившему в модуле формы авторский комментарий //Vitkovsky.

Обработка выборки данных реализована на поддержке пользовательских событий «ПередВыборкой», «Выборка» и «ПослеВыборки»
(смотри детали в описании консоли), основной смысл которых заключается в выполнении заданного пользователем в форме 
кода на языке 1С, задающего алгоритм обработки данных.

Для облегчения заполнения обработчиков этих событий в форме предусмотрен режим автоматического заполнения (Рис.7).
При выборе команды из меню модули обработчиков событий заполняются по выбранному из списка «шаблону».
После чего возможно придётся подправить код под выполняемую задачу.
Для вставки в текст модуля ключевых слов и выполнения синтактической проверки модулей в форме предусмотрены сервисные кнопки (Рис.8).


Описание примера загрузки данных:

 В архиве комплекта поставки подсистемы «COMExchange» в папке
.\COMExchange-8x\Sampels\!ЗагрузкаКурсов\
в файле !ЗагрузкаКурсовЦБ_USD.selx сохранен пример запросов,
решающих задачу загрузки курса валюты из файла в формате ЦБ РФ, 
в котором сайт ЦБ по запросу посетителя высылает динамику курса выбранной валюты на адрес электронной почты.  
Файлы с данными курса USD за период с 01.01.1992 по 08.03.2013 в форматах *.dbf и *.xlsx находятся в той же папке комплекта поставки.

Для работы запросов из указанного выше файла потребуется установить подсистему «COMExchange», выполнить автоматическое
заполнение плана обмена «Обмен данными COM» и открыть в обработке "Консоль запросов 1С + ADO" этот файл. 


Комментарии к запросам примера:

   1. «Корневой» запрос "ЗагрузкаКурсовВалют" (Рис.1, Рис.2) - собственно выполняет всю работу:
       - В обработчике события «ПередЗапросом» (Рис.2) пользователю из меню предлагается выбрать тип файла с данными (Рис.6).
         От этого зависит имя запроса непосредственно загружающего данные из файла – "КурсыИзDBF" или "КурсыИзXLS" (Рис.3).
       - После загрузки данных из файла в таблицу значений, полученная таблица с курсами валюты укладывается во временную таблицу
         с помощью запроса "УложитьКурсыВТ" (Рис.4). 
         Для этого таблица с данными из файла устанавливается в качестве значения параметра &КурсыИзФайла этого запроса.
       - Ну а сам запрос "ЗагрузкаКурсовВалют" (Рис.1 ) уже непосредственно формирует из временной таблицы выборку данных
         для загрузки в регистр сведений «КурсыВалют», синхронизуя данные со справочником «Валюты» по её наименованию.

   2. Сама загрузка полученной выборки данных в регистр сведений выполняется в форме «ОбработкаВыборки» (Рис.5, Рис.7).

   3. Описанный пример запросов будет работать в типовых конфигурациях УТ-10.3, УПП-1.2, УПП-1.3 и 
       любых других, где хранение информации о валютах и их курсах организовано таким же образом.

 

Общие замечания о загрузке данных из внешних файлов через ADO:
   
   1. Если возвращаемые запросами ADO числовые значения (курс и кратность валюты в данном случае),
       имеют числовой тип с плавающей точкой (float или double)
,  то в консоли запросов версии 8.1.1.2 в опциях ADO
       не следует устанавливать выгрузку результата запроса средствами  ВК GameWhithFire.dll (Рис.3).
       Иначе при загрузке данных из файла из во временную таблицу 1С (Рис.4) произойдёт ошибка из-за того,
       что соответствующие колонки в таблице с данными не будут типизированы.

   2. При загрузке данных из текстовых файлов и файлов Excel рекомендуется использовать
       параметр строки соединения ADO HDR=Yes,
       а  в файле с данными в заголовочной строке вручную указывать понятные имена колонок (если их там нет).
       Это облегчит дальнейшую загрузку результата запроса ADO во временную таблицу и 
       синхронизацию данных из файла с объектами из информационной базы в запросах 1С.

 
Другие примеры работы с регистрами сведений:

1) Обсуждаемый в статье пример является задачей загрузки данных в независимый регистр сведений.
Как эту же задачу выполнить для регистров накопления, регистров бухгалтернского учета и 
регистров сведений, зависимых от регистратора, смотрите в статье http://infostart.ru/public/180571/.

2) В архиве комплекта поставки подсистемы «COMExchange» в папке .\COMExchange-8x\Sampels\!ОчисткаРегистров\
также находятся файлы с примерами запросов для очистки независимых регистров сведений:

 а) Файл чистим_регистры_сведений_1.selx - реализует функционал обработки из статьи http://infostart.ru/public/181420/
 б) Файл чистим_регистры_сведений_2.selx - реализует функционал обработки из статьи http://infostart.ru/public/181456/

 

 

 

См. также

Contragent+ 5.0 от 2 500
Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
Подписаться Добавить вознаграждение

Комментарии

1. Юрий Осипов (yuraos) 11.03.13 06:14
Всем доброго времени суток!
--
Обсуждаемый в статье пример является чисто демонстрационным.

Автор статьи не предлагает использовать его в качестве альтернативы
существующим в типовых конфигурациях механизмам
загрузки курсов валют.
2. Юрий Осипов (yuraos) 05.04.13 21:57
Всем доброе время суток!!!
---
Примеры запросов выполняющих очистку
независимых регистров сведений
анонсированы в комментариях к следующим статьям:
1) Очистка регистра "Версии объектов"
2) Очистка регистров сведений для удаления данных