Имя: Пароль:
1C
1С v8
v8: Проблема с конвертацией данных
0 Arhont
 
26.10.11
10:51
В обработчике загрузки правил конвертации объектов, а именно - справочников решил везде проставить унифицированный код (чтобы не париться с иерархичностью справочников и прочим):
-----------------------
НаименованиеСправочника = СтрЗаменить(ИмяТипаОбъекта,"СправочникСсылка.","");
ПроверяемРодительскуюГруппу = Истина;
МетаданныеСправочника = Справочники[НаименованиеСправочника].ПустаяСсылка().Метаданные();
Если МетаданныеСправочника.Иерархический Тогда
   Если Строка(МетаданныеСправочника.ВидИерархии) = "ИерархияГруппИЭлементов" Тогда
       ПроверяемРодительскуюГруппу = Ложь;
   КонецЕсли;
Иначе
   ПроверяемРодительскуюГруппу = Ложь;
КонецЕсли;

Если не ОбъектНайден И ПроверяемРодительскуюГруппу Тогда
   Группа = Справочники[НаименованиеСправочника].НайтиПоНаименованию("НЕ НАЙДЕНЫ ПРИ ОБМЕНЕ С ФИЛИАЛАМИ");
   Если Группа.Пустая() Тогда
       Группа = Справочники[НаименованиеСправочника].СоздатьГруппу();
       Группа.Наименование = "НЕ НАЙДЕНЫ ПРИ ОБМЕНЕ С ФИЛИАЛАМИ";
       Группа.Записать();
   КонецЕсли;
   Объект.Родитель = Группа.Ссылка;
   Объект.Записать();
   Сообщить(Объект.Родитель);
КонецЕсли;
---------------------------

Но выдается ошибка:

---------------------------
Ошибка в обработчике события ПослеЗагрузкиОбъекта
   ИмяПКО                 =  ВидыКонтактнойИнформации
   ТипОбъекта             =  Справочник ссылка: Виды контактной информации
   Объект                 =  Юридический адрес организации
   Обработчик             =  ПослеЗагрузкиОбъекта
   ОписаниеОшибки         =  Поле объекта не обнаружено (Справочник)
   ПозицияМодуля          =  (2)
   КодСообщения           =  21

Ошибка при загрузке данных: {Обработка.ОбменДаннымиXML(1597)}: Ошибка в обработчике события ПослеЗагрузкиОбъекта
   ИмяПКО                 =  ВидыКонтактнойИнформации
   ТипОбъекта             =  Справочник ссылка: Виды контактной информации
   Объект                 =  Юридический адрес организации
   Обработчик             =  ПослеЗагрузкиОбъекта
   ОписаниеОшибки         =  Поле объекта не обнаружено (Справочник)
   ПозицияМодуля          =  (2)
   КодСообщения           =  21
-------------------------------------

Пробовал разные варианты, похоже что дело с обращением к метаданным, т.к. при удалении обращений к ним все вроде ок. Но для универсальности без них никак. Уж по-разному пробовал, и:
"Метаданные.Справочники[НаименованиеСправочника].Иерархический" и
"Справочники[НаименованиеСправочника].ПустаяСсылка().Метаданные()" -  все никак.

Это на самом деле нереально к метаданным подцепиться или я что-то не так делаю?
1 Рэйв
 
26.10.11
10:55
У тебя совсем не к этому коду ошибка относится.Читай внимательней.

Справочник ссылка: Виды контактной информации

ПослеЗагрузкиОбъекта

Открывай КД и смотри что там у тебя обработчикеПослеЗагрузки
2 Arhont
 
26.10.11
11:02
1) Так это я и привел текст обработчика "После загрузки" из КД
3 Рэйв
 
26.10.11
11:21
(2)Значит не тот обработчик.
У тебя там поле Справочник нигде не используется
4 Arhont
 
26.10.11
11:26
3) Да вроде тот, т.к. другого ничего не нашел, причем, когда из этого обработчика удаляю строки:

МетаданныеСправочника = Справочники[НаименованиеСправочника].ПустаяСсылка().Метаданные();
Если МетаданныеСправочника.Иерархический Тогда
   Если НЕ Строка(МетаданныеСправочника.ВидИерархии) = "ИерархияГруппИЭлементов" Тогда
       ПроверяемРодительскуюГруппу = Ложь;
   КонецЕсли;
Иначе
   ПроверяемРодительскуюГруппу = Ложь;
КонецЕсли;

...то ошибка изчезает.
5 Рэйв
 
26.10.11
11:30
(4)Ну открывай тогда отладчик, ставь точку останова на исключении и смотри внутрях чего ему не нравится
AdBlock убивает бесплатный контент. 1Сергей