Открыть документ из e-mail

1. codename-s 27.07.15 18:26 Сейчас в теме
При проведении документа генерируется и отправляется на нужный e-mail ссылка вида http://localhost/tracker/ru/?C=c40bb875-29e7-11e5-8421-f82fa8f5e448 где C это ПараметрЗапуска в который передается УникальныйИдентификатор этого документа.

И тут-то я втупил... этот параметр нигде не виден кроме МодуляУправляемогоПриложения. и как его оттуда выудить???

ах да забыл, по УникальномуИдентификатору нужно открыть документ...
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. spacecraft 27.07.15 19:18 Сейчас в теме
(1) codename-s, Сохранить в глобальной переменной. Открывать сразу из модуля. Не вариант?
Помимо ГУИД нужно еще знать тип документа.
3. codename-s 28.07.15 01:07 Сейчас в теме
Тип документа всегда будет один.

Открывать сразу из модуля

Если ЗначениеЗаполнено(ПараметрЗапуска) тогда 
   Уид = Новый УникальныйИдентификатор(ВернутьПраметрЗапуска());
   МойДок = Документы.МойДок.ПолучитьСсылку(Уид);
   МойДок.ПолучитьФорму("ФормаДокумента").Открыть();			
   КонецЕсли; 


Переменная не определена Документы (((

Сохранить в глобальной переменной
Это мысль, вчера просто уже глаза был замылены... а кто потом обработает эту переменную?
4. dj_serega 392 28.07.15 07:54 Сейчас в теме
(3) codename-s,
1. Документы, Справочники, Запросы есть только &НаСервере или &НаСервереБезКонтекста. Видимо процедура то клиентская.
2. Если нужно открыть форму, тогда лучше воспользоваться методом ОткрытьФорму(), а не получать ее.
3. Вот так должно работать.
&НаКлиенте
Процедура Что-тоКлиентское
	
	Если ЗначениеЗаполнено(ПараметрЗапуска) тогда 
		
		КлючДокумента = ПолучитьСсылкуНаДокумент(ВернутьПраметрЗапуска());
		
		ПараметрыФормы = Новый Структура;
		ПараметрыФормы.Вставить("Ключ", КлючДокумента);
		
		ОткрытьФорму("Документ.ТвойДокумент.ФормаОбъекта", ПараметрыФормы);
		
	КонецЕсли;
	
КонецЕсли;

&НаСервереБезКонтекста
Функция ПолучитьСсылкуНаДокумент(СтрокаGUIDа)
	
	GUID = Новый УникальныйИдентификатор(СтрокаGUIDа);
	
	Возврат Документы.ТвойДокумент.ПолучитьСсылку(GUID);
	
КонецФункции
Показать
reazek; spacecraft; +2 Ответить
5. codename-s 28.07.15 13:27 Сейчас в теме
Спасибо, я в итоге примерно так-же и сделал.

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	Если ВернутьСсылкуНаДокумент(ВернутьПраметрЗапуска()) <> Неопределено тогда
		ПоказатьЗначение(,ВернутьСсылкуНаДокумент(ВернутьПраметрЗапуска()));
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Функция ВернутьСсылкуНаДокумент(Параметр)
	Если ЗначениеЗаполнено(Параметр) тогда 
		Уид = Новый УникальныйИдентификатор(Параметр);
		Попытка
			Задача = Документы.МойДокумент.ПолучитьСсылку(Уид);
		Исключение
			Сообщить ("Неверная ссылка");
		КонецПопытки;
		Возврат Задача;
	КонецЕсли;
КонецФункции
Показать



В модуле управляемого приложения ВернутьПраметрЗапуска() которая собственно возврашает параметр запуска)))

Бхы, ВернутьПраметрЗапуска() у вас както до боли знакомо называется ;) она у вас не в том же модуле случайно
6. dj_serega 392 28.07.15 13:32 Сейчас в теме
(5) codename-s, Можно совет? :)
Почитайте что такое "&НаСервереБезКонтекста" и используйте данный функционал.
7. codename-s 28.07.15 13:47 Сейчас в теме
)) дельный совет, прочитано
8. tusv 211 28.07.15 15:15 Сейчас в теме
Так быстрее до Парижу добежать, чем управляемая форма откроется.
Год не работал с УФ, что помню
Уид = Новый УникальныйИдентификатор(Параметр);
Задача = Документы.МойДокумент.ПолучитьСсылку(Уид);
Форма=ПолучитьФорму(<Форма>, Новый Структура("Ключ",Задача));
Форма.Открыть();
9. dj_serega 392 28.07.15 15:35 Сейчас в теме
(8) tusv, а в (4) что написано?, это раз.
Второе. На Клиенте нет документов. А на сервере нет форм. Поэтому немного не то.
k_vasil; tusv; +2 Ответить
10. tusv 211 28.07.15 15:40 Сейчас в теме
(9) dj_serega, Спасибо за критику
dj_serega; +1 Ответить
11. Чарик 2 28.07.15 16:07 Сейчас в теме
держи рабочий код:
&НаСервере
Функция ПолучитьПоУИДНаСервере(УИД)
	
	УИН = Новый УникальныйИдентификатор(УИД);
	Ссыль = Документы.<твой_док>.ПолучитьСсылку(УИН);
	
	Возврат Ссыль;
	
КонецФункции

&НаКлиенте
Процедура ОткрытьПоУИД(Команда)
	
	Ссыль = ПолучитьПоУИДНаСервере(УИД);
	
	парам = Новый Структура;
	парам.Вставить("Ключ", Ссыль);
	
	ОткрытьФорму("Документ.<твой_док>.ФормаОбъекта", парам);
	
КонецПроцедуры

Показать
12. spacecraft 28.07.15 16:27 Сейчас в теме
(11) Чарик, может уже хватит извращаться? Лучший ответ уже дан в (4). И он лучше этого.
k_vasil; dj_serega; +2 Ответить
13. codename-s 21.08.15 13:52 Сейчас в теме
Ну вот, все вроде работает прекрасно однако бЯда... если в браузере открыта 1с и пользователь еще и переходит по ссылке из письма браузер любезно открывает новую вкладку и 1с сообщает что возможно сеанс уже запущен в другой вкладке и предлагает заново авторизоваться.

Если я сижу разгребаю кучу писем и тыкаю по ссылкам то получается неудобно... вот просто интересно это вообще решаемо?
14. ditp 91 21.08.15 14:41 Сейчас в теме
(13) codename-s, готового решения нет, но в качестве идеи может сгодится - генерить внешнее событие 1С.
Оставьте свое сообщение

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