|
v7: Как восстановить периферийную базу | ☑ | ||
---|---|---|---|---|
0
sergapt
29.10.12
✎
08:21
|
Она сломалась, есть ее копия месячной давности и центральная база.
|
|||
1
lesstat
29.10.12
✎
08:23
|
ну создай новую периферию из центральной
|
|||
2
Скользящий
29.10.12
✎
08:25
|
Если миграция полная проще новую создать. Если нет, то все равно создать новую из сломанной перенести те документы которые не мигрируют
|
|||
3
ЧеловекДуши
29.10.12
✎
08:25
|
А как у вас настроены правила обмена?
|
|||
4
sergapt
29.10.12
✎
08:33
|
3) Правила настроены вручную, не все документы есть в периферийной, в центральной есть все.
|
|||
5
Скользящий
29.10.12
✎
08:41
|
Если в центральной все, значит новую создавай тогда.
|
|||
6
sergapt
29.10.12
✎
08:52
|
буду пытаться.
1. удалю в ЦБ в конф-ре ПБ, и создам с таким же префиксом заново 2. Выгружу. 3. Загружу в ПБ. Правильно? 4. Посмотрю что вышло, пото если что еще вас побеспокою |
|||
7
Mikeware
29.10.12
✎
08:54
|
Склонируй, и удали ненужное. быстрее будет
|
|||
8
cw014
29.10.12
✎
08:55
|
Дааа, помница мы с помощью таблиц УРБД, 1с++ кувалды и чьей-то матери сделали миграцию двухстороннюю 7.7->8.1
|
|||
9
Скользящий
29.10.12
✎
09:22
|
(6) С таким же нельзя. Но мне говорили как то, что правкой таблиц можно добиться того, что база будет считать себя невыгруженной и получить первичную выгрузку уже существующей базы заново... Но тебе рекомендую просто создать первичную базу с новым кодом.
|
|||
10
Mikeware
29.10.12
✎
09:29
|
(9) для генерации новой базы - как раз можно.
а в его случае - даже нужно. |
|||
11
Dolly_EV
30.10.12
✎
07:44
|
(0) Если предполагается с поломанной потом чего-то доносить в восстановленную из Центральной, то лучше не перевыгружать а в 1DBSET на нужной периферийке поставить "N" - выгрузится с тем же ИД
(8) cw014, можно по-подробнее? осталось чего-нить может? у меня примерно таже задача щас маячит на горизонте: Подружить самописную 7.7 и БП 8.2 на предмет постоянного корректного обмена туда-сюда |
|||
12
razlagator
30.10.12
✎
07:51
|
(9) делал так пару месяцев назад, настучался я в бубен тогда...
|
|||
13
Dolly_EV
30.10.12
✎
08:16
|
(0)
1. Копия ЦБ (это наша будущая ПБ) 2.1 Если от побитой ПБ остался целый 1SDBSET - копируем его в "Копию ЦБ" - всё - это новая ПБ 2.2 Если не остался - открываем любым редактором дбф 1SDBSET, удаляем все строки кроме ЦБ и нашей ПБ. В поле DBSTATUS в строке с ЦБ вместо "M" ставим "P", в строке с ПБ вместо "С" ставим "M" (все буквы - латинские) Про структуру файлов УРБД смотреть, например здесь: http://oksla.narod.ru/urib.htm 3. остается удалить из нее "лишние" доки, которые по правилам миграции не должны попадать в нее |
|||
14
Mikeware
30.10.12
✎
08:42
|
(11)
Примерно так: //****************************************************************************** Процедура ИнициализацияСоответствийОбъектов() Экспорт рс=СоздатьОбъект("ODBCRecordset"); текстУдаленияТаблицыСоответствий=" | |IF EXISTS(SELECT name FROM sysobjects WHERE name = 'СоответствияОбъектов' AND xtype='U') | |DROP TABLE [СоответствияОбъектов] |"; рс.ВыполнитьСкалярный(текстУдаленияТаблицыСоответствий); текстСозданияТаблицыСоответствий=" | |IF NOT EXISTS(SELECT name FROM sysobjects WHERE name = 'СоответствияОбъектов' AND xtype='U') | |CREATE TABLE [СоответствияОбъектов] ( | [ROW_ID] [int] IDENTITY (1, 1) NOT NULL , | [ТипОбъекта] [numeric](5, 0) NOT NULL , | [ТипОбъектаСтр] [char](35) COLLATE Cyrillic_General_CI_AS NOT NULL , | [ВидОбъектаСтр] [char] (45) COLLATE Cyrillic_General_CI_AS NOT NULL , | [ИмяТаблицы] [char] (10) COLLATE Cyrillic_General_CI_AS NOT NULL , | CONSTRAINT [СоответствияОбъектов_PK] PRIMARY KEY CLUSTERED | ( | [ROW_ID] | ) ON [PRIMARY] |) ON [PRIMARY] |"; рс.ВыполнитьСкалярный(текстСозданияТаблицыСоответствий); ТекстДобавленияОписания=" |INSERT INTO СоответствияОбъектов (СоответствияОбъектов.ТипОбъекта, СоответствияОбъектов.ТипОбъектаСтр,СоответствияОбъектов.ВидОбъектаСтр,СоответствияОбъектов.ИмяТаблицы) | VALUES ( :ТипОбъекта,:ТипОбъектаСтр, :ВидОбъектаСтр,' ') |"; Для сч=1 По Метаданные.Документ() Цикл ИдентСтр=Метаданные.Документ(сч).Идентификатор; Идент=глMDW.ИДДокумента(сч); рс.УстановитьТекстовыйПараметр("ТипОбъекта",Идент); рс.УстановитьТекстовыйПараметр("ТипОбъектаСтр","Документ"); рс.УстановитьТекстовыйПараметр("ВидОбъектаСтр", ИдентСтр); рс.ВыполнитьСкалярный(ТекстДобавленияОписания); КонецЦикла; Для сч=1 По Метаданные.Справочник() Цикл ИдентСтр=Метаданные.Справочник(сч).Идентификатор; Идент=глMDW.ИДСправочника(сч); рс.УстановитьТекстовыйПараметр("ТипОбъекта",Идент); рс.УстановитьТекстовыйПараметр("ТипОбъектаСтр","Справочник"); рс.УстановитьТекстовыйПараметр("ВидОбъектаСтр", ИдентСтр); рс.ВыполнитьСкалярный(ТекстДобавленияОписания); КонецЦикла; КонецПроцедуры //****************************************************************************** Функция ВернутьИзмененныеДокументы(ИдБазы="1C8",ТипОбъектаСтр="",ВидОбъектаСтр="",ИдОбмена="") Экспорт рс=СоздатьОбъект("ODBCRecordset"); ТекстЗапроса=" |select case when Соответствия.ТипОбъектаСтр='Документ' then 'O1' else 'B1' end + dbo.convert10to36(Соответствия.ТипОбъекта)+ Изменения.objid [Объект $Неопределенный] |from _1supdts Изменения (nolock) |inner join СоответствияОбъектов Соответствия (nolock) on Изменения.typeid= Соответствия.ТипОбъекта |where Изменения.dbsign=:ВыбИдБазы |"; Если ПустаяСтрока(ТипОбъектаСтр)=0 Тогда ТекстЗапроса=ТекстЗапроса+" |and (Соответствия.ТипОбъектаСтр=:ВыбТипОбъектаСтр)"; КонецЕсли; Если ПустаяСтрока(ВидОбъектаСтр)=0 Тогда ТекстЗапроса=ТекстЗапроса+" |and (Соответствия.ВидОбъектаСтр=:ВыбВидОбъектаСтр)"; КонецЕсли; Если ИдОбмена<>"" Тогда ТекстЗапроса=ТекстЗапроса+" |and ((left(Изменения.DwnLdId,6) <= left(:ИдОбмена,6)) and (Изменения.DwnLdId<>''))"; КонецЕсли; рс.УстановитьТекстовыйПараметр("ВыбТипОбъектаСтр",ТипОбъектаСтр); рс.УстановитьТекстовыйПараметр("ВыбВидОбъектаСтр",ВидОбъектаСтр); рс.УстановитьТекстовыйПараметр("ВыбИдБазы",ИдБазы); рс.УстановитьТекстовыйПараметр("ИдОбмена",ИдОбмена); ТЗОбъектов=рс.ВыполнитьИнструкцию(ТекстЗапроса); Возврат ТЗОбъектов; КонецФункции //****************************************************************************** Функция ВернутьНовыйИдОбмена() Экспорт НовыйИд=ЗапросСКЛ.ВыполнитьСкалярный("select ltrim(dbo.convert10to36(max(dbo.convert36to10(left (dwnldid,6)))+1)+'CB ') from _1sdwnlds where direct='O'"); Возврат НовыйИд; КонецФункции //****************************************************************************** Функция ПодготовиитьКВыгрузке(ИдБазы="1C8") Экспорт ТекстЗапроса=" |set nocount on |declare @NewId Char(9) |declare @DBSign Char(9) |Set @DBSign=:ИдБазы |set @NewId=(select ltrim(dbo.convert10to36long(max(dbo.convert36to10(left (dwnldid,6)))+1)+'CB ') from _1sdwnlds where direct='O') |INSERT INTO [Base].[dbo].[_1SDWNLDS]([DWNLDID], [DBSIGN], [DIRECT], [ACKNOWL]) |VALUES( @NewId, @DBSign, 'O', ' ') |UPDATE [Base].[dbo].[_1SUPDTS] |SET [DWNLDID]=@NewId |WHERE (DBSign=@DBSign) and (DWNLDID='') |--select * from _1supdts where dbsign='1C8' |Select @NewId |"; ЗапросСКЛ.УстановитьТекстовыйПараметр("ИдБазы", ИдБазы); НовыйИд=ЗапросСКЛ.ВыполнитьСкалярный(ТекстЗапроса); Возврат НовыйИд; КонецФункции //****************************************************************************** Функция ПодтвердитьОбмен(ИдБазы="1C8", ИдВыгрузки="") Экспорт ТекстЗапроса=" |set nocount on |declare @SelId Char(9) |declare @DBSign Char(9) |Set @DBSign=:ИдБазы |set @SelId=:ИдВыгрузки |go |UPDATE [Base].[dbo].[_1SDWNLDS]([DWNLDID], [DBSIGN], [DIRECT], [ACKNOWL]) |SET [ACKNOWL]='A' |WHERE [DWNLDID]=@SelId and [DBSIGN]=@DBSign |go |DELETE [Base].[dbo].[_1SUPDTS] |WHERE (DBSign=@DBSign) |and (left(DWNLDID,6) <= left(@SelId,6)) |"; ЗапросСКЛ.УстановитьТекстовыйПараметр("ИдБазы", ИдБазы); ЗапросСКЛ.УстановитьТекстовыйПараметр("ИдВыгрузки", ИдВыгрузки); ЗапросСКЛ.ВыполнитьСкалярный(ТекстЗапроса); Возврат ""; КонецФункции |
|||
15
Mikeware
30.10.12
✎
08:43
|
(13) а в 1SSystem код базы кто менять будет? Пушкин?
|
|||
16
Dolly_EV
30.10.12
✎
08:48
|
(15) дадада! оно какбэ само-собой разумеется)))
|
|||
17
Dolly_EV
30.10.12
✎
08:48
|
(14) спасибо!
|
|||
18
Dolly_EV
30.10.12
✎
08:54
|
(11) Mikeware, можно в личку тогда уж и остальное по теме (в каком-нить виде)? а то по вырванному из контекста пинок не достаточно силен для окончательного осмысления :-(
|
|||
19
Mikeware
30.10.12
✎
08:55
|
(16)разумеется, что Пушкин? :-)
|
|||
20
Mikeware
30.10.12
✎
08:55
|
(18) а что именно?
|
|||
21
Mikeware
30.10.12
✎
09:00
|
(18) коррректируешь выгрузку в восьмерку, вместо отбора "по датам" - делаешь выборку документов нужного вида через ВернутьИзмененныеДокументы().
после этого - ПодготовитьКВыгрузке() ну а при подтвекрждении обмена (если снеговик полностью принял обмен) - ПодтвердитьОбмен() с нужным идом. |
|||
22
Надсмотрщик
30.10.12
✎
09:03
|
(0) И что же там "сломалось"?
|
|||
23
cw014
30.10.12
✎
09:05
|
(11) ТЗ на почту, попробую поискать
|
|||
24
Dolly_EV
30.10.12
✎
09:07
|
(19) конечно он :-) (бесит, что нельзя здесь свои посты править :-()
(18) - последовательность применения (схема), - как обрабатывается выгрузка из 7.7 на стороне 8 (принцип , код на 8), - ...короче разжевать и положить :-) Из приведенного я понял, что 8-ка по отношению к 77 - "периферийка" (ИдБазы="1C8"), на сервере создается табличка "СоответствияОбъектов", с которой при каждой сессии обмена джойнится 1supdts... короче без более полноценного примера тямы не хватает :-( |
|||
25
Dolly_EV
30.10.12
✎
09:11
|
(23) кинул
|
|||
26
Mikeware
30.10.12
✎
09:11
|
(24) скорее, просто семерка - ведущая база. оперативный учет ведется в ней. все созданные/изменные документы регистрируются урбдшкой, и отбираются для выгрузки именно не по периоду, а по регистрации в 1сапдейтсе.
см(21) |
|||
27
Mikeware
30.10.12
✎
09:12
|
Короче, стучиь в аську, есличо®
|
|||
28
Dolly_EV
30.10.12
✎
09:14
|
(26) угу, это я понял... на 8 чего уходит в итоге? в каком виде? и как обрабатывается на входе 8-кой?... Ок, стукнусь!
|
|||
29
cw014
30.10.12
✎
09:15
|
(28) Где ТЗ то?
|
|||
30
cw014
30.10.12
✎
09:29
|
(28) Лови письмо
|
|||
31
Ёпрст
30.10.12
✎
09:30
|
(11) поставь мод.
|
|||
32
Ёпрст
30.10.12
✎
09:30
|
единственное, там реализован только односторонний обмен 7--->8
в обратную сторону написать недолго. |
|||
33
cw014
30.10.12
✎
09:40
|
(28) поймал?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |