Внешняя печатная форма - Ссылка на объект в УП

1. sergey svetlakov 13 27.01.19 09:49 Сейчас в теме
И как мне ссылку перенести в форму по последующего получения данных? Эта ссылка не извлекается из модуля объекта. Что делать? как работать с документом из которого открыта печатная форма?
Пример из УНФ 1.6 если кто знает попробуйте отредактировать что бы при открытии организация из документа во внешнию форму переносилась. Уже неделю мучаюсь
Не работает ссылка на объект. Я бы хотел чтобы при открытии по ссылке на объект я мог заполнить форму.
Прикрепленные файлы:
Открытие формы из ВПФ.epf
По теме из базы знаний
Найденные решения
27. sergey svetlakov 13 27.01.19 21:49 Сейчас в теме
Все решил проблему сам.
1. Невозможно работать с общим реквизитом (с заполнены ранее значением из Модуля объекта). Так как он не имеет значение при открытии формы.
2. Нужно при вызове Формы передать ей значение массива где ОбъектыНазначенияМассив[0] = ссылка на документ:
ПараметрыФормы = Новый Структура("СсылкаНаОбъект", ОбъектыНазначенияМассив[0]);	
ОткрытьФорму("ВнешняяОбработка.ПечатнаяФорма.Форма.ФормаВвода",ПараметрыФормы,,,,,Новый ОписаниеОповещения("ПечатьЗавершение", ЭтаФорма, ОбъектыНазначенияМассив), РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);	

3. В открытой форме нужно написать запрос на проверку и получение значение ранее отправленного параметра:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Если Параметры.Свойство("СсылкаНаОбъект") Тогда
    	 Сообщить(Параметры.СсылкаНаОбъект);
		 Объект.СсылкаНаОбъект = Параметры.СсылкаНаОбъект;
    КонецЕсли;
КонецПроцедуры

4. После чего можно свободно работать с объектом - "СсылкаНаОбъект"
yulyaka; timeforlive; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
14. acanta 27.01.19 19:45 Сейчас в теме
В вашей внешней обработке из (1) ссылка на объект имеет тип Расходная накладная. А какому документу вы предназначаете эту печатную форму?
Если вы хотите чтобы ваша обработка могла подключаться к другим типам документов или справочнику, измените тип реквизита СсылкаНаОбъект на Документ (произвольного типа) и Справочник (произвольного типа) "Составной".
19. sergey svetlakov 13 27.01.19 20:13 Сейчас в теме
(14)
Справочник
ссылка на объект имеет тип Расходная накладная. А какому документу вы предназначаете эту печатную форму?
РасходнаяНакладная. Мне только к ней!
2. NatalkaBal 28 27.01.19 12:07 Сейчас в теме
Что то не понела вашего вопроса. Вы хотите при начатие на кн Печать из документа чтоб выходила форма внешней обработки? или без открытия дополнительной формы брать данные из текущего документа?
УНФ 1.6 нет под рукой
sergey svetlakov; +1 Ответить
3. sergey svetlakov 13 27.01.19 16:05 Сейчас в теме
Что то не понела вашего вопроса. Вы хотите при начатие на кн Печать из документа чтоб выходила форма внешней обработки? или без открытия дополнительной формы брать данные из текущего документа?
ДА. Можно пример и из УП 3
4. sergey svetlakov 13 27.01.19 16:06 Сейчас в теме
В принципе обработка не привязана к конфигурации. главное это управляемая форма.
5. Xershi 1484 27.01.19 16:32 Сейчас в теме
(4) пишешь обработку с методом открыть форму. Объекты назначения это те объекты, которые были вызваны далее пилишь как обычно!
7. sergey svetlakov 13 27.01.19 17:25 Сейчас в теме
(5)
рыть форму. Объекты назначения это т
не могли бы просто пример обработки скинуть
6. senshkr 13 27.01.19 17:16 Сейчас в теме
Здесь статья о передаче параметров во внешнюю печатную форму
https://infostart.ru/public/191796/
8. sergey svetlakov 13 27.01.19 17:26 Сейчас в теме
https://infostart.ru/public/191796/ видел я эту статью. она не отвечает на мой вопрос - как получить данные из документа при открытии внешней обработки!
33. AlexO 135 29.01.19 09:21 Сейчас в теме
(8)
как получить данные из документа при открытии внешней обработки!
Вставлять в каждую ПФ доп.форму для отладки, где задавать документ. Далее его и передавать.
Только так.
9. sergey svetlakov 13 27.01.19 17:29 Сейчас в теме
Я в самом начале выслал обработку. Если кто знает возьмите ее и добавьте строку для получения ссылки на документ и получения в него данных к примеру контрагента. Так ведь в 100 раз быстрее. А дальше я и сам разберусь.
10. Поручик 4674 27.01.19 17:31 Сейчас в теме
(9) ОбъектыНазначения[0] вот это есть ссылка на текущий объект. Дальше извлекаешь реквизиты и делаешь, что хочешь.
11. sergey svetlakov 13 27.01.19 17:53 Сейчас в теме
(10) не получается применить на объекте на форме - присваивание значения. напиши пример
12. Xershi 1484 27.01.19 18:39 Сейчас в теме
(11) если через открыть, то заполнять вручную. Если через доп, то что не получается? Все должно работать!
13. sergey svetlakov 13 27.01.19 19:33 Сейчас в теме
Если вы не можете открыть код обработки буду вам высылать скриншоты с вопросами по нему. Я не знаю как еще разжевать вопрос.)))))))))))))))))))))))))))))))))))))))))))))))))
Прикрепленные файлы:
15. sergey svetlakov 13 27.01.19 20:02 Сейчас в теме
(13)
Прикрепленные файлы:
16. Xershi 1484 27.01.19 20:04 Сейчас в теме
(13) ой насмешили!
Потому что это УФ и пора книжки читать!
На форме к реквизиту нужно обращаться через основной реквизит это обычно Объект. В отчетах Отчет.
42. AlexO 135 29.01.19 11:45 Сейчас в теме
(16)
обращаться через основной реквизит
"вспомогательных" реквизитов у 1С тоже нет ))
17. sergey svetlakov 13 27.01.19 20:08 Сейчас в теме
&НаКлиенте
Процедура Печать(Команда)
Структура = Новый Структура;
Структура.Вставить("НазваниеПечатнойФормы", Объект.СсылкаНаОбъект);
Структура.Вставить("Печать" , Истина);
ЭтаФорма.Закрыть(Структура);
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
Сообщить(Объект.СсылкаНаОбъект);
КонецПроцедуры


Я это знаю эффект = 0
25. Xershi 1484 27.01.19 21:08 Сейчас в теме
(17) треш. Забудьте что вы писали на ОФ. Это совершенно разные вещи. Скачайте БСП посмотрите как там реализовано. Почитайте на ИС статью как пишут внешние обработки. А то у вас нет представления как их пишут.
Реквизит обычно используют, чтобы отлаживать ВПФ, а не для того чтобы его заполнять!
Вот мои наработки на ИС https://infostart.ru/public/622195/. Вот статья https://infostart.ru/public/558559/ чтобы понять как это работает.
18. sergey svetlakov 13 27.01.19 20:12 Сейчас в теме
Структура.Вставить("НазваниеПечатнойФормы", в этом месте хоть что делай нет связи с Общим реквизитом - "СсылкаНаОбъект", с массивами из Модуля объекта, они не сообщаются не как);
34. AlexO 135 29.01.19 09:24 Сейчас в теме
(18) в УФ реквизиты обработки не работают, они доступны только в МодулеОбъекта, но не на форме. А модуля менеджера - для внешних обработок 1С не ввела.
В общем, 1С сделала реквизиты обработки ненужным рудиментом.
20. acanta 27.01.19 20:19 Сейчас в теме
Я иду таким образом.
Есть библиотека стандартных подсистем, встроенная в каждую типовую 1с.
Пишем обработку, чтобы узнать точно ее версию в нашей конфигурации:

&НаСервере
Функция Команда1НаСервере()
	
	Возврат СтандартныеПодсистемыСервер.ВерсияБиблиотеки();
КонецФункции

&НаКлиенте
Процедура Команда1(Команда)
	Версия = Команда1НаСервере();
	Сообщить(Версия);
КонецПроцедуры
Показать



Скачиваем БСП нужной редакции и примерно ближайшей версии (возможно именно этой в списке версий нет)

Открываем обработки, ищем _ДемоПечатнаяФорма, _ДемоПечатьСчетовНаОплатуПокупателю, печать, сохраняем во внешние файлы и делаем как надо.
В них ссылка на объект не предусмотрена, только модуль и возможно макет.
35. AlexO 135 29.01.19 09:26 Сейчас в теме
(20)
Скачиваем БСП нужной редакции и примерно ближайшей версии
Не нужно это ничего.
Просто БСП обойти, задав нужные параметры при вызове из модуля менеджера основной процедуры Печать() из доп.формы при отладке.
21. acanta 27.01.19 20:29 Сейчас в теме
Начинаем со сведений о внешней обработке для подключения ее в базу

Функция СведенияОВнешнейОбработке() Экспорт
	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.3.1.73");
	ПараметрыРегистрации.Информация = НСтр("ru = 'Обработка формирования печатной формы документа ""Расходная накладная"". Используется для демонстрации возможностей подсистемы ""Дополнительные отчеты и обработки"".'");
	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
	ПараметрыРегистрации.Версия = "2.4.3.2";
	ПараметрыРегистрации.Назначение.Добавить("Документ.РасходнаяНакладная");
	
	Команда = ПараметрыРегистрации.Команды.Добавить();
	Команда.Представление = НСтр("ru = 'Расходная накладная (вариант1 - внешняя печатная форма)'");
	Команда.Идентификатор = "РасходнаяНакладная1";
	Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
	Команда.ПоказыватьОповещение = Истина;
	Команда.Модификатор = "ПечатьMXL";
	//Команда.ЗаменяемыеКоманды = "РасходнаяНакладная";
	
	Возврат ПараметрыРегистрации;
КонецФункции
Показать
22. acanta 27.01.19 20:36 Сейчас в теме
Возможно проще не создавать внешнюю печатную форму, а сначала вставить всю эту обработку в конфигурацию, поймать ее вызов в отладчике на печати из списка (с несколькими выделенными строками в журнале) и рассмотреть переданные параметры

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
23. sergey svetlakov 13 27.01.19 21:00 Сейчас в теме
Проще нет функции на языке 1с получить ссылку на документ из которого формы открылась и все?
Не в обиду придумал поговорку.
Умный в гору не пойдет, и 1с разработчик за ним не пойдет, он гору - вые***.
24. acanta 27.01.19 21:05 Сейчас в теме
Например так будет выглядеть стек вызовов от нажатия кнопки печать в журнале до собственно команды печать в обработке (это Демо в БСП, рабочий вариант в конфигурации УТ, БП или УНФ возможно будет больше). Эти промежуточные шаги мы пропускаем.

В парадигме управляемых форм выполняется пакетная печать нескольких выделенных в журнале (списке) объектов. В открытии формы по каждой полученной ссылке из полученного массива объектов смысла нет. Все должно исчерпывающе заполняться и запоминаться в документе(справочнике) - объекте.
Прикрепленные файлы:
26. acanta 27.01.19 21:09 Сейчас в теме
В массиве находятся все ссылки на выделенные элементы, теоретически даже отсортированные точно так, как они расположены в журнале(списке), за тем исключением что активный элемент может оказаться вначале, даже если он последний.

В простейшем случае ссылку на объект вы можете получить так: МассивОбъектов[0]
Прикрепленные файлы:
27. sergey svetlakov 13 27.01.19 21:49 Сейчас в теме
Все решил проблему сам.
1. Невозможно работать с общим реквизитом (с заполнены ранее значением из Модуля объекта). Так как он не имеет значение при открытии формы.
2. Нужно при вызове Формы передать ей значение массива где ОбъектыНазначенияМассив[0] = ссылка на документ:
ПараметрыФормы = Новый Структура("СсылкаНаОбъект", ОбъектыНазначенияМассив[0]);	
ОткрытьФорму("ВнешняяОбработка.ПечатнаяФорма.Форма.ФормаВвода",ПараметрыФормы,,,,,Новый ОписаниеОповещения("ПечатьЗавершение", ЭтаФорма, ОбъектыНазначенияМассив), РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);	

3. В открытой форме нужно написать запрос на проверку и получение значение ранее отправленного параметра:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Если Параметры.Свойство("СсылкаНаОбъект") Тогда
    	 Сообщить(Параметры.СсылкаНаОбъект);
		 Объект.СсылкаНаОбъект = Параметры.СсылкаНаОбъект;
    КонецЕсли;
КонецПроцедуры

4. После чего можно свободно работать с объектом - "СсылкаНаОбъект"
yulyaka; timeforlive; +2 Ответить
36. AlexO 135 29.01.19 09:33 Сейчас в теме
(27)
где ОбъектыНазначенияМассив[0] = ссылка на документ:
А ссылку каждый раз будете прописывать в коде поиском в справочнике или по документам?
28. sergey svetlakov 13 27.01.19 21:51 Сейчас в теме
Всем большое спасибо за помощь. Разница в УП в том что параметры можно получать только &НаСервере.
38. AlexO 135 29.01.19 09:44 Сейчас в теме
(28)
Разница в УП в том что параметры можно получать только &НаСервере.
Параметры формы - получаются при открытии формы ПриСозданииНаСервере.
Больше никаких других параметров вы в УФ и формах не получите.
Механизм, используемый в ОФ с реквизитами обработки - аннулирован 1С.
Менеджера объекта - у внешних обработок и отчетов нет.
И никакие параметры передавать для отладки ВПФ не надо - сделать маленькую доп.формочку, в ней задавать ссылку на документ, далее передавать её в модуль объекта обработки в Печать().
И только так работает нормальная отладка ВПФ в УФ сейчас.
А задавать ссылку в коде жестко, как у вас - тоже, конечно, можно. И каждый раз подбирать документ, менять под это код, а потом еще и не забывать отменять жесткую ссылку в рабочей версии.
41. EVKash 14 29.01.19 11:13 Сейчас в теме
(38)
И только так работает нормальная отладка ВПФ в УФ сейчас.

Да ладно?! Если вы не знаете как, то не нужно об этом так категорично говорить.
Хоть и офтоп, т.к. про отладку вообще не говорилось...
Любая внешняя обработка отлично отлаживается, если предварительно ее открыть в конфигураторе и открыть через файл - открыть в предприятии.
Естественно обработка должна быть загружена во внешних обработках та же самая.
Т.е. правим - сохраняем - загружаем во внешние обработки - открываем через файл - открыть - закрываем и ВСЁ. Отладка работает!
43. AlexO 135 29.01.19 16:56 Сейчас в теме
(41)
Любая внешняя обработка отлично отлаживается, если предварительно ее открыть в конфигураторе и открыть через файл - открыть в предприятии.
Давно с УФ работали? Или вообще не работали? Это какая сейчас внешняя обработка у вас "отлично отлаживается, если предварительно ее открыть в конфигураторе и открыть через файл - открыть в предприятии"?
Вы вообще в УФ работали последние 3 года? Именно как раз 3 года назад 1С "отменили" сохранение на диск любых - внешних-внутренних-справочных обработок, - заодно аннулировав и так любимую вами "отладку с диска открытием в конфигураторе и предприятии".
Максимум - вы сможете "по-другому" отладить "внешнюю обработку", если сделаете её внутренней - втащите в конфигурацию. И то, если база серверная, просто так не пройдешься по серверным процедурам - нужно будет включать серверную же отладку, что зачастую в принципе невозможно по совсем другим причинам, не связанными с отладкой.
44. AlexO 135 29.01.19 16:59 Сейчас в теме
(41)
Естественно обработка должна быть загружена во внешних обработках та же самая.
Т.е. правим - сохраняем - загружаем во внешние обработки
а это вообще непонятно что - у 1С никогда не были связаны обработки в справочнике "Внешние отчеты и обработки" - с файлами-обработками на диске.
В ОФ - можно было "поймать" выполняемую обработку из справочника на диске в виде темпового файла, сейчас и это невозможно.
45. EVKash 14 29.01.19 23:23 Сейчас в теме
(44) пропущу все ваши слова мимо... ОФ вообще не знаю.
посмотрите видео... специально для вас сделал!
Прикрепленные файлы:
2019-01-29 at 23-17-03.mp4
49. AlexO 135 30.01.19 12:10 Сейчас в теме
(45)так и УФ не знаете.
Не работает ваш способ, да и не работал (или нечто подобное, завязанное на чтение темпового файла обработки сразу с диска) уже с релиза 8.3.8.2137, когда и ввели эту ерунду с хранилищами и хранением обработок в BLOB в базе.
Что у вас за релиз такой волшебный, а, скорей всего - старый 8.3 наверняка, который еще на диск выгружал.
Не зря вы финты с открытием-закрытием обработки делаете, прежде чем вызвать по Печать.
Еще, поди, и отладка серверная включена, у вас же все просто - сервер туда, сервер сюда, под отладку )
47. EVKash 14 30.01.19 09:04 Сейчас в теме
(44) посмотрели? Усмирили свою гордыню?
48. EVKash 14 30.01.19 11:44 Сейчас в теме
(44) хоть бы ответ "вот это поворот! О_о" или "фигасе"... а язык в опу - это плохо...
50. AlexO 135 30.01.19 12:15 Сейчас в теме
(48) вы просто невоспитанный человек. Про ваше видение УФ я уже сказал выше.
51. EVKash 14 30.01.19 15:42 Сейчас в теме
(50) Вот только УФ и знаю... и довольно не плохо.
При открытии внешней обработки через файл - открыть, платформа сопоставляет открытый файл внешним обработкам/печформам. Дальше все просто. Человек я воспитанный. Не люблю выскочек не образованных.
52. EVKash 14 30.01.19 15:44 Сейчас в теме
(50)
Прикрепленные файлы:
53. EVKash 14 30.01.19 15:50 Сейчас в теме
(50) тяжело принимать что не прав?
ЗЫ Нафлудили конечно... Можете создать тему "Отладка внешних обработок" - в этой теме это оффтоп!
29. timeforlive 15 28.01.19 12:23 Сейчас в теме
Автору плюсую за старания и описание своего же решения.
30. EVKash 14 28.01.19 13:17 Сейчас в теме
(29) так вопрос решается с гуглом один на один за 10 мин(ну час от силы, если опыта нет)...
ТС потратил на это день!
А после такого:
Если вы не можете открыть код обработки буду вам высылать скриншоты с вопросами по нему. Я не знаю как еще разжевать вопрос.)))))))))))))))))))))))))))))))))))))))))))))))))
я бы вообще не отвечал!
ben19791010; +1 Ответить
31. timeforlive 15 29.01.19 06:30 Сейчас в теме
(30) Ну... Все мы были такими, когда не знали что такое управляемые формы и чем они отличаются от обычных.
Автор растет и ему не все равно на сообщество инфостарта - задал вопрос - нашел ответ - поделился информацией.
За это и плюс.
37. AlexO 135 29.01.19 09:35 Сейчас в теме
(29) нет никакого решения, а выдернут кусок давно существующего )
Ссылку изначально он откуда брать будет?
32. gkhvgkh 29.01.19 09:00 Сейчас в теме
Кто-нибудь может посоветовать где почитать статью или уроки по работе с языком запросов в 1С?
Хотелось бы что-бы кратко и понятно.
39. AlexO 135 29.01.19 09:47 Сейчас в теме
(32) поиском ищите "Язык запросов 1С".
Например, тут как работать со строками в запросе "helpme1c.ru_yazyk-zaprosov-1s-8-3-dlya-nachinayushhix-programmistov-funkcii-dlya-raboty-so-strokami"
46. gkhvgkh 30.01.19 04:12 Сейчас в теме
(39) Спасибо, почитаю на досуге.
40. timeforlive 15 29.01.19 09:49 Сейчас в теме
(32) по секрету скажу - в инете есть бесплатный доступ к таким материалам.
Вот еще неплохой материал - Трюки и уловки при работе с отчетами на базе СКД.
54. sergey svetlakov 13 30.01.19 16:33 Сейчас в теме
я уже решил проблему. спасибо
55. BehV 14 05.05.23 13:38 Сейчас в теме
Слишком поздно наверно, но решил немножко по другому. Добавил список значений в форму открытия ВПФ (как на рисунке) и в модуле формы добавил, все работает.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Попытка   
		РеквизитыОбработки.ЗагрузитьЗначения(Параметры.ОбъектыНазначения);
	Исключение
	КонецПопытки;  
	
	СписокДокументов = РеквизитыОбработки.ВыгрузитьЗначения();
	Объект.Документ = СписокДокументов[0]; 
	Сообщить(Объект.Документ);
	
КонецПроцедуры
Показать
Прикрепленные файлы:
Оставьте свое сообщение

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