helpf.pro
Регистрация

v8: 1С + Wialon

qazar
07.10.2013 16:39Прочитано: 3600
Доброго времени суток! При формировании запроса выдает такую ошибку:

{Справочник.Объекты.Форма.ФормаСписка.Форма(49)}: Поле объекта недоступно для записи (Наименование)
Объект[ПроРеквизит.Ключ] = ПроРеквизит.Значение;

Фрагмент кода:

&НаСервере
Функция СинхронизироватьНаСервере(ИмяСправочника)
//Возврат РаботаСВиалон.Синхронизировать(ИмяСправочника);

// сделаю по-новой технологии
Рез = Новый Структура("Статус, ТекстСообщения", Истина, "");

//{{ сформировать команду и отправить на сервер
//тКмнд = "%URL%?svc=core/get_account_data&sid=%SID%&params={""itemId"":%3}",
ПроКоманду = Новый Структура;
ПроКоманду.Вставить("ИмяСервиса", "core/search_items");
ПроКоманду.Вставить("Параметры", Справочники[ИмяСправочника].ПолучитьСтрокуПараметраДляЗапроса(ПроКоманду.ИмяСервиса));


РезультатВыполнения = РаботаСВиалон.ОтправитьКомандуНаСерверВиалон(ПроКоманду);
Если РезультатВыполнения.Статус = Ложь Тогда
Рез.Статус = Ложь;
Рез.ТекстСообщения = "Ошибка при отправке команды на сервер Wialon."+Символы.ПС+РезультатВыполнения.ТекстСообщения;
Возврат Рез;
КонецЕсли;
//}} сформировать команду и отправить на сервер


Если ТипЗнч(РезультатВыполнения.Ответ) <> Тип("Соответствие") Тогда
Рез.Статус = Ложь;
Рез.ТекстСообщения = "Сервер Wialon вернул некорректный ответ."+Символы.ПС+РезультатВыполнения.ТекстСообщения;
Возврат Рез;
КонецЕсли;


//НовыеЗначенияРеквизитов = Новый Соответствие;
Для Каждого ДанныеУчетки из РезультатВыполнения.Ответ["items"] Цикл

СтруктураЗначенийРеквизитов = Справочники[ИмяСправочника].ИнтерпретироватьОтветВиалон(ДанныеУчетки);

Объект = Справочники[ИмяСправочника].ПустаяСсылка();

ИмяРеквизита = "ВиалонИД";
Если СтруктураЗначенийРеквизитов[ИмяРеквизита] <> Неопределено Тогда
Объект = Справочники[ИмяСправочника].НайтиПоРеквизиту(ИмяРеквизита, СтруктураЗначенийРеквизитов[ИмяРеквизита]);
КонецЕсли;

Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
Объект = Справочники[ИмяСправочника].СоздатьЭлемент();
КонецЕсли;

Для Каждого ПроРеквизит из СтруктураЗначенийРеквизитов Цикл
Объект[ПроРеквизит.Ключ] = ПроРеквизит.Значение;
КонецЦикла;

Объект.Записать();

КонецЦикла;

//Если НовыеЗначенияРеквизитов.Количество() = 0 Тогда
//обновления не потребовалось
//Иначе
// УчетнаяЗаписьОбъект = УчетнаяЗапись.ПолучитьОбъект();
// Для Каждого КЗ из НовыеЗначенияРеквизитов Цикл
// УчетнаяЗаписьОбъект[КЗ.Ключ] = КЗ.Значение;
// КонецЦикла;
// УчетнаяЗаписьОбъект.Записать();
//КонецЕсли;

Возврат Рез;

КонецФункции // СинхронизироватьНаСервере

Помогите найти, где ошибка.
Yandex
Возможно, вас также заинтересует
Реклама на портале
oleksandr_homyak
07.10.2013 17:03Ответ № 1
РЛС?, роли(это скорей всего, можно выставить на реквизиты) ?, м.б. предопределенный элемент.
Mokey
08.10.2013 11:36Ответ № 2
Вы пытаетесь редактировать ссылку на элемент справочника, получайте сначала объект после Объект = Справочники[ИмяСправочника].ПустаяСсылка(); и Объект = Справочники[ИмяСправочника].НайтиПоРеквизиту(ИмяРеквизита, СтруктураЗначенийРеквизитов[ИмяРеквизита]);
Подсказка: Вы получили ответ на свой вопрос - закройте вопрос!
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.