Имя: Пароль:
1C
1С v8
Ошибка обмена с сайтом (Розница)
0 romanыч
 
13.09.20
07:30
В 1С Розница не работает обмен с сайтом.
Ошибка:
Метод объекта не обнаружен (Свойство)

Если НЕ ОбъектАдреса.Свойство("AddressType") Тогда

Функция ПредставлениеНаселенногоПункта(ОбъектАдреса) Экспорт
    
    АдресныеУровниБезСокращений = Новый Соответствие();
    АдресныеУровниБезСокращений.Вставить("MunDistrict", Истина);
    АдресныеУровниБезСокращений.Вставить("Settlement",  Истина);
    
    Если НЕ ОбъектАдреса.Свойство("AddressType") Тогда
        СписокПолейАдреса = "Area,City";
    ИначеЕсли РаботаСАдресамиКлиентСервер.ЭтоМуниципальныйАдрес(ОбъектАдреса.AddressType) Тогда
        СписокПолейАдреса = "Area,MunDistrict,Settlement,CityDistrict,Locality,Territory";
    Иначе
        СписокПолейАдреса = "Area,District,City,CityDistrict,Locality,Territory";
    КонецЕсли;
    СписокПолей = СтрРазделить(СписокПолейАдреса, ",");
    
    Адрес = Новый Массив;
    Для каждого ИмяПоля Из СписокПолей Цикл
        Если ОбъектАдреса.Свойство(ИмяПоля) И ЗначениеЗаполнено(ОбъектАдреса[ИмяПоля]) Тогда
            ПредставлениеУровня = ОбъектАдреса[ИмяПоля]
                + ?(АдресныеУровниБезСокращений.Получить(ИмяПоля) = Неопределено, " " + ОбъектАдреса[ИмяПоля + "Type"], "");
            Адрес.Добавить(СокрЛП(ПредставлениеУровня));
        КонецЕсли;
    КонецЦикла;
    
    Возврат СтрСоединить(Адрес, ", ");
    
КонецФункции

Тип переменной ОбъектАдреса это ОбъектXDTO

Раньше обмен работал. Давно не пользовался. С тоговремени производил обновление конфигурации и платформы. Подскажите,что можно поправить.
1 Ёпрст
 
гуру
13.09.20
08:46
(0) ну включи в отладчике остановку по ошибке и посмотри, че прилетает в ОбъектАдреса, мот там списокXDTO или Неопределен
2 romanыч
 
13.09.20
15:59
(1) Тип переменной ОбъектАдреса это ОбъектXDTO
Это я в отладчике посмотрел
3 Ёпрст
 
гуру
13.09.20
16:08
(2) в момент ошибки, или когда ?
4 RomanYS
 
13.09.20
16:09
(2) У ОбъектXDTO нет метода Свойство.

>> Раньше обмен работал. Давно не пользовался.
Значит либо обмен не работал, либо этот код не вызывался, либо туда приходил не ОбъектXDTO (наиболее вероятно)
5 Ёпрст
 
гуру
13.09.20
16:11
И..у ОбъектXDTO нет метода Свойство(), есть Свойства()
6 Ёпрст
 
гуру
13.09.20
16:14
и судя по-коду, туда должна прилетать Структура
7 romanыч
 
13.09.20
17:35
Победил при помощи добавления новой функции:

&НаСервере
Функция ПеременнаяСодержитСвойство(Переменная, ИмяСвойства) Экспорт
    // Инициализируем структуру для теста с ключом (значение переменной "ИмяСвойства") и значением NULL
    СтруктураПроверка = Новый Структура;
    СтруктураПроверка.Вставить(ИмяСвойства, NULL);
    // Заполняем созданную структуру из переданного значения переменной
    ЗаполнитьЗначенияСвойств(СтруктураПроверка, Переменная);
    // Если значение для свойства структуры осталось NULL, то искомое свойство не найдено, и наоборот.
    Если СтруктураПроверка[ИмяСвойства]= NULL Тогда
        Возврат Ложь;
    Иначе
        Возврат Истина;
    КонецЕсли;
КонецФункции

Но дальше возникла новая проблема.Присутствует ссылка на функцию, которой нету ))
8 RomanYS
 
13.09.20
17:41
(7) Почему не разобраться с ошибкой и не исправить её? Ты рановато на путь велосипедостроения встал.
9 romanыч
 
13.09.20
18:21
(8) А чем это решение не "разобраться с ошибкой"? Как с ней можно разобраться, если разработчик использовал метод, которого нет у данного типа объекта? Я не совсем понимаю, как еще можно разобраться с ошибкой.
10 RomanYS
 
13.09.20
18:36
(9) разработчик вероятно писал под структуру. Ты сейчас сэмулируешь один метод, будет падать на другом, ты ещё один костыль добавишь.

Если разобраться в лоб не получается, но точно знаешь, что работало, может стоит поднять бэкапы посмотреть как работало.
11 romanыч
 
13.09.20
19:58
(10) нихрена там не под структуру писано. Все функции,где адрес формируется, имеют в названии XDTO да XML, да и в коде структурой не пахнет. Бэкапы старые нашел, там вообще код не такой, все совершенно изменилось. Разбираться долго придется, так что оставим так до следующего обновления. Благо все работает.