![]() |
![]() |
![]() |
|
v7: Программное добавление элемента справочника | ☑ | ||
---|---|---|---|---|
0
vhrss
21.01.12
✎
19:09
|
Хочу програмно добавить элемент в справочник "номенклатура", среди атрибутов которого присутствует "БазоваяЕдиница" - элемент справочника "Единицы", который подчинен "Номенклатуре".
Код: ПерГр=СоздатьОбъект("Справочник.Номенклатура"); ПерГр.НайтиПоКоду("00001057"); ВыбНоменклатура=СоздатьОбъект("Справочник.Номенклатура"); ВыбНоменклатура.НайтиПоКоду("00004601"); ВремНаим="Журнал №1"; НовНомен=СоздатьОбъект("Справочник.Номенклатура"); НовНомен.Новый(); НовНомен.Наименование=ВремНаим; НовНомен.Родитель=ПерГр.ТекущийЭлемент(); НовНомен.ПолнНаименование=ВремНаим; НовНомен.Записать(); Если НовНомен.НайтиПоНаименованию(ВремНаим,0,1)=1 Тогда СпрЕдиницы = СоздатьОбъект("Справочник.Единицы"); СпрОКЕИ=СоздатьОбъект("Справочник.ОКЕИ"); СпрОКЕИ.НайтиПоКоду("796"); СпрЕдиницы.ИспользоватьВладельца(НовНомен.ТекущийЭлемент()); СпрЕдиницы.Новый(); СпрЕдиницы.Владелец=НовНомен.ТекущийЭлемент(); СпрЕдиницы.Наименование = РеквЕдиница.Наименование; СпрЕдиницы.Коэффициент = 1; СпрЕдиницы.ОКЕИ = СпрОКЕИ.ТекущийЭлемент(); СпрЕдиницы.Записать(); КонецЕсли; НовНомен.УстановитьАтрибут("БазоваяЕдиница", СпрЕдиницы.ТекущийЭлемент()); Сразу после этого я для отладки пишу следующий кусок кода: Если НовНомен.БазоваяЕдиница.Владелец<>НовНомен Тогда Предупреждение("Не совпадает базовая!"); КонецЕсли; И при тестировании мне выдается это самое "Не совпадает базовая", почему? Хотя при отладке к этому моменту в переменной НовНомен.БазоваяЕдиница.Владелец лежит значение "Журнал №1", которое также лежит и в НовНомен. Проблема не только в непрохождении данной проверки, а также и в дальнейшем, когда когда я пользуюсь этим элементом номенклатуры, оказывается что владелец базовой цены не совпадает с ней самой. Заранее благодарен за ответы. |
|||
1
vhrss
21.01.12
✎
19:12
|
Прошу прощения: эта тема относится к V 7.7 - в названии опечатка
|
|||
2
Tarlich
21.01.12
✎
19:16
|
а после
НовНомен.УстановитьАтрибут("БазоваяЕдиница", СпрЕдиницы.ТекущийЭлемент()); НовНомен.Записать(); //на до же а почему не НовНомен.БазоваяЕдиница=БазоваяЕдиница.ссылка; // или БазоваяЕдиница.ТекущийЭлемент() ; //если 7.7 НовНомен.Записать(); |
|||
3
Tarlich
21.01.12
✎
19:32
|
Вроде так
ПерГр=СоздатьОбъект("Справочник.Номенклатура"); //группа ПерГр.НайтиПоКоду("00001057"); НовНомен=СоздатьОбъект("Справочник.Номенклатура"); НовНомен.ИспользоватьРодителя(ПерГр); НовНомен.Новый(); НовНомен.Наименование="Журнал №1"; НовНомен.ПолнНаименование="Журнал №1"; НовНомен.Записать(); СпрЕдиницы = СоздатьОбъект("Справочник.Единицы"); СпрЕдиницы.ИспользоватьВладельца(НовНомен.ТекущийЭлемент()); СпрЕдиницы.Новый(); СпрОКЕИ=СоздатьОбъект("Справочник.ОКЕИ"); СпрОКЕИ.НайтиПоКоду("796"); СпрЕдиницы.Коэффициент = 1; СпрЕдиницы.ОКЕИ = СпрОКЕИ.ТекущийЭлемент(); СпрЕдиницы.Наименование = СпрОКЕИ.Наименование; СпрЕдиницы.Записать(); НовНомен.БазоваяЕдиница=СпрЕдиницы.ТекущийЭлемент(); НовНомен.Записать(); |
|||
4
vhrss
22.01.12
✎
11:32
|
Пробовал. Результат тот же.
|
|||
5
vhrss
22.01.12
✎
11:51
|
НовНомен.Записать() - забыл лишь сдесь - на форуме, в реальном коде - был.
Извращаться с "УстановитьАтрибут" начал как раз после того, как не сработало с "=СпрЕдиницы.ТекущийЭлемент()" |
|||
6
vhrss
22.01.12
✎
11:52
|
*здесь
|
|||
7
Rie
22.01.12
✎
11:54
|
(0) А ты напиши
Если НовНомен.БазоваяЕдиница.Владелец<>НовНомен.ТекущийЭлемент() Тогда Предупреждение("Не совпадает базовая!"); КонецЕсли; и жизнь сразу станет легче. |
|||
8
Rie
22.01.12
✎
11:56
|
+(7) (Ты сравнивал ссылку с объектом. В 7-ке между ними тоже есть разница).
|
|||
9
vhrss
22.01.12
✎
12:46
|
Понял. Заработало. Спасибо
Не тольтко в этой проверке но и ниже одной из переменных я присвоил "=НовНомен;", отчего и полезла ошибка несоответствия владельцев с невозможностью добавить так созданную номенклатуру в документ. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |