|
И снова знатокам Конвертации данных! 🠗 (Волшебник 20.07.2013 23:30) | ☑ | ||
---|---|---|---|---|
0
Грызлик
18.07.13
✎
13:58
|
у меня ПВХ (источник) имеет свойства разных типов(составные) http://hostingkartinok.com/show-image.php?id=f2519366eef56493efc974d92f084400. Когда я выгружаю из источника, типы составных данных выгружаются корректно, НООО вот в приемнике, эти типы загружаются только одним...и все, хотя в приемнике тоже свойства составной тип http://hostingkartinok.com/show-image.php?id=a5e5adb0d398d93768bd6ee57f0476b7. И в итоге получается, в приемнике, где тип строка или дата, Типы разные. Как сделать, что бы ПВХ типы передавались корректно. Ведь в ПКС, я передаю только наименование ПВХ, а его свойство не определяется как реквизит, и соответственно в приемнике подхватывается последний составной тип и подставляется.. Как сделать так, что бы реквизит ПВХ, имеющее составной тип строка, в приемнике, отобразился строкой, а не составным типом?
|
|||
1
NcSteel
18.07.13
✎
14:00
|
Передать параметром и при записи менять.
|
|||
2
Грызлик
18.07.13
✎
17:02
|
(1) Что-то не получается.. Создал параметр в самой конвертации (где вообще выбираю базу приемника и источника). При выгрузки задал ему значение и сообщением проверил что ему назначалось. При загрузки, я считываю этот параметр, а он пустой.
|
|||
3
Грызлик
18.07.13
✎
18:04
|
Я часть плана раскусил! Просмотрев файл XML, я понял что у меня выгружается из ПВХ только Код и Наименование. Тип не передается.. т.к. он задается в окне свойства объекта. И соответственно не передается. Теперь другая мысль, как задать параметр, куда закинуть свои необходимые данные, а при загрузке или после загрузки эти данные считать!???
|
|||
4
Жан Пердежон
18.07.13
✎
18:07
|
в ПКС галка "выгружать в параметр" или как-то так
|
|||
5
acsent
18.07.13
✎
18:10
|
поле типзначения не передается через конвертацию стандартным способом
|
|||
6
NcSteel
18.07.13
✎
18:13
|
(5) Ну естественно не тип знч передавать, а по своемому сериализовать.
|
|||
7
acsent
18.07.13
✎
18:39
|
(6) самый простой вариант передавать пустую ссылку/значение
|
|||
8
acsent
18.07.13
✎
18:40
|
это если тип не составной
|
|||
9
ramir
18.07.13
✎
19:20
|
Для сериализации используй ЗначениеВСтрокуВнутр()
Можно не заморачиваться с параметрами и в выгрузке сформировать коллекцию с нужными полями. И конвертировать элементы коллекции в элементы ПВХ. Выборка = ПланыВидовХарактеристик.Выбрать(); Коллекция = Новый ТаблицаЗначений; Коллекция.Колонки.Добавить(".... Пока Выборка.Следующий() Цикл НовСтр = Коллекция.Добавить(); ... НовСтр.Тип = ЗначениеВСтрокуВнутр(Выборка.ТипЗначения); КонецЦикла; В обработке при загрузке Объект.ТипЗначения = ЗначениеИзСтрокиВнутр(Источник.Тип); Код писал прямо здесь, возможно где-то ошибся в синтаксисе. Просто показываю как можно сделать. |
|||
10
KAO111
18.07.13
✎
20:26
|
В книжке Бояркина прямой пример есть
|
|||
11
Грызлик
19.07.13
✎
01:19
|
(9) Пробую ваш код... Выгружается корректно. Но ругается на последнюю сточку перед загрузкой..Типа не нравится слово тип.. Источник.Тип.. или просто тип.
(10) Ваше предложение просто поразило:). Нашел книгу(стр 155). Пример как у меня. Начинаю внедрять.. вот мой код. Ниже код.. разве что только нет сопоставление с простыми типами...Строка, дата, булево.. Может вот на них и ругается.. Выгружается корректно и в XML файле все ок(есть типы). Но при загрузке ошибка.-http://hkar.ru/hEau Код что использую при загрузке. [code] УзелТиповXML = одПолучитьXMLПредставлениеОписанияТипов(Источник.ТипЗначения); //для переноса одного типа в другой заменим наименование УзелТиповXML = СтрЗаменить(УзелТиповXML, "СправочникСсылка.Валюты", "СправочникСсылка.СвойстваТовара"); УзелТиповXML = СтрЗаменить(УзелТиповXML, "СправочникСсылка.ЗначенияСвойствОбъектов", "СправочникСсылка.СвойстваТовара"); УзелТиповXML = СтрЗаменить(УзелТиповXML, "СправочникСсылка.КлассификаторЕдиницИзмерения", "СправочникСсылка.СвойстваТовара"); УзелТиповXML = СтрЗаменить(УзелТиповXML, "СправочникСсылка.КлассификаторСтранМира", "СправочникСсылка.СвойстваТовара"); УзелТиповXML = СтрЗаменить(УзелТиповXML, "СправочникСсылка.КонтактныеЛица", "СправочникСсылка.СвойстваТовара"); УзелТиповXML = СтрЗаменить(УзелТиповXML, "СправочникСсылка.КонтактныеЛицаКонтрагентов", "СправочникСсылка.СвойстваТовара"); УзелТиповXML = СтрЗаменить(УзелТиповXML, "СправочникСсылка.Контрагенты", "СправочникСсылка.СвойстваТовара"); УзелТиповXML = СтрЗаменить(УзелТиповXML, "СправочникСсылка.НоменклатурныеГруппы", "СправочникСсылка.СвойстваТовара"); УзелТиповXML = СтрЗаменить(УзелТиповXML, "СправочникСсылка.Номенклатура", "СправочникСсылка.СвойстваТовара"); УзелТиповXML = СтрЗаменить(УзелТиповXML, "СправочникСсылка.Организации", "СправочникСсылка.СвойстваТовара"); УзелТиповXML = СтрЗаменить(УзелТиповXML, "СправочникСсылка.Подразделения", "СправочникСсылка.СвойстваТовара"); УзелТиповXML = СтрЗаменить(УзелТиповXML, "СправочникСсылка.Пользователи", "СправочникСсылка.СвойстваТовара"); УзелТиповXML = СтрЗаменить(УзелТиповXML, "СправочникСсылка.Проекты", "СправочникСсылка.СвойстваТовара"); УзелТиповXML = СтрЗаменить(УзелТиповXML, "СправочникСсылка.Склады", "СправочникСсылка.СвойстваТовара"); УзелТиповXML = СтрЗаменить(УзелТиповXML, "СправочникСсылка.ТипыЦенНоменклатуры", "СправочникСсылка.СвойстваТовара"); УзелТиповXML = СтрЗаменить(УзелТиповXML, "СправочникСсылка.ФизическиеЛица", "СправочникСсылка.СвойстваТовара"); ДобавитьПодчиненный(Приемник, УзелТиповXML); [/code] Далее я лезу в саму обработку. И у меня происходит стопор на этой строке http://hkar.ru/hEaP(как бы я догадываться как решить проблему,- править код обработки... но не охота править стандартный код ее) что находится в этих переменных - http://hkar.ru/hEaZ, http://hkar.ru/hEb0. Поэкспериментировав с конфигурацией, понял чтобы система смогла заменить тип нужно указать такой код [code] КвЧисла = Новый КвалификаторыСтроки(10); Пероб = Новый ОписаниеТипов("Строка",,,,КвЧисла); Объект.ТипЗначения = Пероб; [/code] Так вот, как это сделать, не правя обработку? что не так делается? |
|||
12
KAO111
19.07.13
✎
08:15
|
Не знаю, та ли ошибка.
Сейчас открыл свои правила. Оказывается я ОбъектМодифицирован устанавливаю сам. ПВХ СвойстваОбъектов, кофигурация Бух 2.0. ПКО ПриВыгрузке: УзелТиповXML = одПолучитьXMLПредставлениеОписанияТипов(Источник.ТипЗначения); ДобавитьПодчиненный(Приемник, УзелТиповXML); ПКО ПослеЗагрузки: ОбъектМодифицирован = Ложь; //КАО_120914 Небольшая ошибка в обработке загрузки, если изменяются только типы - не проверяет Если ОбъектНайден И НЕ ОбщегоНазначенияЗК.МассивыИдентичны(Объект.ТипЗначения.Типы(), Ссылка.ТипЗначения.Типы()) тогда ОбъектМодифицирован = Истина; КонецЕсли; |
|||
13
Грызлик
20.07.13
✎
15:07
|
(12) НЕ та ошибка. У меня это не канает. Блин. И то делать то? Самое простое.... как пережать произвольный параметр вместе с этим объектом?? я бы засовывал с каждым выгруженным объектом свои параметры и вставлял бы их
|
|||
14
ramir
20.07.13
✎
18:38
|
(11) Ну так используй другое слово.
|
|||
15
Грызлик
20.07.13
✎
19:09
|
(14) :) В смысле? Другое слово? В строке обработке, где ошибка?
|
|||
16
KAO111
20.07.13
✎
19:49
|
(13) у меня все работает в разных местах, в приемнике точно в ПВХ разрешен приходящий тип? Сообщение об ошибке очень странное.
|
|||
17
Грызлик
20.07.13
✎
20:19
|
(16) Да Тип Строка точно разрешена... Сейчас играюсь... в общем создал обработку в ней одна кнопка.. пробую искать данный ПВХ в базе.. нахожу... и задаю ему код ..
Ист = ПланыВидовХарактеристик.ПрочиеСвойстваТовара.НайтиПоНаименованию("ROD 1"); КвЧисла = Новый КвалификаторыСтроки(50); Стр = Новый ОписаниеТипов("Строка",,,,КвЧисла); Ист.Ссылка.ПолучитьОбъект().ТипЗначения = Стр; И.....Не работает....бррррррр.....Текст ошибки вточ вточ такой же что и при обмене у КД. Но этот же код из формы самого объекта пвх... в процедуре при открытии на сервере &НаСервере Функция ПриОткрытииНаСервере() //КвЧисла = Новый КвалификаторыСтроки(10); //Пероб = Новый ОписаниеТипов("Строка",,,,КвЧисла); //Объект.ТипЗначения = Пероб; КонецФункции И работает!!... вотё...к... не понимаю что за хрень.. думал в управляемой форме траблы.. но нет же.. в обычном приложении тоже самое.. |
|||
18
Грызлик
20.07.13
✎
22:51
|
ООООДА!!!!!!!!!!!! РЕШИЛ ПРОБЛЕМУ!
ФУУХ ИИИХА!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Правда немного туповато.... НОООО я ЕЕ РЕШИЛ!!! Надо выпить пойти! В общем я решил так... если в карточке товара есть свойства.. а я как раз товары переношу и свойства... то я кидаю ПВХ, а с пвх и справочник СвойстваТовара(этот справочник как минимум есть во всех типовой "торговле"). Он делает движение в регистре сведение.- ЗначениеСвойствОбъектов. А там есть Объект, СвойстваТовара, и значение, а так как он выгружается по владельцу... я смотрю какой параметр передается в значение.. и смотрю его тип и далее нахожу владельца в пвх и задаю тип программно вот ниже код. Результат тот, который я хотел. Если Строка(ТипЗНЧ(Объект.Значения)) = "Строка" Тогда //находим ПВХ по наименованию Об = Строка(Объект.СвойстваТовара); Ист = ПланыВидовХарактеристик.ПрочиеСвойстваТовара.НайтиПоНаименованию(Об); Обк = Ист.ПолучитьОбъект(); //определим параметры строки КвЧисла = Новый КвалификаторыСтроки(); Стр = Новый ОписаниеТипов("Строка",,,,КвЧисла); Обк.ТипЗначения = Стр; Обк.Записать(); КонецЕсли; Если Строка(ТипЗНЧ(Объект.Значения)) = "Дата" Тогда //находим ПВХ по наименованию Об = Строка(Объект.СвойстваТовара); Ист = ПланыВидовХарактеристик.ПрочиеСвойстваТовара.НайтиПоНаименованию(Об); Обк = Ист.ПолучитьОбъект(); //определим параметры строки КвДата = Новый КвалификаторыДаты(ЧастиДаты.Дата); Стр = Новый ОписаниеТипов("Дата",,,,,КвДата); Обк.ТипЗначения = Стр; Обк.Записать(); КонецЕсли; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |