БорисБ
Пользователи-
Число публикаций
90 -
Регистрация
-
Последнее посещение
Тип контента
Профили
Форумы
События
Библиотека
Интернет-журнал
Весь контент пользователя БорисБ
-
ФГИС "АРШИН"
БорисБ ответил на тема форума автора berkut008 в Информационные системы и специализированное ПО
Должно быть заключено целиком в двойные кавычки: "МИ 2408-97 «ГСИ. Аппаратура пользователей космических навигационных систем геодезическая. Методика поверки»" Потому что есть переносы строк. Должно быть оформлено: Leica TM50 I 0,5"" R1000 Т.е. один символ двойной кавычки экранируем вторым символом двойной кавычки. Вставляем «как есть», то есть ничего не добавляем и не удаляем. -
ФГИС "АРШИН"
БорисБ ответил на тема форума автора berkut008 в Информационные системы и специализированное ПО
«Аршин» вроде бы не совсем мёртв, но сведения о поверках не публикуются. Это у всех так? -
ФГИС "АРШИН"
БорисБ ответил на тема форума автора berkut008 в Информационные системы и специализированное ПО
Это не они копят. Это мы копим. Обмениваемся в «Аршином» в пакетном режиме с использованием API. Так «Аршин» даже не регистрирует наши пакеты. -
ФГИС "АРШИН"
БорисБ ответил на тема форума автора berkut008 в Информационные системы и специализированное ПО
Об этом прямо говорится в Руководстве: -
ФГИС "АРШИН"
БорисБ ответил на тема форума автора berkut008 в Информационные системы и специализированное ПО
Может быть кому-то будет интересно. Мы начали передавать пакеты в АРШИН с помощью API, но в силу сложности обработки ответов полученных от вызова curl … >> result.txt , как это предлагается Инструкцией, мы используем встроенные в Windows Server функциональные возможности PowerShell. Здесь следует отметить, что функция формирования пакетов в формате CSV для ручной загрузки у нас уже была, поэтому роботом мы передаём пакеты тоже в формате CSV. Для формирования файла в кодировке base64 используется функция function toBase64 { param( [String]$Name ) $fileName = "{0}.csv" -f $Name $fileContent = Get-Content -Raw $fileName $fileContentBytes = [System.Text.Encoding]::Default.GetBytes($fileContent) $fileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes) $fileBase64 = [System.IO.Path]::GetDirectoryName($fileName) + "\" + [System.IO.Path]::GetFileNameWithoutExtension($fileName) + ".base64" Set-Content -Path $fileBase64 -NoNewline -Value $fileContentEncoded return $fileBase64 } которая на вход принимает имя файла с пакетом в формате CSV без указания расширения, перекодированный файл кладёт рядышком, заменяя расширение на .base64. Неочевидные трудности, с которыми мы столкнулись. Важно использовать ключ -Raw у командлета Get-Content, который позволяет считать файл как одну большую строку, а не как массив строк. Если его не использовать, в перекодированном файле появляется пустая строка в конце и пакет отбрасывается при проверке. При перекодировании, чтобы не допустить двойной конвертации в utf-8 (напомню, что формирование пакетов в формате CSV в кодировке utf-8 без BOM у нас было уже реализовано ранее для загрузки пакетов в ручном режиме) при чтении содержимого необходимо использовать кодировку Default, а не UTF-8, как может показаться. $fileContentBytes = [System.Text.Encoding]::Default.GetBytes($fileContent) Уже отмечалось, что проверяющая сторона плохо относится к символам перевода строки внутри передаваемого файла, поэтому важно указать ключ -NoNewline при вызове командлета Set-Content. Когда файл получен, его можно передать для загрузки в АРШИН вызовом Invoke-RestMethod. try { $headers = @{ "X-API-KEY"="секретный_ключ" "Content-type"="application/csv" } $result = Invoke-RestMethod ` -Uri https://fgis.gost.ru/fundmetrology/pov/submit ` -Method POST ` -Headers $headers ` -InFile имя_файла } catch { $msg = "Server is unavailable" Write-Host $msg } Поскольку конвертация файла в кодировку base64 реализована в виде функции значение ключа -InFile можно оформить в виде вызова функции -InFile $(toBase64 имя_CSV_файла_в_кодировке_UTF) В результате вызова Invoke-RestMethod, если АРШИН не был на техническом обслуживании (поэтому всё оборачиваем в try - catch), получаем json-ответ вида registrationTime : 2019-10-30T09:31:10.507+03:00 summary : requestID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx registrationNumber : 012345 description : Дата и время загрузки: 30.10.2019 09:31:10 status : Received Его можно анализировать прямо в сценарии PowerShell, что значительно упрощает разработку, так как исключает разбор текстового файла и позволяет максимально автоматизировать процесс загрузки. Но тут есть важное замечание: если утерять requestID, полученный в результате загрузки пакета, то его восстановить невозможно никаким образом. С помощью API нельзя посмотреть requestID всех пакетов, переданных с помощью робота. Совершенно аналогично (пере-)проверяются пакеты со статусом Received. try { $headers = @{ "X-API-Key"="секретный_ключ" } $result = Invoke-RestMethod ` -Uri https://fgis.gost.ru/fundmetrology/pov/check/уникальный_ключ_пакета ` -Headers $headers } catch { $msg = "Server is unavailable" Write-Host $msg } Только надо уникальный_ключ_пакета заменить на полученный ранее requestID. Именно поэтому так важно его не потерять. Может быть, наш опыт кому-нибудь пригодится. PS Поле description в ответе может быть произвольно большой длины, переносы строк оформлены в unix-стиле. Чтобы привести их в стиль Windows можно применить такую конструкцию $result = Invoke-RestMethod … $description = $result.description -replace [char]10,([char]13+[char]10).ToString() -
Внесение данных в информационный фонд о поверке СИ
БорисБ ответил на тема форума автора evGeniy в Информационные системы и специализированное ПО
Пожалуйста. 20190925_20180321_20180403.csv -
ФГИС "АРШИН"
БорисБ ответил на тема форума автора berkut008 в Информационные системы и специализированное ПО
Спасибо, так даже лучше. А это документированная возможность? -
ФГИС "АРШИН"
БорисБ ответил на тема форума автора berkut008 в Информационные системы и специализированное ПО
Может кто-нибудь знает, может ли робот запросить список всех своих requestID? -
ФГИС "АРШИН"
БорисБ ответил на тема форума автора berkut008 в Информационные системы и специализированное ПО
Во ФГИСе обновили список эталонов единиц величин.В наш локальный справочник обновленная версия не загружается по причине задвоения ключей. Небольшое исследование показало, что номера эталонов в государственном реестре могут повторяться, а мы полагали, что они являются ключом. Таких записей 71, некоторые из них встречаются аж по четыре раза. По большей части один и тот же эталон из одного и того же приказа вносится несколько раз, но есть и вопиющие случаи, когда совершенно разным эталонам, даже эталонам разных физических единиц, присвоены одинаковые номера. Так что будьте бдительны! При этом версия от 2018-12-05T16:30:34.494+03:00 была загружена без ошибок. К слову, из xml убрали дату и время обновления справочника (тэг Date), так что теперь неясно, когда пришла пора обновлять локальный справочник эталонов. -
ФГИС "АРШИН"
БорисБ ответил на тема форума автора berkut008 в Информационные системы и специализированное ПО
Пункт 7.3 Руководства -
ФГИС "АРШИН"
БорисБ ответил на тема форума автора berkut008 в Информационные системы и специализированное ПО
Возможно я неточно выразился. Я говорю от имени одного из региональных ЦСМов. Ключик и право на передачу сведений конечно есть, я подозреваю, что и доступ в реальную базу «аршина» тоже есть (но это не точно). Нет доступа именно к тестовой среде, которую должна выдавать техподдержка по запросу, но не выдает. И по второму пункту тоже хочу сразу прояснить. Вот, скажем, у нас в организации есть двое ответственных за передачу данных в фонд. Каждый из них видит только то, что сам и загрузил, потому что входят они каждый со своими данными с портала госуслуг. Страшно то, что никто не имеет даже теоретической возможности увидеть что каждый из передаёт, кроме них самих. А если человек уволился? И вот в этом ключе, собственно, и вопрос - не случается ли так, что только робот видит то, что передал робот? -
ФГИС "АРШИН"
БорисБ ответил на тема форума автора berkut008 в Информационные системы и специализированное ПО
Для начала расскажите как получить доступ к API. Очень хотим, хотя бы попробовать, но техподдержка на запрос подключения «тестового доступа» молчит, а в «нетестовый» доступ так сразу писать не хочется. И второе. Когда грузит сведения о поверке человек - то он в своём кабинете видит эти поверки и может, теоретически, внести исправления. Это страшный бред, конечно, но с этим пока поделать ничего нельзя. А кто видит, что грузит робот? -
Внесение данных в информационный фонд о поверке СИ
БорисБ ответил на тема форума автора evGeniy в Информационные системы и специализированное ПО
У вас столбцы отделены друг от друга запятыми. А надо - точками с запятыми. Во вложении Ваш файл с нужными разделителями. пример.csv -
ФГИС "АРШИН"
БорисБ ответил на тема форума автора berkut008 в Информационные системы и специализированное ПО
Было такое. Расшифровку пустого лога прислали по запросу на адрес fgis2@gost.ru. В запросе сообщите регистрационные номера интересующих Вас заявок. -
ФГИС "АРШИН"
БорисБ ответил на тема форума автора berkut008 в Информационные системы и специализированное ПО
А как быть, если «Ошибка в данных (см. лог обработки)», а в «полном логе» ничего, кроме «Даты и времени загрузки»?