Вот тебе пример :
Function RefFindC(Mode,Code)
RefC = CreateObject("Reference."+Mode);
if RefC.FindByCode(Code) = 0 then
RefC.New();
if Mode = "ОКЕИ" then
RefC.Code = Code;
endif;
RefC.Write();
Message("--->В справочник "+Mode+" добавлен элемент "+RefC.Наименование);
endif;
Return RefC.CurrentItem();
EndFunction
//-----------------------------------
Function RefFindD(Mode,Name)
RefD = CreateObject("Reference."+Mode);
RefD.UseOwner(ТекущийТовар);
if RefD.FindByDescr(Name) = 0 then
RefD.New();
if Mode = "Единицы" then
RefD.Code = TrimALL(DBF.Field105);
RefD.Наименование = DBF.Field106;
RefD.ОКЕИ = ОКЕИ;
RefD.Коэффициент = 1;
endif;
RefD.Наименование = Name;
RefD.Write();
Message("--->В справочник "+Mode+" добавлен элемент "+RefD.Наименование);
endif;
Return RefD.CurrentItem();
EndFunction
//**************************************************************************
Ref = CreateObject("Reference."+Mode);
// Создаем новый элемент - сокращено для экономии
if Mode = "Номенклатура" then
Ref.Write();
ТекущийТовар = Ref.CurrentItem();
ОКЕИ = RefFindC("ОКЕИ",TrimALL(DBF.Field105));
Ref.БазоваяЕдиница = RefFindD("Единицы",TrimALL(DBF.Field106));
Ref.Write();
endif;
Добавлено:
ед = СоздатьОбъект ("Справочник.ОКЕИ");
ед.НайтиПоНаименованию ("шт", 1);
спр = СоздатьОбъект ("Справочник.Номенклатура");
спр.Новый ();
спр.Наименование = "товар";
спр.БазоваяЕдиница = ед.ТекущийЭлемент ();
спр.Записать ();
Для твоего случая надо делать так :
спр = СоздатьОбъект ("Справочник.Номенклатура");
спр.Новый ();
спр.Наименование = "товар";
спр.Записать ();
ед = СоздатьОбъект ("Справочник.
Единицы");
ед.ИспользоватьВладельца(спр.ТекущийЭлемент ());
ед.НайтиПоНаименованию ("шт", 1); .// но сработает только, если длина наименования не 0
// иначе надо найти наименование в справочнике ОКЕИ и потом использовать
//ед.НайтиПоРеквизиту("ОКЕИ")
спр.БазоваяЕдиница = ед.ТекущийЭлемент ();
спр.Записать ();