Обработка поможет в ситуации, когда в рабочей информационной базе происходит нарушение движений документов, например, за прошедший период, и нужно восстановить эти движения из ранее сформированной резервной копии.
В результате выполнения обработки движения в документах базы-приемника становятся идентичными движениям документов базы-источника. При этом внешне документы могут отличаться (разные табличные части и т.д.).
Важным условием синхронизации является наличие всех элементов справочников, использованных в движениях документов. Если часть элементов была удалена, синхронизации по документу не произойдет.
Обработка открывается как внешний файл в режиме 1С:Предприятие. В поле необходимо прописать путь к файлу информационной базы-источника в соответствии с правилами запуска командной строки:
Каждый параметр представляет собой фрагмент вида =, где Имя параметра — имя параметра, а Значение — его значение. Фрагменты отделяются друг от друга символами «;». Если значение содержит пробелы, его необходимо заключить в двойные кавычки.
Для файлового варианта информационной базы задается параметр:
· | File — каталог информационной базы |
Для клиент-серверного варианта:
· | Srvr — имя сервера, |
· | Ref — имя информационной базы на сервере 1С:Предприятия, |
· | SQLSrvr — имя Microsoft SQL Server, |
· | SQLDB — имя базы данных Microsoft SQL Server, |
· | SQLUID — имя пользователя Microsoft SQL Server, |
· | SQLPwd — пароль пользователя Microsoft SQL Server, |
Для всех вариантов задаются параметры:
· | Usr — имя пользователя |
· | Pwd — пароль |
Далее подбираются документы для синхронизации движений из информационной базы-приемника. Сначала необходимо выбрать тип документа, а потом — сам документ из соответствующего журнала.
По кнопке «Выполнить синхронизацию» происходит замена движений по регистрам выбранных документов движениями аналогичных документов базы-источника.
Спасибо!
Полезный инструмент. Особенно для тех кто работает и дома и на работе. Часто приходится такие базы корректировать.
Добрый день!
Можете пояснить действие данной обработки?
Как происходит синхронизация? Как происходит замен в базе приемника?
И самое главное, на сколько этот метод безопасный для приемника, чтоб в нем ничего не затерлось и не сбилось.
(2) Tanis, Добрый день. Принцип действия очень простой — обработка синхронизирует движения документов (из базы источника в базу приемник) по регистрам (регистры накопления, регистры бухгалтерии, регистры сведений):
кусок кода из обработки:
Показать
если какой-то регистр синхронизировать не надо — просто закоментарьте его.
И самое главное, на сколько этот метод безопасный для приемника, чтоб в нем ничего не затерлось и не сбилось.
есть золотое правило — любые подобные действия всегда лучше проверить на тестовой базе.
Смотрю обработка производит обмен через mxl?
Если настроить определенный отбор по документам, то РБ именно по ним будет синхронизироваться?
Так как когда я делаю выгрузку xml с отбором, то выгружается почему-то весь РБ…
И как будет происходить запись? Целиком строчки перезаписывать, или дописывать потерянное субконто?
И что будет с документами, они не перепроводятся? Но видимо перезаписываются?
Это для того чтоб не слетело закрытие месяца.
Выбираю док операция бух, выдает ошибку.
{Форма.Форма.Форма(88)}: Значение не является значением объектного типа (Filter)
НаборЗаписейИсточник.Filter.Регистратор.Установить(ДокументИсточникСсылка);
В обработке закомментировал РС и РН, оставил только РБ.
Подскажите как быть?
Может не там закомментировал?
Почему-то док.объект не распознает.
некоторые объекты пишет «Ошибка чтения значения»
(7) Tanis, Обработка работает без ошибок — возможно что-то лишнее закоментарили…Можете написать в аську — помогу разобраться.
Спасибо! Уже вроде разобрался.
Условие чуть надо было изменить, сделал так
// Если стрТипРегистра=»РегистрНакопления» Тогда
// НаборЗаписейИсточник=БазаИсточник.РегистрыНакопления[стрВидРегистра].СоздатьНаборЗаписей();
// НаборЗаписейПриемник=РегистрыНакопления[стрВидРегистра].СоздатьНаборЗаписей();
// ИначеЕсли стрТипРегистра=»РегистрСведений» Тогда
// НаборЗаписейИсточник=БазаИсточник.РегистрыСведений[стрВидРегистра].СоздатьНаборЗаписей();
// НаборЗаписейПриемник=РегистрыСведений[стрВидРегистра].СоздатьНаборЗаписей();
Если стрТипРегистра=»РегистрБухгалтерии» Тогда
НаборЗаписейИсточник=БазаИсточник.РегистрыБухгалтерии[стрВидРегистра].СоздатьНаборЗаписей();
НаборЗаписейПриемник=РегистрыБухгалтерии[стрВидРегистра].СоздатьНаборЗаписей();
КонецЕсли;
не работало.
Изменил на
Если НЕ стрТипРегистра=»РегистрБухгалтерии» Тогда Продолжить;
Иначе
НаборЗаписейИсточник=БазаИсточник.РегистрыБухгалтерии[стрВидРегистра].СоздатьНаборЗаписей();
НаборЗаписейПриемник=РегистрыБухгалтерии[стрВидРегистра].СоздатьНаборЗаписей();
КонецЕсли;
Так вроде работает.
Так же работала если оставить все регистры. Но мне нужен был только РБ.
Теперь надо запрос написать на заполнение только нужных доков.
И еще вопрос, обратка ищет по ссылке или UUID или GUID, я так понял UUID переходит в COM объект. А дальше сверяет ссылки?
И проведение документов вроде не слетает? Доки как бы перезаписываются только?
(10) Tanis,
И проведение документов вроде не слетает? Доки как бы перезаписываются только?
Документы не перепроводятся (следовательно движения слететь не могут).
То же самое может сделать ВыгрузкаЗагрузкаДанныхXML82.epf. Зачем изобретать велосипед?
(12) В данном случае xml мне не выгодна.
Мне нужно в РБ заполнить субконто, которое сохранилось в копии.
А xml почему-то выгружает весь РБ, не смотря на отбор.
(11) Понятно.
А на остальные подскажите поиск в РБ происходит по регистратор.ссылка? Или же нет?
Дописал форму подбора документов по условию, теперь вообще отлично все получается!
Спасибо!
Хотя, нет… выдал ошибку
{Форма.Форма.Форма(15)}: Значение не является значением объектного типа (TypeName)
стрТип=БазаИсточник.XMLТипЗнч(СтрокаКоллекции.Значение).TypeName;
Странно.
Ситуация оказалась следующая. Ошибка выходит по счету 91.02, не знаю причина в счете или в том что у нас субконто в виде статей затрат изменено, в конфигурацию добавлен свой справочник.
Хотя в названии сказано, что идентичных баз, а не типовых. Но однако получается не типовые может не взять.
Возможно ошибка при использовании xml, т.к. останавливается именно на нем.
И еще такой вопрос. Синхронизацию проводить лучше в монопольном режиме, или можно с работающими пользователями? Если при работающих пользователях, то это не повлияет на данные в базе?
(18) Tanis,
Хотя в названии сказано, что идентичных баз, а не типовых. Но однако получается не типовые может не взять.
В описание все правильно написано — для идентичных…Почему появляется ошибка -надо смотреть в отладчике…Лучше все таки написать мне в аську — помогу разобраться.
Синхронизацию проводить лучше в монопольном режиме, или можно с работающими пользователями? Если при работающих пользователях, то это не повлияет на данные в базе?
Не имеет значения работают пользователи или нет (если конечно они не правят документ движения которого перегружаются)
(19) Спасибо. Тогда сегодня сверю оборотку, и буду грузить в рабочую.
В отладчике когда доходит до этой строчки, то не может распознать тип.
Номер аськи в профиле закрыт.
Нормуль, но для регистров накопления не переносит вид движения. Пришлось допилить.
(12)
Минус типовой обработки — необходимо было восстановить движения документа КорректировкаРегистраНакопления(как пропали движения и чьими корявыми руками рассказывать не буду). Но стандартная выгружала долго(около часа) просматривая все регистры где делает движения данный документ(почти все) и ссылки в полях регистра), обработкой из данной статьи + чуть допил 2 мин.