These are chat archives for springjazzy/GIS_JKH_Integration

21st
Aug 2018
Anatoly V.
@DrShtopor_twitter
Aug 21 2018 03:05
У меня 1000 не пролазит никогда, 500 не стабильно, приходится порой пересылать, остановился на 400.
Коллеги, у Вас сколько услуг в среднем на ПД?
Leonid
@waltzofwoe_gitlab
Aug 21 2018 03:06
Вроде недавно же официально сократили максимальное количество ПД в запросе
У них, вроде как , если много пд сразу, то по таймауту не проходит
CCAlek
@CCAlek
Aug 21 2018 03:39
я отправляю по 50
по капремонту отправляю по 200
MitichBatkovich
@MitichBatkovich
Aug 21 2018 03:50
Всегда по писят))
Пятаков Артемий
@Gasmator_twitter
Aug 21 2018 04:58
@DrShtopor_twitter я по 100. у меня услуг много
Anatoly V.
@DrShtopor_twitter
Aug 21 2018 05:06
Вот мне тоже так кажется, что 1000 ПД на запрос прокатывает когда 1 услуга.
У нас в среднем 2 (электроэнергия-день, пени), но может и ОДН быть, и ночной тариф, и даже трёхтарифники бывают. В таких условиях 500 проходят через раз, 400 - стабильно
Anton
@dudarkoas
Aug 21 2018 07:20
@DrShtopor_twitter 500 на запрос ограничение теперь
Leonid
@waltzofwoe_gitlab
Aug 21 2018 08:58
Аааа, какой урод придумывал формат справочников гис
Кто как вообще их разбирает?
Алексей Бугров
@Jenstel33rus_twitter
Aug 21 2018 09:00
нормальный формат, главное универсальный
Пятаков Артемий
@Gasmator_twitter
Aug 21 2018 09:01
@waltzofwoe_gitlab а в чём проблема?
Leonid
@waltzofwoe_gitlab
Aug 21 2018 09:01
В том, чтобы найти в нем то, что нужно
Пятаков Артемий
@Gasmator_twitter
Aug 21 2018 09:01
ну скажи что тебе найти нужно может подскажу
Алексей Бугров
@Jenstel33rus_twitter
Aug 21 2018 09:04
@waltzofwoe_gitlab все там ищется без проблем, НСИ это как раз самое рабочее место во всем ГИСе
Leonid
@waltzofwoe_gitlab
Aug 21 2018 09:12
Ну хз, допустим надо найти какой-то параметр по названию. Для справочника коммунальных услуг название услуги будет храниться в поле с одним наименованием, для справочника дополнительный услуг поле с наименованием услуги названо по-другому, для справочника 59 название работы хранится в поле с третьим наименованием,
для перечислений при заполнении формы ОЖФ названия полей могут совпадать, а могут и не совпадать (а еще там разные поля формы ОЖФ могут ссылаться на одно перечисление)
И что, для каждого справочника отдельный обработчик писать? Я чет как-то не улавливаю логику существования этой конструкции
Не говоря уж о том, что некоторые справочники иерархические, и найти в них можно по нескольку элементов с одинаковым наименованием, но от разных корней
Можно конечно плюнуть и разложить справочники на таблицы. Но тогда процесс синхронизации справочника я как-то себе не очень хорошо представляю. То, что я себе могу представить, будет тормозить еще хуже, чем гис.
mkpmkp
@mkpmkp
Aug 21 2018 09:41
Если поможет:
Используем такое описание справочников ГИС ЖКХ
    // Структура, описывающая порядок заливки данных справочников в OMNIS. Интерпретация имён полей ГИС ЖКХ в удобоворимый вид.
    public static Dictionary<int, Dictionary<string, Dictionary<string, string>>> Dict = new Dictionary<int, Dictionary<string, Dictionary<string, string>>>() {
        [20] = new Dictionary<string, Dictionary<string, string>>() {
            ["Полномочие организации"] = new Dictionary<string, string>() { ["Type"] = "Name" },
            ["Краткое наименование"] = new Dictionary<string, string>() { ["Type"] = "ShortName" }
        },
        [51] = new Dictionary<string, Dictionary<string, string>>() {
            ["Вид коммунальной услуги"] = new Dictionary<string, string>() { ["Type"] = "NsiRef", ["Ext"] = "1" },
            ["Главная коммунальная услуга"] = new Dictionary<string, string>() { ["Type"] = "Name" },
            ["Коммунальный ресурс"] = new Dictionary<string, string>() { ["Type"] = "NsiRef", ["Ext"] = "2" },
            ["Порядок сортировки"] = new Dictionary<string, string>() { ["Type"] = "Order" }
        },
        [1] = new Dictionary<string, Dictionary<string, string>>() {
            ["Вид дополнительной услуги"] = new Dictionary<string, string>() { ["Type"] = "Name" },
            ["Единица измерения"] = new Dictionary<string, string>() { ["Type"] = "Unit" },
            ["Единица измерения (принадлежит ОКЕИ)"] = new Dictionary<string, string>() { ["Type"] = "Skip" },
            ["Единица измерения (текстовое поле)"] = new Dictionary<string, string>() { ["Type"] = "Skip" }
        },
        [2] = new Dictionary<string, Dictionary<string, string>>() {
            ["Сокращенное наименование"] = new Dictionary<string, string>() { ["Type"] = "Skip" },
            ["Единица измерения"] = new Dictionary<string, string>() { ["Type"] = "Unit" },
            ["Вид коммунального ресурса"] = new Dictionary<string, string>() { ["Type"] = "Name" },
            ["Признак возможности установки связи с прибором учета"] = new Dictionary<string, string>() { ["Type"] = "Skip" },
            ["Порядок сортировки"] = new Dictionary<string, string>() { ["Type"] = "Order" }
        },
        [3] = new Dictionary<string, Dictionary<string, string>>() {
            ["Вид коммунальной услуги"] = new Dictionary<string, string>() { ["Type"] = "Name" },
            ["Единица измерения"] = new Dictionary<string, string>() { ["Type"] = "Unit" },
            ["Единица измерения мощности и присоединенной нагрузки"] = new Dictionary<string, string>() { ["Type"] = "Skip" },
            ["Вид коммунального ресурса для ОКИ"] = new Dictionary<string, string>() { ["Type"] = "NsiRef", ["Ext"] = "1" },
            ["Порядок сортировки"] = new Dictionary<string, string>() { ["Type"] = "Order" }
        },
        [231] = new Dictionary<string, Dictionary<string, string>>() {
            ["Вид жилого помещения"] = new Dictionary<string, string>() { ["Type"] = "Name" }
        },
        [16] = new Dictionary<string, Dictionary<string, string>>() {
            ["Межповерочный интервал"] = new Dictionary<string, string>() { ["Type"] = "Name" },
            ["Единица измерения интервала"] = new Dictionary<string, string>() { ["Type"] = "Unit" }
        },
        [58] = new Dictionary<string, Dictionary<string, string>>() {
            ["Основание заключения договора"] = new Dictionary<string, string>() { ["Type"] = "Name" },
            ["Применимо к договорам управления"] = new Dictionary<string, string>() { ["Type"] = "Skip" },
            ["Применимо к договорам ресурсоснабжения"] = new Dictionary<string, string>() { ["Type"] = "Skip" }
        },
        [276] = new Dictionary<string, Dictionary<string, string>>() {
            ["Наименование показателя качества"] = new Dictionary<string, string>() { ["Type"] = "Name" },
            ["Ресурс, к которому относится показатель"] = new Dictionary<string, string>() { ["Type"] = "NsiRef", ["Ext"] = "1" },
            ["Тип поля"] = new Dictionary<string, string>() { ["Type"] = "Type" }
        },
        [21] = new Dictionary<string, Dictionary<string, string>>() {
            ["Причина архивации прибора учета"] = new Dictionary<string, string>() { ["Type"] = "Name" }
        },
        [22] = new Dictionary<string, Dictionary<string, string>>() {
            ["Причина закрытия лицевого счета"] = new Dictionary<string, string>() { ["Type"] = "Name" }
        },
        [54] = new Dictionary<string, Dictionary<string, string>>
получив опции справочника 20 по этой структуре сверяемся в какие поля раскладывать
получаем типа этого:
image.png
ссылки на другие справочники храним тут же
image.png
Это слегка через жопу, но позволяет описать ЛЮБОЙ справочник ГЖ и обновляться единообразно
mkpmkp
@mkpmkp
Aug 21 2018 09:52
Можно структуру забацать, но это был мой первый код на С#
Можно использовать как идею
mkpmkp
@mkpmkp
Aug 21 2018 09:58
    // Список справочников NsiCommon
    private static int[] nsiCommonList = new int[] { 20, 30, 27, 239, 236, 224, 54, 22, 21, 276, 58, 16, 231, 3, 2, 32, 95, 24 , 329};
    // Список справочников Nsi
    private static int[] nsiList = { 1, 51 };
Алексей Бугров
@Jenstel33rus_twitter
Aug 21 2018 10:10
@mkpmkp у тебя под GUID какой тип данных зашит?