Имя: Пароль:
1C
 
1C Api Intime
,
0 Casper21
 
12.12.15
23:07
http://www.intime.ua/API2.0/API_2_0.pdf
Кто-то из вас не пробовал вытянуть информацию о:
Справочник населенных пунктов
Справочник подразделений
Например так:
Процедура СписокНаселеныхПунктов() Экспорт
    //Создаем прокси для обращения к внешнему веб-сервису,
    // передаем в функцию URI пространства имен, имя сервиса, имя порта.
    Прокси = WSСсылки.InTime20.СоздатьWSПрокси("http://www.reality.sh/in-time/Api20";, "API20", "API20Soap");
    
    //Получаем тип параметра, который передается в метод.
    //Ур1
    ТипCatalogList            = Прокси.ФабрикаXDTO.Пакеты.Получить("http://www.reality.sh/in-time/Api20").Получить("CatalogList";);
    //Ур2
    ТипCatalogListRequest        = Прокси.ФабрикаXDTO.Пакеты.Получить("http://inr.intime.ua/in-time/integration20").Получить("CatalogListRequest";);
    //Ур3
    ТипAuthData                = Прокси.ФабрикаXDTO.Пакеты.Получить("http://inr.intime.ua/in-time/integration20").Получить("AuthData";);
    
    прAuthData = Прокси.ФабрикаXDTO.Создать(ТипAuthData);
    прAuthData.ID = Константы.ИнТаймID.Получить();
    прAuthData.KEY = Константы.ИнТаймKEY.Получить();
    
    прCatalogListRequest = Прокси.ФабрикаXDTO.Создать(ТипCatalogListRequest);
    прCatalogListRequest.AuthData     = прAuthData;
    прCatalogListRequest.CatalogNameEng.ADD("List of settlements");
    
    прCatalogList = Прокси.ФабрикаXDTO.Создать(ТипCatalogList);
    прCatalogList.CatalogListRequest = прCatalogListRequest;
    
    ТаблицаОтвета = Новый ТаблицаЗначений;
    Попытка
        Результат = Прокси.CatalogList(прCatalogListRequest);
        //Результат = "";
        
        Если Результат.InterfaceState <> "OK" Тогда
            Сообщить("Запрос не выполнился: "+Результат.InterfaceState);
        Иначе
            Сообщить("Запрос выполнился: "+Результат.InterfaceState);
        КонецЕсли;
        
        ТаблицаОтвета = Результат.ListCatalog.Catalog;
        
    Исключение
        Сообщить("Запрос не выполнился!");
        Возврат;
    КонецПопытки;
    
    СозданоЗаписи=0;
    ОбновленоЗаписи=0;
    Для Каждого текСтр из ТаблицаОтвета Цикл
        Попытка
            ОбновленоЗаписи=ОбновленоЗаписи+1;    
            Элемент = Справочники.СправочникНаселенныхПунктов.НайтиПоКоду(текСтр.Code).ПолучитьОбъект();
            Элемент.Код = текСтр.Code;
            Элемент.Наименование = текСтр.Name;
            Для каждого ПодчЭлемент ИЗ текСтр.AppendField Цикл
                Если ПодчЭлемент.AppendFieldName = "State" Тогда
                    State = ПодчЭлемент.AppendFieldValue;
                    Элемент.Область=State;
                ИначеЕсли ПодчЭлемент.AppendFieldName = "Area" Тогда
                    Area = ПодчЭлемент.AppendFieldValue;
                    Элемент.Район=Area;
                ИначеЕсли ПодчЭлемент.AppendFieldName = "CodeWarehouseDelivery" Тогда
                    CodeWarehouseDelivery = ПодчЭлемент.AppendFieldValue;
                    Элемент.КодСкладаОбсулживания=Справочники.СправочникПодразделений.НайтиПоКоду(CodeWarehouseDelivery).Ссылка;
                ИначеЕсли ПодчЭлемент.AppendFieldName = "PresenceOfWarehouse" Тогда
                    PresenceOfWarehouse = ПодчЭлемент.AppendFieldValue;
                    Если PresenceOfWarehouse = "Да" тогда
                        Элемент.НаличиеПодразделения=Истина;
                    Иначе
                        Элемент.НаличиеПодразделения=Ложь;
                    КонецЕсли;
                КонецЕсли;
            КонецЦикла;
            Элемент.Записать();
            Если PresenceOfWarehouse = "Да" тогда
                    ЭлементСправочника = Справочники.СправочникПодразделений.НайтиПоКоду(CodeWarehouseDelivery).ПолучитьОбъект();
                    ЭлементСправочника.ЗаборИДоставка = Истина;
                    ЭлементСправочника.Записать()
            КонецЕсли;
        Исключение
            ОбновленоЗаписи=ОбновленоЗаписи-1;
        КонецПопытки;
        Попытка
            НовыйCклад=Справочники.СправочникНаселенныхПунктов.СоздатьЭлемент();
            НовыйCклад.Код=текСтр.Code;
            НовыйCклад.Наименование=текСтр.Name;
            Если НовыйCклад.Наименование = "" Тогда    
            Иначе
                СозданоЗаписи=СозданоЗаписи+1;
                Для каждого ПодчЭлемент ИЗ текСтр.AppendField Цикл
                    Если ПодчЭлемент.AppendFieldName = "State" Тогда
                        State = ПодчЭлемент.AppendFieldValue;
                        НовыйCклад.Область=State;
                    ИначеЕсли ПодчЭлемент.AppendFieldName = "Area" Тогда
                        Area = ПодчЭлемент.AppendFieldValue;
                        НовыйCклад.Район=Area;
                    ИначеЕсли ПодчЭлемент.AppendFieldName = "CodeWarehouseDelivery" Тогда
                        CodeWarehouseDelivery = ПодчЭлемент.AppendFieldValue;
                        НовыйCклад.КодСкладаОбсулживания=Справочники.СправочникПодразделений.НайтиПоКоду(CodeWarehouseDelivery).Ссылка;
                    ИначеЕсли ПодчЭлемент.AppendFieldName = "PresenceOfWarehouse" Тогда
                            PresenceOfWarehouse = ПодчЭлемент.AppendFieldValue;
                        Если PresenceOfWarehouse = "Да" тогда
                            НовыйCклад.НаличиеПодразделения=Истина;
                        Иначе
                            НовыйCклад.НаличиеПодразделения=Ложь;
                        КонецЕсли;
                    КонецЕсли;
                КонецЦикла;    
                    НовыйCклад.Записать();
                Если PresenceOfWarehouse = "Да" тогда
                    ЭлементСправочника = Справочники.СправочникПодразделений.НайтиПоКоду(CodeWarehouseDelivery).ПолучитьОбъект();
                    ЭлементСправочника.ЗаборИДоставка = Истина;
                    ЭлементСправочника.Записать()
                КонецЕсли;
            КонецЕсли;
        Исключение
            СозданоЗаписи=СозданоЗаписи-1;
        КонецПопытки;
    КонецЦикла;
    Сообщить("Добавлено: "+СозданоЗаписи+" записей");
    Сообщить("Обновлено: "+ОбновленоЗаписи+" записей");    
    
КонецПроцедуры


Процедура СписокПодразделений() Экспорт
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    СправочникПодразделений.Ссылка,
        |    СправочникПодразделений.Код
        |ИЗ
        |    Справочник.СправочникПодразделений КАК СправочникПодразделений";

    Результат = Запрос.Выполнить();

    Выборка = Результат.Выбрать();

    Пока Выборка.Следующий() Цикл
        Элемент=Выборка.Ссылка.ПолучитьОбъект();
        Элемент.УстановитьПометкуУдаления(Истина);
        Элемент.Записать();
    КонецЦикла;
    
    //Создаем прокси для обращения к внешнему веб-сервису,
    // передаем в функцию URI пространства имен, имя сервиса, имя порта.
    Прокси = WSСсылки.InTime20.СоздатьWSПрокси("http://www.reality.sh/in-time/Api20";, "API20", "API20Soap");
    
    //Получаем тип параметра, который передается в метод.
    //Ур1
    ТипCatalogList            = Прокси.ФабрикаXDTO.Пакеты.Получить("http://www.reality.sh/in-time/Api20").Получить("CatalogList";);
    //Ур2
    ТипCatalogListRequest        = Прокси.ФабрикаXDTO.Пакеты.Получить("http://inr.intime.ua/in-time/integration20").Получить("CatalogListRequest";);
    //Ур3
    ТипAuthData                = Прокси.ФабрикаXDTO.Пакеты.Получить("http://inr.intime.ua/in-time/integration20").Получить("AuthData";);
    
    прAuthData = Прокси.ФабрикаXDTO.Создать(ТипAuthData);
    прAuthData.ID = Константы.ИнТаймID.Получить();
    прAuthData.KEY = Константы.ИнТаймKEY.Получить();
    
    прCatalogListRequest = Прокси.ФабрикаXDTO.Создать(ТипCatalogListRequest);
    прCatalogListRequest.AuthData     = прAuthData;
    прCatalogListRequest.CatalogNameEng.ADD("Departments");
    
    прCatalogList = Прокси.ФабрикаXDTO.Создать(ТипCatalogList);
    прCatalogList.CatalogListRequest = прCatalogListRequest;
    
    ТаблицаОтвета = Новый ТаблицаЗначений;
    Попытка
        Результат = Прокси.CatalogList(прCatalogListRequest);
        //Результат = "";
        
        Если Результат.InterfaceState <> "OK" Тогда
            Сообщить("Запрос не выполнился: "+Результат.InterfaceState);
        Иначе
            Сообщить("Запрос выполнился: "+Результат.InterfaceState);
        КонецЕсли;
        
        ТаблицаОтвета = Результат.ListCatalog.Catalog;
        
    Исключение
        Сообщить("Запрос не выполнился!");
        Возврат;
    КонецПопытки;
    
    СозданоЗаписи=0;
    ОбновленоЗаписи=0;
    Для Каждого текСтр из ТаблицаОтвета Цикл
        Попытка
            ОбновленоЗаписи=ОбновленоЗаписи+1;    
            Элемент = Справочники.СправочникПодразделений.НайтиПоКоду(текСтр.Code).ПолучитьОбъект();
            Элемент.Код = текСтр.Code;
            НазваниеСкладаИНомер = текСтр.Name;
            Для каждого ПодчЭлемент ИЗ текСтр.AppendField Цикл
                Если ПодчЭлемент.AppendFieldName = "Adress" Тогда
                    Adress = ПодчЭлемент.AppendFieldValue;
                    Элемент.АдресВГороде=Adress;
                ИначеЕсли ПодчЭлемент.AppendFieldName = "City" Тогда
                    City = ПодчЭлемент.AppendFieldValue;
                    Элемент.ГородВУкраине=City;
                ИначеЕсли ПодчЭлемент.AppendFieldName = "LiterCode" Тогда
                    LiterCode = ПодчЭлемент.AppendFieldValue;
                    Элемент.БуквеныйКод=LiterCode;
                ИначеЕсли ПодчЭлемент.AppendFieldName = "WarehouseNumberInCity" Тогда
                    WarehouseNumberInCity = ПодчЭлемент.AppendFieldValue;
                    Элемент.НомерСкладаВГороде=WarehouseNumberInCity;
                ИначеЕсли ПодчЭлемент.AppendFieldName = "State" Тогда
                    State = ПодчЭлемент.AppendFieldValue;
                    Элемент.Область=State;
                ИначеЕсли ПодчЭлемент.AppendFieldName = "Parcel" Тогда
                    Parcel = ПодчЭлемент.AppendFieldValue;
                    Если Parcel = "Да" Тогда
                        Элемент.Посылочка=Истина;
                        ПосылочкаТекст=" до 30кг";
                    Иначе
                        Элемент.Посылочка=Ложь;
                        ПосылочкаТекст="";
                    КонецЕсли;
                ИначеЕсли ПодчЭлемент.AppendFieldName = "Tel" Тогда
                    Tel = ПодчЭлемент.AppendFieldValue;
                    Элемент.ТелефонСклада=Tel;
                КонецЕсли;
                    Элемент.ПометкаУдаления=Ложь;
            КонецЦикла;
            НазваниеСкладаИНомер = НазваниеСкладаИНомер+" "+"(cклад №"+WarehouseNumberInCity+ПосылочкаТекст+")";
            Элемент.Наименование=НазваниеСкладаИНомер;
            Элемент.Записать();
        Исключение
            ОбновленоЗаписи=ОбновленоЗаписи-1;
        КонецПопытки;
        Попытка
            НовыйCклад=Справочники.СправочникПодразделений.СоздатьЭлемент();
            НовыйCклад.Код=текСтр.Code;
            НазваниеСкладаИНомер=текСтр.Name;
            СозданоЗаписи=СозданоЗаписи+1;
            Для каждого ПодчЭлемент ИЗ текСтр.AppendField Цикл
                Если ПодчЭлемент.AppendFieldName = "Adress" Тогда
                    Adress = ПодчЭлемент.AppendFieldValue;
                    НовыйCклад.АдресВГороде=Adress;
                ИначеЕсли ПодчЭлемент.AppendFieldName = "LiterCode" Тогда
                    LiterCode = ПодчЭлемент.AppendFieldValue;
                    НовыйCклад.БуквеныйКод=LiterCode;
                ИначеЕсли ПодчЭлемент.AppendFieldName = "City" Тогда
                    City = ПодчЭлемент.AppendFieldValue;
                    НовыйCклад.ГородВУкраине=City;
                ИначеЕсли ПодчЭлемент.AppendFieldName = "WarehouseNumberInCity" Тогда
                    WarehouseNumberInCity = ПодчЭлемент.AppendFieldValue;
                    НовыйCклад.НомерСкладаВГороде=WarehouseNumberInCity;
                ИначеЕсли ПодчЭлемент.AppendFieldName = "State" Тогда
                    State = ПодчЭлемент.AppendFieldValue;
                    НовыйCклад.Область=State;
                ИначеЕсли ПодчЭлемент.AppendFieldName = "Parcel" Тогда
                    Parcel = ПодчЭлемент.AppendFieldValue;
                    Если Parcel = "Да" Тогда
                        НовыйCклад.Посылочка=Истина;
                        ПосылочкаТекст=" до 30кг";
                    Иначе
                        НовыйCклад.Посылочка=Ложь;
                        ПосылочкаТекст="";
                    КонецЕсли;
                ИначеЕсли ПодчЭлемент.AppendFieldName = "Tel" Тогда
                    Tel = ПодчЭлемент.AppendFieldValue;
                    НовыйCклад.ТелефонСклада=Tel;
                КонецЕсли;
            КонецЦикла;
            НазваниеСкладаИНомер = НазваниеСкладаИНомер+" "+"(cклад №"+WarehouseNumberInCity+ПосылочкаТекст+")";
            НовыйCклад.Наименование=НазваниеСкладаИНомер;
            НовыйCклад.Записать();
        Исключение
            СозданоЗаписи=СозданоЗаписи-1;
        КонецПопытки;
    КонецЦикла;
    Сообщить("Добавлено: "+СозданоЗаписи+" записей");
    Сообщить("Обновлено: "+ОбновленоЗаписи+" записей");
    
    
КонецПроцедуры


Я б хотел узнать структуру этих справочниках, чтобы посмотреть какие там поля и можно ли эти справочники связать по уникальному идентификатору.
1 orefkov
 
12.12.15
23:14
интим не предлагать.
2 XLife
 
12.12.15
23:21
(1) лучше код для снегопата предложи