gifts2017

Синхронизация движений документов в идентичных информационных базах

Опубликовал 33lab (33lab) в раздел Обработки - Универсальные обработки

Синхронизация движений документов между различными состояниями одной информационной базы

Обработка поможет в ситуации, когда в рабочей информационной базе происходит нарушение движений документов, например, за прошедший период, и нужно восстановить эти движения из ранее сформированной резервной копии.

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

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

Обработка открывается как внешний файл в режиме 1С:Предприятие. В поле необходимо прописать путь к файлу информационной базы-источника в соответствии с правилами запуска командной строки:

 

Каждый параметр представляет собой фрагмент вида =, где Имя параметра - имя параметра, а Значение - его значение. Фрагменты отделяются друг от друга символами ";". Если значение содержит пробелы, его необходимо заключить в двойные кавычки.

Для файлового варианта информационной базы задается параметр:

 

· File - каталог информационной базы

 

Для клиент-серверного варианта:

 

· Srvr - имя сервера,
· Ref - имя информационной базы на сервере 1С:Предприятия,
· SQLSrvr - имя Microsoft SQL Server,
· SQLDB - имя базы данных Microsoft SQL Server,
· SQLUID - имя пользователя Microsoft SQL Server,
· SQLPwd - пароль пользователя Microsoft SQL Server,

 

Для всех вариантов задаются параметры:

 

· Usr - имя пользователя
· Pwd - пароль

 

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

По кнопке "Выполнить синхронизацию" происходит замена движений по регистрам выбранных документов движениями аналогичных документов базы-источника.

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

Наименование Файл Версия Размер Кол. Скачив.
Обработка синхронизации движений документов в идентичных информационных базах
.zip 9,01Kb
15.04.13
54
.zip 9,01Kb 54 Скачать

См. также

PowerTools от 1 000
Подписаться Добавить вознаграждение

Комментарии

1. Сергей Викторович (Loader_1C) 04.05.13 19:28
Спасибо!
Полезный инструмент. Особенно для тех кто работает и дома и на работе. Часто приходится такие базы корректировать.
2. Stanislav Korablin (Tanis) 02.07.13 15:11
Добрый день!
Можете пояснить действие данной обработки?
Как происходит синхронизация? Как происходит замен в базе приемника?
И самое главное, на сколько этот метод безопасный для приемника, чтоб в нем ничего не затерлось и не сбилось.
3. 33lab (33lab) 02.07.13 15:23
(2) Tanis, Добрый день. Принцип действия очень простой - обработка синхронизирует движения документов (из базы источника в базу приемник) по регистрам (регистры накопления, регистры бухгалтерии, регистры сведений):

кусок кода из обработки:
			Если стрТипРегистра="РегистрНакопления" Тогда
				НаборЗаписейИсточник=БазаИсточник.РегистрыНакопления[стрВидРегистра].СоздатьНаборЗаписей();
				НаборЗаписейПриемник=РегистрыНакопления[стрВидРегистра].СоздатьНаборЗаписей();
			ИначеЕсли стрТипРегистра="РегистрСведений" Тогда
				НаборЗаписейИсточник=БазаИсточник.РегистрыСведений[стрВидРегистра].СоздатьНаборЗаписей();
				НаборЗаписейПриемник=РегистрыСведений[стрВидРегистра].СоздатьНаборЗаписей();
			ИначеЕсли стрТипРегистра="РегистрБухгалтерии" Тогда
				НаборЗаписейИсточник=БазаИсточник.РегистрыБухгалтерии[стрВидРегистра].СоздатьНаборЗаписей();
				НаборЗаписейПриемник=РегистрыБухгалтерии[стрВидРегистра].СоздатьНаборЗаписей();
			КонецЕсли;

...Показать Скрыть

если какой-то регистр синхронизировать не надо - просто закоментарьте его.



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


есть золотое правило - любые подобные действия всегда лучше проверить на тестовой базе.
4. Stanislav Korablin (Tanis) 02.07.13 16:40
Смотрю обработка производит обмен через mxl?
Если настроить определенный отбор по документам, то РБ именно по ним будет синхронизироваться?
Так как когда я делаю выгрузку xml с отбором, то выгружается почему-то весь РБ...

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

И что будет с документами, они не перепроводятся? Но видимо перезаписываются?
Это для того чтоб не слетело закрытие месяца.
5. Stanislav Korablin (Tanis) 02.07.13 17:21
Выбираю док операция бух, выдает ошибку.

{Форма.Форма.Форма(88)}: Значение не является значением объектного типа (Filter)
НаборЗаписейИсточник.Filter.Регистратор.Установить(ДокументИсточникСсылка);


В обработке закомментировал РС и РН, оставил только РБ.
6. Stanislav Korablin (Tanis) 02.07.13 17:44
Подскажите как быть?
Может не там закомментировал?

Почему-то док.объект не распознает.
7. Stanislav Korablin (Tanis) 02.07.13 17:51
некоторые объекты пишет "Ошибка чтения значения"
8. 33lab (33lab) 03.07.13 11:25
(7) Tanis, Обработка работает без ошибок - возможно что-то лишнее закоментарили...Можете написать в аську - помогу разобраться.
9. Stanislav Korablin (Tanis) 03.07.13 12:48
Спасибо! Уже вроде разобрался.
Условие чуть надо было изменить, сделал так

// Если стрТипРегистра="РегистрНакопления" Тогда
// НаборЗаписейИсточник=БазаИсточник.РегистрыНакопления[стрВидРегистра].СоздатьНаборЗаписей();
// НаборЗаписейПриемник=РегистрыНакопления[стрВидРегистра].СоздатьНаборЗаписей();
// ИначеЕсли стрТипРегистра="РегистрСведений" Тогда
// НаборЗаписейИсточник=БазаИсточник.РегистрыСведений[стрВидРегистра].СоздатьНаборЗаписей();
// НаборЗаписейПриемник=РегистрыСведений[стрВидРегистра].СоздатьНаборЗаписей();
Если стрТипРегистра="РегистрБухгалтерии" Тогда
НаборЗаписейИсточник=БазаИсточник.РегистрыБухгалтерии[стрВидРегистра].СоздатьНаборЗаписей();
НаборЗаписейПриемник=РегистрыБухгалтерии[стрВидРегистра].СоздатьНаборЗаписей();
КонецЕсли;
не работало.

Изменил на

Если НЕ стрТипРегистра="РегистрБухгалтерии" Тогда Продолжить;
Иначе
НаборЗаписейИсточник=БазаИсточник.РегистрыБухгалтерии[стрВидРегистра].СоздатьНаборЗаписей();
НаборЗаписейПриемник=РегистрыБухгалтерии[стрВидРегистра].СоздатьНаборЗаписей();
КонецЕсли;

Так вроде работает.

Так же работала если оставить все регистры. Но мне нужен был только РБ.
10. Stanislav Korablin (Tanis) 03.07.13 12:51
Теперь надо запрос написать на заполнение только нужных доков.

И еще вопрос, обратка ищет по ссылке или UUID или GUID, я так понял UUID переходит в COM объект. А дальше сверяет ссылки?

И проведение документов вроде не слетает? Доки как бы перезаписываются только?
11. 33lab (33lab) 03.07.13 13:02
(10) Tanis,

И проведение документов вроде не слетает? Доки как бы перезаписываются только?

Документы не перепроводятся (следовательно движения слететь не могут).
12. John Smith (koklobok) 03.07.13 13:40
То же самое может сделать ВыгрузкаЗагрузкаДанныхXML82.epf. Зачем изобретать велосипед?
13. Stanislav Korablin (Tanis) 03.07.13 14:42
(12) В данном случае xml мне не выгодна.
Мне нужно в РБ заполнить субконто, которое сохранилось в копии.
А xml почему-то выгружает весь РБ, не смотря на отбор.
14. Stanislav Korablin (Tanis) 03.07.13 14:43
(11) Понятно.

А на остальные подскажите поиск в РБ происходит по регистратор.ссылка? Или же нет?
15. Stanislav Korablin (Tanis) 04.07.13 21:00
Дописал форму подбора документов по условию, теперь вообще отлично все получается!

Спасибо!
16. Stanislav Korablin (Tanis) 04.07.13 21:02
Хотя, нет... выдал ошибку
{Форма.Форма.Форма(15)}: Значение не является значением объектного типа (TypeName)
стрТип=БазаИсточник.XMLТипЗнч(СтрокаКоллекции.Значение).TypeName;
17. Stanislav Korablin (Tanis) 04.07.13 21:03
18. Stanislav Korablin (Tanis) 05.07.13 09:53
Ситуация оказалась следующая. Ошибка выходит по счету 91.02, не знаю причина в счете или в том что у нас субконто в виде статей затрат изменено, в конфигурацию добавлен свой справочник.
Хотя в названии сказано, что идентичных баз, а не типовых. Но однако получается не типовые может не взять.
Возможно ошибка при использовании xml, т.к. останавливается именно на нем.
И еще такой вопрос. Синхронизацию проводить лучше в монопольном режиме, или можно с работающими пользователями? Если при работающих пользователях, то это не повлияет на данные в базе?
19. 33lab (33lab) 05.07.13 10:18
(18) Tanis,

Хотя в названии сказано, что идентичных баз, а не типовых. Но однако получается не типовые может не взять.


В описание все правильно написано - для идентичных...Почему появляется ошибка -надо смотреть в отладчике...Лучше все таки написать мне в аську - помогу разобраться.


Синхронизацию проводить лучше в монопольном режиме, или можно с работающими пользователями? Если при работающих пользователях, то это не повлияет на данные в базе?


Не имеет значения работают пользователи или нет (если конечно они не правят документ движения которого перегружаются)
20. Stanislav Korablin (Tanis) 05.07.13 10:48
(19) Спасибо. Тогда сегодня сверю оборотку, и буду грузить в рабочую.
В отладчике когда доходит до этой строчки, то не может распознать тип.
Номер аськи в профиле закрыт.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа