|
v7: УРБД:Как перекинуть пару документов из центра в перефирийную базу. | ☑ | ||
---|---|---|---|---|
0
deputat
15.10.18
✎
21:25
|
Подзабыл что-то.
На документе стоит миграция место создания и центр. Тут появилась необходимость пару документов созданных в центре перекинуть в перефирийную базу. И как-то простого варианта не вспомню. Может подскажите. |
|||
1
Kigo_Kigo
15.10.18
✎
21:29
|
перепровести его
|
|||
2
deputat
15.10.18
✎
21:39
|
Это не поможет.
|
|||
3
Aleksey
15.10.18
✎
21:41
|
(2) ну поменяй правила миграции. препроведи сделай обмен и верни всё взад
|
|||
4
deputat
15.10.18
✎
21:42
|
(3) дак блин море доков перекинется, а надо то пару штук.
|
|||
5
hhhh
15.10.18
✎
21:44
|
(2) поменяй реквизит
|
|||
6
егаис
15.10.18
✎
21:45
|
проще набить пару документов-то
|
|||
7
deputat
15.10.18
✎
21:47
|
(5) напомни какой. я думал префикс номера документа. Не то?
|
|||
8
Kigo_Kigo
15.10.18
✎
21:49
|
(0) Тогда так и пиши, сколь раз объянять, првильно заданный вопрос = содержит 90% ответа, а именно
"Тут появилась необходимость пару документов созданных в центре перекинуть в перефирийную базу. " ДРУГУЮ ПБ, или я не так понял? |
|||
9
Злопчинский
15.10.18
✎
21:54
|
Сделай в ПБ нужное количество документов-пустышек.
Они по обмену смигрируют в ЦБ. В ЦБ перекинь ТЧ из ранее созданных тобой в (0) документов в ТЧ документов-пустышек (это можно сделать практически штатно, смотря какие виды документов). Обменом измененные в ЦБ доки уйдут обратно в ПБ |
|||
10
deputat
15.10.18
✎
21:55
|
(9) доки созданы в центре. перекинуть их надо в одну переферийную.
|
|||
11
Злопчинский
15.10.18
✎
21:55
|
можно посмотреть внутрь базы и в ЦБ-документах модифицировать "внутренний" ИД, заменив в этих документах префикс ЦБ на префиксы ПБ (точно не уверен, но думаю должно прокатить)
|
|||
12
deputat
15.10.18
✎
21:57
|
(11) вот про это и хочу уточнить у тех кто знает
|
|||
13
Злопчинский
15.10.18
✎
22:24
|
ну открой любым вьвером если дбф и посмотри
|
|||
14
vcv
16.10.18
✎
05:51
|
(11) Прокатит, куда денется. Только менять дофига где этот код базы. Общий журнал, шапки документа, табличная часть документа, движения регистров, проводки, операции, периодика (если устанавливалась документов), отборы, длинные строки. Может чего еще забыл.
|
|||
15
АгентБезопасной Нацио
16.10.18
✎
07:52
|
просто добавить запись в 1supdts - в TypeID тип и ObjID идд этого документа, в DBSIGN - код ИБ, в которую нужно отправить.
всё! (ну, если дбф - переиндексироваться, конечно) |
|||
16
vcv
16.10.18
✎
11:42
|
(15) Разово да. Но если кто-то потом отредактирует документы в ЦБ, получат трудноулавливаемые расхождения между ЦБ и ПБ.
|
|||
17
АгентБезопасной Нацио
16.10.18
✎
12:05
|
(16) согласен. но в задаче было не "отправлять", а "отправить"
|
|||
18
el-gamberro
16.10.18
✎
12:29
|
(9) (11) Правильно. Только техника такая:
Сделать пустышки. Посмотреть их ид. У созданных центральных подменить ИД на ИД пустышек. Сделать обмен. Вуаля и все готово! |
|||
19
el-gamberro
16.10.18
✎
12:30
|
(18) Пустышки делать в переферии ес-но
|
|||
20
el-gamberro
16.10.18
✎
12:31
|
(14) А там поиск ссылок на объект тоже вроде есть?
|
|||
21
dk
16.10.18
✎
12:31
|
можно в дополнительно указать новый узел, и потом удалить лишнее и обратно миграцию вернуть
|
|||
22
АгентБезопасной Нацио
16.10.18
✎
12:38
|
(18) вотужхрен!
потеряются ссылки документв (графы пропадут из журналов). Жвижения документов по регистрам с неустановленным флагом "быстрая обработка" пропадут из отчетов. да и движения со старым ИДом не смигрируют. |
|||
23
big
16.10.18
✎
13:20
|
Раз пошла такая пьянка, троллим до победного конца )))
ИдВида - ИД вида документа; Ид - ИД документа; ТекБаза - код периферийки; СтрокаДляЖурнала = " |update _1sjourn set verstamp=( | select verstamp from _1sjourn | where iddocdef='"+ИдВида+"' and iddoc='"+Ид+"' | )+1 | where iddocdef='"+ИдВида+"' and iddoc='"+Ид+"' |"; Запрос = СоздатьОбъект("ODBCRecordSet"); СтрокаЗапроса = ""; СтрокаЗапроса = СтрокаЗапроса+" |declare @count int"+СтрокаДляЖурнала+" |set @count=( | select count(*) from _1supdts | where typeid='"+ИдВида+"' and objid='"+Ид+"' and dbsign='"+ТекБаза+"' | ) |if @Count=0 | begin | insert into _1supdts values ( '"+ТекБаза+"', '"+ИдВида+"', '"+Ид+"', ' ', ' ') | end |else | begin | update _1supdts set dwnldid= '' | where Typeid='"+ИдВида+"' and Objid='"+Ид+"' and DBSign='"+ТекБаза+"' | end |"; Запрос.ВыполнитьСкалярный(СтрокаЗапроса); |
|||
24
АгентБезопасной Нацио
16.10.18
✎
13:52
|
(23) //==============================================================
Процедура глОтсылкаОбъектаВДругуюБазу(ИдДокумента,ДефДокумента,ИдБазы) Экспорт ЗапросОтсылки=СоздатьОбъект("ODBCRecordSet"); ЗапросОтсылки.AddParam(1,14,9,0); ЗапросОтсылки.AddParam(1,4,4,0); ЗапросОтсылки.AddParam(1,14,3,0); ЗапросОтсылки.SetParam(1,ИдДокумента); ЗапросОтсылки.SetParam(2,ДефДокумента); ЗапросОтсылки.SetParam(3,ИдБазы); ЗапросОтсылки.ВыполнитьСкалярный(ТекстЗапросаОтсылки); КонецПроцедуры Процедура глОтсылкаСправочникаВДругуюБазу(ИдСПравочника,ДефСправочника,ИдБазы) Экспорт ЗапросОтсылки=СоздатьОбъект("ODBCRecordSet"); ЗапросОтсылки.AddParam(1,14,9,0); ЗапросОтсылки.AddParam(1,4,4,0); ЗапросОтсылки.AddParam(1,14,3,0); ЗапросОтсылки.SetParam(1,ИдСПравочника); ЗапросОтсылки.SetParam(2,ДефСправочника); ЗапросОтсылки.SetParam(3,ИдБазы); ЗапросОтсылки.ВыполнитьСкалярный(ТекстЗапросаОтсылкиСправочника); КонецПроцедуры ТекстЗапросаОтсылки=" |declare @SelectedId char(9) |declare @SelectedDef int |declare @SelectedSign char(3) |declare @count int |set @SelectedId=? |set @SelectedDef=? |set @SelectedSign=? |update _1sjourn set verstamp=(select verstamp from _1sjourn (nolock) where iddocdef=@SelectedDef and iddoc=@SelectedId)+1 |where iddocdef=@SelectedDef and iddoc=@SelectedId | set @count= (select count(*) from _1supdts (nolock) where typeid=@SelectedDef and objid=@SelectedId and dbsign=@SelectedSign) |if @Count=0 |begin insert into _1supdts values ( @SelectedSign, @SelectedDef, @SelectedId, ' ', ' ') |end |else |begin |update _1supdts set dwnldid= '' where Typeid=@SelectedDef and Objid=@SelectedId and DBSign=@SelectedSign |end"; ТекстЗапросаОтсылкиСправочника=" |declare @SelectedId char(9) |declare @SelectedDef int |declare @SelectedSign char(3) |declare @count int |set @SelectedId=? |set @SelectedDef=? |set @SelectedSign=? | set @count= (select count(*) from _1supdts (nolock) where typeid=@SelectedDef and objid=@SelectedId and dbsign=@SelectedSign) |if @Count=0 |begin insert into _1supdts values ( @SelectedSign, @SelectedDef, @SelectedId, ' ', ' ') |end |else |begin |update _1supdts set dwnldid= '' where Typeid=@SelectedDef and Objid=@SelectedId and DBSign=@SelectedSign |end"; |
|||
25
Злопчинский
16.10.18
✎
14:27
|
..скока букаваок...
|
|||
26
tgu82
16.10.18
✎
15:40
|
(25) Зато и пользы много
|
|||
27
АгентБезопасной Нацио
16.10.18
✎
16:17
|
(25) (26) "Вам буковок надо? Их есть у меня!"©
//****************************************************************************** Процедура ИнициализацияСоответствийОбъектов() Экспорт рс=СоздатьОбъект("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)) |"; ЗапросСКЛ.УстановитьТекстовыйПараметр("ИдБазы", ИдБазы); ЗапросСКЛ.УстановитьТекстовыйПараметр("ИдВыгрузки", ИдВыгрузки); ЗапросСКЛ.ВыполнитьСкалярный(ТекстЗапроса); Возврат ""; КонецФункции //****************************************************************************** |
|||
28
Eiffil123
16.10.18
✎
16:21
|
Когда уже запретят эти 7.7
|
|||
29
Cool_Profi
16.10.18
✎
16:29
|
(28) Даже не надейся...
|
|||
30
Злопчинский
16.10.18
✎
19:23
|
(28) скорее очередная версия снеговика сдохнет.. я думаю, что на 77 сейчас сидит больше чем на 8.0,8.1
|
|||
31
big
17.10.18
✎
04:48
|
(24)(27) Это уже не 22, это практически 28 см. ))
|
|||
32
АгентБезопасной Нацио
17.10.18
✎
07:19
|
(31) насчет сантИметров не скажу, а вот применение этого кода - это обмен с 1с только измененными объектами. чтоб не упустить изменение в ранешних периодах, но и не гонять лишние объемы.
|
|||
33
ADirks
17.10.18
✎
09:04
|
(27)
Слово "Вернуть" в названиях функций - нафига? Оно и так функция, понятно, что что-то вернёт. Я пишу тзИзмененныеДокументы() - и короче, и информативно конструкцию case when Соответствия.ТипОбъектаСтр='Документ' then 'O1' else 'B1' end + dbo.convert10to36(Соответствия.ТипОбъекта) я бы запихал в табличку СоответствияОбъектов, в колонку типа "ПрефиксИД", или как-то так на кой чёрт его каждый раз вычислять? некрасиво и неполезно |
|||
34
АгентБезопасной Нацио
17.10.18
✎
09:55
|
(33) насчет "нафига Вернуть" - не знаю, "так истерически слежалось"®.
может, со времен иститута с сей пошло - там же процедур нет, всё функции - вот и писал, чтоб понятно по имени. что касается кода - это было сделано лет 6-7 назад. некрасиво, так мне до вас с Олегом далеко. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |