Через COM-соединение в режиме сервера не проводится документ

1. roman77 332 30.09.14 10:09 Сейчас в теме
Платформа 8.3.5.1119 (хотя на предыдущей тоже не работало)
УТ 11.1.5.16

Код:
ПоступлениеТоваровУслугОбъект.Записать(глCOMCоединение.РежимЗаписиДокумента.Проведение);


В режиме файловой базы работает без проблем. В режиме сервера (1С + MS SQL) не работает:
Ошибка при вызове метода контекста (Записать): Произошла исключительная ситуация (1C:Enterprise 8.3.5.1119): Нарушение прав доступа!


Права у соответствующего пользователя, естественно, имеются: администратор, полные права, базовые права и т.д.

Отмена проведения и запись без проведения работают без проблем.

У кого-нибудь такое было?
SrPomidoro; +1 Ответить
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Salavat 13 30.09.14 10:12 Сейчас в теме
(1) roman77, в журнале регистрации (у подключаемой базы - там где сам документ) - что написано?
3. roman77 332 30.09.14 10:31 Сейчас в теме
Salavat, сначала у меня идёт РежимЗаписиДокумента.Запись (Данные. Добавление), чтобы не потерять документ, а потом попытка проведения.

Сеанс. Начало Нет транзакции
Сеанс. Аутентификация Нет транзакции Имя: ОбменМБ, ...
Данные. Добавление Зафиксирована 30.09.2014 10:23:53 (2816767) Документ. Поступление товаров и услуг ...
Данные. Изменение Отменена 30.09.2014 10:23:54 (2817223) Регистр сведений. Даты поступления товаров организаций
Сеанс. Завершение Нет транзакции


Буду изучать указанный выше регистр...
4. roman77 332 30.09.14 11:15 Сейчас в теме
:( РС Даты поступления товаров организаций не виноват, другие документы тоже не проводятся.
5. Xershi 1484 30.09.14 11:46 Сейчас в теме
(4) roman77, пройдись отладчиком по ком объекту и создай его там же, должно навести на мысли с твоим сервером. И поговори с админом может стоит запрет на работу таким способом.
6. YanTsys 12 30.09.14 13:26 Сейчас в теме
Ну а если банально кэш почистить? или создать новую ссылку на скульную информационную базу?
И проверь какие подписки на события срабатывают, возможно маячки в них что-нибудь расскажут в каком месте идет отказ...
7. YanTsys 12 30.09.14 13:35 Сейчас в теме
И кстати попробуй если используешь ComConnector как работает то же самое с Application возможно 1с пытается тебе что-то вывести на формочке что-бы пожаловаться на тяжелую жизнь а ComConnector не дает таких возможностей...
8. roman77 332 30.09.14 15:42 Сейчас в теме
YanTsys, при работе через V83.Application не получается получить объект документа, не работает метод <СсылкаНаОбъект>.ПолучитьОбъект() - Произошла исключительная ситуация (1C:Enterprise 8.3.5.1119): При подписке ЗаписатьВерсиюОбъекта на событие ПриЗаписи произошла ошибка. Обработчик события не найден.
Смешно, но решение заключается в отказе от V83.Application в пользу V83.COMConnector
9. YanTsys 12 03.10.14 11:15 Сейчас в теме
Что-то у вас прямо ничего не работает... :)
Создайте собственную чистую конфигурацию добавьте один справочник и документ, проверьте как будет работать там...
13. roman77 332 03.10.14 14:03 Сейчас в теме
(9) YanTsys, всё замечательно работает в режиме файловой базы. А на сервере под MS SQL не проводится. До этого я пробовал гонять базу на Postgresql, так там вообще все печально было, глюки просто аццкие. 1С следовало бы честно признать, что 1С Postgresql не поддерживает.
21. asved.ru 36 18.10.14 11:02 Сейчас в теме
(13) roman77,
1С следовало бы честно признать, что 1С Postgresql не поддерживает.


Вам следовало бы честно признать, что Вы не умеете настраивать Postgre.
23. roman77 332 20.10.14 17:38 Сейчас в теме
(21) asved.ru,
Я скачал Postgre с сайта 1С и установил его согласно прилагаемой инструкции. Где компания 1С написала о том, что помимо этого нужно выполнить еще какие-то особенные настройки, о которых я должен сам догадаться? Ссылочку, пожалуйста, в студию.

С Postgre всё работает как надо до первого "сравнить, объединить с конфигурацией из файла". После этого пропадает возможность выгрузить ИБ в *.dt. Не хилая такая подстава, правда? Возможно это был глюко конкретной платформы, но у меня больше нет желания экспериментировать. Для этого уважающие себя софтовые компании держат в своем штате тестировщиков. В 1С видимо решили: зачем платить зарплату специалистам по тестированию, когда клиенты бесплатно на своих рабочих базах выловят все глюки и сообщат о них в службу поддержки :)
10. DJDUH 17 03.10.14 12:17 Сейчас в теме
а разве не так:
глCOMCоединение.ПоступлениеТоваровУслугОбъект.Записать(глCOMCоединение.РежимЗаписиДокумента.Проведение);
?
ybatiaev; Salavat; +2 Ответить
12. roman77 332 03.10.14 13:58 Сейчас в теме
(10) DJDUH, вот так:

ПоступлениеТоваровУслугОбъект = глCOMCоединение.Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
// ..  действия с документом
ПоступлениеТоваровУслугОбъект.Записать(глCOMCоединение.РежимЗаписиДокумента.ОтменаПроведения);


В противном случае, если ПоступлениеТоваровУслугОбъект был бы объектом текущей базы, то тогда вообще бы ничего не работало. А так всё ок за исключением того, что документ не проводится.
11. YanTsys 12 03.10.14 13:56 Сейчас в теме
DJDUH : а разве не так: ...

Думается что не так, жду с нетерпением проверки от автора :)
14. ufedor 58 08.10.14 15:43 Сейчас в теме
Имеем точно такую же проблему на измененной УТ 11.
В журнале запись о доступе к таблице последовательности.
Только запись производилась в контексте той же базы, ДокументОбъект.Записать()
Значит, мы не одиноки )

У вас случайно разделители не включены?
15. roman77 332 08.10.14 17:08 Сейчас в теме
Разделение данных на общих реквизитах?
16. ufedor 58 08.10.14 17:33 Сейчас в теме
да, они самые. общие реквизиты с использованием разделения
17. roman77 332 08.10.14 17:55 Сейчас в теме
18. ufedor 58 17.10.14 15:05 Сейчас в теме
Мы смогли добиться корректной работы с одной хитростью:
если программно очистить записи последовательности перед записью документа, ошибка не возникает.
Костыль, но работает
24. roman77 332 28.10.14 16:14 Сейчас в теме
(18) ufedor, по вашему совету попробовал очищать последовательность, но не помогло.
Код такой:
НаборЗаписейРегистрации = COMCоединение.Последовательности.ПроведениеПоРасчетамСПоставщиками.СоздатьНаборЗаписей();
НаборЗаписейРегистрации.Отбор.Регистратор.Установить(ЗаказПоставщикуCOM);
НаборЗаписейРегистрации.Записать();
19. Serginio 938 17.10.14 15:46 Сейчас в теме
Нужно смотреть условную компиляцию (привелигированный режим)
А также проверь модуль, модули с флажком Внешнее соединение
Сервис/Параметры/Проверка галочка внешнее соединение.
20. ufedor 58 18.10.14 10:57 Сейчас в теме
(19) да нет модули тут ни при чем.
на 1186 даже интерактивно не проводится
22. asved.ru 36 18.10.14 20:40 Сейчас в теме
По существу вопроса: соберите технологический журнал с событиями excp, sdbl и dbmssql и посмотрите, в чем именно проблема.
25. Lumis 30.10.14 09:11 Сейчас в теме
roman77, Вам как-то удалось решить проблему? Столкнулись с такой же проблемой при проведении через ком. Правда ругается на независимый регистр сведений Состояние отгрузки при проведении перемещения в ут11.
26. Alex_E 2355 30.10.14 09:19 Сейчас в теме
С полгода назад была эта же проблема, точно не помню, но проблема была (по памяти, могу ошибаться) в строчках "Сообщить". Т.е. были куски кода:
Попытка 
Док.Записать(Connect.РежимЗаписиДокумента.Проведение);
Исключение
Док.ОбменДанными.Загрузка = Истина;
Док.Записать(Connect.РежимЗаписиДокумента.Запись);
Сообщить("Не удалось провести" + Док.Ссылка);
КонецПопытки;

Закомментарил Сообщить - и документы стали проводиться.
27. Boneman 298 30.10.14 09:23 Сейчас в теме
(26) Alex_E, естественно, откуда док.ссылка взятся в локальной базе.
Ее представление надо было сначала вытащить оттуда, а потом сообщать юзеру.
28. Alex_E 2355 30.10.14 09:29 Сейчас в теме
(27) Boneman, Сказал, же написал код по памяти, обработку искать недосуг. Но проблема была обозначена выше - в файловой базе всё проводилось на ура, а скульной документы не проводились. Танец с бубном показал, что проблема в Сообщить.
29. Alex_E 2355 30.10.14 09:36 Сейчас в теме
Во, нашел обработину:
Функция ПроведениеДокументов(МассивПредставлений, тз = "") Экспорт
	ПодключитьИБ();
	Результат = Истина;
	Для Каждого стр Из МассивПредставлений Цикл
		ДокСсылка = ПолучитьДокументПоПредставлениюCOM(стр);
		Если Не ДокСсылка = Неопределено Тогда
			ДокОбъект = ДокСсылка.ПолучитьОбъект();
			//РежимПроведения = Коннект.РежимЗаписиДокумента.Проведение;
			Попытка
				ДокОбъект.Write(Коннект.РежимЗаписиДокумента.Posting);
				Результат = Истина;
			Исключение
				Сообщить("Не удалось провести " + стр);
				Результат = Ложь;
				Если Не тз = "" Тогда
					НовСтр = тз.Добавить();
					НовСтр.НПП = тз.Количество();
					НовСтр.Документ = стр;
					НовСтр.Контрагент = ДокОбъект.Контрагент.Наименование;
					НовСтр.Договор = ДокОбъект.ДоговорКонтрагента.Наименование;
				КонецЕсли;
			КонецПопытки;
		Иначе
			Сообщить("Не найден документ " + стр);
			Результат = Ложь;
		КонецЕсли;
	КонецЦикла;	
	Коннект = Null;
	Возврат Результат;
КонецФункции
Показать

Не в сообщить была проблема, помню же что была, но оказалось что не в сообщить, приношу искренние извинения......
30. Lumis 30.10.14 10:15 Сейчас в теме
(29) А в чем была проблема не подскажете?
31. Alex_E 2355 30.10.14 10:28 Сейчас в теме
(30) Lumis, Кажется в строке
 ДокОбъект.Write(Коннект.РежимЗаписиДокумента.Posting);
точнее в слове Posting, по русски не проводилось. Я выложил целиком процедуру, которая работает, помню, что не сразу получилось - это последний вариант.
32. Lumis 30.10.14 10:35 Сейчас в теме
БазаУТ.SetPrivilegedMode(True);
	
	Пока ОбходПоОрганизации.Следующий() Цикл
		
		ОбходПоСкладам = ОбходПоОрганизации.Select(БазаУТ.QueryResultIteration.ByGroups);

		Пока ОбходПоСкладам.Следующий() Цикл
			
			ДетальныеЗаписи = ОбходПоСкладам.Select();
			
			НовоеПеремещение = БазаУТ.Документы.ПеремещениеТоваров.CreateDocument();
			НовоеПеремещение.СкладОтправитель = ОбходПоСкладам.Склад;
			НовоеПеремещение.Дата = ТекущаяДата();
			НовоеПеремещение.Организация = ОбходПоСкладам.Организация;
			НовоеПеремещение.СкладПолучатель = БазаУТ.Справочники.Склады.НайтиПоНаименованию("Магазин СЦ Люмис");
			НовоеПеремещение.Ответственный = БазаУТ.Справочники.Пользователи.НайтиПоНаименованию(Строка(ПараметрыСеанса.ТекущийПользователь.Наименование));
			
			Пока ДетальныеЗаписи.Следующий() Цикл
				
				СтрокаПеремещения = НовоеПеремещение.Товары.Add();
				СтрокаПеремещения.Номенклатура = ДетальныеЗаписи.Номенклатура;
				СтрокаПеремещения.Количество = ДетальныеЗаписи.Количество;
				СтрокаПеремещения.КоличествоУпаковок = ДетальныеЗаписи.Количество;
					
			КонецЦикла; 
			
			НовоеПеремещение.Write();
			
			Попытка
				//НовоеПеремещение.ОбменДанными.Загрузка = Истина;
				НовоеПеремещение.Write(БазаУТ.DocumentWriteMode.Posting);
			Исключение
				//НовоеПеремещение.Write();
			    //Сообщить("Не удалось провести перемещение № " + Строка(НовоеПеремещение.Номер) + Строка(ОписаниеОшибки()));
			КонецПопытки;
							
		КонецЦикла;
		
	КонецЦикла;
	
	БазаУТ.SetPrivilegedMode(false);
Показать


У меня вот такой кусок. Записывается, но не проводится. А если эти же перемещения проводить в базе интерактивно, то все проводится.
33. Alex_E 2355 30.10.14 10:42 Сейчас в теме
(32) Lumis, Я помнится нашёл затык в отладчике, как не помню, но можно попробовать убрать попытку, и посмотреть, что вылезет в ошибке. Кстати отличие - Вы устанавливаете привилигированный режим, я этим не заморачивался - проводится и так....
34. Lumis 30.10.14 10:45 Сейчас в теме
Ошибка при вызове метода контекста (Write): Произошла исключительная ситуация (1C:Enterprise 8.3.4.408): Нарушение прав доступа!

Вот такой текст ошибки.
35. Alex_E 2355 30.10.14 10:48 Сейчас в теме
(34) Lumis, На каком Write ошибка? На первом или на втором? На другой платформе попробовать никак?
36. Lumis 30.10.14 10:54 Сейчас в теме
(34)Alex_E, на втором. Сейчас буду пробовать различные варианты.
37. roman77 332 30.10.14 11:40 Сейчас в теме
Поскольку всё упирается в права, то попробовал такой код:

		COMCоединение.УстановитьБезопасныйРежим(Ложь);
		COMCоединение.УстановитьПривилегированныйРежим(Истина);
		Попытка
			ЗаказПоставщикуCOMОбъект.Записать(COMCоединение.РежимЗаписиДокумента.Проведение); 
		Исключение
			Сообщить ("...");
		КонецПопытки;
		COMCоединение.УстановитьПривилегированныйРежим(Ложь);		
		COMCоединение.УстановитьБезопасныйРежим(Истина);
Показать


Не помогло.
38. Lumis 30.10.14 11:49 Сейчас в теме
(37)roman77, Да вот и мне привилегированный режим не помог. Попробовала подключить технологический журнал, туда записались исключения. Но что с этим делать дальше, я не знаю
39. roman77 332 30.10.14 12:04 Сейчас в теме
Обойти-то проблему можно - организовать на приемной стороне регламентное задание, которое будет проводить документы согласно командам, поступающим из передающей базы. Но неприятный осадок всё равно останется.
40. strachkov 30.10.14 17:27 Сейчас в теме
(39) roman77, а документ записывается? У меня была тоже проблема что не проводился но записывался. Если записывается - то потом "ручками" проводится?
42. roman77 332 31.10.14 09:51 Сейчас в теме
(40) strachkov, записывается и ручками проводится без проблем.
41. DrZombi 290 31.10.14 07:24 Сейчас в теме
Не взлетит, надо права на внешнее соединение :)
43. ufedor 58 31.10.14 10:56 Сейчас в теме
Всем страдающим от подобной ошибки, информация от 1с:
Ошибку 30012553 уже исправили в версии 8.3.6.
Исправление по ошибке 30012553 перенесли в версию 8.3.5.1255 от 27.10.2014.
------
Забавно, информация об ошибках на сайте у них обновляется с задержкой.
44. SemenovaMarinaV 31.10.14 16:51 Сейчас в теме
У меня похожая проблема.
Хочу записать из 8.3 в 8.2
Запуталась
- через сomcoonector 8.2 или 8.3
- тоже с режимом записи
45. SemenovaMarinaV 31.10.14 17:07 Сейчас в теме
Не совсем права
-с 3,0 управляемого приложения на 3,0 обычное
При записи выдает сообщение см.файл
Прикрепленные файлы:
Doc1.docx
46. SemenovaMarinaV 31.10.14 17:07 Сейчас в теме
Не совсем права
-с 3,0 управляемого приложения на 3,0 обычное
При записи выдает сообщение см.файл
Прикрепленные файлы:
Doc1.docx
47. SemenovaMarinaV 31.10.14 17:08 Сейчас в теме
С правами проблем нет
48. Lumis 05.11.14 09:31 Сейчас в теме
Проблема решилась. Оказалось, что проблема действительно в правах. Не было права на изменение на Последовательность Партии товаров организации. Почему этого права не требуется при проведении из Предприятия, я так и не поняла.
vital1c; Volchock; turbo232; +3 Ответить
49. cargobird 306 01.02.16 15:39 Сейчас в теме
Реализация товаров и услуг не записывалась...
Посчитал количество подписок на событие - оказалось 60.
Перебрал все последовательно, отключая по одной - нашел единственную, которая не давала записать документ.
Мешающий в этом случае кусок кода поставил в скобки "Если НЕ ВнешнееСоединение Тогда" и заработало...
Кому интересно - обработка для вывода подписок на событие по типу объекта - тип объекта задается строкой (напр. "ДокументОбъект.РеализацияТоваровУслуг". Приложение обычное.
Прикрепленные файлы:
АнализПодписок.epf
51. Xershi 1484 08.03.18 19:31 Сейчас в теме
(49) сейчас в EDT писали хорошо работать с подписками.
50. GalaPol 08.03.18 16:22 Сейчас в теме
Нужно просмотреть все подписки на события, в которых Событие "ПередЗаписью" или "ПриЗаписи" и проверить что у модуля обработчика проставлено свойство "Внешнее соединение".
52. Jullis 23.10.19 13:19 Сейчас в теме
Здравствуйте, можете подсказать в чем, может быть, поблема.Через COM-соединение в режиме сервера не записывается документ, ссылается на ошибку "Произошла исключительная ситуация (1C:Enterprise 8.3.15.1534): Ошибка при выполнении обработчика - 'ПередЗаписью'
{Документ.СчетНаОплату.МодульОбъекта(75)}: Ошибка при вызове метода контекста (ПолучитьУникальныйИдентификаторПлатежа)
Попытка передачи с клиента на сервер мутабельного значения 1-го параметра метода ПолучитьУникальныйИдентификаторПлатежа ()." . В методе ПолучитьУникальныйИдентификаторПлатежа (), есть параметр ЭтотОбъект,выглядит так ПолучитьУникальныйИдентификаторПлатежа (ЭтотОбъект). Что это может быть?Может кто то с подобным сталкивался?
53. cargobird 306 23.10.19 14:11 Сейчас в теме
(52) ПолучитьУникальныйИдентификаторПлатежа вероятно это метод текущей базы, куда передается объект из другой базы.
То есть надо обращаться к методу также через COM-соединение.
Если я ошибаюсь - напишите, пожалуйста, этот кусок кода.
54. Jullis 23.10.19 15:39 Сейчас в теме
(53)Кусок базы в которой создаю документ из другой. Эта процедура ПередЗаписью, в модуле объекта.

Если НЕ ЗначениеЗаполнено(ИдентификаторПлатежа) Тогда
ИдентификаторПлатежа = РасчетыСлужебный.ПолучитьУникальныйИдентификаторПлатежа(ЭтотОбъект);
КонецЕсли;
55. RustamZz 23.10.19 16:18 Сейчас в теме
(54) У модуля РасчетыСлужебный какие галки стоят? ЭтотОбъект какой тип имеет?
56. Jullis 23.10.19 16:42 Сейчас в теме
(55)У модуля РасчетыСлужебный галочки Клиент,Сервер,Вызов сервера. ЭтотОбъект должен быть ДокументОбъект. Но я не могу с помощью отладчика зайти в процедуру ПерезЗаписью, и не могу посмотреть какой объект передает com соединение
57. RustamZz 23.10.19 16:57 Сейчас в теме
(56) Открываете конфигуратор целевой базы ставите автоматически подключать внешние соединения точку останова в нужном месте и отлаживаете. Я так загрузку через com-объекты из Аксапты дебажил.

Из внешнего соединения переключается на сервер в этом вызове. Есть возможность поставить нужную галку на модуле?
58. Jullis 23.10.19 17:01 Сейчас в теме
(57)Отладка не останавливается на точке останова. Возможность есть, нужна галочка - эта Внешнее соединение?
59. RustamZz 23.10.19 17:55 Сейчас в теме
(58) Да. Там нужно еще файлик положить в папку с платформой, поищу какой напишу.
61. Jullis 24.10.19 08:53 Сейчас в теме
(60)Если установить галочку Внешнее соединение ошибка "Метод объекта не обнаружен (ПолучитьУникальныйИдентификаторПлатежа)". Отладку сейчас проверю
60. RustamZz 24.10.19 08:46 Сейчас в теме
(58)
Отладка внешнего соединения
Для указания внешнему соединению необходимости запуска в отладочном режиме используются настройки, размещенные в xml-файле comcntrcfg.xml, который расположен в каталоге конфигурационных файлов системы «1С:Предприятие».
Пример файла comcntrcfg.xml:

<config xmlns="http://v8.1c.ru/v8/comcntrcfg">
    <debugconfig debug="true" protocol="tcp" debuggerURL="tcp://localhost:1560"/>
</config>
62. Jullis 24.10.19 09:31 Сейчас в теме
(60)Отладка заработала, спасибо большое!
63. RustamZz 24.10.19 11:39 Сейчас в теме
(62) В модуле нет строк #Если Сервер Тогда
64. Jullis 24.10.19 11:51 Сейчас в теме
(63)В модуле из который вызывают функцию ПолучитьУникальныйИдентификаторПлатежа ,есть" #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда".
А в модуле где находится функция ПолучитьУникальныйИдентификаторПлатежа, там ничего нет
65. Jullis 25.10.19 11:21 Сейчас в теме
Решение нашлось: установила галочки "Внешнее соединение" в методах, на которых ссылались ошибки
Оставьте свое сообщение

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