Ошибка при установке значения атрибута контекста activeconnection

Я
   Fenomen

27.04.12 — 17:10

Добрый вечер, пытаюсь выгрузить в Эксель 2010, но при подключении пишет ошибку.

СтрокаПодключения = »

   |Provider=Microsoft.ACE.OLEDB.12.0;

   |Data Source=» + ПутьКФайлам + «;

   |Extended Properties=»»Excel 12.0;HDR=NO;IMEX=1;»»;»;

   Catalog = Новый COMОбъект(«ADOX.Catalog»);

   Попытка

       Catalog.ActiveConnection = СтрокаПодключения;

   Исключение

       Сообщить(«Ошибка подключения: » + ОписаниеОшибки());

   КонецПопытки;

Пишет ошибку «Ошибка при установке значения атрибута контекста (ActiveConnection): Произошла исключительная ситуация (ADOX.Catalog): Не удается найти указанный поставщик. Вероятно, он установлен неправильно.»

Поставил http://www.microsoft.com/en-us/download/details.aspx?id=13255 , но ничего не изменилось.

Как узнать какой поставщик установлен? (ОС Win 7 64)

   Fragster

1 — 27.04.12 — 17:15

ActiveConnection — разве должен быть типа строка а не чем-нибудь типа ADODB/Connection?

   Ахиллес

2 — 27.04.12 — 17:18

глянь сюда http://infostart.ru/public/65045/

   КМ155

3 — 27.04.12 — 17:19

(0) найди 10 отличий:

MyCon = Новый COMОбъект («ADODB.Connection»);

   MyCon.Open («Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:1.xls;Extended Properties=»»Excel 8.0;HDR=No;IMEX=1″»»);

   MyCat=Новый COMОбъект («ADOX.Catalog»);

   MyCat.ActiveConnection = MyCon;

   Fenomen

4 — 27.04.12 — 17:24

С такой строкой у меня всё ОК.

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=»+ПутьКФайлам+»;Extended Properties=»»Excel 8.0;HDR=No;IMEX=1;»»;»;

Но вот Provider=Microsoft.ACE.OLEDB.12.0;Data Source=» + ПутьКФайлам + «;Extended Properties=»»Excel 12.0;HDR=NO;IMEX=1;»»;»;

Отличается Excel 8.0, а мне нужно Excel 12.0.

   Fragster

5 — 27.04.12 — 17:27

(4) -> (1) !!!

   ll13

6 — 27.04.12 — 17:28

СтрокаПодключения = «Provider=Microsoft.ACE.OLEDB.12.0;

|Data Source=» + ИмяФайлаЭксель + «;

|Extended Properties=»»Excel 12.0 Xml;HDR=» + ?(ЧитатьЗаголовок,»Yes»,»No») + «;IMEX=1″»;»;

   Ахиллес

7 — 27.04.12 — 17:30

В закладочки положи себе http://www.connectionstrings.com/excel#p84

   Fenomen

8 — 28.04.12 — 11:14

ll13, Ахиллес. Я не понимаю, чем строка пожключения (0) отличается от (6) и (7).

КМ155, Делаю

Connection = Новый COMОбъект(«ADODB.Connection»);

Connection.Open(«Provider=Microsoft.ACE.OLEDB.12.0;Data Source=» + ПутьКФайлам + «;Extended Properties=»»Excel 12.0 Xml;HDR=NO;IMEX=1;»»;»);

Пишет ошибку » Ошибка при вызове метода контекста (Open)

Connection.Open(«Provider=Microsoft.ACE.OLEDB.12.0;Data Source=» + ПутьКФайлам + «;Extended Properties=»»Excel 12.0 Xml;HDR=NO;IMEX=1;»»;»);

по причине:

Произошла исключительная ситуация (ADODB.Connection): Не удается найти указанный поставщик. Вероятно, он установлен неправильно.»

Что еще ему не нравится? Не могу понять.

   Fragster

9 — 28.04.12 — 11:39

короче, создаешь пустой файл с расширением .udl, открываешь его двойным кликом, настраиваешь как тебе надо, проверяешь — всё ок. потом открываешь блокнотом и смотришь на строку.

   Fenomen

10 — 28.04.12 — 15:21

Проблема решилась установкой

  

Fenomen

11 — 28.04.12 — 15:24

Проблема решилась установкой на мою Win 7 x64 провайдера http://www.microsoft.com/download/en/details.aspx?id=23734 , а не как я ставил http://www.microsoft.com/en-us/download/details.aspx?id=13255.

TurboConf — расширение возможностей Конфигуратора 1С

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.

Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.

Установка соединения:

DRIVER = MYSQL ODBC 5.1 Driver; SERVER = localhost; DataBase = *****; UID = user; PWD = ****

Всё работало и подключалось, когда использовался MS Server 2003. После переноса на MS Server 2008 стала выдаваться следующая ошибка:

{ОбщийМодуль.Petrol.Модуль(7798)}: Ошибка при установке значения
атрибута контекста (ActiveConnection) Command.ActiveConnection =
Connection; по причине: Произошла исключительная ситуация
(ADODB.Command): Для требуемой операции необходим объект OLE DB
Session, не поддерживаемый текущим поставщиком.

В чём может быть проблема?

0xdb's user avatar

0xdb

51.2k194 золотых знака56 серебряных знаков227 бронзовых знаков

задан 26 окт 2017 в 20:51

игорь88's user avatar

Странно, что с драйвером от MySQL работало. У меня, в зависимости от версии MSSQL отрабатывали следующие строки:

DRIVER = {SQL Server}; SERVER = localhost; DataBase = *****; UID = user; PWD = ****

Provider=SQLOLEDB.1; User ID= user; Pwd=********; Data Source=localhost; Initial Catalog= *****

Попробуйте подобрать подходящую строку подключения на https://www.connectionstrings.com/sql-server-2008/

ответ дан 27 окт 2017 в 6:22

mickey.dev's user avatar

mickey.devmickey.dev

5142 серебряных знака5 бронзовых знаков

ПРАКТИЧЕСКОЕ ПОСОБИЕ РАЗРАБОТЧИКА: Метод «MS ADODB» (ADODB.Connection).
Поддерживаемые типы: *.xls,*.xlsx.


 В данной статье приведен функционал, с помощью которого в обработке
«Импорт из EXCEL и др.источников (xls,xlsx,ods,sxc,dbf,mxl,csv,sql) в 1С»: //infostart.ru/public/120961
производится считывание данных из файлов табличного типа *xls, *.xlsx.

Методы загрузки из внешнего источника:
— Метод «MS ADO» (Чтение файлов xls, xlsx средствами Microsoft ADO): //infostart.ru/public/163640/
— Метод «MS EXCEL» (Чтение файлов xls, xlsx с картинками средствами Microsoft Office): //infostart.ru/public/163641/
— Метод «LO CALC» (Чтение файлов xls, xlsx, ods, sxc с картинками средствами LibreOffice): //infostart.ru/public/163642/
— Метод «NativeXLSX» (Чтение файлов xlsx с картинками средствами 1С. ПостроительDOM): //infostart.ru/public/300092/
— Метод «NativeXLSX». Предыдущий вариант (Чтение файлов xlsx средствами 1С. ЧтениеXML):
//infostart.ru/public/225624/
— Метод «Excel1C» (Загрузка на платформе 8.3.6 с картинками. Чтение файлов xls, xlsx, ods): //infostart.ru/public/341855/
— Список листов файла: //infostart.ru/public/163724/


Публикаций на тему загрузки из EXCEL — множество, но
«
— Вам билетёр нужен?
— Был нужен, да уже взяли.
— Может и я на что сгожусь?
— Может и сгодишься, если скалиться не будешь …
«
«НЕУЛОВИМЫЕ МСТИТЕЛИ» (1966).


// Метод "Microsoft ADODB"/
//

// Параметры:
//        ФайлEXCEL - Полное имя файла (путь к файлу с именем файла и расширением).
//        ИмяЛиста - Имя выбранного листа файла EXCEL.
//        СтрокаЗаголовка (по умолчанию = 1) - Номер строки EXCEL, в которой расположены заголовки колонок.
//            Не используется, т.к. в СтрокеСоединения указано HDR=YES, а не HDR=NO.
/ /       В обработке 1-я строка анализируется для сопоставления колонок EXCEL с реквизитами 1С (справочники, докуметны, регистры).
//        НачСтрока (по-умолчанию = 0) - Номер начальной строки, начиная с которой считываются данные из EXCEL.

//        КонСтрока (по-умолчанию = 0) - Номер конечной строки, которой заканчиваются считываемые данные из EXCEL.
//            Если НачСтрока=0 и КонСтрока=0, то считывается вся таблица, находящаяся на листе EXCEL.
//        КолвоСтрокExcel - Количество строк на листе "ИмяЛиста" EXCEL. Возвращается в вызываемую процедуру.
//        ПодключениеADODB - тип драйвера ADODB для подключения к EXCEL.
//
// Возвращаемые значения:
//         ТаблицаРезультат - Результат считывания с листа "ИмяЛиста" EXCEL.
//
Функция ЗагрузитьМетодом_MSADODB(Знач ФайлEXCEL, Знач ИмяЛиста, Знач СтрокаЗаголовка = 1, НачСтрока = 0, КонСтрока = 0, КолвоСтрокExcel,
Знач
ПодключениеADODB = "MicrosoftJetOLEDB40") Экспорт
    Перем СonnectionString, ADODBConnection, ADODBRecordset, ТекстЗапроса;
    Перем КолвоКолонокExcel, Поле, Колонка, ИмяКолонки;
    Перем НоваяСтрока, НомерСтроки;
    Перем ТаблицаРезультат;

        // Нумерация MS ADODB начинается с 1.

        // Переменная "СтрокаЗаголовка", не используется, т.к. HDR=YES, а не HDR=NO.
    // HDR=YES:
    // 1. Считывание заголовков колонок с 1-ой строки.
    // 2. Считываемые данные со 2-ой и последующих строк типизированы. Для варианта HDR=NO: считываемые данные - строка.

        // Строка соединения - определение драйвера, который будет использован для подключения к файлу EXCEL.
    Если ПодключениеADODB = "MicrosoftACEOLEDB12" Тогда

                // ACE.OLEDB.12.0 - Для использования данного подключения необходимо дополнительное ПО:
        // Microsoft Access Database Engine 2010 Redistributable 32/64 bit.
        СonnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " + СокрЛП(ФайлEXCEL) + ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=1;""";

                // Еще один вариант.
        //СтрокаСоединения = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};Dbq=" + СокрЛП(ФайлEXCEL) + ";";

            Иначе

                // Jet.OLEDB.4.0 - Стандартное подключение, как правило, не требующее установки дополнительного ПО.
        // Рекомендуется установить последний Service Pack Windows.
        СonnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= "  + СокрЛП(ФайлEXCEL) + ";Extended Properties=""Excel 8.0;HDR=YES;IMEX=1;""";

                // Еще один вариант.
        //СтрокаСоединения = "Driver={Microsoft Excel Driver (*.xls)};Dbq=" + СокрЛП(ФайлEXCEL) + ";";

            КонецЕсли;

        Попытка
        // Инициализация основного объекта ADODB.Connection. Открытие соединения.
        ADODBConnection = Новый COMОбъект("ADODB.Connection");
        ADODBConnection.ConnectionString =  СonnectionString;
        ADODBConnection.Open();
        // Импирически определенный параметр для правильного определения количества строк листа.
        ADODBConnection.CursorLocation = 3;    // По-умолчанию 2.
    Исключение
        Сообщить(НСтр("ru = '"+ОписаниеОшибки()+"'"), СтатусСообщения.Внимание);
        Возврат Новый ТаблицаЗначений;    // В случае ошибки возвращаем пустую таблицу значений.
    КонецПопытки;

        ТекстЗапроса = "SELECT * FROM [" + ИмяЛиста + "$]";

        // Создание Recordset. Дочерний объект ADODBConnection. Набор записей по запросу.
    Попытка
        ADODBRecordset = Новый COMОбъект("ADODB.Recordset");
        ADODBRecordset.Open(ТекстЗапроса, ADODBConnection);

                // Проверка заполненности листа.
        Если (ADODBRecordset.EOF ИЛИ ADODBRecordset.BOF) Тогда
            КолвоСтрокExcel = 0;
            Сообщить(НСтр("ru = '" + ИмяЛиста + ": не содержит данных.'"), СтатусСообщения.Внимание);

                        // Завершение работы.
            // Закрытие Объектов.
            ADODBRecordset.Close();
            ADODBConnection.Close();
            ADODBRecordset   = Неопределено;
            ADODBConnection = Неопределено;

                        Возврат Новый ТаблицаЗначений;    // В случае ошибки возвращаем пустую таблицу значений.
        КонецЕсли;

                // Импирически определенные параметры для правильного определения количества строк листа.
        ADODBRecordset.AbsolutePage     = 1;
        ADODBRecordset.AbsolutePosition = 1;
    Исключение
        Сообщить(НСтр("ru = '"+ОписаниеОшибки()+"'"), СтатусСообщения.Внимание);
        Возврат Новый ТаблицаЗначений;    // В случае ошибки возвращаем пустую таблицу значений.
    КонецПопытки;

        // Параметр, возвращаемый в вызывающую процедуру.
    КолвоСтрокExcel = ADODBRecordset.RecordCount + 1;    // (+1) - учет Строки-Заголовока, которая "съедается".
    КолвоКолонокExcel = ADODBRecordset.Fields.Count;

        // Проверка заполненности листа.
     Если КолвоСтрокExcel <= 2

Тогда
        КолвоСтрокExcel = 0;
        Сообщить(НСтр("ru = '" + ИмяЛиста + ": не содержит данных.'"), СтатусСообщения.Внимание);
        
        // Завершение работы.
        // Закрытие Объектов.
        ADODBRecordset.Close();
        ADODBConnection.Close();
        ADODBRecordset   = Неопределено;
        ADODBConnection = Неопределено;
        
        Возврат Новый ТаблицаЗначений;    // В случае ошибки возвращаем пустую таблицу значений.
    КонецЕсли;
    
    // Создание результирующей таблицы, в которую будут записываться считанные из EXCEL данные.
    ТаблицаРезультат = Новый ТаблицаЗначений;
    
    // Формирование колонок результирующей таблицы.
    
    // "НомерСтроки" - для наглядности и удобства.
    // В зависимости от разрабатываемой обработки.
    // "Сопоставлено" - может быть другим.
    // Здесь же могут быть добавлены другие колонки, не формируемые из содержимого файла EXCEL.
    ТаблицаРезультат.Колонки.Добавить("НомерСтроки", Новый ОписаниеТипов("Число"), "№", 4);
    ТаблицаРезультат.Колонки.Добавить("Сопоставлено", Новый ОписаниеТипов("Булево"), "Сопоставлено", 1);
    Для ит = 1 ПО КолвоКолонокExcel Цикл
        
        Поле = ADODBRecordset.Fields.Item(ит - 1);
        ИмяКолонки = "К_" + ит;
        Колонка = ТаблицаРезультат.Колонки.Добавить(ИмяКолонки, , СокрЛП(СтрЗаменить(Поле.Name, "#", ".")));
        // Замена "#" на ".", т.к. при считывании ADODB "." в имени колонки заменяется на "#".
        
    КонецЦикла;
    
    // ТаблицаРезультат: 1-я строка - Строка-Заголовок.
    
    // Добавление этой строки обусловлено исключительно из соображений идентичности содержимого файла EXCEL и ТаблицыЗначений,
    // выводимой на форме Обработки, и дальнейшей обработки строки заголовка
    // с целью сопоставления колонок EXCEL и реквизитов 1С: для Справочников, ПВХ, Регистров, Документов.
    
    // Если в Вашей обработке в результирующей таблице в качестве 1-ой строки не нужна Строка-Заголовок, то
    // следует закомментировать следующий цикл:
    НоваяСтрока = ТаблицаРезультат.Добавить();
    НоваяСтрока.НомерСтроки = 1;
    Для ит = 1 ПО КолвоКолонокExcel Цикл
        
        ИмяКолонки = "К_" + ит;
        Колонка = ТаблицаРезультат.Колонки.Найти(ИмяКолонки);
        НоваяСтрока[ИмяКолонки] = Колонка.Заголовок;
        
    КонецЦикла;
    
    // ТаблицаРезультат: Формирование строк по указанному диапазону: НачСтрока - КонСтрока.
    
    НомерСтроки = 1;
    Пока ADODBRecordset.EOF() = 0 Цикл
        
        НомерСтроки = НомерСтроки + 1;
        
        Если НомерСтроки < НачСтрока Тогда    // Номер строки вне диапазона считываемых строк.
            ADODBRecordset.MoveNext();             // Следующая строка.
            Продолжить;
        КонецЕсли;
        
        Если КонСтрока > 0 И НомерСтроки > КонСтрока Тогда    // Номер строки вне диапазона считываемых строк.
            Прервать;
        КонецЕсли;
        
        НоваяСтрока = ТаблицаРезультат.Добавить();
        НоваяСтрока.НомерСтроки = НомерСтроки;
        
        Для ит = 1 ПО КолвоКолонокExcel Цикл
            
            Поле = ADODBRecordset.Fields.Item(ит - 1);
                
            Если Поле.ActualSize = 0 Тогда        // Пустое поле EXCEL.
                Продолжить;
            КонецЕсли;
                
            ЗначениеЯчейки = Поле.Value;        // Учитывая параметр HDR=YES в строке соединения, данные считываются в соответствии с их типом.
            
            ИмяКолонки = "К_" + ит;
            НоваяСтрока[ИмяКолонки] = ЗначениеЯчейки;
            
            // Используется при формировании таблицы на форме обработки.
            ШиринаКолонки = ТаблицаРезультат.Колонки[ИмяКолонки].Ширина;
            ДлинаСтроки      = СтрДлина(СокрЛП(ЗначениеЯчейки));
            ТаблицаРезультат.Колонки[ИмяКолонки].Ширина = ?(ШиринаКолонки < ДлинаСтроки, ДлинаСтроки, ШиринаКолонки);
                
        КонецЦикла;
        
        ADODBRecordset.MoveNext();   // Следующая строка.
        
    КонецЦикла;
    
    //УдалитьКолонкиСНулевойШириной(ТаблицаРезультат);
    
    // Завершение работы.
    // Закрытие Объектов.
    ADODBRecordset.Close();
    ADODBConnection.Close();
    ADODBRecordset   = Неопределено;
    ADODBConnection = Неопределено;
    
    Возврат ТаблицаРезультат;

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

Преимущества:
1.«В общем случае» метод «Microsoft ADODB» работает и в файловом и в клиент-серверном варианте.
2. Самый быстрый из трех рассматриваемых.
Особенности и Ограничения:
1.Для функционирования метода «Microsoft ADODB» необходимо:

Драйвер подключения Provider=Microsoft.Jet.OLEDB.4.0:
- Установленный Microsoft MDAC, как правило специальная установка не требуется, достаточно последнего Service Pack-а операционной системы..
  Microsoft MDAC 2.8 SP1 10.05.2005: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=5793

Драйвер подключения Provider=Microsoft.ACE.OLEDB.12.0:
- Установленный Microsoft Access Database Engine 2010 Redistributable (16/12/2010) 32 и 64 - разрядные версии:
  Microsoft ADE 2010 16/12/2010:  http://www.microsoft.com/en-us/download/details.aspx?id=13255


2. 1-я строка файла EXCEL - строка, содержащая заголовки колонок. Можно изменить, изменив HDR=YES на HDR=NO + некоторые изменения в функции.

МА! С уважением к сообществу МА!

При запуске обработки в режиме предприятие на компе где работает агент сервера срабатывает без ошибок. При работе кода в фоновом задании выходит ошибка: {ВнешняяОбработка.ЗагрузкаДанныхОПосещенияхМагазиновRSTAT.МодульОбъекта}: Ошибка при установке значения атрибута контекста (ActiveConnection): Произошла исключительная ситуация (ADODB.Command): Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом. где собака зарыта?

пользователю под которым работает сервер прав дать

Поставить доменную учетку для службы 1С

агент запукается от имени системной учетной записи, насколько я знаю у этой учётки и так полные права

2 окей, тогда не давай…

завтра с утра попробую от имени админа домена

нет… сабжу не хватает прав «пользователь DCOM»… по этому я обычно под сервер 1с создаю отдельную учетку и ее уже терзаю… варианты запуска под админом или изменение правт системной довольно нехорошие….

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

1С:Предприятие 8.2 (8.2.17.169)

При запуске обработки в режиме предприятие на компе где работает агент сервера срабатывает без ошибок.

При работе кода в фоновом задании выходит ошибка:

{ВнешняяОбработка.ЗагрузкаДанныхОПосещенияхМагазиновRSTAT.МодульОбъекта(155)}: Ошибка при установке значения атрибута контекста (ActiveConnection): Произошла исключительная ситуация (ADODB.Command): Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом.

СтрокаСоединения = «Provider=SQLOLEDB;Persist Security Info=True;Password=» + SQL_password + «;User ID=» + SQL_Login + «;Extended Properties=»»Connection Timeout=10″»;»;

СтрокаСоединения = СтрокаСоединения + «Initial Catalog=» + SQLDB + «;»;

СтрокаСоединения = СтрокаСоединения + «Data Source=» + SQLServer;

Соединение = Новый COMОбъект(«ADODB.Connection»);

Соединение.ConnectionTimeOut = 10;

Соединение.CursorLocation = 3;

Соединение.CommandTimeOut = 0; //Ожидание завершения команды 0 — бесконечно//10000;

Соединение.Open(СтрокаСоединения);

Команда = Новый COMОбъект(«ADODB.Command»);

Команда.CommandType =1;

ЗаписьЖурналаРегистрации(«ЗагрузкаДанныхОПосещенияхМагазиновRSTAT»,УровеньЖурналаРегистрации.Информация,,,ИмяКомпьютера()+ » «+ Команда.CommandType);

Команда.ActiveConnection=Соединение;

//{ВнешняяОбработка.ЗагрузкаДанныхОПосещенияхМагазиновRSTAT.МодульОбъекта(155)}:

//Ошибка при установке значения атрибута контекста (ActiveConnection): Произошла исключительная ситуация (ADODB.Command):

//Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом.

Результат = Команда;

где собака зарыта?

Установка соединения:

DRIVER = MYSQL ODBC 5.1 Driver; SERVER = localhost; DataBase = *****; UID = user; PWD = ****

Всё работало и подключалось, когда использовался MS Server 2003. После переноса на MS Server 2008 стала выдаваться следующая ошибка:

{ОбщийМодуль.Petrol.Модуль(7798)}: Ошибка при установке значения
атрибута контекста (ActiveConnection) Command.ActiveConnection =
Connection; по причине: Произошла исключительная ситуация
(ADODB.Command): Для требуемой операции необходим объект OLE DB
Session, не поддерживаемый текущим поставщиком.

В чём может быть проблема?

0xdb's user avatar

0xdb

51.5k195 золотых знаков56 серебряных знаков233 бронзовых знака

задан 26 окт 2017 в 20:51

игорь88's user avatar

Странно, что с драйвером от MySQL работало. У меня, в зависимости от версии MSSQL отрабатывали следующие строки:

DRIVER = {SQL Server}; SERVER = localhost; DataBase = *****; UID = user; PWD = ****

Provider=SQLOLEDB.1; User ID= user; Pwd=********; Data Source=localhost; Initial Catalog= *****

Попробуйте подобрать подходящую строку подключения на https://www.connectionstrings.com/sql-server-2008/

ответ дан 27 окт 2017 в 6:22

mickey.dev's user avatar

mickey.devmickey.dev

5142 серебряных знака5 бронзовых знаков

Установка соединения:

DRIVER = MYSQL ODBC 5.1 Driver; SERVER = localhost; DataBase = *****; UID = user; PWD = ****

Всё работало и подключалось, когда использовался MS Server 2003. После переноса на MS Server 2008 стала выдаваться следующая ошибка:

{ОбщийМодуль.Petrol.Модуль(7798)}: Ошибка при установке значения
атрибута контекста (ActiveConnection) Command.ActiveConnection =
Connection; по причине: Произошла исключительная ситуация
(ADODB.Command): Для требуемой операции необходим объект OLE DB
Session, не поддерживаемый текущим поставщиком.

В чём может быть проблема?

Содержание:

1.       Ошибка при установке значения атрибута контекста

2.       Ошибка при получении значения атрибута контекста

Одной из наиболее частых ошибок исполнения кода 1С являются ошибки, связанные с установкой реквизита либо получением реквизита через точку, либо ошибка при вызове функции или процедуры через точку. Все данные объекты являются атрибутами информационных объектов-владельцев, к которым они принадлежат. Рассмотрим примеры таких ошибок и причины их возникновения.  

1.    Ошибка при установке значения атрибута контекста

Ошибка при установке значения атрибута контекста говорит нам о невозможности присвоить выбранное значение определенному атрибуту информационного объекта. Вызвано это либо несовпадением типа атрибута и присваиваемого ей значения, отсутствием возможности присвоить значение выбранному атрибуту, так как его можно только читать, но не записывать в него, отсутствием прав у текущего пользователя на запись значений в данный атрибут. Например, в реквизит «ДатаДокумента» с типом «Дата» пытаемся записать строку, в реквизит с типом данных ссылки на документ пытаемся записать не ссылку, а объект, полученный по ссылке, что невозможно из-за несоответствия типов, что приводит к ошибке установки значения атрибута. 

Другой пример – проходя циклом выборку запроса, пытаемся в колонку выборки записать значение, что невозможно, так как значения выборки запроса можно только считывать, а для того, чтобы можно было полученные из запроса данные изменять в коде, нужно пользоваться не выборкой, а выгружать результат запроса в таблицу значений, в таком случае в цикле по ней можно будет менять значения в колонках, но только на значения, соответствующие типу колонки. Либо у пользователя, под которым выполняется код, нет прав на изменение даты документа, при попытке записать в данный реквизит новую дату, будет выведено сообщение об ошибке установке значения, но в причине будет указано отсутствие прав у пользователя.  

2.    Ошибка при получении значения атрибута контекста

Ошибка при получении значения атрибута контекста указывает на невозможность прочитать значение атрибута объекта в силу его отсутствия, либо отсутствия прав на его чтение. Например, обращение к несуществующему реквизиту объекта, несуществующему полю выборки из запроса, несуществующему свойству элемента формы и т.п. Так же как пример можно рассмотреть получение текущего пользователя из параметров сеанса — если данный параметр сеанса не установлен, то тоже будет выведена ошибка получения значения атрибута контекста, но в причине будет указана попытка получения неинициализированного значения параметра сеанса.

При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).  

Специалист компании «Кодерлайн»

Александр Суворов

Понравилась статья? Поделить с друзьями:
  • Ошибка при установке драйвера не удается найти указанный файл
  • Ошибка при установке значения атрибута контекста 1с excel
  • Ошибка при установке драйверов dvd
  • Ошибка при установке драйвера на принтер windows 10
  • Ошибка при установке значения атрибута контекст