gifts2017

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

Опубликовал Олег Пономаренко (O-Planet) в раздел Обработки - Обработка справочников

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Скачать файлы

Наименование Файл Версия Размер
Перенос справочников 1884
.zip 51,67Kb
10.09.14
1884
.zip 51,67Kb Скачать

См. также

Contragent+ 5.0 от 2 500
Подписаться Добавить вознаграждение

Комментарии

1. Сергей (Che) Коцюра (CheBurator) 26.01.10 00:55
да... начинаем на снеговике переписывать все что накоплено годами на 7.7...
возьми Универсал и портируй его на 8-ку.. и будет тебе большая спасиба...
2. Игорь Исхаков (Ish_2) 26.01.10 07:18
3. Игорь Исхаков (Ish_2) 26.01.10 07:27
А как насчет справочников, имеющих подчиненные ?
Хотелось бы выгружать контрагентов с договорами.

А вообще .. Что только люди не придумают - лишь бы не использовать КД.
4. Олег Пономаренко (O-Planet) 26.01.10 12:34
(3) Снова пишут про КД... А ты спросил, есть ли КД на 8.2, и всегда ли оно устраивает даже под 8.1? С подчиненными можно выгрузить. Точнее, выгружаем контрагенты и договора. Загружаем 1) Контрагентов 2) Договора 3) Повторно контрагентов в режиме "Изменять имеющиеся". Повторно загружаем, чтобы привязался "Основной договор".

Собственно, не грузятся только справочники с
1) Неуникальными кодами
2) Подчиненные с иерархией групп
Вторые, хотя, загрузятся, но иерархия, скорее всего, собьется.
5. Олег Пономаренко (O-Planet) 26.01.10 12:37
(1) 8.2 - не снеговик. Это пьяный дед мороз...
6. Игорь Исхаков (Ish_2) 26.01.10 13:02
(4)
Загружаем 1) Контрагентов 2) Договора 3) Повторно контрагентов в режиме "Изменять имеющиеся".


Пункт 2). Договора подчинены КОнтргаентам. Каждый договор имеет поле Владелец .
Как ты загрузишь договора с пустым полем Владелец ?
При использовании команды Объект. Записать() ты получишь ошибку.
7. Олег Пономаренко (O-Planet) 26.01.10 13:08
Блим. Читаем заново.

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

Если контрагенты уже загружены, то для договоров можно найти владельца по коду при загрузке.
8. Игорь Исхаков (Ish_2) 26.01.10 21:18
"Если контрагенты уже загружены, то для договоров можно найти владельца по коду при загрузке"

Оно ,конечно , дело твоё. Не скачивал и не проверял , но завернул ты больно хитро. Совершенно непонятно следующее :
Когда по п 2. ты загружаешь элемент справочника Договор, то откуда ты возьмешь код Владельца , чтобы найти его в справочнике Контргаенты.
и затем выполнить команду .Записать() ?
Ты что ? в каждую запись при выгрузке для договора пишешь еще и код Владельца ?
9. Marat KhuziaKhmetov (mpkfa) 27.01.10 10:03

смотреть не стал :) рейтинга не хватает качать все подряд
но я сам сделал так, что в справочнике используемым для переноса
у меня есть поля с родителем и владельцем :) причем туда у меня записываются уже ссылки на элементы 8.2 + плюс еще хранится ссылка на базу 7.7 (задача перекачать и синхронизировать порядка 120 баз 7.7)
10. Олег Пономаренко (O-Planet) 27.01.10 16:34
(8) Да, пишу код владельца
(9) Это не справедливо по отношению к коллеге :) Тем более, раз сам такое делал тоже. Если все-таки не прочь взглянуть, то вот ссылка: скачать с letitbit.net
11. Олег Пономаренко (O-Planet) 27.01.10 16:40
(9) + кстати, если работал с 8.2, то мож скажешь, где я туплю. Ситуация простая. Заполняю табличную часть РеквизитыЗагрузки обработки, скажем, десятью строками. Потом, если очищаю и заполняю снова, скажем, пятью новыми, то почему-то Элементы.РеквизитыЗагрузки.ТекущаяСтрока выдает номера строк не с нуля, а с 10. Хотя на форме только 5 строк, которые загрузил последний раз.
12. Marat KhuziaKhmetov (mpkfa) 27.01.10 17:41
(11) гляну обработку скажу может ;)

пока долбился с вот этим
http://infostart.ru/forum/forum14/topic30713/
чуть позже выложу результат, если что можешь добавить - добавь плиз
13. Marat KhuziaKhmetov (mpkfa) 27.01.10 17:42

и я храню не код владельца :) а ссылки базы 8.2
если тебе нужно то выложу код
14. irq15 (irq15) 09.02.10 12:59
подскажите пожалуйста по проблеме:
при загрузке контрагентов в 8.2 вылетает ошибка:
Для справочника Контрагенты не определен владелец, сопоставление не возможно!. Если поставить игнорирование ошибки, то загружаются пустые группы контрагентов.
15. Олег Пономаренко (O-Planet) 09.02.10 17:12
(14) Попробуйте скачать текущую версию, что сейчас лежит, и проверить. Выгрузку придется повторно сделать. Ошибки быть не должно. Если повторится - пишите в личку. Нужен будет файл выгрузки, который Вы пытаетесь загрузить.

ОБЯЗАТЕЛЬНО на компьютере, с которого выгружаете, удалите из каталога Windows/Temp все временные файлы с расширением epf.
16. Елена Кучугурина (helenchekc) 22.02.10 00:29
:?: У меня тоже выскакивает та же ошибка только при выгр. Номенклатуры, причем я скачала заново обработку 22.02.10, заново выгрузила справочник, но ничего не изменилось...
Для справочника Номенклатура не определен владелец, сопоставление не возможно!
17. Олег Пономаренко (O-Planet) 22.02.10 03:23
Повторюсь:

ОБЯЗАТЕЛЬНО на компьютере, с которого выгружаете, удалите из каталога Windows/Temp все временные файлы с расширением epf.
18. Елена Кучугурина (helenchekc) 22.02.10 12:25
Я все удалила, хотя эти файлы были в другой папке (даже на другом диске), но ничего не изменилось
Для справочника Номенклатура не определен владелец, сопоставление не возможно!
При проверке были обнаружены ошибки...
Обработка прервана!

А не может это быть из-за того, что в файле выгрузки вообще нет такого слова как "Владелец"?? Может в модуле прописать определение к этому слову?
19. Максим Селиванов (MaxDELETE) 13.03.10 10:37
Прошу прощения, но при открытии файл Загрузка в 8.2 просто тупо ничего не происходит - после открытия окошко промелькивает и все.
Что можно сделать чтоб исправить ситуацию?
1С 8.2.10.77. конфигурация Розница 1.0.9.5
20. Олег Пономаренко (O-Planet) 23.03.10 01:32
Обработку обновил. Ошибку с Владельцем исправил. Также исправил ошибку метаданных в загрузке в 8.1. Качайте.
YURIC1991; alkar; +2 Ответить
21. Павел (pasha56) 19.04.10 21:57
22. dikii07 (dikii07) 21.04.10 08:33
23. taniya (taniya) 15.08.10 23:03
24. Юрий (gnomm) 26.09.10 15:03
А из 7.7 в 8.1 и документы за период?
25. Олег Владимирович (olezhe) 27.01.11 18:09
Хотел поставить плюс, но пока воздержусь.
Выгружает без нареканий.
А вот при загрузке справочника Единицы измерений (типовая УТ) ничего хорошего не получается. Ошибок две:
1)в модуле после строки №500
	//вместо
	//Если Не Проверка И ПоискПоКоду И (Метаданные.Справочники[ИмяСправочника].СерииКодов=Метаданные.СвойстваОбъектов.СерииКодовСправочника.ВПределахПодчинения) Тогда
	//надо
	Если Не (Проверка И ПоискПоКоду И (Метаданные.Справочники[ИмяСправочника].СерииКодов=Метаданные.СвойстваОбъектов.СерииКодовСправочника.ВПределахПодчинения)) Тогда
...Показать Скрыть

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


2) При записи норовит влепить какого-то кривого Владельца, это пришлось закомментарить. Но это, разумеется. не решение. Это в районе 550й строки.
		//Если Владелец<>Неопределено Тогда
		//	Эл.Владелец=Владелец;
		//КонецЕсли;	
...Показать Скрыть


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

В итоге, справочник обновлён. Спасибо.
Доработаете обработку, поставлю плюс.
mem; vvvtitov; +2 Ответить
26. Иванушка Ненашев (Dafter) 29.07.11 08:01
Глупый вопрос, но все-таки чем из семерки получить нужный файл .txt
27. program program (prodines) 14.09.11 10:51
Почему файл без расширения? Назначил epf. При открытии пишет:

Ошибка при выполнении файловой операции 'C:\Перенос.epf'
по причине:
Неверный формат хранилища данных 'file://C:/Перенос.epf'
28. Alexey Rozhkov (MartyNSK) 19.09.11 06:48
Спасибо, помогло, и для обучения полезно.
29. Alex N. (pahmelos) 04.10.11 17:13
33. Юрий Милохов (Murik_1984) 18.11.11 12:32
В прниципе норм обработка. Не все конечно можно перенести. Но если уж не получается, то можно и самому дописать перенос отсального.
34. Дмитрий Яковлев (neonis) 30.11.11 21:45
Понравилась, только не работает загрузка номенклатуры.
35. Влад (vladarius) 03.12.11 20:01
По подробней о загрузке номенклатуры, если можно. Как ее заставить, все-таки загрузить номенклатуру?
37. Олег Пономаренко (O-Planet) 28.12.11 08:25
(36) Ну, так давай опубликуем!
40. Роман (rkozom) 26.01.12 20:50
Обработка переносит справочники хорошо. Только проблемы у меня возникли при переносе единиц измерения - иногда не создавались для некоторых позиций нужные единицы.
42. Артур Асатрян (Tur_gad) 16.08.12 12:07
Не знаю на сколько он простой перенос но качественный, Спасибо разработчику)))))))))))
43. Александр Федоров (Sasha255n) 27.12.12 16:49
Здраствуйте мне вот наприер потребовалось перенести справочник обычный без подчиненных из одной базы в другую без всяких там наворотов. Для моего случая это был самый подходящий вариант.
44. Александр Федоров (Sasha255n) 27.12.12 16:49
Мне очень пригодилось за это автору большое спасибо и конечно же плюс.
45. Stas Bobkov (stas1kbob) 03.02.14 12:03
Скачал, пробовал переносить справочники между двумя бухгалтериями 2.0. не получилось загрузить, пишет что "для перечисления ставка ндс не определено значение " "!". Не понял в чем косяк, в выгрузке или в загрузке, короче лучше конвертацией перенесу. А вы поправьте пожалуйста.
46. Константин Куликов (Светлый ум) 24.02.16 18:56
Тоже очень хорошая обработка:
http://infostart.ru/public/86230/

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

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