Продолжаем разговор. Ниже функция для импорта справочника единиц измерения. Создана по образу и подобию импорта номенклатуры, так что нового там мало. Эту функцию нужно добавить в модуль scr_1CFirstImport.
function ImportUnits(){ Log.Write(1,'Первичный импорт справочника единиц измерения'); Log.Write(1,'========================================'); var Dataset = Services.GetNewItemByUSI('ds_Unit'); Log.Write(1,'Открытие справочника единиц измерения в 1С...'); var C1 = FirstImport.Obj1C; var Units = C1.Справочники.КлассификаторЕдиницИзмерения; var UnitsList = Units.Выбрать(); Log.Write(1,'Загрузка единиц измерения...'); var UnitObj; var ID; while (UnitsList.Следующий()){ UnitObj = UnitsList.ПолучитьОбъект(); if (!UnitObj.ЭтоГруппа){ Dataset.Append(); ID = Connector.GenGUID(); Dataset('ID') = ID; Dataset('IntegrationID') = UnitObj.Код; Dataset('Name') = UnitObj.Наименование; Dataset('Description') = UnitObj.НаименованиеПолное; Dataset('IntegrationDate') = GetTodayDate().getVarDate(); Dataset.Post(); Log.Write(1,Dataset('IntegrationID')+' '+Dataset('Name')); } System.ProcessMessages(); } Log.Write(1,'=================================================='); Log.Write(1,'Первичный импорт справочника единиц измерения завершен.'); }
На сколько я знаю групп в справочнике единиц нету, но проверку в функции на всякий случай оставил.
Почему после создания СОМОбьекта и подключения к нему нету доступа к справочникам 1С? Например, в вашем же коде:
var Offerings = C1.Справочники.Номенклатура; - undefined.
А инициализация объекта точно прошла нормально? И еще, каким образом инициализировали объект? Как Application или как COMConnector?
Пробовал оба варианты.
C1.Справочники - работает. C1.Справочники.Номенклатура - нет.
Я и выборку пробовал делать из Клиентов. Результат "Таблица не найдена Справочники.Клиенты".
function dataload() { var v8=new ActiveXObject("V81.COMConnector"); path='E:\\1C\\DB'; db='TEST'; user='user1'; password='123456789a'; conn = v8.Connect("File=\""+path+""\"";Ref=\""""+db+""\"";Usr=\""""+user+""\"";Pwd=\""""+password+""\"";"");;
С русскими названиями можно работать только если инициализировали объект Application. Если работа идет с COMConnector, то там все интерфейсы, все процедуры и объекты называются по английски, это надо смотреть SDK по COM-объекту 1С.
По поводу справочников, их правильное название лучше смотреть в самой 1С, например, в конфигураторе.
В тексте указанном выше есть строка
"tab = conn.Справочники.Клиенты;"
У нас в 1С такого справочника нет, есть справочник "Контрагенты".
В приведенным скрипте "ИЗ Справочники.Клиенты" - не верно. Верно"ИЗ Справочник.Клиенты" :smile:
И при работе с V81.Application надо было обращаться к самому объекту Application. Я обращался к Connect как в V81.COMConnector.
Но теперь я во всем разобрался :smile:
P.S. У меня через COMConnector работают процедуры и объекты на русском.
"Домброва Михаил" написал:У меня через COMConnector работают процедуры и объекты на русском.
Странно, а у меня ни в какую не захотел по-русски. Или там написание отличается?
Работает:
function dataload() { var v8=new ActiveXObject("V81.COMConnector"); connection = v8.Connect("File=\"E:\\1C\\DB\"";"");
Да. Совершенно верно, я понял свою ошибку. Я к КомКоннектору обращался как объекту самому, а не к Коннекту.