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


I Love YaBB 2!

Сообщений: 17
Зарегистрирован: 29. Июля 2008
Создание документа в другой БД
30. Ноября 2010 :: 09:50
Печать  
Всем привет, может кто поделится примером:

Платформа 8x , задача - создать в другой базе документ, заполнить его и записать, все через ADO.

Заранее спасибо всем откликнувшимся! )
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Создание документа в другой БД
Ответ #1 - 30. Ноября 2010 :: 10:05
Печать  
Sirtoo писал(а) 30. Ноября 2010 :: 09:50:
Всем привет, может кто поделится примером:

Платформа 8x , задача - создать в другой базе документ, заполнить его и записать, все через ADO.

Заранее спасибо всем откликнувшимся! )


Запаришься. Это возможно, но слишком много действий придется делать. Проще сделать через OLE.

Кстати, этот раздел форума посвящен семерке, а для восьмерки есть отдельный...
  
Наверх
 
IP записан
 
Sirtoo
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 17
Зарегистрирован: 29. Июля 2008
Re: Создание документа в другой БД
Ответ #2 - 30. Ноября 2010 :: 10:41
Печать  
Ок, спс пойду там поспрашаю. Все таки хочется попробовать.
  
Наверх
 
IP записан
 
Sirtoo
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 17
Зарегистрирован: 29. Июля 2008
Re: Создание документа в другой БД
Ответ #3 - 30. Ноября 2010 :: 10:47
Печать  
Хотя если есть пример на семерке, мне бы тоже пригодился, просто нужен "скелет", принцип то будет тот же самый.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Создание документа в другой БД
Ответ #4 - 30. Ноября 2010 :: 10:55
Печать  
а чем com не устраивает ?

Напрямую очень плохо
1. Сложно
2.По лицензии 8-ки нельзя
3.Надо ставить блокировки такие же в каких работает восьмерка
(если этого не сделаешь можешь получить хорошие грабли)
т.е. должен будешь полностью разобраться с их блокировками.


  
Наверх
 
IP записан
 
Sirtoo
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 17
Зарегистрирован: 29. Июля 2008
Re: Создание документа в другой БД
Ответ #5 - 30. Ноября 2010 :: 10:59
Печать  
COM таки тратит ощутимое время на соединение, а хотелось бы он- лайн перебрасывать документы после их создания и не держать постоянно открытое соединение.

Естетсвенно если не выйдет с ADO, придется  писать OLE, но хочу попытаться.

С блокировками да, видел примеры, правда опять же на 7.7
  
Наверх
 
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Создание документа в другой БД
Ответ #6 - 30. Ноября 2010 :: 11:01
Печать  
Sirtoo писал(а) 30. Ноября 2010 :: 09:50:
Всем привет, может кто поделится примером:

Платформа 8x , задача - создать в другой базе документ, заполнить его и записать, все через ADO.

Заранее спасибо всем откликнувшимся! )


Напиши код программного создания документа. выставь точки остановки. лови SQL код Профайлером. Анализируй.

Однако я полностью согласен с Z1, и к тому же пока не встречал на просторах сети ни одного примера как это сделать.


  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Создание документа в другой БД
Ответ #7 - 30. Ноября 2010 :: 11:02
Печать  
Sirtoo писал(а) 30. Ноября 2010 :: 10:59:
COM таки тратит ощутимое время на соединение, а хотелось бы он- лайн перебрасывать документы после их создания и не держать постоянно открытое соединение.

Естетсвенно если не выйдет с ADO, придется  писать OLE, но хочу попытаться.

С блокировками да, видел примеры, правда опять же на 7.7


так ты открой соеденение  (OLE) и не закрывай
с ado же все тоже самое ( даже круче ado иногда может терять соеденение) открыл - работаешь - когда не надо закрыл.
  
Наверх
 
IP записан
 
Sirtoo
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 17
Зарегистрирован: 29. Июля 2008
Re: Создание документа в другой БД
Ответ #8 - 30. Ноября 2010 :: 11:04
Печать  
lustin писал(а) 30. Ноября 2010 :: 11:01:

Напиши код программного создания документа. выставь точки остановки. лови SQL код Профайлером. Анализируй.

Однако я полностью согласен с Z1, и к тому же пока не встречал на просторах сети ни одного примера как это сделать.

А это идея, спасибо ...
  
Наверх
 
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Создание документа в другой БД
Ответ #9 - 30. Ноября 2010 :: 11:05
Печать  
Sirtoo писал(а) 30. Ноября 2010 :: 10:59:
COM таки тратит ощутимое время на соединение, а хотелось бы он- лайн перебрасывать документы после их создания и не держать постоянно открытое соединение.

Естетсвенно если не выйдет с ADO, придется  писать OLE, но хочу попытаться.

С блокировками да, видел примеры, правда опять же на 7.7


Посмотри в сторону очереди сообщений, начать можно со статьи про использование MSMQ на ИТСнике.

ЗЫ Если конечно не хочешь сделать именно онлайн обмен (то есть в момент записи в одну базу получить документ в другой базе)
  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Sirtoo
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 17
Зарегистрирован: 29. Июля 2008
Re: Создание документа в другой БД
Ответ #10 - 30. Ноября 2010 :: 11:09
Печать  
lustin писал(а) 30. Ноября 2010 :: 11:05:
ЗЫ Если конечно не хочешь сделать именно онлайн обмен (то есть в момент записи в одну базу получить документ в другой базе)

первоначальная идея именно такая  Улыбка
  
Наверх
 
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Создание документа в другой БД
Ответ #11 - 30. Ноября 2010 :: 11:46
Печать  
Sirtoo писал(а) 30. Ноября 2010 :: 11:09:
lustin писал(а) 30. Ноября 2010 :: 11:05:
ЗЫ Если конечно не хочешь сделать именно онлайн обмен (то есть в момент записи в одну базу получить документ в другой базе)

первоначальная идея именно такая  Улыбка


было такое исследование Глобальные транзакции в сервис-ориентированной архитектуре и... 1С
  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Sirtoo
Junior Member
**
Отсутствует


I Love YaBB 2!

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

[color=#009900]Саме сложное было понять, как из GUID формата 1С получить идентификатор в том виде, как он хранится в SQL.
(например 0xAA5900304866028611DFFBC2534E1E07) [/color]

[code]Перем ADO,cmd,LastGUID;


Процедура ВыполнитьПереносДокумента(Ссылка)
     
     УстановитьСоединение();
           
     Дата        = Формат(Ссылка.Дата,"ДЛФ=DT");
     Номер       = Ссылка.Номер;
     Состояние   = ПолучитьИдентификаторЭлементаПеречисления(Ссылка.Состояние);
     
     КлючУникальности = ПроверитьДокументНаУникальность(Дата,Номер);
     Если ЗначениеЗаполнено(КлючУникальности) Тогда
           ОбновитьСостояниеСуществующегоДокумента(КлючУникальности,Состояние);
           Возврат ;
     КонецЕсли;      

     Организация = ПолучитьИдентификаторЭлементаСправочника(Ссылка.Организация);
     Контрагент  = ПолучитьИдентификаторЭлементаСправочника(Ссылка.Контрагент);
       Комментарий = СокрЛП(Ссылка.Комментарий);
     Перевозчик      = ПолучитьИдентификаторЭлементаСправочника(Ссылка.Перевозчик);
           
     ВариантПолучения  = ПолучитьИдентификаторЭлементаПеречисления(Ссылка.ВариантПолучения);
     
     Бензовоз          = ПолучитьИдентификаторЭлементаСправочника(Ссылка.Бензовоз);
     Водитель          = ПолучитьИдентификаторЭлементаСправочника(Ссылка.Водитель);
     Нефтебаза         = ПолучитьИдентификаторЭлементаСправочника(Ссылка.Нефтебаза);
     
     НомерДоверенности = Ссылка.НомерДоверенности;
       ДатаДействия      = Формат(Ссылка.ДатаДействия,"ДЛФ=DT");
     
     КлючУникальности = Новый УникальныйИдентификатор;
     КлючУникальности = ПолучитьGUIDПоУникальномуИдентификатору(КлючУникальности);
     

     // создаем сам документ

     ТекстЗапроса ="
     |exec sp_executesql  N'
     |INSERT INTO _Document3247 WITH(REPEATABLEREAD) 62RRef,_Fld3266,_Fld3272)
     @P20)',
     |N'@P1 varbinary(16),
     |@P2 varbinary(1),
     |@P3 datetime,
     |@P4 datetime,
     |@P5 nvarchar(10),
     |@P6 varbinary(1),
     |@P7 varbinary(16),
     |@P8 varbinary(16),
     |@P10 ntext,
     |@P11 varbinary(16),
     |@P12 varbinary(16),
     |@P13 varbinary(16),
     |@P14 varbinary(16),
     |@P15 numeric(16,3),
     |@P16 varbinary(16),
     |@P18 datetime,
     |@P20 ntext',
     |"+КлючУникальности+",
     |0x00,
     |'"+Дата+"',
     |'"+Дата+"',
     |N'"+Номер+"',
     |0x00,
     |"+Организация+",
     |"+Контрагент+",
     |N'"+Комментарий+"',
     |"+Перевозчик+",
     |"+Водитель+",
     |"+Бензовоз+",
     |"+ВариантПолучения+",
     |"+Ссылка.СуммаДокумента+",
     |"+Состояние+",
     |'"+ДатаДействия+"',
     |N'"+НомерДоверенности+"'
     |";
           
     Cmd.CommandText =ТекстЗапроса;

     Состояние("Выполнение запроса");
     
     НачатьТранзакцию();
     RS= Cmd.Execute();
     ЗафиксироватьТранзакцию();
     

     // пишем табличную часть к нему

     Если Ссылка.Товары.Количество() = 0 Тогда
           Возврат;
     КонецЕсли;
     
     ПередаваемаяСтрока = Ссылка.Товары[0];
     Номенклатура       = ПолучитьИдентификаторЭлементаСправочника(ПередаваемаяСтрока.Номенклатура);
     Количество         = 0.0");
     Нефтебаза          = ПолучитьИдентификаторЭлементаСправочника(ПередаваемаяСтрока.Нефтебаза);
     Секция             = СокрЛП(ПередаваемаяСтрока.Секция);
     Калибровка         = 0.0");
     
     АЗС1               = ПолучитьИдентификаторЭлементаСправочника(ПередаваемаяСтрока.АЗС1);
     АЗС2               = ПолучитьИдентификаторЭлементаСправочника(ПередаваемаяСтрока.АЗС2);
     
     ЕдиницаИзм         = ),Номенклатура);
     
     ТекстЗапроса ="
     |exec sp_executesql N'INSERT INTO _Document3247_VT3273 WITH(REPEATABLEREAD)
     |VALUES(@P1,@P2,@P3,@P4,@P5,@P6,@P7,@P8,@P9,@P10,@P11)',
     |N'@P1 varbinary(16),
     |@P2 varbinary(4),
     |@P3 numeric(6,1),
     |@P4 varbinary(16),
     |@P5 numeric(16,4),
     |@P6 varbinary(16),
     |@P7 varbinary(16),
     |@P8 ntext,
     |@P9 numeric(11,1),
     |@P10 varbinary(16),
     |@P11 varbinary(16)',
     |"+КлючУникальности+",
     |0x00000001,
     |1.0,
     |"+Номенклатура+",
     |"+Количество+",
     |"+ЕдиницаИзм+",
     |"+Нефтебаза+",
     |N'"+Секция+"',
     |"+Калибровка +",
     |"+АЗС1+",
     |"+АЗС2+"
     |";
                 
     Cmd.CommandText =ТекстЗапроса;
           
     НачатьТранзакцию();
     RS= Cmd.Execute();
     ЗафиксироватьТранзакцию();
           
     Состояние("Запись выполнена успешно");
     Попытка    
           ADO.Close();
     Исключение
           Сообщить(ОписаниеОшибки());
     КонецПопытки;
     
КонецПроцедуры[/code]
« Последняя редакция: 06. Декабря 2010 :: 09:03 - Sirtoo »  
Наверх
 
IP записан
 
Sirtoo
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 17
Зарегистрирован: 29. Июля 2008
Re: Создание документа в другой БД
Ответ #13 - 06. Декабря 2010 :: 06:49
Печать  
Код
Выбрать все
Функция ПолучитьИдентификаторЭлементаСправочника(СсылкаНаЭлементСправочника)

	GUID = "0x00000000000000000000000000000000";

	ТипСправочника = ТипЗнч(СсылкаНаЭлементСправочника);

	Попытка
		Если ТипСправочника = Тип("СправочникСсылка.Организации") Тогда
			SQLНаименованиеТаблицы = "_Reference25";
		ИначеЕсли ТипСправочника = Тип("СправочникСсылка.Контрагенты") Тогда
			SQLНаименованиеТаблицы = "_Reference21";
		ИначеЕсли ТипСправочника = Тип("СправочникСсылка.ФизическиеЛица") Тогда
			SQLНаименованиеТаблицы = "_Reference92";
		ИначеЕсли ТипСправочника = Тип("СправочникСсылка.ПТК_МоделиТС") Тогда
			SQLНаименованиеТаблицы = "_Reference26";
		ИначеЕсли ТипСправочника = Тип("СправочникСсылка.Склады") Тогда
			SQLНаименованиеТаблицы = "_Reference32";
		ИначеЕсли ТипСправочника = Тип("СправочникСсылка.Номенклатура") Тогда
			SQLНаименованиеТаблицы = "_Reference22";
		ИначеЕсли ТипСправочника = Тип("СправочникСсылка.ПТК_ПунктыНазначения") Тогда
			SQLНаименованиеТаблицы = "_Reference68";
		КонецЕсли;

		// этих попробуем сначала по ИНН найтить
		Если ТипСправочника = Тип("СправочникСсылка.Организации") ИЛИ ТипСправочника = Тип("СправочникСсылка.Контрагенты")
			И  ЗначениеЗаполнено(СсылкаНаЭлементСправочника.ИНН) Тогда
			ИНН = СсылкаНаЭлементСправочника.ИНН;

			Если ТипСправочника = Тип("СправочникСсылка.Организации") Тогда
				НаименованиеПоля = "_Fld372";
			Иначе
				НаименованиеПоля = "_Fld325";
			КонецЕсли;

			ТекстЗапроса ="
			|exec sp_executesql N'SELECT
			|Table_Q_000_T_001._IDRRef AS f_1
			|FROM
			|Таблица Table_Q_000_T_001 WITH(NOLOCK)
			|WHERE
			|Table_Q_000_T_001."+НаименованиеПоля+" = @P1',N'@P1 nvarchar(12)',N'"+ИНН+"'
			|";

			ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"Таблица",SQLНаименованиеТаблицы);

			Cmd.CommandText =ТекстЗапроса;
			RS= Cmd.Execute();

			Если Rs.EOF() = 0 Тогда
				COMSafeArray = Rs.Fields(0).Value;
				GUID = ПолучитьGUIDизCOMSafeArray(COMSafeArray);
				GUID = ПолучитьGUIDПоУникальномуИдентификатору(GUID);
				Возврат GUID;
			КонецЕсли;

		КонецЕсли;

  	     // во всех остальные случаях просто по наименованию
		Наименование = СсылкаНаЭлементСправочника.Наименование;

		ТекстЗапроса ="
		|exec sp_executesql N'SELECT
		|Table_Q_000_T_001._IDRRef AS f_1
		|FROM
		|Таблица Table_Q_000_T_001 WITH(NOLOCK)
		|WHERE
		|Table_Q_000_T_001._Description = @P1',N'@P1 nvarchar(100)',N'"+Наименование+"'  
		|";

		ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"Таблица",SQLНаименованиеТаблицы);

		Cmd.CommandText =ТекстЗапроса;
		RS= Cmd.Execute();

		Если Rs.EOF() = 0 Тогда
			COMSafeArray = Rs.Fields(0).Value;
			GUID = ПолучитьGUIDизCOMSafeArray(COMSafeArray);
			GUID = ПолучитьGUIDПоУникальномуИдентификатору(GUID);
		КонецЕсли;

		Если GUID = "0x00000000000000000000000000000000" Тогда
			// не нашли, надо создать нового
			GUID = СоздатьНовыйэлементСправочника(СсылкаНаЭлементСправочника)
		КонецЕсли;

	Исключение
		Сообщить(ОписаниеОшибки());
	КонецПопытки;

	LastGUID = GUID;

	Возврат GUID;

КонецФункции
 

« Последняя редакция: 06. Декабря 2010 :: 08:21 - Sirtoo »  
Наверх
 
IP записан
 
Sirtoo
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 17
Зарегистрирован: 29. Июля 2008
Re: Создание документа в другой БД
Ответ #14 - 06. Декабря 2010 :: 06:49
Печать  
[code]Функция ПолучитьGUIDПоУникальномуИдентификатору(Знач UUID)
     ч1 = Сред(UUID,20,4);
     ч2 = Сред(UUID,25,12);
     ч3 = Сред(UUID,15,4);
     ч4 = Сред(UUID,10,4);
     ч5 = Сред(UUID,1,8);
     Возврат "0x" + ч1 + ч2 + ч3 + ч4 + ч5;
КонецФункции

Функция Из_10_В_Любую(Знач Значение=0,Нотация=36)
     Если Нотация<=0 Тогда Возврат("") КонецЕсли;
     Значение=Число(Значение);
     Если Значение<=0 Тогда Возврат("00") КонецЕсли;
     Значение=Цел(Значение);
     Результат="";
     Пока Значение>0 Цикл
           льтат;
           Значение=Цел(Значение/Нотация);
     КонецЦикла;
     Результат=?(СтрДлина(Результат)=1,"0"+Результат,Результат);
     Возврат Результат;
КонецФункции

Функция ПолучитьGUIDизCOMSafeArray(COMSafeArray)
     МассивGuid=COMSafeArray.Выгрузить();
     GUIDСсылки="";
     Для н=12 по 15 Цикл
           GUIDСсылки=GUIDСсылки+Из_10_В_Любую(МассивGuid[н],16)
     КонецЦикла;
     GUIDСсылки=GUIDСсылки+"-";
     
     Для н=10 по 11 Цикл
           GUIDСсылки=GUIDСсылки+Из_10_В_Любую(МассивGuid[н],16)
     КонецЦикла;
     GUIDСсылки=GUIDСсылки+"-";
     
     Для н=8 по 9 Цикл
           GUIDСсылки=GUIDСсылки+Из_10_В_Любую(МассивGuid[н],16)
     КонецЦикла;
     GUIDСсылки=GUIDСсылки+"-";
     Для н=0 по 1 Цикл
           GUIDСсылки=GUIDСсылки+Из_10_В_Любую(МассивGuid[н],16)
     КонецЦикла;
     GUIDСсылки=GUIDСсылки+"-";
     Для н=2 по 7 Цикл
           GUIDСсылки=GUIDСсылки+Из_10_В_Любую(МассивGuid[н],16)
     КонецЦикла;
     
     ВозвЗнач=Новый УникальныйИдентификатор(GUIDСсылки);
     Возврат ВозвЗнач;
КонецФункции
[/code]
« Последняя редакция: 06. Декабря 2010 :: 08:16 - Sirtoo »  
Наверх
 
IP записан
 
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] 
ОтправитьПечать