"Плохой тип переменной" при загрузке площадок - 1Cv7 ВСД в ГИС Меркурий - КБ99 Redmine

Проект

Общее

Профиль

"Плохой тип переменной" при загрузке площадок

Добавил(а) Михайлов Михаил около 5 лет назад

Попытался обыскать форум, видел, сообщения про плохой тип, но стало так тяжело пытаться понять в чем типовая причина "типа"
Поэтому решил спросить отдельно, что бы потом все могли легко найти.
Обработке обмена нажимаю "Выборочно загрузить площадки ..." (загрузить все площадки работает)
Получаю:

Запрос GetBusinessEntityByGuid [ fe1992cd-218a-11e2-a69b-b499babae7ea ]
Отправляем запрос b81b2bda-ca88-4732-8f5a-405e07155660
Загрузка XML-файла: C:\1c\ОП_2018 Школы\Extforms\Vetis\logs\b81b2bda-ca88-4732-8f5a-405e07155660_result.xml
Меркурий_ГлобальныйМодуль::ЗагрузитьПлощадкиТЗ(Справочник ХС=         1   ) : Плохой тип переменной
guid = activityLocation.selectSingleNode("ent:enterprise").selectSingleNode("bs:guid").text;
{C:\1c\ОП_2018 Школы\extForms\Vetis\Меркурий_ГлобальныйМодуль.ert(3216) }

Меркурий_ГлобальныйМодуль::ЗагрузитьПлощадкиТЗ(Справочник ХС=         1   ) : Плохой тип переменной
guid = activityLocation.selectSingleNode("ent:enterprise").selectSingleNode("bs:guid").text;
{C:\1c\ОП_2018 Школы\extForms\Vetis\Меркурий_ГлобальныйМодуль.ert(3216) }


Ответы (8)

RE: "Плохой тип переменной" при загрузке площадок - Добавил(а) Pentyukhov Sergey около 5 лет назад

Странно, у меня все отработало.

RE: "Плохой тип переменной" при загрузке площадок - Добавил(а) Михайлов Михаил около 5 лет назад

У меня тоже раньше прекрасно работало, но потом что-то сломалось, не пойму где.
И еще при создании площадок тоже стало срабатывать

 Запрос CreateEnterprise [ 1324(2419)дс ]
Отправляем запрос 6f9b6d9f-cdfe-4c63-b5d0-128631d10dd9
Ответ: [b4f4a4c5-52d7-4524-86c0-56248d60b7b5] [ACCEPTED]
Отправляем запрос результата [b4f4a4c5-52d7-4524-86c0-56248d60b7b5] 
Загрузка XML-файла: E:\1C_bases\ОП_2019_2 Сады\ExtForms\Vetis\logs\b4f4a4c5-52d7-4524-86c0-56248d60b7b5_result.xml
enterprise=objDom.selectSingleNode("//merc:enterprise") ;
{E:\1C_BASES\ОП_2019_2 САДЫ\EXTFORMS\VETIS\ВСД_СОЗДАТЬПЛОЩАДКУ.ERT(255)}: Плохой тип переменной

Может причина та же?

RE: "Плохой тип переменной" при загрузке площадок - Добавил(а) Михайлов Михаил около 5 лет назад

Пока занимаюсь разбирательством, вот нарыл:
Мне из меркурия приходит файл то ли с пустыми площадками, не пойму.
В общем много секций "<ent:enterprise/>" без данных.
обработка пытается из таких секций получить значения тегов "bs:guid", но так как их нет, получает ошибку !!!!

костыль конечно понятно как сделать, не ясно почему секции пустые отдает меркурий.
Может конечно это связанно с удаление площадок.

+-<ent:activityLocation>
<ent:enterprise/>
</ent:activityLocation>+

+-<ent:activityLocation>
<ent:enterprise/>
</ent:activityLocation>+

*-<ent:activityLocation>
-<ent:enterprise>
<bs:uuid>0bf1501c-df93-43c5-9206-6a4535b8a0b8</bs:uuid>
<bs:guid>eb09911a-a9b8-4b7a-88d3-1d20b0c17048</bs:guid>
</ent:enterprise>
</ent:activityLocation>*

RE: "Плохой тип переменной" при загрузке площадок - Добавил(а) Михайлов Михаил около 5 лет назад

Михайлов Михаил писал(а):

У меня тоже раньше прекрасно работало, но потом что-то сломалось, не пойму где.
И еще при создании площадок тоже стало срабатывать

[...]

Может причина та же?

Тут нашел другую причину (разработчик посмотри):
Обработка "ВСД_СОздатьПлощадку.ert"
Процедура "ПолучитьОтветПлощадка"

    Результат = ГМ.ПолучитьРезультатСервер( applicationID );

       Сообщить("Загрузка XML-файла: "+ГМ.Компонента.LogFilename);
    objDom=СоздатьОбъект("MSXML2.DOMDocument");
    objDom.load(ГМ.Компонента.LogFilename);

    Если ГМ.НайтиОшибки()>0 Тогда
        Возврат;
    КонецЕсли;

    enterprise=objDom.selectSingleNode("//merc:enterprise") ;
    guid = enterprise.selectSingleNode("bs:guid").text;
    uuid = enterprise.selectSingleNode("bs:uuid").text;
    name = enterprise.selectSingleNode("ent:name").text;
    active = enterprise.selectSingleNode("bs:active").text;

Результат не подвергается сомнению.
То есть ожидается, что меркурий сразу даст ответ и ответ можно разбирать на теги (//merc:enterprise, bs:guid" итд)
Но вот мне меркурий отвечает не моментально и сначала приходит ответ "IN_PROCESS" то есть в очереди или как-то так.
Соответственно когда мне сказали "ждите" я пытаюсь найти в ответе инфу(//merc:enterprise, bs:guid" итд), ну и ясно её там нет.
В других подобных местах посмотрел, взял алгоритм ожидания:

    Результат = ГМ.ПолучитьРезультатСервер( applicationID );

    Сообщить("Результат = "+Результат);
        Для А=1 По 10 Цикл
            Если (Результат="IN_PROCESS") Тогда
                Результат = ГМ.ПолучитьРезультатСервер( applicationID );
            КонецЕсли;
        КонецЦикла;

       Сообщить("Загрузка XML-файла: "+ГМ.Компонента.LogFilename);
    objDom=СоздатьОбъект("MSXML2.DOMDocument");
    objDom.load(ГМ.Компонента.LogFilename);

    Если ГМ.НайтиОшибки()>0 Тогда
        Возврат;
    КонецЕсли;

    enterprise=objDom.selectSingleNode("//merc:enterprise") ;
    guid = enterprise.selectSingleNode("bs:guid").text;
    uuid = enterprise.selectSingleNode("bs:uuid").text;
    name = enterprise.selectSingleNode("ent:name").text;
    active = enterprise.selectSingleNode("bs:active").text;


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

RE: "Плохой тип переменной" при загрузке площадок - Добавил(а) кб99 Синявский Филипп около 5 лет назад

Добрый день.

Такую проблему пока не встречал - наверно ни у кого нет так много площадок.
Хорошо, добавлю.

RE: "Плохой тип переменной" при загрузке площадок - Добавил(а) Михайлов Михаил около 5 лет назад

Почему много.
Я вроде создаю одну площадку. И потом наверное занятость меркурия не связана с количеством моих площадок?
Это кстати у меня давно началось.

RE: "Плохой тип переменной" при загрузке площадок - Добавил(а) Михайлов Михаил около 5 лет назад

Филипп, если можно еще посмотрите "Меркурий_ГлобальныйМодуль:ЗагрузитьПлощадкиТЗ" - с чего вся тема началась.

Я же там костыль поставил: (Если ПустоеЗначение(activityLocation.selectSingleNode("ent:enterprise") ...........)

    Для i1 = 0 По activityLocationList.length - 1 Цикл
        activityLocation=activityLocationList.item(i1); 

        Если ПустоеЗначение(activityLocation.selectSingleNode("ent:enterprise").text)=1 Тогда
            Продолжить;
        КонецЕсли;

        guid = activityLocation.selectSingleNode("ent:enterprise").selectSingleNode("bs:guid").text;

        ЗагрузитьПлощадкуПоGuidТЗ(guid, ХС, тзПлощадки);

    КонецЦикла;

Мне меркурий некоторые секции "ent:enterprise" присылает пустые.
А то мне придется каждый раз ГМ менять.

Заранее СПС.

RE: "Плохой тип переменной" при загрузке площадок - Добавил(а) кб99 Синявский Филипп около 5 лет назад

это я пытаюсь шутить :)
Да, тестовый сервер отвечает мгновенно, а рабочий иногда задумывается...
поправил.

    (1-8/8)