Простой перенос справочников II




Имеются функции настройки сопоставления.
Имеется реализация под 1С:Предприятие 8.2.

Не смотря на скепсис некоторых участников обсуждения, предыдущий «простой перенос справочников» оказался востребован, при том, что в нем не имелось никаких настроек. Впрочем, это был один из первых моих опытов программирования под 8.1.

Так получилось, что подвернулся клиент, попросивший сделать перенос справочников уже под 8.2. Воспользовавшись случаем, сделал обработку универсальной, добавив возможность настройки переноса, когда требуется переносить данные между неидентичными справочниками.

Структура сопоставления выгруженного справочника с имеющимися в базе настраивается в обработке загрузки на соответствующей закладке. При выборе пользователем сопоставляемого справочника, обработка будет пытаться автоматически сопоставить реквизиты справочника с выгружаемыми данными. Эту настройку можно менять вручную.

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

В реализации под 8.1 возможность вызова обработок выгрузки-загрузки из состава конфигурации.

В качестве примера такого вызова реализована пакетная выгрузка справочников из 8.1.

Под 8.2 реализована лишь загрузка со всеми настройками, как и в 8.1. Это не конвертация, а отдельная реализация на управляемых формах. (Кстати, моя первая прога на 8.2, так что поздравьте и не пинайте)

При необходимости использования выгрузки в составе конфигурации без открытия формы, достаточно вставить следующий код:

ОбработкаВыгрузки=ВнешниеОбработки.Создать(ИмяФайлаОбработки);
ОбработкаВыгрузки.ИмяСправочника=ИмяСправочника;
ОбработкаВыгрузки.ИмяФайла=ИмяФайла;
ОбработкаВыгрузки.ВыгрузитьСправочник(ЭлементыФормы.Индикатор);

Индикатор может в параметрах отсутствовать. Это также может быть индикатор с какой-то другой формы.

При необходимости использования загрузки в составе конфигурации без открытия формы, нужно вставить следующий код:

ОбработкаЗагрузки=ВнешниеОбработки.Создать(ИмяФайлаОбработки);
ОбработкаВыгрузки.УстановитьИмяФайла(ИмяФайлаПереносаСправочника);
ОбработкаВыгрузки.ЗагрузитьСправочник(ЭлементыФормы.Индикатор);

Метод УстановитьИмяФайла попытается найти для файла переноса сохраненную структуру сопоставления, и если таковая имеется в каталоге переноса, то загрузит ее.

Если сохраненная структура сопоставления в каталоге переноса отсутствует, то сопоставит выгруженный справочник с имеющимися в базе автоматически.

Возможно использовать реквизиты обработки:

ОбработкаВыгрузки.РежимДобавления

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

0 — не добавлять новые элементы
1 — добавлять с новым кодом
2 — изменять имеющиеся
3 — воспринимать, как ошибку

ОбработкаВыгрузки.ТолькоПроверка

Перед загрузкой, обработка выполняет проверку соответствия загружаемых данных со структурой справочника и данными базы. При значении ИСТИНА обработка выполнит лишь проверку, не меняя состав справочников.

ОбработкаВыгрузки.ИгнорироватьОшибки

Если этот параметр выставить в ЛОЖЬ, то обработка будет загружать данные, не смотря на встретившиеся ошибки при проверке. В противном случае, обработка отменит загрузку, если на этапе проверки будут выявлены проблемы.

39 Comments

  1. CheBurator

    да… начинаем на снеговике переписывать все что накоплено годами на 7.7…

    возьми Универсал и портируй его на 8-ку.. и будет тебе большая спасиба…

    Reply
  2. Ish_2

    (1) Зависть.

    Reply
  3. Ish_2

    А как насчет справочников, имеющих подчиненные ?

    Хотелось бы выгружать контрагентов с договорами.

    А вообще .. Что только люди не придумают — лишь бы не использовать КД.

    Reply
  4. O-Planet

    (3) Снова пишут про КД… А ты спросил, есть ли КД на 8.2, и всегда ли оно устраивает даже под 8.1? С подчиненными можно выгрузить. Точнее, выгружаем контрагенты и договора. Загружаем 1) Контрагентов 2) Договора 3) Повторно контрагентов в режиме «Изменять имеющиеся». Повторно загружаем, чтобы привязался «Основной договор».

    Собственно, не грузятся только справочники с

    1) Неуникальными кодами

    2) Подчиненные с иерархией групп

    Вторые, хотя, загрузятся, но иерархия, скорее всего, собьется.

    Reply
  5. O-Planet

    (1) 8.2 — не снеговик. Это пьяный дед мороз…

    Reply
  6. Ish_2

    (4)

    Загружаем 1) Контрагентов 2) Договора 3) Повторно контрагентов в режиме «Изменять имеющиеся».

    Пункт 2). Договора подчинены КОнтргаентам. Каждый договор имеет поле Владелец .

    Как ты загрузишь договора с пустым полем Владелец ?

    При использовании команды Объект. Записать() ты получишь ошибку.

    Reply
  7. O-Planet

    Блим. Читаем заново.

    1. Загружаем контрагентов

    2. Загружаем договора

    Если контрагенты уже загружены, то для договоров можно найти владельца по коду при загрузке.

    Reply
  8. Ish_2

    «Если контрагенты уже загружены, то для договоров можно найти владельца по коду при загрузке»

    Оно ,конечно , дело твоё. Не скачивал и не проверял , но завернул ты больно хитро. Совершенно непонятно следующее :

    Когда по п 2. ты загружаешь элемент справочника Договор, то откуда ты возьмешь код Владельца , чтобы найти его в справочнике Контргаенты.

    и затем выполнить команду .Записать() ?

    Ты что ? в каждую запись при выгрузке для договора пишешь еще и код Владельца ?

    Reply
  9. mpkfa

    смотреть не стал 🙂 рейтинга не хватает качать все подряд

    но я сам сделал так, что в справочнике используемым для переноса

    у меня есть поля с родителем и владельцем 🙂 причем туда у меня записываются уже ссылки на элементы 8.2 + плюс еще хранится ссылка на базу 7.7 (задача перекачать и синхронизировать порядка 120 баз 7.7)

    Reply
  10. O-Planet

    (8) Да, пишу код владельца

    (9) Это не справедливо по отношению к коллеге 🙂 Тем более, раз сам такое делал тоже. Если все-таки не прочь взглянуть, то вот ссылка: скачать с letitbit.net

    Reply
  11. O-Planet

    (9) + кстати, если работал с 8.2, то мож скажешь, где я туплю. Ситуация простая. Заполняю табличную часть РеквизитыЗагрузки обработки, скажем, десятью строками. Потом, если очищаю и заполняю снова, скажем, пятью новыми, то почему-то Элементы.РеквизитыЗагрузки.ТекущаяСтрока выдает номера строк не с нуля, а с 10. Хотя на форме только 5 строк, которые загрузил последний раз.

    Reply
  12. mpkfa

    (11) гляну обработку скажу может 😉

    пока долбился с вот этим

    http://infostart.ru/forum/forum14/topic30713/

    чуть позже выложу результат, если что можешь добавить — добавь плиз

    Reply
  13. mpkfa

    и я храню не код владельца 🙂 а ссылки базы 8.2

    если тебе нужно то выложу код

    Reply
  14. irq15

    подскажите пожалуйста по проблеме:

    при загрузке контрагентов в 8.2 вылетает ошибка:

    Для справочника Контрагенты не определен владелец, сопоставление не возможно!. Если поставить игнорирование ошибки, то загружаются пустые группы контрагентов.

    Reply
  15. O-Planet

    (14) Попробуйте скачать текущую версию, что сейчас лежит, и проверить. Выгрузку придется повторно сделать. Ошибки быть не должно. Если повторится — пишите в личку. Нужен будет файл выгрузки, который Вы пытаетесь загрузить.

    ОБЯЗАТЕЛЬНО на компьютере, с которого выгружаете, удалите из каталога Windows/Temp все временные файлы с расширением epf.

    Reply
  16. helenchekc

    ❓ У меня тоже выскакивает та же ошибка только при выгр. Номенклатуры, причем я скачала заново обработку 22.02.10, заново выгрузила справочник, но ничего не изменилось…

    Для справочника Номенклатура не определен владелец, сопоставление не возможно!
    Reply
  17. O-Planet

    Повторюсь:

    ОБЯЗАТЕЛЬНО на компьютере, с которого выгружаете, удалите из каталога Windows/Temp все временные файлы с расширением epf.

    Reply
  18. helenchekc

    Я все удалила, хотя эти файлы были в другой папке (даже на другом диске), но ничего не изменилось

    Для справочника Номенклатура не определен владелец, сопоставление не возможно!

    При проверке были обнаружены ошибки…

    Обработка прервана!

    А не может это быть из-за того, что в файле выгрузки вообще нет такого слова как «Владелец»?? Может в модуле прописать определение к этому слову?

    Reply
  19. MaxDELETE

    Прошу прощения, но при открытии файл Загрузка в 8.2 просто тупо ничего не происходит — после открытия окошко промелькивает и все.

    Что можно сделать чтоб исправить ситуацию?

    1С 8.2.10.77. конфигурация Розница 1.0.9.5

    Reply
  20. O-Planet

    Обработку обновил. Ошибку с Владельцем исправил. Также исправил ошибку метаданных в загрузке в 8.1. Качайте.

    Reply
  21. pasha56

    не работает

    Reply
  22. dikii07

    не хочет работать.

    Reply
  23. taniya

    не работает

    Reply
  24. gnomm

    А из 7.7 в 8.1 и документы за период?

    Reply
  25. olezhe

    Хотел поставить плюс, но пока воздержусь.

    Выгружает без нареканий.

    А вот при загрузке справочника Единицы измерений (типовая УТ) ничего хорошего не получается. Ошибок две:

    1)в модуле после строки №500

    //вместо
    //Если Не Проверка И ПоискПоКоду И (Метаданные.Справочники[ИмяСправочника].СерииКодов=Метаданные.СвойстваОбъектов.СерииКодовСправочника.ВПределахПодчинения) Тогда
    //надо
    Если Не (Проверка И ПоискПоКоду И (Метаданные.Справочники[ИмяСправочника].СерииКодов=Метаданные.СвойстваОбъектов.СерииКодовСправочника.ВПределахПодчинения)) Тогда
    

    В вашем варианте вообще цикл вхолостую крутился.

    2) При записи норовит влепить какого-то кривого Владельца, это пришлось закомментарить. Но это, разумеется. не решение. Это в районе 550й строки.

    //Если Владелец<>Неопределено Тогда
    // Эл.Владелец=Владелец;
    //КонецЕсли;
    

    Задача была обновить одно поле у идентичного справочника (потерялось при обновлении). То есть вариант с перезаписью элементов был выбран.

    В итоге, справочник обновлён. Спасибо.

    Доработаете обработку, поставлю плюс.

    Reply
  26. Dafter

    Глупый вопрос, но все-таки чем из семерки получить нужный файл .txt

    Reply
  27. prodines

    Почему файл без расширения? Назначил epf. При открытии пишет:

    Ошибка при выполнении файловой операции ‘C:Перенос.epf’

    по причине:

    Неверный формат хранилища данных ‘file://C:/Перенос.epf’

    Reply
  28. MartyNSK

    Спасибо, помогло, и для обучения полезно.

    Reply
  29. pahmelos

    http://www.imageup.ru/img136/snimok775315.png что чему сопоставлять кто знает?

    Reply
  30. Murik_1984

    В прниципе норм обработка. Не все конечно можно перенести. Но если уж не получается, то можно и самому дописать перенос отсального.

    Reply
  31. neonis

    Понравилась, только не работает загрузка номенклатуры.

    Reply
  32. vladarius

    По подробней о загрузке номенклатуры, если можно. Как ее заставить, все-таки загрузить номенклатуру?

    Reply
  33. O-Planet

    (36) Ну, так давай опубликуем!

    Reply
  34. rkozom

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

    Reply
  35. Tur_gad

    Не знаю на сколько он простой перенос но качественный, Спасибо разработчику)))))))))))

    Reply
  36. Sasha255n

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

    Reply
  37. Sasha255n

    Мне очень пригодилось за это автору большое спасибо и конечно же плюс.

    Reply
  38. stas1kbob

    Скачал, пробовал переносить справочники между двумя бухгалтериями 2.0. не получилось загрузить, пишет что «для перечисления ставка ндс не определено значение » «!». Не понял в чем косяк, в выгрузке или в загрузке, короче лучше конвертацией перенесу. А вы поправьте пожалуйста.

    Reply
  39. Светлый ум

    Тоже очень хорошая обработка:

    http://infostart.ru/public/86230/

    — можно использовать между разными платформами 8ки: 8.0, 8.1, 8.2, 8.2

    — и разными конфигурациями

    Reply

Leave a Comment

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