gifts2017

Перенос справочников, документов и настроек констант между одинаковыми конфигурациями

Опубликовал Сергей Куликов (GreyK) в раздел Обмен - Перенос данных из 1С7.7 в 1C7.7

Есть таблица для выбора объектов переноса и условий переноса (все, проведенные, не помеченные на удаление) Поиск элементов в справочнике ведется по заданному реквизиту  (обозначается (!)). Поиск документов ведется по номеру и дате.
Для Справочников реквизит "Загружать" означает:
1) "По ссылкам" = будут загружатся элементы используемые как реквизиты других объектов не зависимо от пометки на удаление.
2) "Не помеченные на удаление" = "По ссылкам" + все элементы справочника не помеченные на удаление.
3) "Все" = Все элементы справочника.
Реквизит справочника с (!) знаком в идентификаторе используятся для поиска элементов в базе приемнике. 
В качестве реквизита для поиска может использоваться код, наименование или реквизит с установленным признаком сортировки.
Подчиненные справочники использующие в качестве реквизита документы по умолчанию не загружаются.
Периодические значения реквизитов загружаются все вошедшие в заданный период + значение на начало периода.
Для Документов реквизит "Загружать" означает:
1) "По ссылкам" = будут загружатся документы используемые как реквизиты других объектов не зависимо от даты документа, пометки на удаления, проведения.
2) "Не помеченные на удаление" = "По ссылкам" + все документы не помеченные на удаление с датой входящей в заданный период.
3) "Проведенные" = "По ссылкам" + все проведенные документы с датой входящей в заданный период.
4) "Все" = "По ссылкам" + все документы а с датой входящей в заданный период.
 
Загрузка только измененных работает при наличии в каталоге базы V7PLUS.DLL.
При загрузке только изменённых, архивированные периоды журнала регистрации не обрабатываются.  
 
Если передать в форму список парамеров, то после выполнения переноса форма будет закрыта.  Перед началом использования настраиваем обработку и
сохраняем настройку.
Параметы:
"ВнешнийИсточник" - Источник данных (OLE объект "V77.Application");
"ДатаНачала"           - Дата начала периода загрузки ( "Дата" );
"ДатаОкончания"     - Дата окончания периода загрузки ( "Дата" );
"СписокСсылок"       - Список ссылок на объекты которые нужно загрузить ( "СписокЗначений" , каждое значенние представляет собой ссылку на объект в 
                                    базе источника во внуреннем формате ( системная функция "ЗначениеВСтрокуВнутр" );
 
Пример использования вызова с параметрами:
 
Процедура Сформировать(ПутьКБазеДанных,Пользователь,Пароль,ДатаНачала,ДатаОкончания)
ВнешнийИсточник=СоздатьОбъект("V77.Application");
Если ПустоеЗначение(ПутьКБазеДанных)=1 Тогда
ИначеЕсли ФС.СуществуетФайл(ПутьКБазеДанных)=0 Тогда
КаталогВР="";
ИначеЕсли ФС.СуществуетФайл(ПутьКБазеДанных+"\1cv7.md")=0 Тогда
КаталогВР="";
КонецЕсли;
Если ПустоеЗначение(КаталогВР)=1 Тогда
Рез=ВнешнийИсточник.Initialize(ВнешнийИсточник.RMTrade, ,"No_splash_show");
Если Рез=-1 Тогда
КаталогВР=ВнешнийИсточник.КаталогИБ();
Пользователь=ВнешнийИсточник.ИмяПользователя();
КонецЕсли;
Иначе
Рез=ВнешнийИсточник.Initialize(ВнешнийИсточник.RMTrade," /d"+КаталогВР+
" /n"+Пользователь+?(ПустоеЗначение(Пароль)=1,""," /p"+Пароль), "No_splash_show");
КонецЕсли;
Если Рез=-1 Тогда
СписокСсылок=СоздатьОбъект("СписокЗначений");
Платёжки=ВнешнийИсточник.EvalExpr("СоздатьОбъект(""Документ.ПлатежноеПоручение"")");
Платёжки.ВыбратьДокументы(ДатаНачала,ДатаОкончания);
Пока Платёжки.ПолучитьДокумент()=1 Цикл
Если СокрЛП(Платёжки.Контрагент.Наименование)="Рога и Копыта" Тогда
ВнутрКод=ВнешнийИсточник.ЗначениеВСтрокуВнутр(Платёжки.ТекущийДокумент());
СписокСсылок.ДобавитьЗначение(ВнутрКод);
КонецЕсли;
КонецЦикла;
Если СписокСсылок.РазмерСписка()>0 Тогда
Параметры=СоздатьОбъект("СписокЗначений");
Параметры.Установить("ВнешнийИсточник",ВнешнийИсточник);
Параметры.Установить("ДатаНачала",ДатаНачала);
Параметры.Установить("ДатаОкончания",ДатаОкончания);
Параметры.Установить("СписокСсылок",СписокСсылок);
ОткрытьФормуМодально("Обработка", Параметры, КаталогИБ()+"ExtForms\PerenosOle.ert");
КонецЕсли;
КонецЕсли;
КонецПроцедуры //Сформировать
 
Замечания на email: kulikov_s_a@mail.ru 

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

Наименование Файл Версия Размер
Perenos Ole.zip 2429
.zip 40,70Kb
05.01.15
2429
.zip 40,70Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Доржи Цыденов (support) 28.04.06 11:51
Впечатляет работа с таблицей. Сделано мастерски. Только не до конца понятны механизмы переноса, например, по какому полю идет синхронизация? По коду или наименованию, а если в спровочнике вообще нет кода и наименования (ТИС: Спровочник.Цены )
Как переносится история элементов?
Есть ли возможность рекурсивного переноса всех связанных объектов?
2. Serjant (GreyK) 28.04.06 12:09
Синхронизация идет по полю с таким знаком (!).
Два щелчка по другому реквизиту сменит реквизит синхронизации.
3. Serjant (GreyK) 28.04.06 12:17
Да добавлю что полем синхронизии может быть код, наименование или реквизит с установленным признаком сортировки.
Переносится вся история в пределах периода + значение на начало периода.
Какие связанные объекты? Если подчиненные справочники, тогда конечно.
4. Доржи Цыденов (support) 28.04.06 14:05
>Какие связанные объекты? Если подчиненные справочники, тогда конечно.
Да, подчиненные элементы, например, цены товара из ТиС
Например, значения реквизитов это тоже элементы справочников или документов.
5. Александр (imsoftware) 28.04.06 14:31
Достаточно интересная разработка (и актуальная!), но до Rocket Launcher'а ей еще как до Китая ползком! А как быть с остальными объектами метаданных (Перечисления, Виды Субконто, Планы Счетов и т.д.)? Интерфейс разработки достаточно хороший и простой, но надо смотреть на вещи в более глобальном контексте.
6. Serjant (GreyK) 28.04.06 16:11
imsoftware, а ты попробуй и посмотри.
Как это в глобальном масштабе? Как соотнесется сия обработка и движение планет?
7. Serjant (GreyK) 04.05.06 22:01
8. Serjant (GreyK) 02.06.06 19:48
Вообще-то нужно сообщать о мнении хотя-бы или ошибки!
9. Круто. 16.06.06 00:57
10. Andr 16.06.06 08:40
Пытаюсь скачать тоже 97% и стоп
11. Andr 16.06.06 08:45
Надо просто сохранять на диск , а не качалками . Тогда сохраняет.
12. Доржи Цыденов (support) 16.06.06 09:27
надо попросить автора заново залить этот файл, действительно плохо качается
13. Serjant (GreyK) 16.06.06 21:28
Скинул. Может чё с серваком?
14. Андрей (wildcat) 13.07.06 15:55
Что значит "По ссылкам" и что задаёт Период.
Вообще было бы не плохо хоть маленькое описание работы прилепить.
15. Serjant (GreyK) 13.07.06 18:34
По ссылкам означает что если есть в объекте, который вы решили загружать , реквизит типа справочник или документ то этот объект будет загружен.
P.S. обработка не предназначена для использования простыми пользователями, надо знать хоть какие-то "основы" програмирования, без их знаний она бесполезна и даже опасна.
16. Serjant (GreyK) 26.07.06 21:03
Исправил перенос пустого значения даты.
Сталкнулся с таким фактом при подключении через ОЛЕ значения типа число иногда передаются не правильно. Пример иногда значение 2.00, передаётся 1.999999.
17. Владимир (Martyn) 27.07.06 11:16
18. ne01ext (ne01ext) 31.07.06 09:45
Очень удобная обработка... Ничего лишнего... Спасибо!
19. Александр (Sinaps) 22.01.07 13:42
Что-то в расходных накладных негрузиться парития
20. Serjant (GreyK) 22.01.07 20:11
Sinaps Какая конфигурация?
В настройках переноса для реквизита расходной наклодной "партия" стоит пометка загружать?
21. Sasha_H (logarifm) 10.01.07 17:52
Ща... тестону, как раз вовремя попалась под руки, а то клиент мну дибает, а мне такой влом писать біло, как вспомню скоко там всего аж плохо делается! Рес+1
22. Den (DDD2005) 14.11.06 09:55
Вещь конечно удобная!
НУ есть вопросы:
1. Если в спровочниках один и тот же код но разные наименования, обработка перезатрет?
2. Два документа под 1 номеров, что будет в этом случае?
3. Как работать с программой если такая ситуация есть, две бухгалтерии одинаковые но нужно перикидовать с одной (реализацию, поступление, кассу) в другую где так же может быть (реализацию, поступление, кассу)
23. Den (DDD2005) 14.11.06 09:59
Вещь конечно удобная!
НУ есть вопросы:
1. Если в спровочниках один и тот же код но разные наименования, обработка перезатрет?
После проверки справочники с одним и тем же кодом (наименование изменилось, а значит данные перезатерлись)

2. Два документа под 1 номеров, что будет в этом случае?
таже сама ситуация
3. Как работать с программой если такая ситуация есть, две бухгалтерии одинаковые но нужно перикидовать с одной (реализацию, поступление, кассу) в другую где так же может быть (реализацию, поступление, кассу)

Видно нужно добавлять префикс к документам, сравнение не по наименованию а по коду :-(
24. Serjant (GreyK) 14.11.06 17:32
1) Значок (!) в идентификаторе реквизита справочника означает, что поиск будет вестись по этому реквизиту. Таким реквизитом может быть код, наименование или реквизит с установленным признаком "сортировка".
2) Два документа с одним номером и в одном периоде нумерации? Конечно перезапишется, для того и создана.
3) Нужно установить разные префиксы в нумерацию документов у каждой базы.
25. Alexander (Alex_222) 17.11.06 12:09
26. Serjant (GreyK) 26.02.07 21:21
Как сделать что-бы 7ка не задавала вопрос о смене даты или ответить "Esc" и закрыть открытое OLE окно?
27. Сhe Burashka (CheBurator) 31.03.07 17:19
Типовая ТиС.
Требуется перетащить/синхронизировать между родственными базами Номенклатуру (код, наименование, полное наименование) и базовую единицу измерения. Вопрос: как синхронизировать между базами Спр.Единицы причем условием синхронизации должна быть пара "ОКЕИ+ШК"
???
28. Serjant (GreyK) 01.04.07 11:51
В ТиС у каждой еденицы номенклатуры вроде как должна быть только одна единица для каждого ОКЕЙ, и неё может быть или не быть ШК, т.ч. условие остается одно. В описании есть заготовка для "расширенного отбора".
29. _toro_ 07.04.07 05:43
Товарищ Сержант, разрешите обратиться?
Из бюджетной конфы (релиз 609, свернута и сжата (удалены неиспользуемые элементы толстых справочников и пожата база) на начало года) переношу в пустую авансовые отчеты (ВСЕ) за неделю (всего 10 штук). Остальное все по ссылкам. Перенеслось все корректно (10 ав. отчетов, с десяток элементов в нескольких справочниках), НО ВРЕМЯ РАБОТЫ 1,5 ЧАСА (ОБРАБОТАНО/ЗАГРУЖЕНО 9217 ССЫЛОК)!!!! Для 10 документов и десятка элементов в нескольких справочниках? Что за бред? Можно ли как-нибудь ускорить сие мероприятие оптимизацией кода (сам лезть не хочу)?
30. _toro_ 07.04.07 05:47
31. Serjant (GreyK) 07.04.07 20:28
_toro_ спасибо за сообщение. Я решил проверить информацию и нашел у себя ошибку: не обрабатывались значения типа "ВидСубконто" (используется в справочнике "Журналы"), исправил.
Создал пустую базу 6ой бюджетки и заполнил её из демоконфигурации, вот результаты.

Все операции с 07.04.2007 21:39:00 завершены в 21:58:15 07.04.2007
Обработано объектов: 15980
Изменено элементов справочников: 15667
Изменено документов: 96
Проведено документов: 70
Не удалось првести документов: 13

Intel 1500M, 512mb.
32. Serjant (GreyK) 07.04.07 20:47
_toro_ Если надо загрузить только авансовые отчеты то надо только для них поставить "загружать все", все остальные объекты должны загружатся "по ссылке".
33. _toro_ 08.04.07 00:24
2 Serjant
> Если надо загрузить только авансовые отчеты то надо только для них поставить "загружать все", все остальные объекты должны загружатся "по ссылке".

Дык я так и делал :).
Сейчас затетстим еще раз.
34. _toro_ 08.04.07 02:02
Ну, скорость работы не изменилась. Но сейчас действительно все корректно перенеслось.
Хочется понять, почему все-таки так долго.
Объясни, pls, суть алгоритма работы этой обработки.
Подобные обработки, построенные на рекурсивном вызове процедуры переноса агрегатного объекта (рекурсия-рекурсия...рекурсия, пока не дойдем до атомарного объекта (строка, число, дата)), как, например, эта http://infostart.ru/projects/874/?ref=8252 справляются с той же задачей практически мгновенно. Но в таких алгоритмах есть один нюанс. Если реквизит Справочника1 ссылается на Справочник2, а реквизит Справочника2 ссылается на Справочник1, тогда такие алгоритмы, теоретически, должны упасть в бесконечный цикл. Я так понимаю, в этой обработке использован принципиально иной алгоритм. Для корректной ли отработки данной ситуации в ущерб времени работы?
35. Serjant (GreyK) 08.04.07 12:17
Всё просто, если мы загружаем реквизит по ссылке тогда заполняются: уникальный идентификатор, владелец, родитель. Все остальные реквизиты заполняются после загрузки основного объекта.
36. Serjant (GreyK) 11.04.07 20:14
Чуть ускорил, пока больше возможностей не вижу.
37. Serjant (GreyK) 06.06.07 11:25
Изменил отбор документов для загрузки.
38. Андрей Костяшин (soltik) 12.10.07 12:23
40. Serjant (GreyK) 20.01.08 18:48
Спасибо. Всех с праздниками!
41. Ольга (Борислав) 12.02.08 15:33
Не загружает!
При открытии файла произошла ошибка : C:\Program Files\1Cv77\Зарплата 2008\PRBasic\filtr1.txt was not found.
.РазмерБуфера();zC43F675574AE.ОткрытьФайл(КаталогПользователя()+"filtr1.txt",0);z6F0F93E9E0AD="";zC43F675574AE
{F:\1С ОБРАБОТКИ\1С ВЫГРУЗКА-ЗАГРУЗКА ДОКУМЕНТОВ\PERENOSOLE&MLG.ERT(541)}: Ошибка при выполнении метода объекта компоненты C:\Program Files\1Cv77\Зарплата 2008\PRBasic\v7plus.dll
42. Serjant (GreyK) 13.02.08 20:33
А файл КаталогИБ()\SYSLOG\1cv7.mlg есть?
43. Irina (gif) 17.04.08 13:38
Документы переносит,но при условии что отказываешься от переноса справочников.При этом тащит пустые.Мне очень понравилось,но если бы вы решили эту проблему,тогда 100+++
44. Serjant (GreyK) 17.04.08 14:20
Какую ошибку выдала программа при переносе? Что такое пустой документ, он помечен на удаление? Сейчас переносится база, но там я переношу только документы, а справочники только по ссылке. Вечерком попробую со справочниками, пока у меня зависимости переноса документов от переноса справочников не было.
45. Дмитрий (adik_) 25.07.08 11:31
Согласен с gif(43 сообщение). При выборе условий загрузки "по ссылкам" справочников и документов ошибок никаких не выдает. Пишет, что все операции завершены: изменено 0, обработано 0, проведено 0. Может быть это из-за использования одного и того же списка значений в секции "Загружать" для документов и справочников или одних и тех же значений в этом списке. Поэтому он воспринимает только документы или только справочники.
46. Serjant (GreyK) 25.07.08 16:51
adik_ Если ставишь для всех справочников и докментов "по ссылке", кто-же на что должен ссылатся :)
Пример: В документе есть реквизит Контрагент. Если загружать эти документы, то загрузятся "по ссылке" и контрагенты из этих документов. Если выбрать для Контрагентов "не загружать" то не загрузятся контрагенты. А если выбрать для Контрагентов "Все", то загрузится весь справочник Котрагентов.
47. Дмитрий (adik_) 25.07.08 18:24
Логично. Но тогда это взаимоисключающие друг друга настройки и одновременно их выставлять нельзя, а стоят они по умолчанию. Создается впечатление, что обработка не работает.
48. Serjant (GreyK) 26.07.08 12:00
adik_ Для примера вот как происходит создание новой "чистой" базы из старой.
1. Делается свертка итогов в копии старой базы.
2. В настройках обработки помечаем на загрузку:
1) константы,
2) Из справочников: все классификаторы которые нужны для нормальной работы базы загружаем полностью, все остальные по ссылкам (нам не нужны уже неиспользуемые элементы.)
3) Документы ввода остатков.
3. Загружаем документы ввода остатков, период только тот день когда сформированы остатки.
4. После загрузки остатков ставим все справочники по ссылкам и загружаем документы за период после ввода остатков.

В результате получаем базу без муссора прошлых периодов.
49. aslanbek (aslanbek) 24.09.08 12:17
я вот тренируюсь по этой программе и вопрос есть, из демки 7.7 бух хочу перебросить документ приказ о принятии на работу в демку 7.7 зик. как сделать это?
50. Serjant (GreyK) 25.09.08 06:04
aslanbek Структура конфигурации бухии и зика различаются, для таких переносов рекомендую потренироватся на "Конвертации данных", там есть примеры переноса.
51. bezmenov (bezmenov) 03.10.08 15:49
Призапуске обработки появляется ошибка:
;z34F856E76950.Ссылка.ДобавитьЗначение(z34F856E76950.ПолныйИдентификатор,z34F856E76950.Тип+"."+z34F856E76950
{E:\DEVEL\PERENOSOLE&MLG.ERT(57)}: Значение не представляет агрегатный объект (ДобавитьЗначение)
52. DrZombi DrZombi (DrZombi) 21.01.09 08:41
Накой кадаброй было все переделовать под кадабру :)
А так молодца, на будущее, если ты не хочешь делиться кодом, то некуй его выкладывать ;)
53. Федор (siyanych) 19.05.09 23:15
54. Слава Корчагин (sl_k) 21.05.09 09:48
Пишет что не может открыть базу данных.Есть какие то особенности?
55. Сергей Куликов (GreyK) 23.05.09 13:35
(54) Особенностей никаких нет. Если база открывается в режиме предприятия, то и в ОЛЕ откроется.
56. Слава Корчагин (sl_k) 25.05.09 06:58
запускаю обработку, он дает мне окошко для авторизации, выбираю пользователя, набираю пароль, и после этого обработка останавливается и говорит, что не может открыть базу данных
57. Сергей Лунев (luns) 25.05.09 07:15
(56) С семеркой не работаю, но могу предположить что дело в том, что каталог пользователя занят. Нужно или выбрать нактивного пользователя, либо в конфигураторе очистить поле каталог у пользователя под которым пытаетесь заходить.
58. Слава Корчагин (sl_k) 25.05.09 08:02
(57) Спасибо, очистил каталог пользователя в конфигураторе-помогло
59. Max Gareev (maxnn2) 09.12.09 13:39
Эта обработка может перенести документ ввод остатков ТМЦ из ТиС в Комплексную?

Если да, то что значит ошибка
,1,0);z8720EB63EC9E=Макс(z8720EB63EC9E,zC21BC14141F5(z533C545C5F99,Идентификатор,z533C545C5F99.ПолучитьАтрибут
{D:\3DSWORK\1C\НОВАЯ БАЗА\ATC1\EXTFORMS\PERENOSOLE&MLG.ERT(408)}: 1С:Предприятие: Неверное имя атрибута
60. Сергей Куликов (GreyK) 09.12.09 15:02
(59) Перенос осуществляется между едиентичными, и без настроек соответствий. Для настраиваемых переносов есть КД.
61. Денис (Stitch62625) 25.12.10 16:38
Подскажите плиз откуда скачать эту обработку
"Перенос справочников, документов и настроек констант между одинаковыми конфигурациями"
А то я обсуждения читаю а где ее саму взять не пойму
62. Денис (Stitch62625) 25.12.10 16:42
Я имею ввиду перенос между идентичными конфигурациями 8.2
63. Ирина Пятакова (Alraune) 26.12.10 01:08
(61) Отсюда: http://infostart.ru/public/14022/
(62) Хотя это не 8.2, а, наоборот, 7.7
64. Евген (evg300183) 23.09.11 11:49
а будет работать между зарплата+кадры 77 и зарплата+кадры 77
65. Евген (evg300183) 23.09.11 11:49
и можно ли перенести отдельно форму Т-2 у сотрудников?
66. Сергей Куликов (GreyK) 24.09.11 08:56
Форма Т-2 хранится в реквизитах справочника "Сотрудники". Без переноса сотрудников не взлетит...
67. 1801 05.10.11 17:01
Спасибо! О-о-очень облегчает жизнь бухгалтеру, не "имеющему" собственного программиста!
68. Александр Лебедев (brato4karik) 24.10.11 17:18
Достойная обработка для выполнения переноса справочников в идентичных конфигурациях. Отработала быстро и без потерь ссылок. Проводил загрузку на больших объемах данных. Базы данных как файловые так и клиент серверные. Неплохой инструмент для переноса, но если есть опыт работы с КД то лучше ею
69. Андрей Гамидов (agamidov) 17.11.11 15:30
70. Евгений Фамилия (internetname) 02.12.11 11:06
72. Alex Astafyev (Builder) 23.12.11 12:10
73. Alex Steiner (OrsoBear) 23.01.12 13:14
Спасибо огромное! По Вашей обработке учил примеру реализации задания. И для себя несколько полезных идей подсмотрел.
74. Pavel Ivanov (pallpall4) 09.06.12 11:18
А данная обработка переносит Банк"Выписки" в идентичную бухгалтерию
75. Сергей Куликов (GreyK) 10.06.12 15:48
(74) Переносит обработка всё, но надо правильно настроить поиск. Рекомендую тренировку на копии.
76. Брест Беларусь (zhleonid8) 11.06.12 01:38
обычно к таким рекомендациям прислушиваются после экспериментов
77. Евгений Евгений (leasing) 07.10.14 10:49
Пожелание автору.
Не делайте секрета и укажите в описании, что Ваш код закрыт (обработан обсфукатором).
Неприятно же обнаружить это тому, кто скачивал ради ознакомления с алгоритмом.