Имя: Пароль:
1C
1С v8
Проблема с обменом между узлами РБД
0 vovus
 
07.05.13
11:15
Неожиданно сломался обмен в РБД. Выполняю обмен под полными правами. Возникает ошибка: "Ошибка при вызове метода контекста (ЗаписатьИзменения): У пользователя недостаточно прав на исполнение операции над базой данных."
Делаю трейсинг - дейстивтельно вылетает именно на строке кода ЗаписатьИзменения(ЗаписьСообщения, КоличествоЭлементовТранзакции), и ни на какой другой.
ОК, думаю я, видимо, нет прав на какой-то объект. Через обработку "Регистрация изменений для обмена" выясняю, что зарегистрированы изменения только для веток: Справочники, документы, регистры сведений, регистры накопления. Лезу в роль, назначенную пользователю. Для справочников, объектов, регистров сведений и регистров накопления стоят все галки кроме интерактивного удаления (эта галка - стоит, на сером фоне, т.е. для каких-то справочников и документов она стоит, для каких -то нет). Для планов обмена стоят все галки без исключений.
Ладно, думаю я, может что-то при записи происходит. Ищу подписки на события: в этой конфе ни одной вообще подписки нет.
Ладно, хотя бы залезу в процедуру ПриОтправкеДанныхГлавному(). Но в общем что я там должен увидеть? Ничего подозрительного вроде нет, нормальный некосячный код. Трейсить эту процедуру столько раз, сколько объектов зарегистрировано для обмена, я, конечно, нем могу, хотя вечером, когда выгоним всех пользователей, могу повесить конструкцию попытка-исключение, включающую весь текст этой процедуры. И таким образом локализовать проблему. Это пока единственное что приходит в голову.
Где копать еще, кто знает?
1 Trotter
 
07.05.13
11:24
Может быть дело в винде ? С правами на паку... ? Под другим пользователем тоже не фурычит ?
2 vovus
 
07.05.13
11:40
Может, но предыдущий код:

ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ИмяФайла);
ЗаписьXML.ЗаписатьОбъявлениеXML();
// Создаем новое сообщение
ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
Попытка ЗаписьСообщения.НачатьЗапись(ЗаписьXML, Ссылка);
Исключение ВызватьИсключение ОписаниеОшибки();
КонецПопытки;

выполняется нормально. Т.е. файл создается во временной папке, и в него пишется шапка xml. Теоретически, конечно, может стоят квота на размер файла, но 1с-ка серверная, и файл создается не под моим пользователем. ОС - винда сервер 2003, без админа я боюсь там не вспомню, где эта хрень устанавливается, но мы это попробуем выяснить.

Но вообще мне кажется, что если бы была проблема в винде, то текст сообщения тогда был бы виндовый. Мне кажется, проблема именно в 1с-ке.
3 Галахад
 
гуру
07.05.13
11:44
Гм. А дата запрета есть?
4 DimGan
 
07.05.13
11:45
Раз обмен сломался неожиданно, вспоминать, что поменялось с момента, когда все работало. Например, во многих конфижках есть дата запрета и константа, можно ли ее менять пользователю с полными правами. Т.к. ни платформа, ни конфа не озвучены, остается только гадать, что вы там натворили...
5 vovus
 
14.05.13
10:11
Разобрался, да здравствует логика, когито эрго сум!
Если у кого будет похожая проблема - может поможет мой опыт))
Ошибку вычислил, обработкой "Регистрация объектов для обмена".
Создал тестовую базу и
1. последовательно отменил регистрацию для всех зарегистрированных объектов каждого типа, для которых были зарегистрированы изменения: справочники, документы, регистры сведений, регистры накопления. Последними оставались документы, когда удалил их регистрацию, обмен выгрузился.
2. нажав кнопку "Зарегистрировать по одному" получил то же сообщение о недостаке прав. Строка кода, на которую ругалась система, выполняла запрос. Дальше включил отладку и режим остановки по ошибке и увидел, что запрос обращался к одному из справочников. Проверив его в роли доступа, увидел, что стоит ограничение на чтение по полям. Через поиск ссылок нашел и документ, в котором был соответствующий реквизит.

Очистив регистрацию и для этих документов, и для справочника, выполнил спокойно обмен.

Итог: системе надо верить, особенно когда русским языком выводит текст ошибки. Говорит, что нет прав, значит нет прав ))
6 vovus
 
14.05.13
10:13
Да, платформу и конфу не озвучивал специально, т.к. речь идет именно о механизмах платформы и их понимании ))
7 wise
 
14.05.13
10:16
(6)вывод: обмен ДОЛЖЕН совершаться пользователем с правами на ВСЁ !!
8 vovus
 
14.05.13
10:23
Наверное, так было бы проще, но в данном случае даже у пользователя с полными правами стояло вот такое ограничение. Учитывая, что документ назывался ЭлектронноеПисьмо, думаю, это правильно ))
9 Maxus43
 
14.05.13
10:27
(8) не правильно, полные они полные и есть. То что админ почтового сервака может смотреть любую почту тебя не смущает?
Каждой уборщице полные давать нельзя просто, даже глав буху.
10 Maxus43
 
14.05.13
10:39
+ в крайняк - обмен в привелигированном модуле идти должен, что так и есть в УПП например
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.