На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:

  • Перед тем, как задать вопрос, желательно почитать документацию и воспользоваться поиском.
  • Когда задаёте вопрос, то обязательно указывайте платформу (7.7, 8.0, 8.1, 8.2, etc), причем желательно в заголовке. Если речь идёт о типовой конфигурации, то указывайте её название и релиз. Текущие версии можно посмотреть здесь.
  • Ещё раз напоминаем о необходимости соблюдать не только правила, но и законы. Уважайте авторские права.

Высказать своё мнение о модераторах раздела можно здесь: evGenius
  
> Конвертация данных, обмен УТ 10.3 - БП 3.0 , перенос подразделений в подразделения организаций
    Всем доброго дня!

    Собственно задача описана в названии темы: необходимо перенести справочник Подразделения из УТ в два справочника в БП - Подразделения и Подразделения организаций. В типовом обмене данные справочники не переносятся. Справочники Подразделения в УТ - Подразделения в БП переносятся без изменений, тут вопросов нет. Вопросы возникают при переносе Подразделения - Подразделения организаций. Во-первых в БП справочник подразделения организаций подчинен организации, и если в приемнике (в нашем случае в БП) у нас три организации, то и на одно подразделение из УТ нужно создавать три подразделения организации. На текущий момент у меня все переносится, при этом наименование подразделения организации формируется след образом Наименование из УТ + наименование организации, которой подразделение подчинено. Но теперь не могу настроить поиск в приемнике по новому наименованию. Если в УТ изменить наименование существующего подразделения, то в БП не изменяется наименование существующего, а создается новое подразделение организации с новым наименованием. Во-вторых - при переносе в подразделения теряется иерархия справочника. Т.е. не конвертируется Родитель.

    Перенос делаю следующим образом:
    1. Создал 4 правила конвертации объектов
    а) подразделение в подразделение
    б) подразделение в подразделение организации 1, в ПКС у всех реквизитов установлен признак Получить из входящих данных
    в) подразделение в подразделение организации 2, в ПКС у всех реквизитов установлен признак Получить из входящих данных
    г) подразделение в подразделение организации 3, в ПКС у всех реквизитов установлен признак Получить из входящих данных

    Создал правило выгрузки данных Подразделения с ПКО подразделение в подразделение.
    В ПКО подразделение в подразделение в событии При выгрузке следующий код
    ExpandedWrap disabled
      Выборка = Справочники.Организации.Выбрать();
      Сч = 0; //Счетчик организаций. Т.к. пока 3 организации, то правил конвертации, по которым выгружаем
              //через ВыгрузитьПоПравилу() тоже 3
      Пока Выборка.Следующий() Цикл
          ИсходящиеДанные = Новый Структура();
          ИсходящиеДанные.Вставить("Код", "");
          ИсходящиеДанные.Вставить("Наименование", Источник.Наименование +  "_" + Выборка.Наименование);
          ИсходящиеДанные.Вставить("ПометкаУдаления", Источник.ПометкаУдаления);
          ИсходящиеДанные.Вставить("Родитель", Источник.Родитель);
          ИсходящиеДанные.Вставить("Владелец", Выборка.Ссылка);
          Если Сч = 0 Тогда
              ВыгрузитьПоПравилу(Источник.Ссылка,, ИсходящиеДанные,, "ПодразделенияОрганизаций_1");
          ИначеЕсли Сч = 1 Тогда
              ВыгрузитьПоПравилу(Источник.Ссылка,, ИсходящиеДанные,, "ПодразделенияОрганизаций_2");
          ИначеЕсли Сч = 2 Тогда
              ВыгрузитьПоПравилу(Источник.Ссылка,, ИсходящиеДанные,, "ПодразделенияОрганизаций_3");
          КонецЕсли;
          Сч = Сч + 1;
      КонецЦикла;


    Знаю что тут есть несколько косяков, например при добавлении новой организации придется переписывать правила, т.к. в правилах учитывается наличие только 3-х организаций, но это пока не важно, основная проблема - поиск подразделения организации по новому наименованию.
    Буду благодарен за подсказки.
      Хм. Мне кажется лучше установить соответствие по коду подразделения и в БП к коду добавить префикс организации. Все равно с префиксом организации лучше, когда их несколько. Ну и код подразделения разумеется не корректировать, да и вряд ли такое кому-то придет в голову.
        Тогда коды в источнике и приемнике тоже будут отличаться и будет другой вопрос - как сделать поиск по новому коду?
        ЗЫ. поиск по внутреннему идентификатору выключен, т.к. при включенном создаются только подразделения для одной организации.
        Да и для конечного пользователя не совсем наглядно отличать подразделения по коду :(
        Сообщение отредактировано: Rust -
          Цитата Rust @
          Тогда коды в источнике и приемнике тоже будут отличаться и будет другой вопрос - как сделать поиск по новому коду?

          Ну например через обработчик "Поля поиска", вот у меня есть правило для поиска документов.
          ExpandedWrap disabled
            Запрос = Новый Запрос(
            "ВЫБРАТЬ
            |   Док.Ссылка
            |ИЗ
            |   Документ.ПоступлениеТоваровУслуг КАК Док
            |ГДЕ
            |   Док.Номер = &Номер
            |   И Док.Дата >= НАЧАЛОПЕРИОДА(&Дата,ГОД) И Док.Дата <= КОНЕЦПЕРИОДА(&Дата,ГОД)");
            Запрос.УстановитьПараметр("Номер","У"+Прав(СвойстваПоиска.Номер,СтрДлина(Объект.Номер)-1));
            Запрос.УстановитьПараметр("Дата",СвойстваПоиска.Дата);
            Выборка = Запрос.Выполнить().Выбрать();
            Если Выборка.Следующий() Тогда
                ОбъектСсылка = Выборка.Ссылка;
            Иначе
                ОбъектСсылка = Неопределено;
            КонецЕсли;
            ПрекратитьПоиск = Истина;
            Цитата evGenius @
            Ну например через обработчик "Поля поиска", вот у меня есть правило для поиска документов.

            Хм. С полями поиска не заморачивался. На работе попробую.
              Не дождался до утра, сделал сейчас ))
              Сделал поиск по коду - все работает. Будем надеяться что слишком умные пользователи не будут менять коды у подразделений.

              Добавлено
              Теперь осталось разобраться как сохранить иерархию при переносе.

              Добавлено
              Но это точно утром.
              evGenius, спасибо за идею!
              Сообщение отредактировано: Rust -
                Цитата Rust @
                Теперь осталось разобраться как сохранить иерархию при переносе.

                Реквизит "Родитель" переносится?
                  Реквизит переносится, почему то не конвертируется. Доеду до работы, буду разбираться.
                    Цитата Rust @
                    Реквизит переносится, почему то не конвертируется.

                    Видимо, надо в поиск и перенос реквизита добавить условие: если группа, то не добавлять префикс.
                      Там иерархия элементов, уровни не ограничены. Свойства для ПКО Подразделения -> Подразделения организаций получаются из входящих данных. Т.е. получается что родитель выгружается по ссылке из ПКС Родитель, а там уже входящих данных нет. Смотрю в сторону создания отдельного ПКО для родителя, но видимо пока не проснулся - не могу сообразить как лучше это сделать.
                        Мде.... Выгружаю обработчики для отладки выгрузки, при сохранении обработчиков в модуле объекта обработки платформа тупо зависает, а затем падает :(
                        Как же меня убивают эти глюки...
                          Не смог побороть выгрузку родителя. В принципе, пока не критично. Допилю полный обмен, а там посмотрим как будут собираться аналитики.
                            Могу посмотреть правила, если там ничего секретного. Только тогда мне еще надо описание метаданных (под рукой нет ни УТ, ни БП 3).
                              Секретного ничего нет, за основу взяты типовые правила. Кажется понял в чем накосячил. Как закончу обмен, думаю можно будет куда-нить в фак небольшую статейку набросать про типовой онлайн обмен, правила обмена, правила регистрации и конвертацию данных :D
                              Пока решал эту задачу перерыл вагон и тележку информации. На удивление нужной инфы очень мало по этому вопросу. Пришлось выуживать по крупицам отовсюду. Следующая задача (примерно через месяц) будет онлайн обмен между базами на Interbase, Fox Pro и 1С ЗУП - перенос остатков с последующей синхронизацией. Хочу купить за счет компании курс Евгения Гилева по конвертации, вот там точно все что нужно присутствует.
                              1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                              0 пользователей:


                              Рейтинг@Mail.ru
                              [ Script execution time: 0,0761 ]   [ 14 queries used ]   [ Generated: 6.07.25, 19:32 GMT ]