[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]
|