Не штатное обновление РИБ #509607


#0 by brato4karik
Подскажите как бы мне так обновиться что бы после обновления центра не делать выгрузку в почку базы. или сделать но что бы документы не перенеслись. До этого я обновлял так. Обновлял центр, делал сохранение конфы(*.cf) на почке применял самописную обработку ("опривязку базы") она выставляла код базы владельца в неопределенно и тога можно было накатить выгруженную конфу. В результате мы получали 2 идентичные базы. Все было 2 обновления подряд хорошо, до сегодняшнего:( щас при выгрузке сообщает что базы не равны и произведите выгрузку из центральной базы. (обновлялся с 1,6,25,6 до 1,6,25,9)
#1 by rs_trade
сбрось регистрацию объектов для обмена
#2 by mikecool
не понимаю - в чем проблемы? проведи нормально обмен с почкой, загрузи в корень ответ
#3 by brato4karik
ааа не понимаю до конца , как это сделать и где??, как настроить план обмена что бы не выгружались данные базы а только объекты конфигурации
#4 by Живой Ископаемый
2 читать в СП "УдалитьРегистрацию"
#5 by brato4karik
ну я вижу в конфигураторе в плене обмена(состав) там есть регистрация (либо да либо нет) вопрос в том если я выставлю все в "нет" в почку попадут изменненые объекты конфигурации а данные по этим объектам нет, правильно я понимаю?
#6 by Живой Ископаемый
боже, да нет, не то...
#7 by Живой Ископаемый
Синтаксис: УдалитьРегистрациюИзменений(<Узлы>, <Данные>) Параметры: Тип: ПланОбменаСсылка.<Имя плана обмена>; Массив. Одиночное значение типа ПланОбменаСсылка.<Имя плана обмена> или массив таких значений, показывающие для каких узлов удаляются записи регистрации изменений. Тип: Метаданные, Неопределено; УдалениеОбъекта; Число; <Данные>. Значением данного параметра может быть объект метаданных, объект, представляющий данные, хранимые в базе данных, такой как документ, элемент справочника, счет бухгалтерского учета, менеджер записи константы, набор записей регистра и т. п., ссылка на объект базы данных, а также Неопределено. Если указан объект метаданных, то записи регистрации изменений будут удалены для всех элементов данных, относящихся к указанному объекту метаданных. Объект метаданных должен входить в состав планов обмена всех узлов, указанных в первом параметре. Если указан УдалениеОбъекта, то удаление записи регистрации изменений выполняется для объекта базы данных, на который "указывает" ссылка, содержащаяся в объекте УдалениеОбъекта. Если указан объект представляющий данные, хранимые в базе данных, или ссылка, то записи регистрации изменений будут удалены только для указанных данных. Объект метаданных, соответствующий данным должен входить в состав всех планов обмена всех узлов, указанных в первом параметре. Если указано Неопределено или не указан, то в качестве первого параметра может быть указан только одиночный узел. И в этом случае записи регистрации изменений будут удалены для всех объектов, метаданные которых входят в состав плана обмена, к которому относится узел, указанный в качестве первого параметра. Если в качестве первого параметра указан одиночный узел, то в параметре может быть указан номер сообщения. В этом случае метод УдалитьРегистрациюИзменений удаляет из всех таблиц регистрации изменений все записи относящиеся к указанному узлу, у которых номер сообщения меньше или равен значению второго параметра. Значение по умолчанию: Неопределено Описание: Удаляет записи регистрации изменений одного или группы элементов данных для одного или нескольких узлов планов обмена. Доступность: Сервер, толстый клиент, внешнее соединение. Пример:
#8 by Живой Ископаемый
а метаданные - не трожь
#9 by rs_trade
к чему такие заморочки. Есть обработка стандартная в составе КД2 РегистрацияИзмененийДляОбмена. Ей и пользуйся
#10 by Живой Ископаемый
2 Строка кода - заморочки? ну может
#11 by brato4karik
отлично, сделаю я сейчас выгрузку из центра в почку, базы синхронизируются. применю я этот код(как во внешней обработке?, допустим да в ней), что произойдет?
#12 by Живой Ископаемый
У тебя удалится регистрация изменения конткретно этого объекта - в данном случае элемента спраивочника Валюты с кодом 810 - то есть даже если он изменился, он не уйдет в перефирию... Тебе же нужно сделать что - удалитть регистрацию всех данных кроме обновления конфы.
#13 by Живой Ископаемый
одна строчка кода - которая удалит регистрацию изменеий всех объектов - это ПланыОбмена.УдалитьРегистрациюИзменений(Узел); //тут одичноный узел, и без второго параметра... "Если в качестве первого параметра указан одиночный узел, то в параметре может быть указан номер сообщения. В этом случае метод УдалитьРегистрациюИзменений удаляет из всех таблиц регистрации изменений все записи относящиеся к указанному узлу, у которых номер сообщения меньше или равен значению второго параметра. " единственное что - удалится ли при этом регистрация изменения конфы - думаю нет.. но даже если удалится - еще раз ее как-то изменишь, чтобы изменения конфы зарегились
#14 by brato4karik
ну да, есть база А(она почка) в ней ведуться доки, выгружаються в центр(база В) там они могут переделываться или же соддаваться др, база А только выгружала база В только принимала. Я базу В обновил, система ясное дело теперь не может принять ниче от базы А пока она не станет одинаковой с базой В. Вот теперь вопрос как мне этот код правильно применить что бы сделать одну выгрузку в базу А что бы она ее прохавала и могла как и до этого отпралять выгрузки в В а та их читать.
#15 by Живой Ископаемый
короче, алгоритм должен быть примерно такой: а) Делаешь обмен - то есть выгружаешь доки из А в В. После этого пользователи в А не работают и документы не изменяют и новых не вносят - до конца алгоритма. б) Очищаешь регистрацию всех изменеи й в базе В для Узла А - строчка код . После этого в базе В до конца алгоритма юзеры не вносят изменения в) ставишь в настройкие обмена базы В с базой А галку "выгружать" г) производишь обмен в базе В - то есть загружаешь доки полученные пунктом а) и ВЫГРУЖАЕШЬ в базу Б квитанцию о том, что все пришло! д) В базе Б загружаешь эту квитанцию ж) Обновляешь центр - базу В з) Делаешь обмен в базе В - уходят изменения конфы в базу А, никакие данные не уходят бикоз пункт в) и) Загружаешь изменения конфы в базу А к) Думаешь как тебе вообще изменить работу чтобы не было такого гемороя при каждом обновлении Возможно где-то что-то можно скратить На том шаге что ты есть сейчас - то есть с уже обновленной базой, тебе нужно в режиме предприятия в базе В удалить регистрацию изменений и поставить в настройке галку "выгружать" - чтобы изменения конфы ушли в "почку"
#16 by Живой Ископаемый
Можно конечно вообще все сделать по-другому... Периферию отвязать от РБД, обновить конфу в ней вручную, потом обартно вернуть узел в подчиеннное состояние -  в РБД
#17 by brato4karik
я так и сделал в самом начале отвязвл базу, накатил на обе базы обновления, привязал базу, выгрузил из А в В, а "В" сказала что не могу принять, не зарегестрированы изменения. вот и все дела:(, хотя до этого такая схема проходила
#18 by Живой Ископаемый
а... тогда нужно было удалить регистрацию изменений конфы... может быть той же самой строчокой кода - тут не знаю наверняка, нужно пробовать
#19 by Живой Ископаемый
Почему-то не нахожу нигде инфы - удаляет ли строчка из также и измение конфы... По идее должна, но нужно пробовать
#20 by brato4karik
тогда я так понимаю надо будет на каждой базе выполнить удаление регистраций изменений где "B02" код базы в плане обмена, предварительно отвязв ее а потом привязать обратно к центру. и на центре Узел = ПланыОбмена.Полный.НайтиПоКоду("B01"); ПланыОбмена.УдалитьРегистрациюИзменений(Узел);
#21 by Живой Ископаемый
в базе регистрируются изменения не для этого узла, а для центра(в случае перфирии)/всех остальных(случае центра)... Поэтому во всех переифриях : а в центре:
#22 by Живой Ископаемый
кстати, раз у тебя перфири  не получали подтверждения от центра что изменения окументов загружены - у тебя файлы обменов должны были постоянно расти и никогда не уменьшаться.... Как ты жил с этим?
#23 by brato4karik
да я понимаю пока не достигли катастрофических размеров, но чувствую что надо будет с этим бороться, если повесить этот код в регламентрное задание ну скажем раз в неделю, то уйдем от проблеммы?
#24 by Живой Ископаемый
2 какой проблемы - эскалации размеров файлов обмена? просто купи эту книгу: и почитай ГЛАВА 15. СОЗДАНИЕ РАСПРЕДЕЛЕННЫХ ИНФОРМАЦИОННЫХ СИСТЕМ Планы обмена Универсальный механизм обмена данными Распределенные информационные базы Использование транзакций при организации обмена Методика включения в сообщение обмена дополнительной информации <code> Организация одностороннего обмена </code> Примеры реализации автоматического обмена данными
#25 by brato4karik
да с ростом файлов?
#26 by brato4karik
Вот щас ругается так Ошибка при чтении изменений при обмене РИБ:  Ошибка при вызове метода контекста (ПрочитатьИзменения): Данные принимаются от узла, для которого зарегистрированы изменения конфигурации.
#27 by Живой Ископаемый
да, удалять регистрацию... Но лучше не регламентным заданием - а в какой-то момент при обмене.. Или например сам файл загружать но данные из него - нет.. В общем все есть в
#28 by Живой Ископаемый
2 это после чего - как удалил регистрацию изменений?
#29 by brato4karik
но на почку я применил обработку и нифига, сами базы идентичные сравнивал сравнение конфигураций.
#30 by Живой Ископаемый
блин, дядька, ты вообще не понимаешь РИБ... это не упрек, это предостережение... сейчас наделаешь чего-то и кто потом разгребать? Удалить регистрацию нужно в центре - потому что именно в центре ты обновился... И для узла перефирии вся конфа помечена как изменная. - ну как это можно до сих пор не понять? о чем мы до сих пор тут говорили?
#31 by brato4karik
да после удаления
#32 by Живой Ископаемый
конфы могут быть хоть трижды одинаковые - но в таблицах РИБ есть запись - что конфа изменена для этого узла.
#33 by brato4karik
да я понимаю это, я удалил регистрацию получаеться сейчас на обоих базах, не должно щас быть что для них такая ситуация что ни в какой базе нет изменений и все хорошо
#34 by Живой Ископаемый
хм.. выходит не удаляет регистрацию изменеия конфы... и тогда твой путь - длиный -
#35 by brato4karik
вот вот, не удаляет я конечно не проффи но сделать это нужно оч:(( сорри что мозг рушу
#36 by brato4karik
могу ли я щас очистить регистрации на обоих базах и выполнить полный обмен?? тогда утвердяться изменения конфы а доки не перенесуться?? правильно я понял??
#37 by Живой Ископаемый
да, суть именно в этом...
#38 by brato4karik
ок, перекрестившись начинаю,
#39 by levlvov
зря крестился, это лишнее...
#40 by Живой Ископаемый
а ты убедился что изменения (документов) действительно удалились?  В типовых вроде можно посмотреть какими-то встроенными средствами :)
#41 by brato4karik
неее как раз хотел это спросить, мол как посмотреть реально ли удалились изменения
#42 by brato4karik
копирую базы навсяк крайний, вот еще вопрос до кучи файлы логов чегото разрослись, можно их бахнуть?
#43 by Живой Ископаемый
Опять же - СП... смотришь чтобы выборка изменений у тебя была пустой На infostarte, котрый нынче на обеде обработок которые показывают это - вагон Синтаксис: ВыбратьИзменения(<Узел>, <НомерСообщения>, <ФильтрВыборки>) Параметры: Тип: ПланОбменаСсылка. Узел, для передачи в который отбираются изменения. Тип: Число. Номер сообщения обмена данными, в который будут помещены выбранные изменения. Тип: Неопределено; Объекты метаданных; СсылкаНаОбъект, НаборЗаписей, Массив. Неопределено - фильтр пуст, выбираются все изменения по узлу; Объекты метаданных - выбираются изменения в основной таблице, связанной с данным объектом метаданных; СсылкаНаОбъект - фактически, может быть выбрана только одна запись об изменении данного объекта, либо ни одной, если объект не менялся; НаборЗаписей - набор записей регистра, может быть не выбран, для фильтрации изменений используется лишь отбор набора записей; Массив - все элементы массива имеют один из перечисленных выше типов, кроме Неопределено. Условия фильтрации соединяются по ИЛИ. Значение по умолчанию: Неопределено Возвращаемое значение: Тип: ВыборкаДанных. Описание: Формирует выборку измененные данные для передачи их в тот или иной узел плана обмена. При этом в процессе выборки изменений в записи регистрации изменений проставляется номер сообщения обмена данными, в котором должны передаваться изменения. Номер сообщения в записи регистрации проставляется для того, чтобы при подтверждении приема сообщения, в котором передавались изменения соответствующие записи регистрации изменений были удалены и в дальнейшем изменения больше не передавались. Доступность: Сервер, толстый клиент, внешнее соединение. Пример:
#44 by Живой Ископаемый
каких логов?
#45 by brato4karik
просто логово базы она файловая
#46 by Живой Ископаемый
ну... даже не знаю что сказать.. нужны - оставляй, не нужны - удаляй.
#47 by brato4karik
уууххх ты а как мне его терь понять, куча всего в XML как его читать то:):), текста правда на страничку всего я думаю что это заголовки разделов правда, но все таки хочеться знать точно куда глядеть
#48 by brato4karik
нашел вот такие строчки <КоличествоЭлементовВТранзакцииНаВыгрузкуДанных>0</КоличествоЭлементовВТранзакцииНаВыгрузкуДанных>            <КоличествоЭлементовВТранзакцииНаЗагрузкуДанных>0</КоличествоЭлементовВТранзакцииНаЗагрузкуДанных>
#49 by Живой Ископаемый
чего-чего?!
#50 by Живой Ископаемый
ты что - выполнил код из ? а зачем?
#51 by brato4karik
??
#52 by Живой Ископаемый
вернее сделай вот так: Выб = ПланыОбмена.ВыбратьИзменения(ЗаписьСообщения.Получатель, и в отладчике - если туда заходит - посмотри... После того как ты удалил изменения, выборка должна быть пустой - зачем тебе еще ХМЛ записывать?
#53 by brato4karik
ну просто в файлике удобней а в отладчике щас не хочется, база удаленная коннект медленный
#54 by Живой Ископаемый
ты что - опять проверяешь периферию? или у тебя центр удаленный?
#55 by brato4karik
у меня оба удаленные:)
#56 by brato4karik
один удаленней другого
#57 by Живой Ископаемый
а... ну как - выборка пустая?
#58 by brato4karik
ну да тоже между тегов вроде нули стоят, ну уже познядняк, обмен пошел:), мин через 15 увидим результат:)
#59 by brato4karik
пока вроде все нормально, круто сегодня кучу знаний поимел новых спасибо большое
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С