Перенос справочников между базами произвольных конфигураций 1С v7.7.

Обработка предназначена для переноса справочников между базами произвольных конфигураций 1С v7.7.
Также позволяет выполнить сопутствующие операции (получение списка справочников базы данных, просмотр, перенумерация, удаление элементов справочника).

Обработка предназначена для переноса справочников между базами произвольных конфигураций 1С v7.7. Перенос данных осуществляется через текстовый файл, каждый справочник обрабатывается отдельно (возможность реализации пакетной обработки списка справочников, сохранение настроек не рассматривалась, поскольку обработка задумывалась для универсального применения к базам с разными конфигурациями). Также позволяет выполнить сопутствующие операции (получение списка справочников базы данных, просмотр, перенумерация, удаление элементов справочника).

Отчет подробно задокументирован посредством описания элементов экранной формы.

Порядок работы:

  1. Откройте обработку в исходной и принимающей базах, выберите каталог файла обмена.
  2. В исходной базе сформируйте список справочников, определите последовательность переноса справочников с учетом взаимовлияния справочников (например, не имеет смысла перенос расчетных счетов, если нет списка контрагентов), задайте дату (или период) выгрузки периодических реквизитов.
  3. В принимающей базе задайте дату загрузки периодических реквизитов.
  4. В исходной базе выберите выгружаемый справочник;
    на закладке «Экспорт» установите флажки у выгружаемых реквизитов;
    на закладке «Дополнительные настройки» при необходимости задайте условия выгрузки (по одному реквизиту) (например, при переносе из бухгалтерии УСН в ОСН потребуется условие «ТипНоменклатуры» равен (или не равен) «Материалы»); пометьте флажком реквизиты, выгружаемые основным представлением (как правило, наименованием), если в принимающей базе соответствующий реквизит имеет строковый тип;
    на закладке «Экспорт» нажмите кнопку «Экспорт» для начала выгрузки справочника.
  5. В принимающей базе выберите загружаемый справочник (имена экспортированного и импортируемого справочника могут и не совпадать («Номенклатура» и «Материалы» из предыдущего примера);
    на закладке «Импорт» нажмите кнопку «Заполнить соответствие полей» и, при необходимости, откорректируйте таблицу соответствия вручную (в общем случае тип реквизита в исходной и принимающей  базах может и не совпадать, для изменения типа реквизита включите флажок «Показать тип данных»,  для назначения нескольким реквизитам принимающей базы одинакового реквизита исходной включите флажок «Полный список экспорта»);
    (описание флажков закладки см. в всплывающих подсказках формы (или воспользуйтесь кнопкой «рассказать про…» панели инструментов формы);
    на закладке «Дополнительные настройки» при необходимости задайте соответствие счетов в исходной  и принимающей базах;
    на закладке «Импорт» нажмите кнопку «Импорт» для начала загрузки справочника;
    при необходимости перейдите на закладку «Сервис» и посмотрите результат загрузки и, если он Вас разочаровал, очистите справочник (здесь же) и повторите перенос с откорректированными параметрами.
  6. Перейдите к пункту 4.

P.S.: Несколько слов о флажке «Догрузить»: иногда возникает ситуация, когда два справочника взаимно влияют друг на друга,  например, нельзя загрузить «Договоры» не загрузив «Контрагенты», а реквизит «ОсновнойДоговор» контрагента невозможно заполнить не загрузив «Договоры».
Вот тут и поможет этот флажок:
  — переносим справочник «Контрагенты» (реквизит «ОсновнойДоговор» можно не переносить),
  — переносим справочник «Договоры»,
  — выгружаем реквизит «ОсновнойДоговор» справочника «Контрагенты»,
  — загружаем справочник «Контрагенты» в режиме «Догрузить».

23 Comments

  1. Poster

    Спасибо, заберу обработку.

    Надеюсь, что работает одинаково хорошо с российскими и украинскими конфигурациями.

    Мне нужно перенести справочники из Торговля и Склад в Комплексную. Надеюсь, что здесь будет на порядок быстрее, чем через конвертацию данных.

    Reply
  2. TrinitronOTV
    Poster пишет:

    Спасибо, заберу обработку.

    Надеюсь, что работает одинаково хорошо с российскими и украинскими конфигурациями.

    Мне нужно перенести справочники из Торговля и Склад в Комплексную. Надеюсь, что здесь будет на порядок быстрее, чем через конвертацию данных.

    потом отпишись, если не трудно, как прошел перенос

    Reply
  3. Valerich

    Пожалуй тоже возьму… а то одолевает один старый клиент, который хочет из УСН перетащить справочники в торговлю. А я пока отбрыкивался из-за недостатка времени. Надеюсь эта обработка его поможет изрядно сэкономить

    Reply
  4. Tippa

    попробовал, сразу вывалилось:

    Если ТаблИмпорта.НайтиЗначение(СокрЛП(ТаблЗн.Экспорт),СтрТабл,1)=1 Тогда
    {C:1CПЕРЕНОССПРАВОЧНИКОВ.ERT(1234)}: Значение не представляет агрегатный объект (НайтиЗначение)

    что я делаю не так? 🙂

    Reply
  5. БоНН

    Для Tippa:

    Пожалуйста, опишите Ваши действия: я не могу добиться такой ситуации.

    В Вашем случае программа обращается к переменной «ТаблИмпорта», которая к моменту выполнения оператора, вызвавшего ошибку, должна быть таблицей значений, инициированной встроенной функцией «ЗначениеИзСтроки()».

    Аргументом функции является часть текстового файла обмена, содержащая образ таблицы имен выгружаемых реквизитов, созданную функцией «ЗначениеВСтроку()».

    Возможно, Вы используете древний релиз платформы (на версии ниже «7.70.025» обработка не тестировалась)

    Reply
  6. Tippa

    релиз 25, пытался перенести из бухгалтерии в торговлю справочник контрагентов.

    в любом случае эта обработка не годится, так как в торговле надо переносить в два справочника, хотя в бухгалтерии это один справочник. да и с подчиненными справочниками тоже мороки много, потому что не совпадают.

    Reply
  7. БоНН

    Для Tippa:

    1. Попробую Вашу ситуацию завтра.

    2. Один справочник исходной конфигурации можно последовательно перенести в несколько справочников принимающей базы (см. мою публикацию «Переход с упрощенной системы налогообложения на общую (или наоборот)»).

    3. Мороки много, потому что универсально…

    Reply
  8. БоНН

    Для Tippa:

    Попробовал перенести контрагентов из доработанной конфигурации «УСН (7.70.169)» (платформа 7.70.027) в справочники «Контрагенты» и «Физические лица» конфигурации «Торговля» (7.70.954) (платформа 7.70.021 — какие нашел под рукой).

    Всё работает…

    Если файл обмена не корректировался вручную, то не знаю чем Вам помочь.

    Reply
  9. Tippa

    обошелся самописной загрузкой, но потом разобрался и с этой. проблема не в самой обработке, а в отсутствии контроля за корректностью данных.

    там в нескольких местах в название контрагентов (точнее в реквизите полн наименование)копипастом загнали какие-то непечатные символы (перевод строки). из-за этого обработка и спотыкалась.

    Reply
  10. Текстовый

    скоро сворачивать и переносить базу — конец года. попробую я переносил с помощью текстового файла что-то, но не помню что

    Reply
  11. vladimir_makarov

    Зачем велосипед изобретать? Есть стандартная обработка для этих целей. Есть на дисках ИТС. Там транзит происходит с помощью *.txt. Да, для тех, кто собирается таскать справочники между разными конфами: имейте в виду, что и структура справочников различна. Для конкретной задачи проще самому обработку написать. Это я к тому, что универсалка не всегда помогает: автор не мог знать всех тонкостей ваших конф.

    Reply
  12. Tippa

    (11) vladimir_makarov, точно также никто не запрещает пользоваться конфигурацией «конвертация данных», где транзит происходит в модном нынче формате xml.

    Но хоть велосипед и существоют больше сотни лет, но все равно продолжают изобретать 🙂

    Reply
  13. vladimir_makarov

    (12) Ни коем образом не хочу сказать, что автор не прав, просто он сделал мартышкин труд, т.к. эта работа давно сделана, она доступна и бесплатна. Это не уменьшает заслуг автора просто… А вот «Конвертация данных» тут не причём: речь идёт о простой обработке. А вот «Конвертацию данных» терпеть не перевариваю: ни разу не получилось добиться вразумительных результатов

    Reply
  14. Tippa

    (13) vladimir_makarov, это не мартышкин труд, это нормальная разработка «для себя», поскольку по себе знаю, что большинство «чужих» разработок не подходят по тем или иным причинам.

    а конвертация данных — вполне нормальная штука, если разобраться. Правда семерочная (ИМХО) мне нравилась больше

    Reply
  15. БоНН

    Для: (11) vladimir_makarov:

    Да, я не могу знать всех тонкостей Ваших конфигураций. Да, существует стандартная обработка.

    Однако, я пытался разработать достаточно универсальный (в рамках разумного) механизм переноса справочников (и документов — в соседней публикации) прежде всего для себя именно потому, что надоело писать «одноразовые» переносы.

    TranRef не умеет почти ничего и применима только к однотипным конфигурациям, предлагаемая обработка может довольно много (не хочу повторяться, см. мою публикация «Переход с упрощенной системы налогообложения на общую (или наоборот)»: на примере этой задачи я более детально описал возможности обработки).

    Конечно, если выполнять перенос справочника «Номенклатура» в «Основные средства», то вряд ли получится что то путное, но намного ли лучше будет результат такого переноса специально написанной обработкой?

    Reply
  16. vladimir_makarov

    (15) Стоп! Я просто на это и намекнул: Сделал такую машинку, хорошо, всем приятно будет попользоваться. Так кто мешает! Я просто намекнул на немного другой способ: стандарный. Между делом: Могу подсказать несколько моих способов: и на *.OLE и на *.DBF основанных! Буду рад твои идеи посмотреть И поделитьсь своим опытом по этой теме.

    Reply
  17. БоНН

    Для: vladimir_makarov:

    У меня есть немало специализированных обработок обмена и по OLE, и на dbf. Но, по моему мнению, для универсального переноса данных эти методы мало пригодны: у dbf жесткая структура, при OLE в одной форме надо иметь структуру метаданных обеих конфигураций — форма явно будет перегружена данными.

    Можно использовать XML, но во первых — на мой взгляд, реализация обмена на этом формате сложнее, во вторых — при использовании текстового формата я применяю обмен с использованием функций «ЗначениеВСтроку()» и «ЗначениеИзСтроки()» с корректировкой строкового образа объектов (мне кажется это моё «изобретение», по крайней мере я нигде не встречал), что позволяет довольно просто заменить вид объекта и согласовать длину кода.

    Reply
  18. MYRZILKA123

    вот искал искал и наткнулся)))

    Reply
  19. константин

    В целом идея хорошая, я думаю, если в закладку «Экспорт» добавить еще два поля «Код» и внутренний код элемента «Id»,в закладку «Импорт» добавить поле «Код», а синхронизацию при загрузке сделать с помощью выбора из списка значений реквизитов справочника получателя, а также разработать механизм переноса подчиненных справочников, обработка будет отличная.

    P/S: Модуль обработки не смотрел, пока её проверял, заметил следующее:

    1. Справочник «Клиенты» у него есть подчиненный справочник «Склад», пока не удалось записать клиента корректно, при переносе это поле остается пустым.

    2. С «догрузкой» из пункта 6, вообще не понял механизма, переноса справочника «Договоры» без выбора владельца, у меня вываливает ошибку: «Не выбран элемент справочника-хозяина! Элемент не может быть записан!»

    2. В закладке «Сервис», очистка справочника с выбором непосредственное удаление, справочник полностью не очищается с первого раза, раз 5-6 нажимаешь, только тогда, а вот сообщения каждый раз вываливаются «Обработка успешно завершена»

    Я ставлю «+» автору данной обработки.

    Reply
  20. БоНН

    Для Константина:

    1. Обработка задумывалась как универсальная с гибкой настройкой для каждого справочника. Претензии на универсальность лишают смысла использование внутреннего идентификатора, а требования настройки переноса каждого справочника не позволяют автоматом переносить подчиненные справочники (без существенного усложнения интерфейса). Синхронизация по произвольному реквизиту весьма ощутимо скажется на производительности (не факт, что требуемый реквизит будет индексированным).

    2. По вопросу проблем с удалением: у меня большие сомнения по поводу «здоровья» Вашей базы данных, попробуйте выполнить тестирование и исправление или хотя бы переиндексацию. Еще раз протестировал удаление и посмотрел фрагмент модуля, ответственного за удаление — там заблудиться негде.

    3. По режиму «Догрузить». Я не очень понял структуру подчиненности Ваших справочников «Клиенты» — «Склад», поэтому на примере «Контрагент» — «Договоры»:

    — переносите справочник «Контрагенты» (реквизит «Основной договор» можно не загружать, все равно договоров ещё нет),

    — переносите справочник «Договоры»,

    — снова выгружаете справочник «Контрагенты» (можно выгрузить только реквизит «Основной договор»),

    — загружаете «Контрагенты» (только реквизит «Основной договор») с включенной галочкой «Догрузить».

    Так же поступаем и с реквизитом «Основной расчетный счет», если он есть.

    Reply
  21. Dolly_EV

    От цеж! плюс поставил, да рано видимо! Ну неужели трудно было фильтр по элементам сделать?? мне вот например только одну группу Контрагентов надо перенести

    Reply
  22. AlexDaewoo

    Перетащил реквизиты спр. Номенклатура, база старая измененная (из бухгалтерии в бухгалтерию). Обработка только пару раз ругнулась при импорте (дескать не совпадение по наименованию), просто взял и удалил из файла выгрузки строки, которые не понравились обработке (видно из-за наименования, больно оно странно забито было бухами, какими-то иероглифами)

    Автору за обработку спасибо, работает обработка хорошо 🙂

    Reply
  23. dexxxqqq

    Подскажите, пожалуйста. Умеет ли обработка перетаскивать подчиненные справочники? Мне надо перетащить контрагентов из тис в бух, сохранив при этом коды и чтобы как минимум еще инн перетащились (они в ТиСе лежат в справочнике «сторонние юр.лица»).

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *