Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Проблема при вызываний хранимой процедуры SQL через 1С8.2  [new]
dayren
Member

Откуда:
Сообщений: 4
Добрый день!
Возникла проблема при вызове хранимой процедуры из системы 1С8.2:
Тело процедуры:

USE Base
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[i_delete_debt]
AS
TRUNCATE TABLE tblOutletDebtsDetails
TRUNCATE TABLE tblOutletDebts
EXEC RecordLog 'i_delete_debt: удалены все долги'

Код 1С:

текстКоманды = "EXEC i_delete_debt";
команда.commandtext = текстКоманды;
попытка
Набор = команда.execute();
Исключение
НовСтрока = тз.Добавить();
НовСтрока.Ошибка = "При очистке долгов: Произошла ошибка при старте: " + ОписаниеОшибки() +
". Команда: " + ТекстКоманды;
КонецПопытки;


Проблема:
1с выполняя данный отчет зависает, то есть уходит в "аут"
после выполнения строчки
Набор = команда.execute();
не выдавая никаких ошибок(даже по окончаний 2-часов).
Смотрел трассировщиком, трассировщик пишет
что скрипт EXEC i_delete_debt выполнен.
Все.

Как пытался решить:
Ставил базу sql на другой сервер,
Ставил сервер приложений 1с на другой сервер.
Менял тело процедуры на:
USE Base
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[i_delete_debt]
AS
select 1

+ другие методы.
все выполнялось под полными правами SA.
Как решить такую проблему ?
В чем может быть причина?
29 май 15, 13:41    [17706364]     Ответить | Цитировать Сообщить модератору
 Re: Проблема при вызываний хранимой процедуры SQL через 1С8.2  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8316
Если криво написан RecordLog может зависнуть транзакция -> 1С.
Или обработчик 1С кривой, например, системные исключения не ловит.
29 май 15, 13:51    [17706410]     Ответить | Цитировать Сообщить модератору
 Re: Проблема при вызываний хранимой процедуры SQL через 1С8.2  [new]
dayren
Member

Откуда:
Сообщений: 4
Владислав Колосов
Если криво написан RecordLog может зависнуть транзакция -> 1С.
Или обработчик 1С кривой, например, системные исключения не ловит.


Спасибо. Пробовал убрать рекорд лог, все тот же результат.
Так не может же обработчик 1с быть кривым одновременно
на 2 разных серверах.
Более того, я попробовал поднять базу(и 1с и sql) у себя на буке.
Загрузка прошла.
29 май 15, 14:05    [17706497]     Ответить | Цитировать Сообщить модератору
 Re: Проблема при вызываний хранимой процедуры SQL через 1С8.2  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31779
dayren,

Попробуйте первой строкой в процедуре поставить SET NOCOUNT ON

Но вообще это однозначно проблема клиента, спрашивайте в форуме по 1С

Ведь в профайлере процедура вызывается. Ещё в профайлере можно вывести колонку ошибки -будет понятен результат выполнения. Однако 1С не должна зависать даже при ошибке в процедуре.
29 май 15, 15:22    [17707143]     Ответить | Цитировать Сообщить модератору
 Re: Проблема при вызываний хранимой процедуры SQL через 1С8.2  [new]
dayren
Member

Откуда:
Сообщений: 4
alexeyvg,

спасибо, попробовал сделать как вы советуете.
и при первой загрузке все прошло,загрузка прошла!
но начал делать2 раз выгрузку ошибка осталась.
как так ? не поиму.
1 июн 15, 09:01    [17713807]     Ответить | Цитировать Сообщить модератору
 Re: Проблема при вызываний хранимой процедуры SQL через 1С8.2  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31779
dayren
при первой загрузке все прошло,загрузка прошла!
но начал делать2 раз выгрузку ошибка осталась.
Может, 1С сама пересоздала процедуру, уже без SET NOCOUNT ON?

Ещё раз советую спросить в ветке по 1С, тут вам вряд ли помогут, разве что тут чудом окажется спец по 1С
1 июн 15, 10:22    [17714100]     Ответить | Цитировать Сообщить модератору
 Re: Проблема при вызываний хранимой процедуры SQL через 1С8.2  [new]
dayren
Member

Откуда:
Сообщений: 4
нет я менял в SQL процедуру. Да уже спращиваю в ветке по 1с. пока ничего не сказали.
1 июн 15, 12:36    [17714862]     Ответить | Цитировать Сообщить модератору
 Re: Проблема при вызываний хранимой процедуры SQL через 1С8.2  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
dayren,

Советы:
1. Запустить процедуру на сервере ms sql, при помощи Management Studio. Если она успешно выполнилась, значит проблема не в процедуре.
2. В 1С есть Журнал регистрации, можно там поискать сообщения о ошибках (проблемах).
3. В 1С можно настроить Технологический журнал
4. Кажется, у вас проблема в настройках запуска процедуры в коде 1С
Вот пример, который работал в 8.3 (возможно будет работать и в 8.2)
+

Connection = Новый COMОбъект("ADODB.Connection");
Connection.ConnectionTimeOut =600;
//Connection.CursorLocation = 3;

ConnectString="Provider=SQLOLEDB; Data Source=" + "VM_1C_83"+ ";DatabaseName="+ "VM_1C_83_Kompl" +";
|Initial Catalog=" + "VM_1C_83_Kompl" + ";UID=" + "sa"+ ";PWD="+"1";

Попытка
Connection.Open(ConnectString);
//Предупреждение("OK!");
Исключение
Предупреждение("Не удалось соединиться с базой данных!");
Сообщить(ОписаниеОшибки());
//Возврат 0;
КонецПопытки;

Command=Новый COMОбъект("ADODB.Command");
Command.ActiveConnection=Connection;
Command.CommandTimeOut=600;
Command.CommandType=4; // 4 - это хранимамя процедура
Command.CommandText ="date_add";

НачалоПериода ="01.05.2010 12:07:21";
КонецПериода ="20100112";

Command.NamedParameters ="True";

Param3 = Command.CreateParameter("@DateEnd",200,1,8,Формат(КонецПериода,"ДФ=ггггММдд"));
Command.Parameters.Append(Param3);

Param2 = Command.CreateParameter("@DateBegin",133,1,19,Формат(НачалоПериода,"ДЛФ=DT"));
//Param2 = Command.CreateParameter("@DateBegin",200,1,8,Формат(НачалоПериода,"ДФ=ггггММдд"));
Command.Parameters.Append(Param2);


//Command.Parameters.Refresh();

Command.Execute();

Предупреждение("Да!");

Connection.Close();
Connection = Неопределено;

Поэтому, задавайте вопросы на форуме 1с: https://www.sql.ru/forum/1c
2 июн 15, 17:50    [17721775]     Ответить | Цитировать Сообщить модератору
 Re: Проблема при вызываний хранимой процедуры SQL через 1С8.2  [new]
Emery
Member

Откуда: Украина
Сообщений: 766
Вроде как нельзя в теле хранимой процедуры писать команды типа:

USE Base
3 июн 15, 07:08    [17723285]     Ответить | Цитировать Сообщить модератору
 Re: Проблема при вызываний хранимой процедуры SQL через 1С8.2  [new]
o-o
Guest
Emery
Вроде как нельзя в теле хранимой процедуры писать команды типа:

USE Base

Вы какой-то араб-извращенец что ли?
Код читается сверху вниз и справа налево, и уж никак не снизу вверх
Приведенный в первом посте код сгенерен студией, она же и дописывает ПЕРЕД текстом создания процедуры USE и SET-ы
3 июн 15, 09:24    [17723509]     Ответить | Цитировать Сообщить модератору
 Re: Проблема при вызываний хранимой процедуры SQL через 1С8.2  [new]
o-o
Guest
мама дорогая, "слева направо", разумеется, не подумайте чего, я по-арабски не умею
3 июн 15, 09:34    [17723541]     Ответить | Цитировать Сообщить модератору
 Re: Проблема при вызываний хранимой процедуры SQL через 1С8.2  [new]
AHDP
Member

Откуда:
Сообщений: 1225
dayren
Проблема:
1с выполняя данный отчет зависает, то есть уходит в "аут"
после выполнения строчки
Набор = команда.execute();
не выдавая никаких ошибок(даже по окончаний 2-часов).
Смотрел трассировщиком, трассировщик пишет
что скрипт EXEC i_delete_debt выполнен.


Скуль сделал, что ему предписано (ничего возвращать не должен).

1С ждет, что он ей что-нибудь вернёт.
8 июн 15, 09:43    [17743132]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить