Цитата(Batchir @ 30.10.14, 10:45) необходимо зарегистрироваться для просмотра ссылки
ИндексПеречисления = База.Перечисления [ИмяПеречисления] .Индекс(КомОбъект);
ИмяЗначенияПеречисления = База.Метаданные().Перечисления[ИмяПеречисления].EnumValues.Get(ИндексПеречисления).Name;
ЗначениеПеречисления = Перечисления[ИмяПеречисления] [ИмяЗначенияПеречисления];
Не получается....ппц....куда это вставлять в моем коде?Процедура ЗагрузитьДанныеПростойВагонаСБазыТест() Экспорт;
СОМСоединение = Новый COMОбъект("V83.ComConnector");
Сервер = "***";
ИмяБазы = "***";
Пользователь = "***";
Пароль = "***";
СтрокаПодключения = "Srvr = '" + Сервер + "';" + "Ref = '" + ИмяБазы + "';" + "Usr = '" + Пользователь + "';" + "Pwd = '" + Пароль + "';";
БазаИсточник = СОМСоединение.Connect(СтрокаПодключения);
БазаИсточник_Запрос = БазаИсточник.Newobject("Запрос");
ТекстЗапроса = "ВЫБРАТЬ
| ПростойВагона.Период,
| ПростойВагона.НомерВагона,
| ПростойВагона.ПрибытияВагона,
| ПростойВагона.УстановкаПодВыгрузку,
| ПростойВагона.ОкончаниеВыгрузки,
| ПростойВагона.ПрибытиеДокументовПослеДекларирования,
| ПростойВагона.ПрибытиеИнструкцийВОтправкуПОРПВ,
| ПростойВагона.УстановкаПодПогрузку,
| ПростойВагона.ОкончаниеПогрузки,
| ПростойВагона.ПрибытиеДокументовПослеТаможирования,
| ПростойВагона.ВозвратПВстКраматорск,
| ПростойВагона.ВесПоПрибытию,
| ПростойВагона.Ответственный,
| ПростойВагона.СостояниеВагона,
| ПростойВагона.ПринадлежностьВагона,
| ПростойВагона.НоменклатураПрибытие,
| ПростойВагона.НоменклатураОтправка
|ИЗ
| РегистрСведений.ПростойВагона КАК ПростойВагона";
БазаИсточник_Запрос.Текст = ТекстЗапроса;
ТаблицаДанныхИсточникСОМОбъект = БазаИсточник_Запрос.Выполнить().Выгрузить();
СОМСоединение = Неопределено;
ТЗДанныеИсточник = Новый ТаблицаЗначений;
КЧ = Новый КвалификаторыЧисла(6,3);
ОписаниеТиповЧ = Новый ОписаниеТипов("Число",,,КЧ);
ТЗДанныеИсточник.Колонки.Добавить("Период",,"Период",);
ТЗДанныеИсточник.Колонки.Добавить("НомерВагона",,"Номер вагона",);
ТЗДанныеИсточник.Колонки.Добавить("ПрибытияВагона",,"Прибытие вагона",);
ТЗДанныеИсточник.Колонки.Добавить("УстановкаПодВыгрузку",,"Установка под выгрузку",);
ТЗДанныеИсточник.Колонки.Добавить("ОкончаниеВыгрузки",,"Окончание выгрузки",);
ТЗДанныеИсточник.Колонки.Добавить("ПрибытиеДокументовПослеДекларирования",,"Прибытие документов после декларирования",);
ТЗДанныеИсточник.Колонки.Добавить("ПрибытиеИнструкцийВОтправкуПОРПВ",,"Прибытие инструкций в отправку ПОР ПВ",);
ТЗДанныеИсточник.Колонки.Добавить("УстановкаПодПогрузку",,"Установка под погрузку",);
ТЗДанныеИсточник.Колонки.Добавить("ПрибытиеДокументовПослеТаможирования",,"Прибытие документов после таможирования",);
ТЗДанныеИсточник.Колонки.Добавить("ВозвратПВстКраматорск",,"Возврат ПВ ст.",);
ТЗДанныеИсточник.Колонки.Добавить("СостояниеВагона",,"Состояние вагона",);
ТЗДанныеИсточник.Колонки.Добавить("Ответственный",,"Ответственный",);
ТЗДанныеИсточник.Колонки.Добавить("ПринадлежностьВагона",,"Принадлежность вагона",);
ТЗДанныеИсточник.Колонки.Добавить("НоменклатураПрибытие",,"Номенклатура прибытие",);
ТЗДанныеИсточник.Колонки.Добавить("НоменклатураОтправка",,"Номенклатура отправка",);
ТЗДанныеИсточник.Колонки.Добавить("ВесПоПрибытию",ОписаниеТиповЧ,"Вес по прибытию");
Для Каждого Строка Из ТаблицаДанныхИсточникСОМОбъект Цикл
СтрокаТЗ = ТЗДанныеИсточник.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЗ,Строка,,);
КонецЦикла;
НаборЗаписейПриемник = РегистрыСведений.ПростойВагона.СоздатьНаборЗаписей();
НаборЗаписейПриемник.Записывать = Истина;
Для Каждого СтрокаДанных Из ТЗДанныеИсточник Цикл
//Поиск ссылок на объекты
Если СтрокаДанных.ПринадлежностьВагона.Description <> "" Тогда
ПоискПринадлежностьВагона = Справочники.ПринадлежностьВагонов.НайтиПоНаименованию(СтрокаДанных.ПринадлежностьВагона.Description,Истина);
Если Не ПоискПринадлежностьВагона.Пустая() Тогда
СтрокаДанных.ПринадлежностьВагона = ПоискПринадлежностьВагона;
Иначе
обПринадлежностьВагона = Справочники.ПринадлежностьВагонов.СоздатьЭлемент();
обПринадлежностьВагона.Наименование = СтрокаДанных.ПринадлежностьВагона.Description;
обПринадлежностьВагона.Записать();
СтрокаДанных.ПринадлежностьВагона = обПринадлежностьВагона;
КонецЕсли;
КонецЕсли;
Если СтрокаДанных.НоменклатураПрибытие.Description <> "" Тогда
ПоискНоменклатураПрибытие = Справочники.Номенклатура.НайтиПоНаименованию(СтрокаДанных.НоменклатураПрибытие.Description,Истина);
Если Не ПоискНоменклатураПрибытие.Пустая() Тогда
СтрокаДанных.НоменклатураПрибытие = ПоискНоменклатураПрибытие;
Иначе
обНоменклатура = Справочники.Номенклатура.СоздатьЭлемент();
обНоменклатура.Наименование = СтрокаДанных.НоменклатураПрибытие.Description;
обНоменклатура.Записать();
СтрокаДанных.НоменклатураПрибытие = обНоменклатура;
КонецЕсли;
КонецЕсли;
Если СтрокаДанных.НоменклатураОтправка.Description <> "" Тогда
ПоискНоменклатураОтправка = Справочники.Номенклатура.НайтиПоНаименованию(СтрокаДанных.НоменклатураОтправка.Description,Истина);
Если Не ПоискНоменклатураОтправка.Пустая() Тогда
СтрокаДанных.НоменклатураОтправка = ПоискНоменклатураОтправка;
Иначе
обНоменклатура = Справочники.Номенклатура.СоздатьЭлемент();
обНоменклатура.Наименование = СтрокаДанных.НоменклатураОтправка;
обНоменклатура.Записать();
СтрокаДанных.НоменклатураОтправка = обНоменклатура;
КонецЕсли;
КонецЕсли;
ЗаписьПриемник = НаборЗаписейПриемник.Добавить();
ЗаполнитьЗначенияСвойств(ЗаписьПриемник,СтрокаДанных,,);
НаборЗаписейПриемник.Записать();
КонецЦикла;
КонецПроцедуры
Получилось прочитать название значения перечисления в базе источнике. Как теперь его сравнивать с тем значением которое я считал? Крыша едет не спеша....
Процедура ЗагрузитьДанныеПростойВагонаСБазыТест() Экспорт;
СОМСоединение = Новый COMОбъект("V83.ComConnector");
Сервер = "***";
ИмяБазы = "***";
Пользователь = "***";
Пароль = "***";
СтрокаПодключения = "Srvr = '" + Сервер + "';" + "Ref = '" + ИмяБазы + "';" + "Usr = '" + Пользователь + "';" + "Pwd = '" + Пароль + "';";
БазаИсточник = СОМСоединение.Connect(СтрокаПодключения);
БазаИсточник_Запрос = БазаИсточник.Newobject("Запрос");
ТекстЗапроса = "ВЫБРАТЬ
| ПростойВагона.Период,
| ПростойВагона.НомерВагона,
| ПростойВагона.ПрибытияВагона,
| ПростойВагона.УстановкаПодВыгрузку,
| ПростойВагона.ОкончаниеВыгрузки,
| ПростойВагона.ПрибытиеДокументовПослеДекларирования,
| ПростойВагона.ПрибытиеИнструкцийВОтправкуПОРПВ,
| ПростойВагона.УстановкаПодПогрузку,
| ПростойВагона.ОкончаниеПогрузки,
| ПростойВагона.ПрибытиеДокументовПослеТаможирования,
| ПростойВагона.ВозвратПВстКраматорск,
| ПростойВагона.ВесПоПрибытию,
| ПростойВагона.Ответственный,
| ПростойВагона.СостояниеВагона,
| ПростойВагона.ПринадлежностьВагона,
| ПростойВагона.НоменклатураПрибытие,
| ПростойВагона.НоменклатураОтправка
|ИЗ
| РегистрСведений.ПростойВагона КАК ПростойВагона";
БазаИсточник_Запрос.Текст = ТекстЗапроса;
ТаблицаДанныхИсточникСОМОбъект = БазаИсточник_Запрос.Выполнить().Выгрузить();
//Сдесь получаю наименование значений перечисления
НаименованиеПеречисленияП = БазаИсточник.XMLСтрока(БазаИсточник.Перечисления.СостояниеВагонов.Порожний);
НаименованиеПеречисленияГ = БазаИсточник.XMLСтрока(БазаИсточник.Перечисления.СостояниеВагонов.Груженый);
СОМСоединение = Неопределено;
ТЗДанныеИсточник = Новый ТаблицаЗначений;
КЧ = Новый КвалификаторыЧисла(6,3);
ОписаниеТиповЧ = Новый ОписаниеТипов("Число",,,КЧ);
ТЗДанныеИсточник.Колонки.Добавить("Период",,"Период",);
ТЗДанныеИсточник.Колонки.Добавить("НомерВагона",,"Номер вагона",);
ТЗДанныеИсточник.Колонки.Добавить("ПрибытияВагона",,"Прибытие вагона",);
ТЗДанныеИсточник.Колонки.Добавить("УстановкаПодВыгрузку",,"Установка под выгрузку",);
ТЗДанныеИсточник.Колонки.Добавить("ОкончаниеВыгрузки",,"Окончание выгрузки",);
ТЗДанныеИсточник.Колонки.Добавить("ПрибытиеДокументовПослеДекларирования",,"Прибытие документов после декларирования",);
ТЗДанныеИсточник.Колонки.Добавить("ПрибытиеИнструкцийВОтправкуПОРПВ",,"Прибытие инструкций в отправку ПОР ПВ",);
ТЗДанныеИсточник.Колонки.Добавить("УстановкаПодПогрузку",,"Установка под погрузку",);
ТЗДанныеИсточник.Колонки.Добавить("ПрибытиеДокументовПослеТаможирования",,"Прибытие документов после таможирования",);
ТЗДанныеИсточник.Колонки.Добавить("ВозвратПВстКраматорск",,"Возврат ПВ ст.",);
ТЗДанныеИсточник.Колонки.Добавить("СостояниеВагона",,"Состояние вагона",);
ТЗДанныеИсточник.Колонки.Добавить("Ответственный",,"Ответственный",);
ТЗДанныеИсточник.Колонки.Добавить("ПринадлежностьВагона",,"Принадлежность вагона",);
ТЗДанныеИсточник.Колонки.Добавить("НоменклатураПрибытие",,"Номенклатура прибытие",);
ТЗДанныеИсточник.Колонки.Добавить("НоменклатураОтправка",,"Номенклатура отправка",);
ТЗДанныеИсточник.Колонки.Добавить("ВесПоПрибытию",ОписаниеТиповЧ,"Вес по прибытию");
//В этом цикле нужно подставлять наименование перечисления и искать его в базе приемнике //КАК ЭТО СДЕЛАТЬ?
Для Каждого Строка Из ТаблицаДанныхИсточникСОМОбъект Цикл
СтрокаТЗ = ТЗДанныеИсточник.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЗ,Строка,,);
КонецЦикла;
НаборЗаписейПриемник = РегистрыСведений.ПростойВагона.СоздатьНаборЗаписей();
НаборЗаписейПриемник.Записывать = Истина;
Для Каждого СтрокаДанных Из ТЗДанныеИсточник Цикл
//Поиск ссылок на объекты
Если СтрокаДанных.ПринадлежностьВагона.Description <> "" Тогда
ПоискПринадлежностьВагона = Справочники.ПринадлежностьВагонов.НайтиПоНаименованию(СтрокаДанных.ПринадлежностьВагона.Description,Истина);
Если Не ПоискПринадлежностьВагона.Пустая() Тогда
СтрокаДанных.ПринадлежностьВагона = ПоискПринадлежностьВагона;
Иначе
обПринадлежностьВагона = Справочники.ПринадлежностьВагонов.СоздатьЭлемент();
обПринадлежностьВагона.Наименование = СтрокаДанных.ПринадлежностьВагона.Description;
обПринадлежностьВагона.Записать();
СтрокаДанных.ПринадлежностьВагона = обПринадлежностьВагона;
КонецЕсли;
КонецЕсли;
Если СтрокаДанных.НоменклатураПрибытие.Description <> "" Тогда
ПоискНоменклатураПрибытие = Справочники.Номенклатура.НайтиПоНаименованию(СтрокаДанных.НоменклатураПрибытие.Description,Истина);
Если Не ПоискНоменклатураПрибытие.Пустая() Тогда
СтрокаДанных.НоменклатураПрибытие = ПоискНоменклатураПрибытие;
Иначе
обНоменклатура = Справочники.Номенклатура.СоздатьЭлемент();
обНоменклатура.Наименование = СтрокаДанных.НоменклатураПрибытие.Description;
обНоменклатура.Записать();
СтрокаДанных.НоменклатураПрибытие = обНоменклатура;
КонецЕсли;
КонецЕсли;
Если СтрокаДанных.НоменклатураОтправка.Description <> "" Тогда
ПоискНоменклатураОтправка = Справочники.Номенклатура.НайтиПоНаименованию(СтрокаДанных.НоменклатураОтправка.Description,Истина);
Если Не ПоискНоменклатураОтправка.Пустая() Тогда
СтрокаДанных.НоменклатураОтправка = ПоискНоменклатураОтправка;
Иначе
обНоменклатура = Справочники.Номенклатура.СоздатьЭлемент();
обНоменклатура.Наименование = СтрокаДанных.НоменклатураОтправка;
обНоменклатура.Записать();
СтрокаДанных.НоменклатураОтправка = обНоменклатура;
КонецЕсли;
КонецЕсли;
ЗаписьПриемник = НаборЗаписейПриемник.Добавить();
ЗаполнитьЗначенияСвойств(ЗаписьПриемник,СтрокаДанных,,);
НаборЗаписейПриемник.Записать();
КонецЦикла;
КонецПроцедуры