Текущий объект Recordset не поддерживает обновление. Отправка через com в AD

1. user1934472 16.10.24 14:49 Сейчас в теме
Необходимо в AD заполнять номера телефонов. Тестирую на одном пользователе. Вылетает ошибка:
Произошла исключительная ситуация (ADODB.Field): Текущий объект Recordset не поддерживает обновление. Это связано с ограничением поставщика или с выбранным типом блокировки.

Подскажите что не так?
Ошибка возникает в моменте:
ВыборкаАДО.Fields("telephoneNumber").Value = "12345";

	
	КомандаАДО    = Новый COMОбъект("ADODB.Command");
    СоединениеАДО = Новый COMОбъект("ADODB.Connection");
     
    СоединениеАДО.Provider = "ADSDSOObject";
    Попытка
        СоединениеАДО.Open("Active Directory Provider");    
    Исключение
        Сообщить("Ошибка при открытии Active Directory Provider: " + ОписаниеОшибки());
        Возврат "не удалось получить пользователя домена";
    КонецПопытки;
     
    КомандаАДО.ActiveConnection = СоединениеАДО;
     
    Попытка
        RootDSE = ПолучитьCOMОбъект("LDAP://RootDSE");
    Исключение
        Сообщить("Ошибка ПолучитьCOMОбъект(LDAP://RootDSE): " + ОписаниеОшибки());
        Возврат "не удалось получить пользователя домена";
    КонецПопытки;
     
    ТекущийДомен = RootDSE.Get("defaultNamingContext");
    Сообщить("ТекущийДомен: " + ТекущийДомен);
     
    Попытка
        ОбъектТекущегоДомена = ПолучитьCOMОбъект("LDAP://" + ТекущийДомен); 
    Исключение
        Сообщить("Ошибка ПолучитьCOMОбъект "+"LDAP://" + ТекущийДомен+": " + ОписаниеОшибки());
        Возврат "не удалось получить пользователя домена";
    КонецПопытки;
          
	ДоменноеИмя = "UserTest";
	
	//Фильтр = "(&(objectCategory=person)(objectClass=user))";
	
	КомандаАДО.CommandText = "SEL ECT ADsPath,userAccountControl,displayName,sAMAccountName,Mail,givenName,sn,telephoneNumber FR OM 'LDAP://"+"Syn.local"+"' WHERE objectClass='"+"user"+"'"+" and sAMAccountName='"+ДоменноеИмя+"'";    
	КомандаАДО.Properties("Page Size").Value     = 100;
    КомандаАДО.Properties("Timeout").Value       = 30;
    КомандаАДО.Properties("Cache Results").Value = Ложь;
		
    Попытка
        ВыборкаАДО = КомандаАДО.Execute();  
    Исключение
        Сообщить("Ошибка Execute(): " + ОписаниеОшибки());
        Возврат "не удалось получить пользователя домена";
	КонецПопытки;    
		
	Пока НЕ ВыборкаАДО.EOF Цикл
         
        Если ВыборкаАДО.Fields("userAccountControl").Value = 514 ИЛИ
            ВыборкаАДО.Fields("userAccountControl").Value = 546 ИЛИ
            ВыборкаАДО.Fields("userAccountControl").Value = 66050 Тогда
            
        Иначе
           	Если НЕ ЗначениеЗаполнено(СокрЛП(ВыборкаАДО.Fields("telephoneNumber").Value)) Тогда
				
				ВыборкаАДО.Fields("telephoneNumber").Value = "12345";
										
			КонецЕсли;	
			
        КонецЕсли;
         
        ВыборкаАДО.MoveNext();
        		
    КонецЦикла;
     
    ВыборкаАДО.Close();
    СоединениеАДО.Close();	
	

Показать
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 76 16.10.24 16:25 Сейчас в теме
(1) recordSet нужно формировать в режиме записи данных, по-умолчанию - в режиме чтения.
3. user1934472 16.10.24 16:28 Сейчас в теме
(2) Не подскажите как в данном режиме сделать?
4. nomad_irk 76 16.10.24 17:03 Сейчас в теме
5. user1934472 16.10.24 17:41 Сейчас в теме
(4) Установил перед открытием, но все равно такая же ошибка

СоединениеАДО.Provider = "ADSDSOObject"; 
	СоединениеАДО.Mode = 3;
	Попытка
		СоединениеАДО.Open("Active Directory Provider");    
	Исключение
		Сообщить("Ошибка при открытии Active Directory Provider: " + ОписаниеОшибки());
		Возврат "не удалось получить пользователя домена";
	КонецПопытки;
Показать


Странно еще написано:
Настройте подключение перед открытием с помощью свойств Подключение ionString, Подключение ionTimeout и Mode. Подключение ionString — это свойство по умолчанию объекта Подключение ion.

И в тот же момент в свойстве mode написано:
Свойство Mode можно задать только при закрытии объекта Connection .
Непонятно тогда какой смысл его задавать при закрытии соединения.
6. nomad_irk 76 17.10.24 08:03 Сейчас в теме
(5) Нашел вот чего, может поможет.
7. user1934472 17.10.24 09:47 Сейчас в теме
(6) Попробую, спасибо за помощь.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот