
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.52] |
![]() |
|
![]() |
Сообщ.
#1
,
|
|
Всем доброго дня!
Собственно задача описана в названии темы: необходимо перенести справочник Подразделения из УТ в два справочника в БП - Подразделения и Подразделения организаций. В типовом обмене данные справочники не переносятся. Справочники Подразделения в УТ - Подразделения в БП переносятся без изменений, тут вопросов нет. Вопросы возникают при переносе Подразделения - Подразделения организаций. Во-первых в БП справочник подразделения организаций подчинен организации, и если в приемнике (в нашем случае в БП) у нас три организации, то и на одно подразделение из УТ нужно создавать три подразделения организации. На текущий момент у меня все переносится, при этом наименование подразделения организации формируется след образом Наименование из УТ + наименование организации, которой подразделение подчинено. Но теперь не могу настроить поиск в приемнике по новому наименованию. Если в УТ изменить наименование существующего подразделения, то в БП не изменяется наименование существующего, а создается новое подразделение организации с новым наименованием. Во-вторых - при переносе в подразделения теряется иерархия справочника. Т.е. не конвертируется Родитель. Перенос делаю следующим образом: 1. Создал 4 правила конвертации объектов а) подразделение в подразделение б) подразделение в подразделение организации 1, в ПКС у всех реквизитов установлен признак Получить из входящих данных в) подразделение в подразделение организации 2, в ПКС у всех реквизитов установлен признак Получить из входящих данных г) подразделение в подразделение организации 3, в ПКС у всех реквизитов установлен признак Получить из входящих данных Создал правило выгрузки данных Подразделения с ПКО подразделение в подразделение. В ПКО подразделение в подразделение в событии При выгрузке следующий код ![]() ![]() Выборка = Справочники.Организации.Выбрать(); Сч = 0; //Счетчик организаций. Т.к. пока 3 организации, то правил конвертации, по которым выгружаем //через ВыгрузитьПоПравилу() тоже 3 Пока Выборка.Следующий() Цикл ИсходящиеДанные = Новый Структура(); ИсходящиеДанные.Вставить("Код", ""); ИсходящиеДанные.Вставить("Наименование", Источник.Наименование + "_" + Выборка.Наименование); ИсходящиеДанные.Вставить("ПометкаУдаления", Источник.ПометкаУдаления); ИсходящиеДанные.Вставить("Родитель", Источник.Родитель); ИсходящиеДанные.Вставить("Владелец", Выборка.Ссылка); Если Сч = 0 Тогда ВыгрузитьПоПравилу(Источник.Ссылка,, ИсходящиеДанные,, "ПодразделенияОрганизаций_1"); ИначеЕсли Сч = 1 Тогда ВыгрузитьПоПравилу(Источник.Ссылка,, ИсходящиеДанные,, "ПодразделенияОрганизаций_2"); ИначеЕсли Сч = 2 Тогда ВыгрузитьПоПравилу(Источник.Ссылка,, ИсходящиеДанные,, "ПодразделенияОрганизаций_3"); КонецЕсли; Сч = Сч + 1; КонецЦикла; Знаю что тут есть несколько косяков, например при добавлении новой организации придется переписывать правила, т.к. в правилах учитывается наличие только 3-х организаций, но это пока не важно, основная проблема - поиск подразделения организации по новому наименованию. Буду благодарен за подсказки. |
Сообщ.
#2
,
|
|
|
Хм. Мне кажется лучше установить соответствие по коду подразделения и в БП к коду добавить префикс организации. Все равно с префиксом организации лучше, когда их несколько. Ну и код подразделения разумеется не корректировать, да и вряд ли такое кому-то придет в голову.
|
![]() |
Сообщ.
#3
,
|
|
Тогда коды в источнике и приемнике тоже будут отличаться и будет другой вопрос - как сделать поиск по новому коду?
ЗЫ. поиск по внутреннему идентификатору выключен, т.к. при включенном создаются только подразделения для одной организации. Да и для конечного пользователя не совсем наглядно отличать подразделения по коду ![]() |
Сообщ.
#4
,
|
|
|
Цитата Rust @ Тогда коды в источнике и приемнике тоже будут отличаться и будет другой вопрос - как сделать поиск по новому коду? Ну например через обработчик "Поля поиска", вот у меня есть правило для поиска документов. ![]() ![]() Запрос = Новый Запрос( "ВЫБРАТЬ | Док.Ссылка |ИЗ | Документ.ПоступлениеТоваровУслуг КАК Док |ГДЕ | Док.Номер = &Номер | И Док.Дата >= НАЧАЛОПЕРИОДА(&Дата,ГОД) И Док.Дата <= КОНЕЦПЕРИОДА(&Дата,ГОД)"); Запрос.УстановитьПараметр("Номер","У"+Прав(СвойстваПоиска.Номер,СтрДлина(Объект.Номер)-1)); Запрос.УстановитьПараметр("Дата",СвойстваПоиска.Дата); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда ОбъектСсылка = Выборка.Ссылка; Иначе ОбъектСсылка = Неопределено; КонецЕсли; ПрекратитьПоиск = Истина; |
![]() |
Сообщ.
#5
,
|
|
Цитата evGenius @ Ну например через обработчик "Поля поиска", вот у меня есть правило для поиска документов. Хм. С полями поиска не заморачивался. На работе попробую. |
![]() |
Сообщ.
#6
,
|
|
Не дождался до утра, сделал сейчас ))
Сделал поиск по коду - все работает. Будем надеяться что слишком умные пользователи не будут менять коды у подразделений. Добавлено Теперь осталось разобраться как сохранить иерархию при переносе. Добавлено Но это точно утром. evGenius, спасибо за идею! |
Сообщ.
#7
,
|
|
|
Цитата Rust @ Теперь осталось разобраться как сохранить иерархию при переносе. Реквизит "Родитель" переносится? |
![]() |
Сообщ.
#8
,
|
|
Реквизит переносится, почему то не конвертируется. Доеду до работы, буду разбираться.
|
Сообщ.
#9
,
|
|
|
Цитата Rust @ Реквизит переносится, почему то не конвертируется. Видимо, надо в поиск и перенос реквизита добавить условие: если группа, то не добавлять префикс. |
![]() |
Сообщ.
#10
,
|
|
Там иерархия элементов, уровни не ограничены. Свойства для ПКО Подразделения -> Подразделения организаций получаются из входящих данных. Т.е. получается что родитель выгружается по ссылке из ПКС Родитель, а там уже входящих данных нет. Смотрю в сторону создания отдельного ПКО для родителя, но видимо пока не проснулся - не могу сообразить как лучше это сделать.
|
![]() |
Сообщ.
#11
,
|
|
Мде.... Выгружаю обработчики для отладки выгрузки, при сохранении обработчиков в модуле объекта обработки платформа тупо зависает, а затем падает
![]() Как же меня убивают эти глюки... |
![]() |
Сообщ.
#12
,
|
|
Не смог побороть выгрузку родителя. В принципе, пока не критично. Допилю полный обмен, а там посмотрим как будут собираться аналитики.
|
Сообщ.
#13
,
|
|
|
Могу посмотреть правила, если там ничего секретного. Только тогда мне еще надо описание метаданных (под рукой нет ни УТ, ни БП 3).
|
![]() |
Сообщ.
#14
,
|
|
Секретного ничего нет, за основу взяты типовые правила. Кажется понял в чем накосячил. Как закончу обмен, думаю можно будет куда-нить в фак небольшую статейку набросать про типовой онлайн обмен, правила обмена, правила регистрации и конвертацию данных
![]() Пока решал эту задачу перерыл вагон и тележку информации. На удивление нужной инфы очень мало по этому вопросу. Пришлось выуживать по крупицам отовсюду. Следующая задача (примерно через месяц) будет онлайн обмен между базами на Interbase, Fox Pro и 1С ЗУП - перенос остатков с последующей синхронизацией. Хочу купить за счет компании курс Евгения Гилева по конвертации, вот там точно все что нужно присутствует. |