Экспорт данных — различия между версиями

Материал из ANT-Inform documentation
Перейти к: навигация, поиск
(Fix links)
(Экспорт зоны КИО (сырые данные телеметрии, согласно приоритетам - "телезона"))
 
(не показано 29 промежуточных версий 1 участника)
Строка 1: Строка 1:
'''ЭКСПЕРИМЕНТАЛЬНО'''<ref>С версии 17.0. Мы очень просим всех желающих принять участие в тестировании данного функционала. Высказать свои замечания, предложения, пожелания.</ref> реализован экспорт распределённых суточных данных из ИМУС в АИС Регионгаз.
+
С [[история изменений|версии 17.0]] реализован экспорт распределённых суточных данных из ИМУС в АИС Регионгаз и предоставлена возможность записи зоны КИО.
 
{{ ambox | text = Обратите внимание, [[Права доступа|по умолчанию]] ВЕБ-сервис ASCUG остался только для чтения! Возможность записи должна быть включена представителем компании явным заданием константы [[Конфигурирование на стороне 1С#ASCUG_ENABLE_WRITE|ASCUG_ENABLE_WRITE]]! }}
 
{{ ambox | text = Обратите внимание, [[Права доступа|по умолчанию]] ВЕБ-сервис ASCUG остался только для чтения! Возможность записи должна быть включена представителем компании явным заданием константы [[Конфигурирование на стороне 1С#ASCUG_ENABLE_WRITE|ASCUG_ENABLE_WRITE]]! }}
  
 
== Требуемые изменения в конфигурации ==
 
== Требуемые изменения в конфигурации ==
К сожалению, видимо конфигурация АИС писалась без учета возможности работы в чисто серверном режиме (какими являются ВЕБ-сервис, внешние соединения и т.д.) и в том числе имеет плохой стиль взаимодействия с пользователем в различных частях системы, даже не проверяя что это в данный момент возможно. Такие проверки делаются легко с помощью конструкций вида:
+
К сожалению, видимо конфигурация [[Перечень сокращений и обозначений#АИС РГ|АИС РГ]] писалась без учета возможности работы в чисто серверном режиме (какими являются Веб-сервис, внешние соединения и т.д.) и в том числе имеет плохой стиль взаимодействия с пользователем в различных частях системы, даже не проверяя что это в данный момент возможно. Такие проверки делаются легко с помощью конструкций вида:
 
<source lang="1C">
 
<source lang="1C">
 
#Если наКлиенте Тогда  
 
#Если наКлиенте Тогда  
Строка 12: Строка 12:
 
{{ ambox | type = move | text = Мы настоятельно рекомендуем кому-либо из представителей региональной компании, имеющей договор на поддержку, обратиться в поддержку ООО «Аудит НТ» для внесения данных изменений в основной состав конфигурации с очередным обновлением }}
 
{{ ambox | type = move | text = Мы настоятельно рекомендуем кому-либо из представителей региональной компании, имеющей договор на поддержку, обратиться в поддержку ООО «Аудит НТ» для внесения данных изменений в основной состав конфигурации с очередным обновлением }}
  
Таким образом, при использовании на сервере таких конструкций это приводит к ошибке, поскольку такие функции просто не определены. Подробнее про это рекомендуется прочитать в интернете, например [http://nastroy-ka.ru/faq/8-faq/116--1-.html|здесь]. В конфигурации АИС проблема усугубляется тем, что такое взаимодействие присутствует в модулях объекта, что вообще [http://www.forum.mista.ru/topic.php?id=407033|считается дурной практикой]. Это приводит даже просто к невозможности создания документов к сожалению.
+
Таким образом, при использовании на сервере таких конструкций это приводит к ошибке, поскольку такие функции просто не определены. Подробнее про это рекомендуется прочитать в интернете, например [http://nastroy-ka.ru/faq/8-faq/116--1-.html|здесь]. В конфигурации [[Перечень сокращений и обозначений#АИС РГ|АИС РГ]] проблема усугубляется тем, что такое взаимодействие присутствует в модулях объекта, что вообще [http://www.forum.mista.ru/topic.php?id=407033| считается дурной практикой]. Это приводит даже просто к невозможности создания документов к сожалению.
  
 
Таким образом все такие операции в модуле документа СуточноеПотребление должны быть обрамлены условными конструкциями препроцессору (сейчас таких мест 6 штук для конфигурации версии 1.1.28).
 
Таким образом все такие операции в модуле документа СуточноеПотребление должны быть обрамлены условными конструкциями препроцессору (сейчас таких мест 6 штук для конфигурации версии 1.1.28).
Строка 18: Строка 18:
 
Для простоты при совпадении номера конфигурации и условии что не вносилось ручных изменений в данный модуль, можно его скопировать также из предложенного нами cf-файла. Или внести соответствующие изменения самостоятельно.
 
Для простоты при совпадении номера конфигурации и условии что не вносилось ручных изменений в данный модуль, можно его скопировать также из предложенного нами cf-файла. Или внести соответствующие изменения самостоятельно.
  
'''Обратите внимание, данные изменения никак не затрагивают обычное использование АИС Регионгаз, потому что данные конструкции именно указывают на то что в обычном режиме это и выполняются, и не выполняются только в режиме сервера.'''
+
'''Обратите внимание, данные изменения никак не затрагивают обычное использование [[Перечень сокращений и обозначений#АИС РГ|АИС Регионгаз]], потому что данные конструкции именно указывают на то что в обычном режиме это и выполняются, и не выполняются только в режиме сервера.'''
  
== Тестирование ==
+
== Выполнение экспорта ==
В процессе тестирования, пока не доступен функционал отправки запроса на экспорт из АРМ, можно посылать команды из консоли с помощью утилитки [[amq-command]], на сервере ИМУС.
+
С версии АРМ ~1.5.449 добавлены графические [[Команды адаптера#ExportQRaw|пункты меню]] с выбором дат.
  
Основная команда для этого [[ExportQ]] с параметрами. Например: '''''«amq-command ExportQ_<DateFrom>..<DateTo>..<DateBound>»''''', точно также как для планов.
+
Также иногда удобно посылать команды из консоли с помощью утилитки [[amq-command]], на сервере ИМУС. Параметры точно также как для [[Команды адаптера#CcDailyPlan|планов]].
  
Описание параметров <DateFrom>..<DateTo>..<DateBound>:
+
На регулярное выполнение команды могут быть [[Конфигурирование адаптера на стороне ИМУС#Параметры экспорта|сконфигурированы стандартным способом]].
* Может принимать от 1 до 3х аргументов.
+
* Первый обязателен.
+
* Параметры отделяются от команды знаком подчеркивания ("_"), не пробел!
+
* Разделяются аргументы ".." также без пробелов.
+
* Значения 3х параметров следующие:
+
** Первый - начало интервала для которого загружаются планы.
+
** Второй - окончание интервала.
+
** Третий - ограничение заданного выше интервала указанным числом. Сделано прежде всего чтобы можно было делать относительные интервалы, ограниченные сверху. Например 30 дней с начала месяца, но не далее сегодняшнего числа.
+
* Указание второго параметра не обязательно, тогда он будет принят концом текущего дня.
+
* Указание третьего параметра также не обязательно - тогда не будет этого ограничения.
+
* Указываются только даты, без времени. Подразумевается 00:00:00 для начального дня, и 23:59:59 для конечного.
+
* Для указания даты (начальной или конечной), применяются следующие правила:
+
** Если это число (Пример -10, +5, 0, 10) то это количество дней от текущего. Причем отрицательные отсчитываются назад, положительные вперед. Знак + может быть опущен.
+
** Если число начинается с латинского символа M в любом регистре, (например M-10, m10, M+10) - берется количество дней относительно начала текущего месяца.
+
** Если первым стоит символ #, то за ним должна стоять дата в формате yyyy.MM.dd - будет взята абсолютная дата.
+
  
=== Примеры команд ===
+
== Состав и формат передаваемых данных ==
* С начала текущего месяца, до сегодня, за три приема чтобы не создавать каждый раз чрезмерной нагрузки, что соответствует: '''''ExportQ_M0..M10..0,ExportQ_M11..M20..0,ExportQ_M21..M31..0'''''
+
=== Экспорт распределения ===
* Загрузка недели (7 дней) предшествующей сегодняшнему дню: '''''ExportQ_-7'''''
+
* Загрузка недели (7 дней) вперед, от сегодняшнего дня: '''''ExportQ_0..+7 или просто ExportQ_0..7'''''
+
* Загрузка +/- недели: '''''ExportQ_-7..+7''''' или просто '''''ExportQ_-7..7'''''
+
* Загрузка первой недели (7 дней) текущего месяца: '''''ExportQ_M0..M7'''''
+
* Загрузка целого месяца (31 день), но не далее текущего дня: '''''ExportQ_M0..M31..0'''''
+
* Загрузка с 21 февраля 2012 года до текущего дня (включительно): '''''ExportQ_#2012.02.21'''''
+
* Загрузка c 21 февраля 2012 года по 25 февраля: '''''ExportQ_#2012.02.21..#2012.02.25'''''
+
  
 +
{{anchor|ExportQ}}
 +
==== Экспорт данных оперативного баланса о '''суточном''' распределении по договорам (распределение) ====
 +
Командой [[Команды адаптера#ExportQ|ExportQ]] передаётся информация по распределению по договорам за выбранный период (сутки) - "Зона распределения - Оперативный баланс - по суткам"
  
 +
Данные передаются в операцию сервиса [[Команды адаптера#ExportQ|write_q]]. Передаётся список значений {[http://spb.ant-inform.ru/ASCUG http://spb.ant-inform.ru/ASCUG]}day_q в атрибуте list типа {[http://spb.ant-inform.ru/ASCUG http://spb.ant-inform.ru/ASCUG]}day_q_list.
 +
 +
{{ ambox | text = По умолчанию данные записываются в '''Документ.СуточноеПотребление''', но при необходимости может быть задан собственный обработчик записи константой [[Конфигурирование на стороне 1С#ASCUG_write_q_custom_code|ASCUG_write_q_custom_code]] }}
 +
 +
{{anchor|ExportQMonth}}
 +
==== Экспорт данных оперативного баланса о '''месячном''' распределении по договорам (распределение) ====
 +
Командой [[Команды адаптера#ExportQMonth|ExportQMonth]] передаётся информация по распределению по договорам за выбранный период (месяц) - "Зона актирования - Месячный баланс - по суткам"<ref name="ExportQRawMonth">Добавлено по запросу Тюрина Алексея из Иваново. С [[version 19|версии]] сервиса 19.5.pre1 ([https://jira.spb.ant-inform.ru/browse/ESB-1597 ESB-1597], [https://jira.spb.ant-inform.ru/browse/SUPPORT-7426 SUPPORT-7426]).</ref>.
 +
 +
{{ ambox | type = warning | text = Внимание. Запись месячного распределения находится в стадии разработки и не доступна в стабильных версиях }}
 +
 +
Данные передаются в операцию сервиса [[Команды адаптера#ExportQ|write_q]]. Передаётся список значений {[http://spb.ant-inform.ru/ASCUG http://spb.ant-inform.ru/ASCUG]}day_q в атрибуте list типа {[http://spb.ant-inform.ru/ASCUG http://spb.ant-inform.ru/ASCUG]}day_q_list.
 +
 +
{{ ambox | text = По умолчанию данные записываются в '''Документ.МесячноеПотребление''', но при необходимости может быть задан другой документ константой [[Конфигурирование на стороне 1С#ASCUG_write_q_monthDocCreate|ASCUG_write_q_monthDocCreate]] или даже полностью переопределён обработчик записи константой [[Конфигурирование на стороне 1С#ASCUG_write_q_custom_code|ASCUG_write_q_custom_code]] }}
 +
 +
===== Записываемые атрибуты =====
 +
* ГРС
 +
* ДатаНачалаПоставки Т.к. в [[ИМУС]] Месячное распределение всё равно по суткам, пишется начало и конец месяца, но на каждый день создаётся отдельный документ.
 +
* ДатаКонцаПоставки
 +
* Дата  - дата документа заполняется на момент записи
 +
* ВидРеализации = "Реализация газа"
 +
Следующие денормализованные атрибуты:
 +
* ГРО из ГРС.ГРО
 +
* Территория из ГРС.Территория
 +
* Трансгаз из ГРС.Трансгаз
 +
 +
====== Записываемые данные в табличной части документа ======
 +
* Договор
 +
* Потребитель
 +
* Подключение или ПлощадкаОборудования в зависимости от того откуда была загружена [[ТП]]
 +
* Поставка
 +
* КатегорияПотребления [[Конфигурирование на стороне 1С#Категории потребления|согласно настройкам]]
 +
* ВыходГРС
 +
* План - диспетчерский лимит (может не совпадать с загруженным ранее из [[АИС]] в случае введения графиков или неравномерностей)
 +
* Факт
 +
* ВремяЗаписи  - текущее время
 +
 +
==== Состав передаваемых данных data типа {[http://spb.ant-inform.ru/ASCUG http://spb.ant-inform.ru/ASCUG]}day_q_list ====
 +
Данные передаются в операцию сервиса [[Команды адаптера#ExportQ|write_q]]. На вход передаётся переменная data типа {[http://spb.ant-inform.ru/ASCUG http://spb.ant-inform.ru/ASCUG]}day_q_list со следующими полями:
 +
{| border=1 width="100%" cellspacing="0" cellpadding="4" class="wikitable sortable"
 +
! Поле !! Тип !! Описание
 +
|-
 +
| list || {[http://spb.ant-inform.ru/ASCUG http://spb.ant-inform.ru/ASCUG]}day_q || список значений типа {[http://spb.ant-inform.ru/ASCUG http://spb.ant-inform.ru/ASCUG]}day_q, описанного ниже
 +
|-
 +
| {{anchor|export_q_type}}type<ref name="ExportQRawMonth"/> || {[http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema]}string || Тип передаваемых суточных данных:
 +
; 60 : Месячное распределение Зона КИО, команда [[Команды адаптера#ExportQRawMonth|ExportQRawMonth]]
 +
; 70 : Cуточное распределение (по умолчанию), команда [[Команды адаптера#ExportQ|ExportQ]]
 +
|}
 +
 +
==== Состав передаваемых данных {[http://spb.ant-inform.ru/ASCUG http://spb.ant-inform.ru/ASCUG]}day_q ====
 +
Имеет смысл если вы решили переопределить или кастомизировать запись для собственных нужд.
 +
{{ ambox | type = warning | text = Убедительная просьба, если вы заметили ошибку, сообщите нам - она будет исправлена в следующем релизе. То же самое касается развития общего функционала. Используйте предоставленные константы-хуки для изменений специфичных для вашей организации! }}
 +
 +
{| border=1 width="100%" cellspacing="0" cellpadding="4" class="wikitable sortable"
 +
! Поле !! Тип !! Описание
 +
|-
 +
| date || {[http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema]}dateTime || дата на которую производилось распределение
 +
|-
 +
| q || {[http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema]}decimal || распределённый объём, нм<sup>3</sup>
 +
|-
 +
| idContr || {[http://v8.1c.ru/8.1/data/core http://v8.1c.ru/8.1/data/core]}UUID || [[Перечень сокращений и обозначений#UID|UID]] договора
 +
|-
 +
| idPc || {[http://v8.1c.ru/8.1/data/core http://v8.1c.ru/8.1/data/core]}UUID || [[Перечень сокращений и обозначений#UID|UID]] [[Перечень сокращений и обозначений#ТП|ТП]]
 +
|-
 +
| idPrMark || {[http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema]}string || идентификатор вида ценообразования (перечисление Прейскуранты)
 +
|-
 +
| idConsType || {[http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema]}string || идентификатор категории потребления. Соответствие задаётся через [[Конфигурирование_на_стороне_1С#Категории потребления|соответствующие константы ASCUG_consTypePopulation и ASCUG_consTypeExceptPopulation]]
 +
|-
 +
| idPContr || {[http://v8.1c.ru/8.1/data/core http://v8.1c.ru/8.1/data/core]}UUID || [[Перечень сокращений и обозначений#UID|UID]] [[Перечень сокращений и обозначений#Договор закупки|договора закупки]]
 +
|-
 +
| plan || {[http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema]}decimal || План на указанные сущности и сутки, нм<sup>3</sup>. В случае введения графиков 1, 2 при похолоданиях или авариях в [[ИУС-ГАЗ]], будет отличаться от загруженного ранее из [[АИС]].
 +
|}
 +
 +
=== Экспорт данных телеметрии ===
 +
{{ ambox | text = Не путать с распределёнными, описанными выше. Здесь речь идёт прежде всего о телеметрийных данных на каналах, а не о коммерческих!
 +
'''В общем случае они не нужны в [[АИС]]''' }}
 +
{{ ambox | type = warning | text = Реализации записи с нашей стороны не предоставляется, и она должна быть задана на стороне [[АИС]] константой [[Конфигурирование на стороне 1С#ASCUG_write_q_raw_custom_code|ASCUG_write_q_raw_custom_code]]. [[#Обработка ошибок|Обработка ошибок]] и их трактовка также возлагается на сторону, занимающуюся реализацией записи на стороне [[АИС]]. Смотрите описание обработки ошибок ниже. }}
 +
 +
{{anchor|ExportQRaw}}
 +
==== Экспорт зоны '''актирования''' (утверждённых данных КИО) ====
 +
Добавлено в [[история изменений|версии]] 18.3.<ref>Работа инициирована по запросу Рустама Фарукшина из Уфы и совместно с ним, за что выражаем благодарность</ref>.
 +
 +
Операция [[Команды адаптера#ExportQRaw|ExportQRaw]].
 +
 +
В сервис добавлены операция [[Команды адаптера#ExportQRaw|write_q_raw]], которой передаются соответствующие данные на обработку. Фактическая функция записи должна быть сконфигурирована константой [[Конфигурирование на стороне 1С#ASCUG_write_q_raw_custom_code|ASCUG_write_q_raw_custom_code]] и реализована на стороне АИС. Там же предлагается код-заглушка для тестирования.
 +
 +
{{anchor|ExportQRawTelezone}}
 +
==== Экспорт зоны '''КИО''' (сырые данные телеметрии, согласно приоритетам - "телезона") ====
 +
Операция [[Команды адаптера#ExportQRawTelezone|ExportQRawTelezone]]<ref name="ExportQRawTelezone">Поле type в передаваемых данных и команда добавлены по просьбе Дмитрия Бещенко из Москвы. С [[version 19|версии]] сервиса 19.1 ([https://jira.spb.ant-inform.ru/browse/ESB-1653 ESB-1653]).</ref>.
 +
 +
==== Состав передаваемых данных data типа {[http://spb.ant-inform.ru/ASCUG http://spb.ant-inform.ru/ASCUG]}day_q_raw_list ====
 +
Данные передаются в операцию сервиса [[Команды адаптера#ExportQRaw|write_q_raw]]. На вход передаётся переменная data типа {[http://spb.ant-inform.ru/ASCUG http://spb.ant-inform.ru/ASCUG]}day_q_raw_list со следующими полями:
 +
{| border=1 width="100%" cellspacing="0" cellpadding="4" class="wikitable sortable"
 +
! Поле !! Тип !! Описание
 +
|-
 +
| list || {[http://spb.ant-inform.ru/ASCUG http://spb.ant-inform.ru/ASCUG]}day_q_raw || список значений типа {[http://spb.ant-inform.ru/ASCUG http://spb.ant-inform.ru/ASCUG]}day_q_raw, описанного ниже
 +
|-
 +
| {{anchor|default_owner_code_system}}default_owner_code_system || {[http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema]}string || Код внешней системы - владельца (owner_code_system) по умолчанию. В данном случае это должна быть [[Перечень сокращений и обозначений#АИС РГ|АИС]]. Используется, если не заполнен другой для конкретных элементов.
 +
|-
 +
| {{anchor|export_q_raw_type}}type<ref name="ExportQRawTelezone"/> || {[http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema]}string || Тип передаваемых суточных данных:
 +
; 10 : Зона КИО, команда [[Команды адаптера#ExportQRawTelezone|ExportQRawTelezone]]
 +
; 70 : Зона актирования, команда [[Команды адаптера#ExportQRaw|ExportQRaw]]
 +
|}
 +
 +
{{anchor|type_day_q_raw}}
 +
==== Состав {[http://spb.ant-inform.ru/ASCUG http://spb.ant-inform.ru/ASCUG]}day_q_raw ====
 +
{| border=1 width="100%" cellspacing="0" cellpadding="4" class="wikitable sortable"
 +
! Поле !! Тип !! Описание
 +
|-
 +
| corr_time || {[http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema]}dateTime || время и дата<ref>Время добавлено для возможности в будущем таким же способом передавать часовые архивы при необходимости</ref> на которые проводился замер (время [[Перечень сокращений и обозначений#Корректор (Вычислитель)|корректора]])
 +
|-
 +
| cur_time || {[http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema]}dateTime || время и дата когда данные были записаны в БД (должно быть позже corr_time)
 +
|-
 +
| channel || {[http://spb.ant-inform.ru/ASCUG http://spb.ant-inform.ru/ASCUG]}g_id || [[Перечень сокращений и обозначений#Канал|канал]]
 +
|-
 +
| gco || {[http://spb.ant-inform.ru/ASCUG http://spb.ant-inform.ru/ASCUG]}g_id || площадка.  Может отсутствовать.
 +
|-
 +
| pc || {[http://spb.ant-inform.ru/ASCUG http://spb.ant-inform.ru/ASCUG]}g_id || [[Перечень сокращений и обозначений#ТП|ТП]]. Может отсутствовать.
 +
|-
 +
| cons || {[http://spb.ant-inform.ru/ASCUG http://spb.ant-inform.ru/ASCUG]}g_id || потребитель. Может отсутствовать.
 +
|-
 +
| q || {[http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema]}decimal || Объём. м<sup>3</sup>
 +
|-
 +
| p || {[http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema]}decimal || Давление. Кгс/см<sup>2</sup>. Может отсутствовать.
 +
|-
 +
| t || {[http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema]}decimal || Температура. ℃. Может отсутствовать.
 +
|}
 +
 +
Тип {[http://spb.ant-inform.ru/ASCUG http://spb.ant-inform.ru/ASCUG]}g_id (global ID), упоминаемый ранее представляет собой объединённый идентификатор объекта и состоит из полей, имеющих следующее значение:
 +
{| border=1 width="100%" cellspacing="0" cellpadding="4" class="wikitable sortable"
 +
! Поле !! Тип !! Описание
 +
|-
 +
| id || {[http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema]}long || идентификатор (id) объекта в [[ИМУС]]. Может быть пустым
 +
|-
 +
| ocs || {[http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema]}string || код системы - владельца (owner_code_system), код внешней системы, в которой объект был создан.
 +
|-
 +
| oid || {[http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema]}string || [[Перечень сокращений и обозначений#Ид. в системе создателя|Ид. в системе создателя]] - идентификатор объекта в системе, в которой он был создан (Original Id, OrigId)
 +
|-
 +
| uid || {[http://v8.1c.ru/8.1/data/core http://v8.1c.ru/8.1/data/core]}UUID || [[Перечень сокращений и обозначений#UID|UID]], если удалось вычленить, т.е. система-создатель соответствует той в которую импортируется (см. выше) и объект не [[Общий порядок загрузки данных#Генерация структуры вниз|сгенерирован]] (по префиксу gen:, исключение делается для [[Перечень сокращений и обозначений#ТП|ТП]] т.к. там данный префикс скорее означает тип загрузки, нежели генерацию на стороне [[ИУС-ГАЗ]]) адаптером в [[ИМУС]]
 +
|}
 +
 +
При включении [[Конфигурирование адаптера на стороне ИМУС#ais_ws_debug|режима отладки]], поля ocs и oid будет заполняться всегда, иначе (для экономии размера передаваемых данных) могут не заполняться если есть uid.
 +
 +
== Обработка ошибок ==
 +
Для всех операций записи, перед вызовом настроенного обработчика, инициируется результат:
 +
<source lang="1C">
 +
errList = XDTOFactory.Create(XDTOFactory.Type("http://spb.ant-inform.ru/ASCUG", "error_list"));
 +
errList.status = XDTOFactory.Create(XDTOFactory.Type("http://spb.ant-inform.ru/ASCUG", "status"));
 +
</source>
 +
 +
Назначенный обработчик должен самостоятельно заполнить список ошибок (тип {[http://spb.ant-inform.ru/ASCUG http://spb.ant-inform.ru/ASCUG]}error) и статус операции в передаваемом аргументе errList {[http://spb.ant-inform.ru/ASCUG http://spb.ant-inform.ru/ASCUG]}error_list.
 +
 +
=== Список ошибок ===
 +
Для удобства вы можете использовать функцию-хелпер '''_addError''' для удобного создания и добавления ошибок в списко, например:
 +
<source lang="1C">
 +
_addError(errList, Undefined, "ASCUG WEB-сервис по умолчанию работает ТОЛЬКО на чтение…", 1, "0");
 +
</source>
 +
 +
Указанная функция принимает следующие аргументы (подробнее содержимое описано ниже, в объекте ошибки):
 +
{| border=1 width="100%" cellspacing="0" cellpadding="4" class="wikitable sortable"
 +
! Имя !! Тип !! Описание
 +
|-
 +
| errorsList || {[http://spb.ant-inform.ru/ASCUG http://spb.ant-inform.ru/ASCUG]}error_list || Список ошибок, в который производится добавление (errList чаще всего).
 +
|-
 +
| objOnWhatErrorHappened || {[http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema]}anyType || Объект, на котором произошла ошибка. Чаще всего строка исходных данных, на которых произошла ошибка. Не обязателен.
 +
|-
 +
| text || {[http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema]}text || Полное описание ошибки
 +
|-
 +
| severity || {[http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema]}short || Важность ошибки. По умолчанию мы разделяем: "-1" - message (log), 0 - status, 1 - fatal error, 2 - warning, 3 - notice
 +
|-
 +
| code || {[http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema]}string || Код ошибки, если ведётся категоризация.
 +
|}
 +
 +
Функция ничего не возвращает.
 +
 +
Если есть желание, данные объекты можно формировать и добавлять вручную, структура его представлена ниже:
 +
Тип {[http://spb.ant-inform.ru/ASCUG http://spb.ant-inform.ru/ASCUG]}error состоит:
 +
{| border=1 width="100%" cellspacing="0" cellpadding="4" class="wikitable sortable"
 +
! Поле !! Тип !! Описание
 +
|-
 +
| code || {[http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema]}string || Код ошибки, если ведётся категоризация.
 +
|-
 +
| text || {[http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema]}text || Полное описание ошибки
 +
|-
 +
| severity || {[http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema]}short || Важность ошибки. По умолчанию мы разделяем: "-1" - message (log), 0 - status, 1 - fatal error, 2 - warning, 3 - notice
 +
|-
 +
| obj || {[http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema]}anyType || Объект, на котором произошла ошибка. До [[Version 19|версии 19.3]] использовался тип {[http://spb.ant-inform.ru/ASCUG http://spb.ant-inform.ru/ASCUG]}day_q и предназначался только для операции [[Команды адаптера#ExportQ|ExportQ (экспорт распределения)]]. Объект будет представлять собой фактически строку входных данных, на которых произошла описанная ошибка:
 +
; Для команды [[Команды адаптера#ExportQ|ExportQ]] : это будет {[http://spb.ant-inform.ru/ASCUG http://spb.ant-inform.ru/ASCUG]}day_q
 +
; Для команд [[Команды адаптера#ExportQRaw|ExportQRaw]], [[Команды адаптера#ExportQRawTelezone|ExportQRawTelezone]] : {[http://spb.ant-inform.ru/ASCUG http://spb.ant-inform.ru/ASCUG]}day_q_raw
 +
|}
 +
 +
Обратите внимание, для вашей обработки вы вольны изменить значения полей code, severity для своих нужд, чтобы вам было удобно их обрабатывать. Для вашего удобства, мы покажем в [[Общий порядок загрузки данных#Отчёт о состоянии синхронизации|отчёте]] просто списком, "как есть".
 +
 +
=== Статус операции ===
 +
Помимо возвращённого списка ошибок, описанного выше, необходимо задать также общий статус операции записи. Как-то так:
 +
<source lang="1C">
 +
errList.status.code = 0;
 +
errList.status.text = "Экспорт завершён успешно";
 +
</source>
 +
 +
Тип {[http://spb.ant-inform.ru/ASCUG http://spb.ant-inform.ru/ASCUG]}status подобен типу {[http://spb.ant-inform.ru/ASCUG http://spb.ant-inform.ru/ASCUG]}error, за исключением того что имеет только поля '''code''' и '''text'''.
 +
 +
Поле '''code''' необходимо задавать равным 0 в случае успешного завершения операции (возможно с некоторыми не фатальными ошибками) и любое другое число в остальных случаях.
 +
Статус завершения операции пишется в лог по завершении выполнения.
 
----
 
----
 
== Примечания ==
 
== Примечания ==
 
<references/>
 
<references/>

Текущая версия на 17:29, 28 октября 2019

С версии 17.0 реализован экспорт распределённых суточных данных из ИМУС в АИС Регионгаз и предоставлена возможность записи зоны КИО.

Содержание

Требуемые изменения в конфигурации

К сожалению, видимо конфигурация АИС РГ писалась без учета возможности работы в чисто серверном режиме (какими являются Веб-сервис, внешние соединения и т.д.) и в том числе имеет плохой стиль взаимодействия с пользователем в различных частях системы, даже не проверяя что это в данный момент возможно. Такие проверки делаются легко с помощью конструкций вида:

#Если наКлиенте Тогда 
	Вопрос("Вы точно хотите продолжить?", РежимДиалогаВопрос.ДаНет);
#КонецЕсли

Таким образом, при использовании на сервере таких конструкций это приводит к ошибке, поскольку такие функции просто не определены. Подробнее про это рекомендуется прочитать в интернете, например [1]. В конфигурации АИС РГ проблема усугубляется тем, что такое взаимодействие присутствует в модулях объекта, что вообще считается дурной практикой. Это приводит даже просто к невозможности создания документов к сожалению.

Таким образом все такие операции в модуле документа СуточноеПотребление должны быть обрамлены условными конструкциями препроцессору (сейчас таких мест 6 штук для конфигурации версии 1.1.28).

Для простоты при совпадении номера конфигурации и условии что не вносилось ручных изменений в данный модуль, можно его скопировать также из предложенного нами cf-файла. Или внести соответствующие изменения самостоятельно.

Обратите внимание, данные изменения никак не затрагивают обычное использование АИС Регионгаз, потому что данные конструкции именно указывают на то что в обычном режиме это и выполняются, и не выполняются только в режиме сервера.

Выполнение экспорта

С версии АРМ ~1.5.449 добавлены графические пункты меню с выбором дат.

Также иногда удобно посылать команды из консоли с помощью утилитки amq-command, на сервере ИМУС. Параметры точно также как для планов.

На регулярное выполнение команды могут быть сконфигурированы стандартным способом.

Состав и формат передаваемых данных

Экспорт распределения

Экспорт данных оперативного баланса о суточном распределении по договорам (распределение)

Командой ExportQ передаётся информация по распределению по договорам за выбранный период (сутки) - "Зона распределения - Оперативный баланс - по суткам"

Данные передаются в операцию сервиса write_q. Передаётся список значений {http://spb.ant-inform.ru/ASCUG}day_q в атрибуте list типа {http://spb.ant-inform.ru/ASCUG}day_q_list.

Экспорт данных оперативного баланса о месячном распределении по договорам (распределение)

Командой ExportQMonth передаётся информация по распределению по договорам за выбранный период (месяц) - "Зона актирования - Месячный баланс - по суткам"[1].

Данные передаются в операцию сервиса write_q. Передаётся список значений {http://spb.ant-inform.ru/ASCUG}day_q в атрибуте list типа {http://spb.ant-inform.ru/ASCUG}day_q_list.

Записываемые атрибуты
  • ГРС
  • ДатаНачалаПоставки Т.к. в ИМУС Месячное распределение всё равно по суткам, пишется начало и конец месяца, но на каждый день создаётся отдельный документ.
  • ДатаКонцаПоставки
  • Дата - дата документа заполняется на момент записи
  • ВидРеализации = "Реализация газа"

Следующие денормализованные атрибуты:

  • ГРО из ГРС.ГРО
  • Территория из ГРС.Территория
  • Трансгаз из ГРС.Трансгаз
Записываемые данные в табличной части документа
  • Договор
  • Потребитель
  • Подключение или ПлощадкаОборудования в зависимости от того откуда была загружена ТП
  • Поставка
  • КатегорияПотребления согласно настройкам
  • ВыходГРС
  • План - диспетчерский лимит (может не совпадать с загруженным ранее из АИС в случае введения графиков или неравномерностей)
  • Факт
  • ВремяЗаписи - текущее время

Состав передаваемых данных data типа {http://spb.ant-inform.ru/ASCUG}day_q_list

Данные передаются в операцию сервиса write_q. На вход передаётся переменная data типа {http://spb.ant-inform.ru/ASCUG}day_q_list со следующими полями:

Поле Тип Описание
list {http://spb.ant-inform.ru/ASCUG}day_q список значений типа {http://spb.ant-inform.ru/ASCUG}day_q, описанного ниже
type[1] {http://www.w3.org/2001/XMLSchema}string Тип передаваемых суточных данных:
60 
Месячное распределение Зона КИО, команда ExportQRawMonth
70 
Cуточное распределение (по умолчанию), команда ExportQ

Состав передаваемых данных {http://spb.ant-inform.ru/ASCUG}day_q

Имеет смысл если вы решили переопределить или кастомизировать запись для собственных нужд.

Поле Тип Описание
date {http://www.w3.org/2001/XMLSchema}dateTime дата на которую производилось распределение
q {http://www.w3.org/2001/XMLSchema}decimal распределённый объём, нм3
idContr {http://v8.1c.ru/8.1/data/core}UUID UID договора
idPc {http://v8.1c.ru/8.1/data/core}UUID UID ТП
idPrMark {http://www.w3.org/2001/XMLSchema}string идентификатор вида ценообразования (перечисление Прейскуранты)
idConsType {http://www.w3.org/2001/XMLSchema}string идентификатор категории потребления. Соответствие задаётся через соответствующие константы ASCUG_consTypePopulation и ASCUG_consTypeExceptPopulation
idPContr {http://v8.1c.ru/8.1/data/core}UUID UID договора закупки
plan {http://www.w3.org/2001/XMLSchema}decimal План на указанные сущности и сутки, нм3. В случае введения графиков 1, 2 при похолоданиях или авариях в ИУС-ГАЗ, будет отличаться от загруженного ранее из АИС.

Экспорт данных телеметрии

Экспорт зоны актирования (утверждённых данных КИО)

Добавлено в версии 18.3.[2].

Операция ExportQRaw.

В сервис добавлены операция write_q_raw, которой передаются соответствующие данные на обработку. Фактическая функция записи должна быть сконфигурирована константой ASCUG_write_q_raw_custom_code и реализована на стороне АИС. Там же предлагается код-заглушка для тестирования.

Экспорт зоны КИО (сырые данные телеметрии, согласно приоритетам - "телезона")

Операция ExportQRawTelezone[3].

Состав передаваемых данных data типа {http://spb.ant-inform.ru/ASCUG}day_q_raw_list

Данные передаются в операцию сервиса write_q_raw. На вход передаётся переменная data типа {http://spb.ant-inform.ru/ASCUG}day_q_raw_list со следующими полями:

Поле Тип Описание
list {http://spb.ant-inform.ru/ASCUG}day_q_raw список значений типа {http://spb.ant-inform.ru/ASCUG}day_q_raw, описанного ниже
default_owner_code_system {http://www.w3.org/2001/XMLSchema}string Код внешней системы - владельца (owner_code_system) по умолчанию. В данном случае это должна быть АИС. Используется, если не заполнен другой для конкретных элементов.
type[3] {http://www.w3.org/2001/XMLSchema}string Тип передаваемых суточных данных:
10 
Зона КИО, команда ExportQRawTelezone
70 
Зона актирования, команда ExportQRaw

Состав {http://spb.ant-inform.ru/ASCUG}day_q_raw

Поле Тип Описание
corr_time {http://www.w3.org/2001/XMLSchema}dateTime время и дата[4] на которые проводился замер (время корректора)
cur_time {http://www.w3.org/2001/XMLSchema}dateTime время и дата когда данные были записаны в БД (должно быть позже corr_time)
channel {http://spb.ant-inform.ru/ASCUG}g_id канал
gco {http://spb.ant-inform.ru/ASCUG}g_id площадка. Может отсутствовать.
pc {http://spb.ant-inform.ru/ASCUG}g_id ТП. Может отсутствовать.
cons {http://spb.ant-inform.ru/ASCUG}g_id потребитель. Может отсутствовать.
q {http://www.w3.org/2001/XMLSchema}decimal Объём. м3
p {http://www.w3.org/2001/XMLSchema}decimal Давление. Кгс/см2. Может отсутствовать.
t {http://www.w3.org/2001/XMLSchema}decimal Температура. ℃. Может отсутствовать.

Тип {http://spb.ant-inform.ru/ASCUG}g_id (global ID), упоминаемый ранее представляет собой объединённый идентификатор объекта и состоит из полей, имеющих следующее значение:

Поле Тип Описание
id {http://www.w3.org/2001/XMLSchema}long идентификатор (id) объекта в ИМУС. Может быть пустым
ocs {http://www.w3.org/2001/XMLSchema}string код системы - владельца (owner_code_system), код внешней системы, в которой объект был создан.
oid {http://www.w3.org/2001/XMLSchema}string Ид. в системе создателя - идентификатор объекта в системе, в которой он был создан (Original Id, OrigId)
uid {http://v8.1c.ru/8.1/data/core}UUID UID, если удалось вычленить, т.е. система-создатель соответствует той в которую импортируется (см. выше) и объект не сгенерирован (по префиксу gen:, исключение делается для ТП т.к. там данный префикс скорее означает тип загрузки, нежели генерацию на стороне ИУС-ГАЗ) адаптером в ИМУС

При включении режима отладки, поля ocs и oid будет заполняться всегда, иначе (для экономии размера передаваемых данных) могут не заполняться если есть uid.

Обработка ошибок

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

errList = XDTOFactory.Create(XDTOFactory.Type("http://spb.ant-inform.ru/ASCUG", "error_list"));
errList.status = XDTOFactory.Create(XDTOFactory.Type("http://spb.ant-inform.ru/ASCUG", "status"));

Назначенный обработчик должен самостоятельно заполнить список ошибок (тип {http://spb.ant-inform.ru/ASCUG}error) и статус операции в передаваемом аргументе errList {http://spb.ant-inform.ru/ASCUG}error_list.

Список ошибок

Для удобства вы можете использовать функцию-хелпер _addError для удобного создания и добавления ошибок в списко, например:

_addError(errList, Undefined, "ASCUG WEB-сервис по умолчанию работает ТОЛЬКО на чтение…", 1, "0");

Указанная функция принимает следующие аргументы (подробнее содержимое описано ниже, в объекте ошибки):

Имя Тип Описание
errorsList {http://spb.ant-inform.ru/ASCUG}error_list Список ошибок, в который производится добавление (errList чаще всего).
objOnWhatErrorHappened {http://www.w3.org/2001/XMLSchema}anyType Объект, на котором произошла ошибка. Чаще всего строка исходных данных, на которых произошла ошибка. Не обязателен.
text {http://www.w3.org/2001/XMLSchema}text Полное описание ошибки
severity {http://www.w3.org/2001/XMLSchema}short Важность ошибки. По умолчанию мы разделяем: "-1" - message (log), 0 - status, 1 - fatal error, 2 - warning, 3 - notice
code {http://www.w3.org/2001/XMLSchema}string Код ошибки, если ведётся категоризация.

Функция ничего не возвращает.

Если есть желание, данные объекты можно формировать и добавлять вручную, структура его представлена ниже: Тип {http://spb.ant-inform.ru/ASCUG}error состоит:

Поле Тип Описание
code {http://www.w3.org/2001/XMLSchema}string Код ошибки, если ведётся категоризация.
text {http://www.w3.org/2001/XMLSchema}text Полное описание ошибки
severity {http://www.w3.org/2001/XMLSchema}short Важность ошибки. По умолчанию мы разделяем: "-1" - message (log), 0 - status, 1 - fatal error, 2 - warning, 3 - notice
obj {http://www.w3.org/2001/XMLSchema}anyType Объект, на котором произошла ошибка. До версии 19.3 использовался тип {http://spb.ant-inform.ru/ASCUG}day_q и предназначался только для операции ExportQ (экспорт распределения). Объект будет представлять собой фактически строку входных данных, на которых произошла описанная ошибка:
Для команды ExportQ 
это будет {http://spb.ant-inform.ru/ASCUG}day_q
Для команд ExportQRaw, ExportQRawTelezone 
{http://spb.ant-inform.ru/ASCUG}day_q_raw

Обратите внимание, для вашей обработки вы вольны изменить значения полей code, severity для своих нужд, чтобы вам было удобно их обрабатывать. Для вашего удобства, мы покажем в отчёте просто списком, "как есть".

Статус операции

Помимо возвращённого списка ошибок, описанного выше, необходимо задать также общий статус операции записи. Как-то так:

errList.status.code = 0;
errList.status.text = "Экспорт завершён успешно";

Тип {http://spb.ant-inform.ru/ASCUG}status подобен типу {http://spb.ant-inform.ru/ASCUG}error, за исключением того что имеет только поля code и text.

Поле code необходимо задавать равным 0 в случае успешного завершения операции (возможно с некоторыми не фатальными ошибками) и любое другое число в остальных случаях. Статус завершения операции пишется в лог по завершении выполнения.


Примечания

  1. 1,0 1,1 Добавлено по запросу Тюрина Алексея из Иваново. С версии сервиса 19.5.pre1 (ESB-1597, SUPPORT-7426).
  2. Работа инициирована по запросу Рустама Фарукшина из Уфы и совместно с ним, за что выражаем благодарность
  3. 3,0 3,1 Поле type в передаваемых данных и команда добавлены по просьбе Дмитрия Бещенко из Москвы. С версии сервиса 19.1 (ESB-1653).
  4. Время добавлено для возможности в будущем таким же способом передавать часовые архивы при необходимости