Здесь немного сложнее. Тот шаг, который я написал про удаление справочника был, как раз основан на том, что при перегонке типизированного атрибута я получил вместо наименования – код. Смотрите, как это было. Вот примерный список номенклатуры.
Так, если его вывести в таблицу, то вроде все нормально.
Процедура Сформировать() Т = СоздатьОбъект("Таблица"); Спр =СоздатьОбъект("Справочник.Номенклатура"); Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент()>0 Цикл Т.ВывестиСекцию("Секция_1"); КонецЦикла; Т.ТолькоПросмотр(1); Т.Показать(); КонецПроцедуры
Таблица.
А вот как выглядит в таблице.
Посмотрев таблицу, я совсем наивно, как ребенок, подумал, что и в DBF будет выглядеть также. Именно эта мысль заставила меня написать шаг об программной очистке справочника. Итак, вот код.
Процедура Сформировать() Т = СоздатьОбъект("Таблица"); Спр = СоздатьОбъект("Справочник.Номенклатура"); ДБФ = СоздатьОбъект("XBase"); ДБФ.ДобавитьПоле("NAME", "S", 50,0); ДБФ.ДобавитьПоле("POST", "S", 50,0); ДБФ.ДобавитьПоле("ED", "S", 50,0); ДБФ.ДобавитьПоле("c:\Test.dbf"); Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент()>0 Цикл Т.ВывестиСекцию("Секция_1"); ДБФ.Добавить(); ДБФ.NAME=Спр.Наименование; ДБФ.POST=Спр.Поставщик; ДБФ.ED=Спр.ЕдиницыИзмерения; ДБФ.Записать(); КонецЦикла; Т.ТолькоПросмотр(1); Т.Показать(); КонецПроцедуры
А теперь, что в DBF:
Так вот код там. А мне нужно было наименование. Именно наименование. Так вот все дело в том, если атрибут типизирован, то нужно вызывать его атрибут Наименование.
ДБФ.POST=Спр.Поставщик.Наименование; ДБФ.ED=Спр.ЕдиницыИзмерения.Наименование;
Теперь все в порядке:
На всякий случай, почему имя. Дело в том, что в справочнике существовало несколько помеченных на удаление элементов. Но удалить их было нельзя. Видно где-то они фигурировали в проводках. При том с одинаковыми именами на взгляд. Искать мне было лень, вот я и решил просто сохранить как наименование. А так как справочник поставщиков уже был, я мог найти запись по имени и взаимосвязь осталась бы. Кстати с единицами измерения так же.