Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Связанная инструкция не подготовлена (число прочтений - 3994 )
Zmei
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 8
Зарегистрирован: 27. Марта 2007
Связанная инструкция не подготовлена
27. Марта 2007 :: 10:54
Печать  
Есть скрипт, который хочу выполнять при открытии документа. Спотыкаемся на "Begin tran" либо на вставке. В QA все работает. Версия 1с++ 1.8.1.6 Может поможет версия 1.8.1.6b? Более позднюю версию не хочу ставить, поскольку очень много завязано на компоненту, а на тестирование времени нет. Спасибо.

     Текст_ЗаписатьБлокировку = "
     |SET NOCOUNT ON
     |
     |--Создание процедуры для генерации ID объектов
     |
     |IF OBJECT_ID('[dbo].[proc_GetNextID]') IS NULL
     |BEGIN
     |
     |EXEC sp_executesqlN'
     |-----------------------------------------------------------------
     |--Made by Zmei/25.03.07/ICQ 173706221
     |--Процедура генерирует ID объектов в 36-й системе счисления
     |--на основании последнего заданного ID
     |--Вначале, текущий ID преобразуется в десятичную систему счисления,
     |--увеличивается на единицу,затем выполняется обратная операция
     |------------------------------------------------------------------
     |CREATE PROCEDURE proc_GetNextID(@ID char(9) OUTPUT) AS
     |DECLARE @Alphabet char(36),   --Алфавит 36-ричной системы счисления
     |            @Basic tinyint,         --Основание 36-ричной системы счисления
     |            @CurrentID varchar(6), --Генерируемый ID
     |            @Decimal decimal,         --Эквивалент ID в десятичной системе счисления
     |            @i smallint,               --Счетчик/степень разложения
     |            @Len smallint,               --Кво разрядов последнего ID
     |            @k int                           --Коэффициент разложения для перевода в 36-ричную систему счисления
     |      
     |SET @Alphabet = ''123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ''
     |SET @Basic = 36
     |SET @CurrentID = LTRIM(LEFT(@ID,6))
     |SET @i = 0
     |SET @Decimal = 0
     |SET @Len = LEN(@CurrentID)
     |      
     |--Формирование десятичного эквивалента последнего ID
     |WHILE @i < @Len
     |BEGIN
     |
     |    SET @Decimal = @Decimal + POWER(@Basic,@i) * CHARINDEX(SUBSTRING(@CurrentID,@Len - @i,1),@Alphabet,1)
     |    SET @i = @i + 1
     |      
     |END
     |      
     |--Увеличиваем десятичный эквивалент
     |SET @Decimal = @Decimal + 1
     |SET @CurrentID = ''''
     |      
     |--Проверяем, нужен ли дополнительный разряд для хранения IDв 36-ричной системе
     |IF POWER(CAST(@Basic AS decimal),@i) = @Decimal
     |BEGIN
     |      
     |   SET @i = @i + 1
     |      
     |END
     |      
     |--Формула представления десятичного числа в 36-ричной системе счисления
     |--N10 = A*36^k + B*36^(k-1) + ... + Z*36^0
     |--Поочередно находим коэффициенты разложения для преобразовния в 36-ричную систему
     |-- и генерируем новый ID
     |WHILE @i > 0
     |BEGIN
     |      
     |   SET @k = CASE WHEN @Decimal >= POWER(@Basic,@i - 1) THEN @Decimal/POWER(@Basic,@i - 1) ELSE 0 END
     |      SET @CurrentID = @CurrentID + CASE @k WHEN 0 THEN ''0'' ELSE SUBSTRING(@Alphabet,@k,1) END
     |      SET @Decimal = @Decimal - POWER(@Basic,@i - 1) * @k
     |      SET @i = @i - 1
     |      
     |END
     |      
     |SET @ID = ISNULL(REPLICATE('' '',6 - @Len - 1),'''')+ @CurrentID + RIGHT(@ID,3)'
     |
     |END
     |
     |--Вставка нового элемента справочника ""Блокировки""
     |
     |IF NOT EXISTS(SELECT [id] FROM $Справочник.Блокировки WHERE [descr] = :ТекущийДокумент~)
     |
     |BEGIN
     |
     |   BEGIN TRANSACTION
     |
     |      DECLARE @NewID varchar(9)
     |  
     |      --получение последнего ID
     |      EXEC [dbo].[_1sp__1SUIDCTL_GetMaxID] :ВидСправочника, @NewID OUTPUT
     |  
     |      --генерирование следующего ID
     |   EXEC [dbo].[proc_GetNextID] @NewID OUTPUT
     |
     |      --установка максимального ID для справочника ""Блокировки""
     |   EXEC [dbo].[_1sp__1SUIDCTL_SetMaxID] :ВидСправочника, @NewID
     |
     |      INSERT INTO $Справочник.Блокировки([id],[descr],[verstamp],$Справочник.Блокировки.Пользователь)
     |      VALUES (@NewID,:ТекущийДокумент~,1,:Пользователь)
     |
     |      COMMIT TRANSACTION
     |
     |      IF @@TRANCOUNT = 0
     |      BEGIN
     |
     |            ROLLBACK TRANSACTION
     |
     |      END
     |
     |END
     |
     |SELECT @@TRANCOUNT
     |";
  
Наверх
 
IP записан
 
Zmei
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 8
Зарегистрирован: 27. Марта 2007
Re: Связанная инструкция не подготовлена
Ответ #1 - 27. Марта 2007 :: 11:03
Печать  
1.8.1.6fb3 не прошла Улыбка
1.8.1.7 тоже
профайлер не смотрел, мож. там транзакция идет  Подмигивание
  
Наверх
 
IP записан
 
Zmei
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 8
Зарегистрирован: 27. Марта 2007
Re: Связанная инструкция не подготовлена
Ответ #2 - 28. Марта 2007 :: 08:22
Печать  
Понимаю, что это ругань драйвера ODBC. Понимаю, что связана с транзакцией. В чем же вопрос? На итланд предлагали поменять версию ВК.
  
Наверх
 
IP записан
 
lustin
1c++ power user
Отсутствует


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

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Связанная инструкция не подготовлена
Ответ #3 - 28. Марта 2007 :: 09:05
Печать  
Zmei писал(а) 28. Марта 2007 :: 08:22:
Понимаю, что это ругань драйвера ODBC. Понимаю, что связана с транзакцией. В чем же вопрос? На итланд предлагали поменять версию ВК.


Кстати действительно а почему версии линии 1.8...

"Рекомендованный стабильный релиз c включенным FormEx: 2.0.3.3 "
на www.1cpp.ru
То есть ОН РЕКОМЕНДОВАН Подмигивание
  

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


I Love YaBB 2!

Сообщений: 8
Зарегистрирован: 27. Марта 2007
Re: Связанная инструкция не подготовлена
Ответ #4 - 28. Марта 2007 :: 09:22
Печать  
Найдутся желающие потестировать этот код на версии 2.0.3.3? Круглые глаза
Именно "ПриОткрытии()"
У меня загвоздка только в реализации ООП. Много переделывать надо.
  
Наверх
 
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Связанная инструкция не подготовлена
Ответ #5 - 28. Марта 2007 :: 10:25
Печать  
В QA работает говоришь? Подмигивание ..вероятнее всего нет процедуры с таким именем sp_executesqlN
  
Наверх
ICQ  
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Связанная инструкция не подготовлена
Ответ #6 - 28. Марта 2007 :: 10:41
Печать  
Вобщем.. по старой дружбе дам совет: ты меня извини конечно, но все что ты написал можно в топку отправить..
..но цель благородна, и достойна уважения, готов помочь советом и рекомендациями, если что обращайся.
  
Наверх
ICQ  
IP записан
 
Zmei
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 8
Зарегистрирован: 27. Марта 2007
Re: Связанная инструкция не подготовлена
Ответ #7 - 30. Марта 2007 :: 14:44
Печать  
DmitrO писал(а) 28. Марта 2007 :: 10:25:
В QA работает говоришь? Подмигивание ..вероятнее всего нет процедуры с таким именем sp_executesqlN

о себе: баран
спасибо!
  
Наверх
 
IP записан
 
Zmei
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 8
Зарегистрирован: 27. Марта 2007
Re: Связанная инструкция не подготовлена
Ответ #8 - 30. Марта 2007 :: 14:49
Печать  
DmitrO писал(а) 28. Марта 2007 :: 10:41:
Вобщем.. по старой дружбе дам совет: ты меня извини конечно, но все что ты написал можно в топку отправить..
..но цель благородна, и достойна уважения, готов помочь советом и рекомендациями, если что обращайся.

Спасибо, за поддержку. Советы мне необходимы! Буду писать. Но я практически не застаю тебя в аське.
Скажи, это ошибка проектирования или реализации?
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать