Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Горячая тема (более 10 ответов) Создание документа в другой БД (число прочтений - 5961 )
Sirtoo
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 17
Зарегистрирован: 29. Июля 2008
Re: Создание документа в другой БД
Ответ #15 - 06. Декабря 2010 :: 06:52
Печать  
[color=#009900]В этом запросе я обновляю один из реквизитов документа.[/color]

[code]Процедура ОбновитьСостояниеСуществующегоДокумента(КлючУникальности,Состояние)
     
     ТекстЗапроса ="
     |      exec sp_executesql N'UPDATE _Document3247
     |SET
     |_Fld3262RRef = @P2
     |FROM _Document3247 WITH(REPEATABLEREAD)
     |WHERE
     |_Document3247._IDRRef = @P1',
     |N'@P1 varbinary(16),
     |@P2 varbinary(16)',
     |"+КлючУникальности+",
     |"+Состояние+"
     |";
     
     Cmd.CommandText =ТекстЗапроса;
     
     НачатьТранзакцию();
     RS= Cmd.Execute();
     ЗафиксироватьТранзакцию();
     
КонецПроцедуры[/code]
« Последняя редакция: 06. Декабря 2010 :: 08:19 - Sirtoo »  
Наверх
 
IP записан
 
Sirtoo
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 17
Зарегистрирован: 29. Июля 2008
Re: Создание документа в другой БД
Ответ #16 - 06. Декабря 2010 :: 06:54
Печать  
[color=#009900]Ищу документ по номеру и дате, если нахожу, возвращаю его идентификатор в том виде, как он хранится в SQL[/color]

[code]Функция ПроверитьДокументНаУникальность(Дата,Номер)
     
     Перем GUID;
     
     ТекстЗапроса ="
     |exec sp_executesql N'SELECT
     |_Document3247_Q_000_T_001._IDRRef AS f_1
     |FROM
     |_Document3247 _Document3247_Q_000_T_001 WITH(NOLOCK)
     |WHERE
     |_Document3247_Q_000_T_001._Number = @P1 AND _Document3247_Q_000_T_001._Date_Time = @P2',
     |N'@P1 nvarchar(10),@P2 datetime',
     |N'"+Номер+"',
     |'"+Дата+"'
     |";
     
     Cmd.CommandText =ТекстЗапроса;
     
     RS= Cmd.Execute();
     
     Если Rs.EOF() = 0 Тогда
           COMSafeArray = Rs.Fields(0).Value;
           GUID = ПолучитьGUIDизCOMSafeArray(COMSafeArray);
           GUID = ПолучитьGUIDПоУникальномуИдентификатору(GUID);
     КонецЕсли;
     
     Возврат GUID;
     
КонецФункции[/code]
« Последняя редакция: 06. Декабря 2010 :: 08:57 - Sirtoo »  
Наверх
 
IP записан
 
Sirtoo
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 17
Зарегистрирован: 29. Июля 2008
Re: Создание документа в другой БД
Ответ #17 - 06. Декабря 2010 :: 06:58
Печать  
Код далеко не весь, его слишком много, процедуры не влезают, но общее преставление как действовать можно.

Работает на ура, проверяет существование документа, перезаписывает при необходимости, сожается новый элемент справочника контрагенты, если не найден.
  
Наверх
 
IP записан
 
Sirtoo
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 17
Зарегистрирован: 29. Июля 2008
Re: Создание документа в другой БД
Ответ #18 - 06. Декабря 2010 :: 07:02
Печать  
[color=#009900]ну, создание соединения стандартное:[/color]

[code]Процедура УстановитьСоединение()
     
     Сервер           = "...";
     База           = "...";
     Пользователь = "...";
     Пароль           = "...";
     
     ADO = Новый COMОбъект("ADODB.Connection");
     
     СтрокаСоединения = ""+
     "DRIVER=SQL Server;"+
     "SERVER="+СокрЛП(Сервер)+";"+
     "DATABASE="+СокрЛП(База)+";"+
     "UID="+СокрЛП(Пользователь)+";"+
     "Password="+СокрЛП(Пароль)+";"+
     "WSID="+СокрЛП(ИмяКомпьютера())+"_"+СокрЛП(ИмяПользователя())+";"+
     "APP=Microsoft Open Database Connectivity;"+
     "Description=For 1C;";  
     
     Состояние("Инициализация ADO компоненты");
     
     Попытка
           ADO.Open(СтрокаСоединения);
           cmd = Новый COMObject("ADODB.Command");
           cmd.ActiveConnection = ADO;
           cmd.CommandTimeout = 7000;
     Исключение  
           Сообщить(ОписаниеОшибки());
           Предупреждение("Невозможно установить Соединение!
           ");  
           ADO = 0;
           Возврат;
     КонецПопытки;
     
КонецПроцедуры[/code]      
« Последняя редакция: 06. Декабря 2010 :: 08:54 - Sirtoo »  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать