![]() |
![]() |
![]() |
|
Текущий объект Recordset не поддерживает обновление. Отправка через com в AD | ☑ | ||
---|---|---|---|---|
0
Lazzz
17.10.24
✎
07:50
|
Необходимо в 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 = "SELECT ADsPath,userAccountControl,displayName,sAMAccountName,Mail,givenName,sn,telephoneNumber FROM '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(); |
|||
1
Волшебник
17.10.24
✎
07:49
|
КомандаАДО = "UPDATE ..."
|
|||
2
osa1C
17.10.24
✎
09:08
|
(1) Станислав, как можно форматировать программный код как в (0)? Для меня есть такая возможность, или это только для модераторов?
|
|||
3
Мультук
17.10.24
✎
09:13
|
(2)
см рис
|
|||
4
Волшебник
17.10.24
✎
09:36
|
(2) тег PRE
|
|||
5
osa1C
17.10.24
✎
09:47
|
(3) (4) благодарю
|
|||
6
Lazzz
17.10.24
✎
09:53
|
(1) Не очень понял как это использовать. Это свойство CommandText Должно быть = "Update ..." или что то другое?
|
|||
7
Волшебник
17.10.24
✎
10:00
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |