Как через COM найти документ по GUID , и затем пометить его на удаление через COM

1. SvetaBr 03.02.19 00:23 Сейчас в теме
Подскажите пожалуйста с небольшим примером , как удалить документ через COM соединение

Есть GUID документа, нужно через COM найти его и пометить на удаление
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. alxarz 31 03.02.19 04:10 Сейчас в теме
(1) а создать документ через COM соединение получилось? Ну или просто прочитать его?
4. SvetaBr 03.02.19 11:16 Сейчас в теме
(2) прочитать получилось, создавать не пробовала


		ComConnect  = Новый COMОбъект("V83.Comconnector");
		СтрПодключение = "Srvr="+Сервер+";Ref="+База+";Usr="+Логин+";Pwd="+Пароль+";
		Соединение = ComConnector.Connect(СтрПодключение );

Докум = Соединение.Документы.ВнутреннееПотреблениеТоваров; 

или

Запрос = Соединение.NewObject("Запрос");


а как удалять ?

Показать
3. Dmitrij-2 45 03.02.19 09:00 Сейчас в теме
(1) Подключаетесь к базе через com, находите нужный документ, получаете объект документа, удаляете.
5. SvetaBr 03.02.19 11:25 Сейчас в теме
(3) Спасибо,а пример кода можете написать?
		ComConnect  = Новый COMОбъект("V83.Comconnector");
		СтрПодключение = "Srvr="+Сервер+";Ref="+База+";Usr="+Логин+";Pwd="+Пароль+";
		Соединение = ComConnector.Connect(СтрПодключение );
Докум = Соединение.Документы.ВнутреннееПотреблениеТоваров; 

//как то так видимо ?

Объект = Соединение.Документы.ПолучитьОбъект();
Объект.УстановитьПометкуНаУдаление(Истина); 
Показать
6. alxarz 31 03.02.19 12:11 Сейчас в теме
(5)
Объект = Соединение.Документы.ПолучитьОбъект();
ПолучитьОбъект() нужно применять к найденной ссылке на документ. Где код, который находит ссылку на конкретный документ?
7. SvetaBr 03.02.19 13:58 Сейчас в теме
(6) да , конечно сначала надо найти

НайденныйДок = Соединение.Документы.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор("5accfd89-3247-4862-ab79-e9aced2515")));

НайденныйДок.УстановитьПометкуНаУдаление(Истина);

правильно ?
8. Xershi 1474 03.02.19 14:06 Сейчас в теме
(7) когда получили ссылку смотрите справку по документссылка.имядокумента.
Там будет метод получить объект. Далее смотрим справку документобъект.имядокумента.
10. SvetaBr 03.02.19 18:48 Сейчас в теме
(8)

У меня есть только GUID документа
мне надо по COM найти документ в другой базе
и пометить его на удаление.

я просто прошу пример кода как это сделать.
14. Xershi 1474 03.02.19 20:07 Сейчас в теме
(10) как говорится лучше дать удочку и научить ловить рыбу. Чем писать за вас код.
Тем более у вас он и так был.
Только поправить надо было!
9. alxarz 31 03.02.19 18:16 Сейчас в теме
(7)
Номенклатура.ПолучитьСсылку
а зачем получать ссылку на номенклатуру? В предыдущем сообщении писал:
(6)
ПолучитьОбъект() нужно применять к найденной ссылке на документ.
где у вас в коде эта функция до вызова метода УстановитьПометкуНаУдаление()
11. SvetaBr 03.02.19 18:49 Сейчас в теме
(9) а зачем получать ссылку на номенклатуру? В предыдущем сообщении писал:

просто ищу примеры в интернете - это как пример кода

У меня есть только GUID документа
мне надо по COM найти документ в другой базе
и пометить его на удаление.


Вы можете дать пример кода!?
12. alxarz 31 03.02.19 19:20 Сейчас в теме
(11)
Вы можете дать пример кода!?

доссом = connection.Документы.РеализацияТоваровУслуг.НайтиПоКоду(НужныйНомер,НужнаяДата).ПолучитьОбъект();
доссом.УстановитьПометкуУдаления(true);
13. SvetaBr 03.02.19 19:31 Сейчас в теме
(12) Спасибо Вам большое!
похоже это то что надо
15. antz 03.02.19 20:51 Сейчас в теме
(13) если есть только guid, то поможет вот это:

Ссылка = connection.Документы.РеализацияТоваровУслуг.ПолучитьСсылку(Соединение.NewObject("УникальныйИдентификатор", GUID))
wauri; ArchyAP; Izumov; _Vovik; mlv84; BAMPER; unknown181538; bpsz_pvn; Invodev; Dilovar9; herfis; SvetaBr; +12 Ответить
16. SvetaBr 04.02.19 00:14 Сейчас в теме
(15)
Ищет , но не могу поставить пометку на удаление
23. herfis 498 04.02.19 10:09 Сейчас в теме
(16) Так это вы только ссылку получили. А пометку удаления можно установить только для объекта.
Просто добавьте строчку
Ссылка = connection.Документы.РеализацияТоваровУслуг.ПолучитьСсылку(Соединение.NewObject("УникальныйИдентификатор", GUID));
Ссылка.ПолучитьОбъект().УстановитьПометкуУдаления(Истина);
17. SvetaBr 04.02.19 00:20 Сейчас в теме
(12) Увы

СсылкаНаДок=Неопределено;
Str1 =  "СсылкаНаДок = Соединение.Документы."+Строка(УТБП.Документ)+".ПолучитьСсылку(Соединение.NewObject(""УникальныйИдентификатор"","""+УТБП.GUID_УТ+"""))";
Выполнить(Str1);
ОБ = СсылкаНаДок.ПолучитьОбъект();  // <---- происходит ошибка
ОБ.УстановитьПометкуУдаления(true);	
19. alxarz 31 04.02.19 08:15 Сейчас в теме
(17)
// <---- происходит ошибка
значит документ не нашелся?
20. SvetaBr 04.02.19 08:19 Сейчас в теме
(19)
документ находится!
Str1 = "СсылкаНаДок = Соединение.Документы."+Строка(УТБП.Документ)+".ПолучитьСсылку(Соединение.NewObject(""УникальныйИдентификатор"","""+УТБП.GUID_УТ+"""))";
Выполнить(Str1);

после выполнить в отладчике вижу СсылкаНаДок

ошибка происходит тут

ОБ = СсылкаНаДок.ПолучитьОбъект(); // <---- происходит ошибка
18. acanta 04.02.19 00:53 Сейчас в теме
Например так
ОлеСсылкаНаДок=Неопределено;
ОлеГУИД = Соединение.NewObject("УникальныйИдентификатор", GUID);
ОлеЖурналДокументов =Соединение.Документы["ВнутреннееПотреблениеТоваров"];
ОлеСсылкаНаДок = ОлеЖурналДокументов.ПолучитьСсылку(ОлеГуид);
Если ОлеСсылкаНаДок.Пустая() Тогда
Иначе
    ОлеОБ = ОлеСсылкаНаДок.ПолучитьОбъект();
    ОлеОБ.УстановитьПометкуУдаления(true);
КонецЕсли;
Показать
21. SvetaBr 04.02.19 09:06 Сейчас в теме
(18)
ОлеОБ = ОлеСсылкаНаДок.ПолучитьОбъект();


на этой строке происходит ошибка
действительно технически возможно в режиме COM получать ссылку на объект ?
24. alexgood 7 04.02.19 13:01 Сейчас в теме
(21)
Код от (18) должен работать. Может он интерактивно открыт у вас кем-то в базе к которой подключаетесь?
25. SvetaBr 04.02.19 18:14 Сейчас в теме
(24) база тестовая там никого нет
22. Alex_E 2353 04.02.19 10:03 Сейчас в теме
Все нужные примеры сможете найти тут https://infostart.ru/public/754120/
Если тут напряжно то вот так можно получить ссылку любого объекта по ГУИД (Коннект - переменная с COM соединением):
Функция СОМПолучитьСсылкуПоГУИД(ГУИД,  Менеджер = Неопределено)//НазваниеДокумента, ГУИД)
	Если Не ЗначениеЗаполнено(ГУИД) Тогда
		Возврат Неопределено;
	КонецЕсли;
	// Ссылка будет установлена в переменную СсылкаНаОбъектГуид
	УникальныйИд = Коннект.NewObject("UUID", СокрЛП(ГУИД));
	
	Если Менеджер = Неопределено Тогда
		
		// все объекты по которым можно получить ссылку
		СсылкаНаОбъектГуид = ПолучитьСсылкуНоМенеджеруОбъекта(Коннект.Справочники,УникальныйИд);
		Если СсылкаНаОбъектГуид <> Неопределено Тогда
			Возврат СсылкаНаОбъектГуид;
		КонецЕсли;
		
		СсылкаНаОбъектГуид = ПолучитьСсылкуНоМенеджеруОбъекта(Коннект.Документы,УникальныйИд);
		Если СсылкаНаОбъектГуид <> Неопределено Тогда
			Возврат СсылкаНаОбъектГуид;
		КонецЕсли;
		
		СсылкаНаОбъектГуид = ПолучитьСсылкуНоМенеджеруОбъекта(Коннект.ПланыВидовХарактеристик,УникальныйИд);
		Если СсылкаНаОбъектГуид <> Неопределено Тогда
			Возврат СсылкаНаОбъектГуид;
		КонецЕсли;
		
		//План счетов в УТ отсутствует, но пусть будет, где нить пригодится
		СсылкаНаОбъектГуид = ПолучитьСсылкуНоМенеджеруОбъекта(Коннект.ПланыСчетов,УникальныйИд);
		Если СсылкаНаОбъектГуид <> Неопределено Тогда
			Возврат СсылкаНаОбъектГуид;
		КонецЕсли;
		
		
		СсылкаНаОбъектГуид = ПолучитьСсылкуНоМенеджеруОбъекта(Коннект.ПланыОбмена,УникальныйИд);
		Если СсылкаНаОбъектГуид <> Неопределено Тогда
			Возврат СсылкаНаОбъектГуид;
		КонецЕсли;
		
		СсылкаНаОбъектГуид = ПолучитьСсылкуНоМенеджеруОбъекта(Коннект.БизнесПроцессы,УникальныйИд);
		Если СсылкаНаОбъектГуид <> Неопределено Тогда
			Возврат СсылкаНаОбъектГуид;
		КонецЕсли;
		
		СсылкаНаОбъектГуид = ПолучитьСсылкуНоМенеджеруОбъекта(Коннект.Задачи,УникальныйИд);
		Если СсылкаНаОбъектГуид <> Неопределено Тогда
			Возврат СсылкаНаОбъектГуид;
		КонецЕсли;
	Иначе
		СсылкаНаОбъектГуид = ПолучитьСсылкуНоМенеджеруОбъекта(Менеджер,УникальныйИд, Истина);
		Если СсылкаНаОбъектГуид <> Неопределено Тогда
			Возврат СсылкаНаОбъектГуид;
		КонецЕсли;
		
	КонецЕсли;
	Возврат Неопределено;
	
КонецФункции
Показать


Получить объект по ссылке лучше так:
ДокCOM = СсылкаCOM.GetObject();
26. SvetaBr 04.02.19 18:14 Сейчас в теме
27. Alex_E 2353 04.02.19 18:15 Сейчас в теме
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)