Имя: Пароль:
1C
1С v8
Проведение документа через COM соединение.
0 rosveta
 
30.10.14
11:11
Столкнулась с очередной проблемой при работе с COM. Моя обработка подключается из розницы к УТ 11 и в УТ  я создаю перемещение и пытаюсь его провести. Перемещение без проблем создается, без проблем записывается. Но при проведении документа возникает ошибка.

"Ошибка при вызове метода контекста (Write): Произошла исключительная ситуация (1C:Enterprise 8.3.4.408): Нарушение прав доступа! "

Сразу скажу, что с правами пользователя это не связано. У пользователя права администратора. Если я захожу в ут и провожу там эти перемещения под тем же пользователем, то все без проблем проводится. Документ проводится как из формы так и из списка документов (то есть заполнение каких-то реквизитов при открытии формы тоже отпадает).  На другом форуме обсуждалась такая же проблема. При том там опытным путем выяснили, что такое происходит именно на скл-ных базах, в файловых таких проблем не возникает. Вот часть кода.

БазаУТ.SetPrivilegedMode(True);
    
    Пока ОбходПоОрганизации.Следующий() Цикл
        
        ОбходПоСкладам = ОбходПоОрганизации.Select(БазаУТ.QueryResultIteration.ByGroups);

        Пока ОбходПоСкладам.Следующий() Цикл
            
            ДетальныеЗаписи = ОбходПоСкладам.Select();
            
            НовоеПеремещение = БазаУТ.Документы.ПеремещениеТоваров.CreateDocument();
            НовоеПеремещение.СкладОтправитель = ОбходПоСкладам.Склад;
            НовоеПеремещение.Дата = ТекущаяДата();
            НовоеПеремещение.Организация = ОбходПоСкладам.Организация;
            НовоеПеремещение.СкладПолучатель = БазаУТ.Справочники.Склады.НайтиПоНаименованию("Магазин СЦ Люмис");
            НовоеПеремещение.Ответственный = БазаУТ.Справочники.Пользователи.НайтиПоНаименованию(Строка(ПараметрыСеанса.ТекущийПользователь.Наименование));
            
            Пока ДетальныеЗаписи.Следующий() Цикл
                
                СтрокаПеремещения = НовоеПеремещение.Товары.Add();
                СтрокаПеремещения.Номенклатура = ДетальныеЗаписи.Номенклатура;
                СтрокаПеремещения.Количество = ДетальныеЗаписи.Количество;
                СтрокаПеремещения.КоличествоУпаковок = ДетальныеЗаписи.Количество;
                    
            КонецЦикла;
            
            НовоеПеремещение.Write();
            
            Попытка
                //НовоеПеремещение.ОбменДанными.Загрузка = Истина;
                НовоеПеремещение.Write(БазаУТ.DocumentWriteMode.Posting);
            Исключение
                //НовоеПеремещение.Write();
                //Сообщить("Не удалось провести перемещение № " + Строка(НовоеПеремещение.Номер) + Строка(ОписаниеОшибки()));
            КонецПопытки;
                            
        КонецЦикла;
        
    КонецЦикла;
    
    БазаУТ.SetPrivilegedMode(false);
1 Cube
 
30.10.14
11:14
(0) У тебя при проведении документа идет обращение к куче общих модулей. И, возможно, у кого-то из этих модулей нет галочки "Внешнее соединение"...
2 Cube
 
30.10.14
11:15
(1) Хотя не, в таком случае была бы ошибка "Процедура с указанным именем не обнаружена"....
3 Cube
 
30.10.14
11:17
А ОписаниеОшибки() не содержит ничего интересного?
4 rosveta
 
30.10.14
11:28
Описание ошибки содержит Ошибка при вызове метода контекста (Write): Произошла исключительная ситуация (1C:Enterprise 8.3.4.408): Нарушение прав доступа!

Но это наверно идет из розницы описание ошибки, я пыталась получить описание ошибки из торговли, написав вот так

//Сообщить("Не удалось провести перемещение № " + Строка(НовоеПеремещение.Номер) + Строка(БазаУТ.ОписаниеОшибки()));
Но не вышло. Сейчас попробую ОписаниеОшибки() заменить на англоязычный код.
5 Fish
 
30.10.14
11:32
А что написано в ЖР? На какой конкретно объект нет прав?
6 rosveta
 
30.10.14
11:33
(5), В ЖР Отмена происходит при записи в независимый регистр сведений "Состояние отгрузки"
7 Cube
 
30.10.14
11:49
(4) А Перемещение твое в УТ, случайно, не обработано напильником? Ну, там, движения по нетиповому регистру может добавлены в подписке на событие?...
8 rosveta
 
30.10.14
11:54
Само перемещение не доработано. Но  в базе есть внешний журнал регистрации, который на данные момент отключен. Поэтому есть подписка на событие, где источником являются все документы объекты.
9 Cube
 
30.10.14
12:09
(8) Попробуй в этой подписке в источник поставить какой-нибудь левый документ (один документ, а не все документы). Базу сохрани, обнови и проверь проведение.
10 rosveta
 
30.10.14
16:02
(9), Попробовала. Тоже не помогло.
11 Defender aka LINN
 
30.10.14
16:43
(0) "Сразу скажу, что с правами пользователя это не связано" - скажи это громко, четко, 2 раза в порт сетевой карты сервера.
12 Ник второй
 
30.10.14
16:49
(0) Прав доступа не хватает.
13 rosveta
 
30.10.14
17:07
Я имела в виду права пользователя 1с на регистры и прочие объекты конфигурации, возможно, я что-то путаю. Скажите как решить эту проблему? Где какие права можно посмотреть или настроить?
14 Defender aka LINN
 
30.10.14
17:08
(13) Как всегда: позвать программиста
15 Михаил Козлов
 
30.10.14
17:09
Попробуйте не через коннектор, а через приложение.
16 rosveta
 
30.10.14
17:18
(14) я им и являюсь
17 Defender aka LINN
 
30.10.14
17:20
(16) Спасибо, давно так не смеялся
18 Serginio1
 
30.10.14
17:31
19 rosveta
 
30.10.14
17:32
(18), да
20 Alamo-10
 
30.10.14
17:36
(13) Ну судя по контексту сообщения в (11), человек имеет ввиду какие-то другие права, но, видимо, делиться своими познаниями с широким кругом лиц он не намерен.

Поддержу ТС, тоже сталкивался с такой проблемой, хотелось бы найти какое-либо адекватное решение. Хотя бы направление, в котором нужно копать
21 kumena
 
30.10.14
19:21
в файловом варианте не испытывал, но у меня была такая же проблема когда я обмена, когда я проводил документ с подпиской через COM универсальной обработкой. как только подписку убирал - все хорошо. и когда грузил обработкой сам тоже хорошо - но в регл. задании была ошибка.
я так понял что в файловом режиме все хорошо потому что нет "сервера".
в итоге решил отказаться от подписки.
22 kumena
 
30.10.14
19:25
но ошибка была другая, не права. я бы на вашем месте попробовал записывать с полными правами, для проверки что это права.
23 slavikzzz
 
30.10.14
20:15
(22) была подобная ситуация с подпиской на событие. Использовал в ней конструкцию типа Вопрос() - все работало нормально, пока не начал настраивать обмен РИБ по расписанию. Во внешнем соединении данная конструкция недоступна - что выдавало ошибку.
Обошел проблему с помощью #Если Клиент Тогда
24 Cube
 
31.10.14
05:29
(10) Тогда в таких ситуациях я делаю так:
1). Закомментирую всю процедуру ОбработкаПроведения() у этого документа.
2.1). Если ошибка ушла, то начинаю раскомментировать блоками. Нахожу проблемный участок, и понимаю причину.
2.2). Если ошибка не ушла, то удаляю все подписки на события, т.к. дело в них. И проблема проходит. Затем по одной начинаю восстанавливать подписки и ищу проблемную подписку.
25 Serginio1
 
31.10.14
08:58
(24) достаточно
Проверь модуль, модули с флажком Внешнее соединение
Сервис/Параметры/Проверка галочка внешнее соединение.
26 Serginio1
 
31.10.14
11:55
27 rosveta
 
03.11.14
00:22
Спасибо. Попробую тогда еще на другой платформе это дело произвести.
28 rosveta
 
05.11.14
09:26
Проблема решилась. Воспользовалась советом (24). Оказалось, что проблема действительно в правах.  Не было права на изменение на Последовательность Партии товаров организации. Почему этого права не требуется при проведении из Предприятия, я так и не поняла.
29 Cube
 
05.11.14
09:36
(28) Удачное фото неизбежно приводит к качественным ответам =))
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший