Skip to content

Instantly share code, notes, and snippets.

@JohnyDeath
Created April 4, 2017 07:50
Show Gist options
  • Save JohnyDeath/fdf047ddde871ebba370a2670512264a to your computer and use it in GitHub Desktop.
Save JohnyDeath/fdf047ddde871ebba370a2670512264a to your computer and use it in GitHub Desktop.
ПРимер XDTO
Функция ВыполнитьВебЗапрос() Экспорт
ПараметрыВебСервиса = ПолучитьПараметрыВебСервисаИзКонстант();
//Инициализация WS-объектов
ВСОпределение = Новый WSОпределения(ПараметрыВебСервиса.ПутьПубликацииСервера, ПараметрыВебСервиса.Пользователь, ПараметрыВебСервиса.Пароль,,ПараметрыВебСервиса.Таймаут);
ВСПрокси = Новый WSПрокси(ВСОпределение, ПараметрыВебСервиса.URIПространстваИменСервиса, ПараметрыВебСервиса.ИмяСервиса, ПараметрыВебСервиса.ИмяТочкиПодключения,,ПараметрыВебСервиса.Таймаут);
Если ЗначениеЗаполнено(ПараметрыВебСервиса.Пользователь) Тогда
ВСПрокси.Пользователь = ПараметрыВебСервиса.Пользователь;
КонецЕсли;
Если ЗначениеЗаполнено(ПараметрыВебСервиса.Пароль) Тогда
ВСПрокси.Пароль = ПараметрыВебСервиса.Пароль;
КонецЕсли;
//Создание объекта ХДТО-списка и наполнение в цикле
ФабрикаУСО = ВСПрокси.ФабрикаXDTO;
//ТипХДТО_ДокЭА = ФабрикаУСО.Тип(ПараметрыВебСервиса.URIПространстваИменСервиса, "DocumentEA");
ТипХДТО_СписокДокЭА = ФабрикаУСО.Тип(ПараметрыВебСервиса.URIПространстваИменСервиса, "DocumentsEAList");
СписокДокЭА = ФабрикаУСО.Создать(ТипХДТО_СписокДокЭА);
Для Каждого СтрокаТаблицы Из ДокументыЭА Цикл
текДокЭА = СтрокаТаблицы.ДокументЭА;
Если не ЗначениеЗаполнено(текДокЭА) Тогда Продолжить; КонецЕсли;
хДокЭА = х_ДокументЭА(текДокЭА, ФабрикаУСО, "DocumentEA");
СписокДокЭА.Document.Добавить(хДокЭА);
КонецЦикла;
Ответ = ВСПрокси.setDocsEA(СписокДокЭА);
Возврат ОтветВСтроку(Ответ);
КонецФункции
Функция х_ДокументЭА(Знач вхДокументЭА, Знач ФабрикаУСО, Знач ИмяТипаОбъектаХДТО)
хДокументЭА = НовыйОбъектХДТОпоИмениТипа(ФабрикаУСО, ИмяТипаОбъектаХДТО);
хДокументЭА.CodeEA = вхДокументЭА.АрхивныйНомер;
хДокументЭА.PackNum = вхДокументЭА.Пакет;
хДокументЭА.DocNumIncoming = вхДокументЭА.ВходящийНомерДокумента;
хДокументЭА.DocDateIncoming = вхДокументЭА.ДатаДокумента;
хДокументЭА.DocKindEA = х_СправочникЭА(вхДокументЭА.ВидДокумента, ФабрикаУСО, "DocKindEA");
хДокументЭА.Organization = х_Организация(ФабрикаУСО);
хДокументЭА.Customer = х_СправочникЭА(вхДокументЭА.Контрагент, ФабрикаУСО, "Customer");
хДокументЭА.Contract = х_ДоговорПоРодителю(вхДокументЭА.Родитель, ФабрикаУСО);
хДокументЭА.Project = х_СправочникЭА(вхДокументЭА.Проект, ФабрикаУСО, "Project");
хДокументЭА.DocSum = вхДокументЭА.Сумма;
хДокументЭА.EditDate = вхДокументЭА.ДатаИзменения;
хДокументЭА.TransferDate = вхДокументЭА.ДатаИзменения;
хДокументЭА.Note = вхДокументЭА.Примечание;
хДокументЭА.OperName = Неопределено;
хДокументЭА.Status = Неопределено;
Возврат хДокументЭА;
КонецФункции
Функция х_СправочникЭА(Знач ОбъектБазы, Знач ФабрикаУСО, Знач ИмяТипаОбъектаХДТО)
хОбъект = НовыйОбъектХДТОпоИмениТипа(ФабрикаУСО, ИмяТипаОбъектаХДТО);
хОбъект.Name = ОбъектБазы.Наименование;
хОбъект.CodeEA = Строка(ОбъектБазы.id);
Если хОбъект.Свойства().Получить("Code1S") <> Неопределено Тогда
Код1С = ""; ИД = ""; Ссыль = "";
Если ВРег(ИмяТипаОбъектаХДТО) = ВРег("Project") Тогда
Код1С = ?(ПустаяСтрока(ОбъектБазы.id_1c), ОбъектБазы.КодПроекта, ОбъектБазы.id_1c);
Иначе
Попытка
Код1С = Строка(ОбъектБазы.id_1c);
//ИД = Строка(ОбъектБазы.id_1c);
Исключение
Код1С = Строка(ОбъектБазы.id);
//Ссыль = Строка(ОбъектБазы.id);
//ИД ="-исключение-"+ОписаниеОшибки();
КонецПопытки;
КонецЕсли;
хОбъект.Code1S = Код1С;
//Сообщить("Имя="+хОбъект.Name+". ИД="+ИД+". Ссыль="+Ссыль);
КонецЕсли;
Возврат хОбъект;
КонецФункции
Функция х_ДоговорПоРодителю(Знач ОбъектБазы, Знач ФабрикаУСО)
Если ОбъектБазы = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
хОбъект = НовыйОбъектХДТОпоИмениТипа(ФабрикаУСО, "Contract");
хОбъект.Name = ОбъектБазы.ВходящийНомерДокумента;
хОбъект.Code1S = ОбъектБазы.ВходящийНомерДокумента;
хОбъект.CodeEA = Строка(ОбъектБазы.Ссылка);
Возврат хОбъект;
КонецФункции
Функция _ГруппаДоговоры()
Возврат ВнешниеИсточникиДанных.ЭА.Таблицы.ФормыДокументов.НайтиПоПолю("id", 15);
КонецФункции
Функция х_Организация(Знач ФабрикаУСО)
хВид = НовыйОбъектХДТОпоИмениТипа(ФабрикаУСО, "Organization");
хВид.Name = "ЗАО";
хВид.CodeEA = "000000001";
хВид.Code1S = "000000001";
Возврат хВид;
КонецФункции
Функция НовыйОбъектХДТОпоИмениТипа(Знач ФабрикаУСО, Знач ИмяТипаОбъектаХДТО)
ТипХДТО = ФабрикаУСО.Тип("urn:ex.ru:EA", ИмяТипаОбъектаХДТО);
Возврат ФабрикаУСО.Создать(ТипХДТО);
КонецФункции
Функция ОтветВСтроку(Знач ОтветОбъект)
Текст = Новый ТекстовыйДокумент;
Текст.ДобавитьСтроку("Выполнено: "+ОтветОбъект.Result);
Текст.ДобавитьСтроку("Время: "+ОтветОбъект.DateTime);
Текст.ДобавитьСтроку("Error: "+ОтветОбъект.Error);
Возврат Текст.ПолучитьТекст();
КонецФункции
Функция ПолучитьПараметрыВебСервисаИзКонстант()
ПараметрыВебСервиса = Новый Структура;
ВсеКонстанты = Метаданные.Константы;
Для Каждого МетаКонст Из ВсеКонстанты Цикл
ИмяКонстанты = МетаКонст.Имя;
ЗначениеКонстанты = Константы[ИмяКонстанты].Получить();
ПараметрыВебСервиса.Вставить(ИмяКонстанты, ЗначениеКонстанты);
КонецЦикла;
Возврат ПараметрыВебСервиса;
КонецФункции
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment