Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: УРБД:Как перекинуть пару документов из центра в перефирийную базу.

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует