8.х Одинаковые идентификаторы

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем sh_progr, 11 мар 2015.

  1. TopicStarter Overlay
    sh_progr
    Offline

    sh_progr

    Регистрация:
    21 фев 2015
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Задача: "слить" три базы в одну. Но обнаружилось, что у некоторых элементов справочников одинаковые идентификаторы. Поэтому при переносе документов, справочников из одной базы в другую такие элементы "перезаписывают" друг друга. Возможно ли изменить существующие идентификаторы в базе? Если нет, то какие пути решения подскажете?
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    Путь решения - создание новых элементов справочников/документов при совпадении UID-ов.
    Данные справочников в 3-х базах вообще не пересекаются никак? Каким образом будете искать совпадения в базе приемнике?
  3. TopicStarter Overlay
    sh_progr
    Offline

    sh_progr

    Регистрация:
    21 фев 2015
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Создание новых элементов не подходит, уж очень много элементов в справочниках, а какие именно и сколько с одинаковыми идентификаторами неизвестно. В базе-приемнике совпадающие элементы будут заменяться обработкой ПоискИЗаменаЗначений 8.2.epf. Это уже будет задача бухгалтеров
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    Без создания новых объектов UID не поменяешь. "Лишние" объекты удаляются после "синхронизации".
    Что мешает сделать сравнение UID-ов объектов из 3-х баз и выяснить количество совпадений, чтобы оценить масштабы?

    Я бы не был на столько уверенным в квалификации бухгалтеров как пользователей 1С :)
  5. XXL
    Offline

    XXL Опытный в 1С Команда форума

    Регистрация:
    22 янв 2007
    Сообщения:
    1.159
    Симпатии:
    19
    Баллы:
    29
    а нет ли другого уникального параметра для сравнения?
  6. TopicStarter Overlay
    sh_progr
    Offline

    sh_progr

    Регистрация:
    21 фев 2015
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    не справятся - буду помогать программно. но это уже другая задача
  7. TopicStarter Overlay
    sh_progr
    Offline

    sh_progr

    Регистрация:
    21 фев 2015
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    сравнение не выполняется. при загрузке создается объект. и если у него идентификатор такой же, как у существующего уже в базе, то существующий "перезаписывается" новым
    --- Объединение сообщений, 11 мар 2015 ---
    посоветуйте, пжл, как это лучше сделать?
  8. XXL
    Offline

    XXL Опытный в 1С Команда форума

    Регистрация:
    22 янв 2007
    Сообщения:
    1.159
    Симпатии:
    19
    Баллы:
    29
    Загрузка каким образом происходит?
  9. TopicStarter Overlay
    sh_progr
    Offline

    sh_progr

    Регистрация:
    21 фев 2015
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    обработкой ВыгрузкаЗагрузкаДанныхXML82.epf
  10. XXL
    Offline

    XXL Опытный в 1С Команда форума

    Регистрация:
    22 янв 2007
    Сообщения:
    1.159
    Симпатии:
    19
    Баллы:
    29
    Там по-любому есть признак по которому синхронизируются объекты, в данном случае по ГУИДу (прописано в правилах). Если есть какой-то другой уникальный реквизит, то можно в правилах указать его и проблем не будет.
  11. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Обработка ВыгрузкаЗагрузкаДанныхXML82.epf не использует правила обмена.
    --- Объединение сообщений, 11 мар 2015 ---
    не справятся.
    --- Объединение сообщений, 11 мар 2015 ---
    Тему внимательно не читал.
    Общий смысл - в чем?
  12. XXL
    Offline

    XXL Опытный в 1С Команда форума

    Регистрация:
    22 янв 2007
    Сообщения:
    1.159
    Симпатии:
    19
    Баллы:
    29
    Разве не использует?

    Смысл, что сливают три базы в одну и если по номенклатуре в разных базах одинаковый идентификатор, то они замещаются.
  13. TopicStarter Overlay
    sh_progr
    Offline

    sh_progr

    Регистрация:
    21 фев 2015
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    изменить идентификаторы так, чтобы в разных базах они не повторялись. Но, т.к. слияние баз в одну - разовая операция, то может быть есть и другое решение?
  14. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Нет.
    Правила обмена использует обработка "Универсальный обмен данными в формате XML".


    Это конкретные сложности в выполнении задачи.
    Интересовало - для чего это в принципе.
  15. XXL
    Offline

    XXL Опытный в 1С Команда форума

    Регистрация:
    22 янв 2007
    Сообщения:
    1.159
    Симпатии:
    19
    Баллы:
    29
    Тогда пардонте, ошиблась.
  16. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    --- Объединение сообщений, 11 мар 2015 ---
    Да не страшно. Названия похожие, бывает.
  17. GOLARIS
    Offline

    GOLARIS Новичок в 1С

    Регистрация:
    12 мар 2015
    Сообщения:
    15
    Симпатии:
    2
    Баллы:
    4
    Вариант первый:

    - смотрим какие GUIDы и у каких объектов совпадают - для этого выгружаем GUIDы из всех трех баз в текстовые файлы - и сравниваем
    Выгрузка проста:
    Код:
        Для каждого объектМетаданных из Метаданные.Справочники цикл
            Запрос=Новый Запрос;
            Запрос.Текст="ВЫБРАТЬ
                        |    СправочникС.Ссылка
                        |ИЗ
                        |    Справочник."+объектМетаданных.Имя+" КАК СправочникС";
            Выборка=Запрос.Выполнить().Выбрать();
            Пока Выборка.Следующий() цикл
                ГУИД=XMLСтрока(Выборка.Ссылка);
                Сообщить(ГУИД+" : Справочник."+объектМетаданных.Имя+" : "+Выборка.Ссылка);
            КонецЦикла;
    // все что в Сообщить() - писать в файл
    
    Получив GUIDы справочников - имеем возможность сравнить по каким объектам пересекаются GUIDы всех трех баз (ручна аналитика - ну или в обработочка сравнения :) )
    Узнав пересечения - подготовить базы так - чтобы пересечения по гуидам не происходили - (новый объект + поиск и замена значений + удаление ненужного....)

    Кропотливо - да, но одноразово можно попотеть :)

    Вариант второй:
    конвертация данных - генерим правила - которые в проблемных местах ставим поиск значений например "по Коду" тогда GUIDы нам не помеха

    Вариант третий:
    Для программиста самый легкий - загружаем все как есть - а далее после анализа бухгалтеров создаем того что не хватает, ну и обработочками поиска и замены, групповой обработки справочников и документов - причесываем :)

    Как то так
    Последнее редактирование модератором: 12 мар 2015
  18. TopicStarter Overlay
    sh_progr
    Offline

    sh_progr

    Регистрация:
    21 фев 2015
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    сделал именно так, как Вы пишете в первом варианте: выгрузил из баз; проанализировал; определил критические справочники; создание новых элементов и замена старых; перенос документов
    третий вариант не годится: при обмене объекты "затираются". Это то, с чего и начался этот диалог

    Вложения:

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