8.х ОБМЕН Оптимизация УРИБ

Тема в разделе "Обмен данными в "1С:Предприятие 8"", создана пользователем Bonov, 24 апр 2009.

  1. TopicStarter Overlay
    Bonov
    Offline

    Bonov

    Регистрация:
    9 апр 2009
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    Уважаемые коллеги! Возникла проблемка с УРИБ...

    Описываю ситуацию: есть база данных и несколько подчиненных филиалов, в которые выгружается далеко не вся информация, плюс к тому же только за последние полгода. Все выборки и фильтры сделаны в процедуре события ПриОткправкеПодчиненному, ниже привожу текст.
    Проблем с синхронизацией между офисами нет - делается несколько раз в день. Но в связи с ростом базы я для нового филиала не могу создать начальный образ - он создается уже 4,5 часа и конца процессу не видно... А большее время неработоспособности базы я позволить себе не могу :(
    Я так понимаю задержка из-за того, что количество элементов довольно высоко и каждый раз выполняется процедура разыменования объектов, т.е. их постоянное считывание из базы. Подскажите, каким образом в кратчайшие сроки выгрузить информацию для создания начального образа? Быть может будет проще выгрузить все, а потом удалить ненужное с отменой регистрации изменений? Но дело это рисковое, да и трудоемкое...
    Знаю, что можно вручную формировать сообщения на основе таблицы регистрации изменений, используя запросы. Но тут-то создание начального образа...

    Код процедуры:
    Код:
    Procedure OnSendDataToSlave(DataItem, ItemSend, CreatingInitialImage)
    //Message(DataItem);
    ItemType = TypeOf(DataItem);
    LastCaseDate = AddMonth(EndOfMonth(CurrentDate()), -6);
    If ItemType = Type("DocumentObject.CaseDoc") Then
    If DataItem.LocationCountry <> Country or DataItem.Type <> Enums.TypeOfCase.Medical or DataItem.Date < LastCaseDate Then
    ItemSend = DataItemSend.Delete;
    EndIf;
    ElsIf ItemType = Type("CatalogObject.CaseContacts") Then
    If Not DataItem.CaseDoc.IsEmpty() And (DataItem.CaseDoc.LocationCountry <> Country or DataItem.CaseDoc.Type <> Enums.TypeOfCase.Medical or DataItem.CaseDoc.Date < LastCaseDate) Then
    ItemSend = DataItemSend.Delete;
    EndIf;
    ElsIf ItemType = Type("CatalogObject.Legs") or ItemType = Type("DocumentObject.FirstEventMedical") or ItemType = Type("DocumentObject.TelephoneReport") 
    or ItemType = Type("DocumentObject.SMS") or ItemType = Type("DocumentObject.Action") or ItemType = Type("DocumentObject.NewMedicalCaseNotification") or ItemType = Type("DocumentObject.BV") Then
    If DataItem.CaseDoc.LocationCountry <> Country  or DataItem.CaseDoc.Type <> Enums.TypeOfCase.Medical or DataItem.CaseDoc.Date < LastCaseDate Then
    ItemSend = DataItemSend.Delete;
    EndIf;
    ElsIf ItemType = Type("InformationRegisterRecordSet.NeedToDo") or ItemType = Type("InformationRegisterRecordSet.CaseDutyOPSHistory") Then
    For each Record in DataItem Do
    ItemCaseDoc = Record.CaseDoc;
    If ItemCaseDoc.LocationCountry <> Country  or ItemCaseDoc.Type <> Enums.TypeOfCase.Medical or ItemCaseDoc.Date < LastCaseDate Then
    ItemSend = DataItemSend.Delete;
    EndIf;
    EndDo;
    EndIf;
    EndProcedure
    
    
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    1. Не смысла все выгружать
    2. Все места, вида
    Код:
    Type("DocumentObject.FirstEventMedical")
    
    вынесите в переменную модуля - каждый раз создавать тип - потеря времени.
    3. Можно сделать, как в типовых - регистрировать только нужные изменения.
  3. TopicStarter Overlay
    Bonov
    Offline

    Bonov

    Регистрация:
    9 апр 2009
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    Думал об этом, но были сомнения, что будут сохраняться значения переменных.
    Это уже серьезная доработка конфигурации + отладка и поиск косяков. На это времени нет :(
    Только я не помню механизм создания первоначального образа при ручной регистраци изменений. Что он туда выгрузит? Разве опять же не все?
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Подсмотрите в типовых - там все есть.
    Перенос оттуда - дело на пару часов.
Похожие темы
  1. kol
    Ответов:
    9
    Просмотров:
    1.949
  2. flintm
    Ответов:
    2
    Просмотров:
    498
  3. ВераПМ
    Ответов:
    11
    Просмотров:
    669
  4. barsuchechechek
    Ответов:
    8
    Просмотров:
    723
  5. mazurchik
    Ответов:
    2
    Просмотров:
    386
Загрузка...

Поделиться этой страницей