Экспорт данных — различия между версиями
| Hubbitus (обсуждение | вклад)  (→Экспорт даных телеметрии (Зона КИО):  Экспорт даных телеметрии (Зона КИО) + Зона Актирования) | Hubbitus (обсуждение | вклад)   (Добавлен раздел == Обработка ошибок ==) | ||
| Строка 56: | Строка 56: | ||
| |} | |} | ||
| − | === Экспорт  | + | === Экспорт данных телеметрии (Зона КИО, Зона актирования) === | 
| {{ ambox | text = Не путать с распределёнными, описанными выше. Здесь речь идёт прежде всего о телеметрийных данных на каналах, а не о коммерческих! | {{ ambox | text = Не путать с распределёнными, описанными выше. Здесь речь идёт прежде всего о телеметрийных данных на каналах, а не о коммерческих! | ||
| '''В общем случае они не нужны в АИС''' }} | '''В общем случае они не нужны в АИС''' }} | ||
| − | + | {{ ambox | type = warning | text = Реализации записи с нашей стороны не предоставляется, и она должна быть задана на стороне [[АИС]] константой [[Конфигурирование на стороне 1С#ASCUG_write_q_raw_custom_code|ASCUG_write_q_raw_custom_code]]. [[#Обработка ошибок|Обработка ошибок]] и их трактовка также возлагается на сторону, занимающуюся реализацией записи на стороне [[АИС]]. }} | |
| − | Работа инициирована по запросу Рустама Фарукшина из Уфы и совместно с ним | + | Добавлено в [[история изменений|версии]] 18.3.<ref>Работа инициирована по запросу Рустама Фарукшина из Уфы и совместно с ним, за что выражаем благодарность</ref>. | 
| − | В сервис добавлены операция [[Команды адаптера#ExportQRaw|write_q_raw]],  | + | |
| − | + | В сервис добавлены операция [[Команды адаптера#ExportQRaw|write_q_raw]], которjq передаются соответствующие данные на обработку. Фактическая функция записи должна быть сконфигурирована константой [[Конфигурирование на стороне 1С#ASCUG_write_q_raw_custom_code|ASCUG_write_q_raw_custom_code]] и реализована на стороне АИС. Там же предлагается код-заглушка для тестирования. | |
| Данные передаются в операцию сервиса [[Команды адаптера#ExportQRaw|write_q_raw]]. На вход передаётся переменная 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 со следующими полями: | ||
| Строка 74: | Строка 74: | ||
| |- | |- | ||
| | {{anchor|export_q_raw_type}}type<ref>Поле и команда добавлены по просьбе Дмитрия Бещенко из Москвы. С [[version 19|версии]] сервиса 19.1 ([https://jira.spb.ant-inform.ru/browse/ESB-1653 ESB-1653]).</ref> || {[http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema]}string || Тип передаваемых суточных данных: | | {{anchor|export_q_raw_type}}type<ref>Поле и команда добавлены по просьбе Дмитрия Бещенко из Москвы. С [[version 19|версии]] сервиса 19.1 ([https://jira.spb.ant-inform.ru/browse/ESB-1653 ESB-1653]).</ref> || {[http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema]}string || Тип передаваемых суточных данных: | ||
| − | ; 10 : Зона КИО, команда [[Команды адаптера#ExportQRawTelezone|ExportQRawTelezone]] | + | ; 10 : Зона КИО, команда [[Команды адаптера#ExportQRawTelezone|ExportQRawTelezone]]<ref>Команда добавлена по просьбе Дмитрия Бещенко из Москвы</ref> | 
| ; 70 : Зона актирования, команда [[Команды адаптера#ExportQRaw|ExportQRaw]] | ; 70 : Зона актирования, команда [[Команды адаптера#ExportQRaw|ExportQRaw]] | ||
| |} | |} | ||
| Строка 105: | Строка 105: | ||
| ! Поле !! Тип !! Описание | ! Поле !! Тип !! Описание | ||
| |- | |- | ||
| − | | id || {[http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema]}long || идентификатор (id) объекта в [[ | + | | 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), код внешней системы, в которой объект был создан. | | ocs || {[http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema]}string || код системы - владельца (owner_code_system), код внешней системы, в которой объект был создан. | ||
| Строка 111: | Строка 111: | ||
| | oid || {[http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema]}string || [[Перечень сокращений и обозначений#Ид. в системе создателя|Ид. в системе создателя]] - идентификатор объекта в системе, в которой он был создан (Original Id, OrigId) | | 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:, исключение делается для [[Перечень сокращений и обозначений#ТП|ТП]] т.к. там данный префикс скорее означает тип загрузки, нежели генерацию на стороне [[ | + | | 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. | При включении [[Конфигурирование адаптера на стороне ИМУС#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> | ||
| + | |||
| + | Назначенный обработчик должен самостоятельно заполнить список ошибок и статус операции в передаваемом аргументе 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> | ||
| + | |||
| + | Тип {[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/> | ||
Версия 15:17, 26 ноября 2014
С версии 17.0 реализован экспорт распределённых суточных данных из ИМУС в АИС Регионгаз и предоставлена возможность записи зоны КИО.
|  | Обратите внимание, по умолчанию ВЕБ-сервис ASCUG остался только для чтения! Возможность записи должна быть включена представителем компании явным заданием константы ASCUG_ENABLE_WRITE! | 
Содержание
Требуемые изменения в конфигурации
К сожалению, видимо конфигурация АИС РГ писалась без учета возможности работы в чисто серверном режиме (какими являются Веб-сервис, внешние соединения и т.д.) и в том числе имеет плохой стиль взаимодействия с пользователем в различных частях системы, даже не проверяя что это в данный момент возможно. Такие проверки делаются легко с помощью конструкций вида:
#Если наКлиенте Тогда Вопрос("Вы точно хотите продолжить?", РежимДиалогаВопрос.ДаНет); #КонецЕсли
|  | Мы настоятельно рекомендуем кому-либо из представителей региональной компании, имеющей договор на поддержку, обратиться в поддержку ООО «Аудит НТ» для внесения данных изменений в основной состав конфигурации с очередным обновлением | 
Таким образом, при использовании на сервере таких конструкций это приводит к ошибке, поскольку такие функции просто не определены. Подробнее про это рекомендуется прочитать в интернете, например [1]. В конфигурации АИС РГ проблема усугубляется тем, что такое взаимодействие присутствует в модулях объекта, что вообще считается дурной практикой. Это приводит даже просто к невозможности создания документов к сожалению.
Таким образом все такие операции в модуле документа СуточноеПотребление должны быть обрамлены условными конструкциями препроцессору (сейчас таких мест 6 штук для конфигурации версии 1.1.28).
Для простоты при совпадении номера конфигурации и условии что не вносилось ручных изменений в данный модуль, можно его скопировать также из предложенного нами cf-файла. Или внести соответствующие изменения самостоятельно.
Обратите внимание, данные изменения никак не затрагивают обычное использование АИС Регионгаз, потому что данные конструкции именно указывают на то что в обычном режиме это и выполняются, и не выполняются только в режиме сервера.
Выполнение экспорта
С версии АРМ ~1.5.449 добавлены графические пункты меню с выбором дат.
Также иногда удобно посылать команды из консоли с помощью утилитки amq-command, на сервере ИМУС. Параметры точно также как для планов.
На регулярное выполнение команды могут быть сконфигурированы стандартным способом.
Состав и формат передаваемых данных
Экспорт данных оперативного баланса о суточном распределении по договорам (распределение)
Передаётся информация по распределению по договорам за выбранный период (сутки) - "Зона распределения - Оперативный баланс - по суткам"
Данные передаются в операцию сервиса write_q. Передаётся список значений {http://spb.ant-inform.ru/ASCUG}day_q в атрибуте list типа {http://spb.ant-inform.ru/ASCUG}day_q_list.
|  | По умолчанию данные записываются в Документ.СуточноеПотребление, но при необходимости может быть задан собственный обработчик записи константой ASCUG_write_q_custom_code | 
Состав {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 при похолоданиях или авариях в ИУС-ГАЗ, будет отличаться от загруженного ранее из АИС. | 
Экспорт данных телеметрии (Зона КИО, Зона актирования)
|  | Не путать с распределёнными, описанными выше. Здесь речь идёт прежде всего о телеметрийных данных на каналах, а не о коммерческих! В общем случае они не нужны в АИС | 
|  | Реализации записи с нашей стороны не предоставляется, и она должна быть задана на стороне АИС константой ASCUG_write_q_raw_custom_code. Обработка ошибок и их трактовка также возлагается на сторону, занимающуюся реализацией записи на стороне АИС. | 
В сервис добавлены операция write_q_raw, которjq передаются соответствующие данные на обработку. Фактическая функция записи должна быть сконфигурирована константой ASCUG_write_q_raw_custom_code и реализована на стороне АИС. Там же предлагается код-заглушка для тестирования.
Данные передаются в операцию сервиса 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[2] | {http://www.w3.org/2001/XMLSchema}string | Тип передаваемых суточных данных: 
 | 
Состав {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"));
Назначенный обработчик должен самостоятельно заполнить список ошибок и статус операции в передаваемом аргументе errList {http://spb.ant-inform.ru/ASCUG}error_list.
Список ошибок
Для удобства вы можете использовать функцию _addError для добавления ошибок, например:
_addError(errList, Undefined, "ASCUG WEB-сервис по умолчанию работает ТОЛЬКО на чтение…", 1, "0");
Тип {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 (экспорт распределения). Объект будет представлять собой фактически строку входных данных, на которых произошла описанная ошибка: 
 | 
Обратите внимание, для вашей обработки вы вольны изменить значения полей 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 в случае успешного завершения операции (возможно с некоторыми не фатальными ошибками) и любое другое число в остальных случаях. Статус завершения операции пишется в лог по завершении выполнения.
Примечания
- ↑ Работа инициирована по запросу Рустама Фарукшина из Уфы и совместно с ним, за что выражаем благодарность
- ↑ Поле и команда добавлены по просьбе Дмитрия Бещенко из Москвы. С версии сервиса 19.1 (ESB-1653).
- ↑ Команда добавлена по просьбе Дмитрия Бещенко из Москвы
- ↑ Время добавлено для возможности в будущем таким же способом передавать часовые архивы при необходимости
