Внешняя печатная форма - Ссылка на объект в УП
И как мне ссылку перенести в форму по последующего получения данных? Эта ссылка не извлекается из модуля объекта. Что делать? как работать с документом из которого открыта печатная форма?
Пример из УНФ 1.6 если кто знает попробуйте отредактировать что бы при открытии организация из документа во внешнию форму переносилась. Уже неделю мучаюсь
Не работает ссылка на объект. Я бы хотел чтобы при открытии по ссылке на объект я мог заполнить форму.
Пример из УНФ 1.6 если кто знает попробуйте отредактировать что бы при открытии организация из документа во внешнию форму переносилась. Уже неделю мучаюсь
Не работает ссылка на объект. Я бы хотел чтобы при открытии по ссылке на объект я мог заполнить форму.
Прикрепленные файлы:
По теме из базы знаний
- Внешние печатные формы для нетиповой конфигурации (управляемое приложение)
- Внешняя печатная форма ТОРГ-12 с указанием количества мест и массы брутто для УНФ 1.4 и 1.5.
- Цены на работы и внешние печатные формы в конфигурации 1С БИТ:Управление медицинским центром
- Внешние печатные формы для КА 2 (Комплексной автоматизации) в 1С
- Пользовательские макеты внешних печатных форм и настраиваемый комплект документов по договорам
Найденные решения
Все решил проблему сам.
1. Невозможно работать с общим реквизитом (с заполнены ранее значением из Модуля объекта). Так как он не имеет значение при открытии формы.
2. Нужно при вызове Формы передать ей значение массива где ОбъектыНазначенияМассив[0] = ссылка на документ:
3. В открытой форме нужно написать запрос на проверку и получение значение ранее отправленного параметра:
4. После чего можно свободно работать с объектом - "СсылкаНаОбъект"
1. Невозможно работать с общим реквизитом (с заполнены ранее значением из Модуля объекта). Так как он не имеет значение при открытии формы.
2. Нужно при вызове Формы передать ей значение массива где ОбъектыНазначенияМассив[0] = ссылка на документ:
ПараметрыФормы = Новый Структура("СсылкаНаОбъект", ОбъектыНазначенияМассив[0]);
ОткрытьФорму("ВнешняяОбработка.ПечатнаяФорма.Форма.ФормаВвода",ПараметрыФормы,,,,,Новый ОписаниеОповещения("ПечатьЗавершение", ЭтаФорма, ОбъектыНазначенияМассив), РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс); 3. В открытой форме нужно написать запрос на проверку и получение значение ранее отправленного параметра:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("СсылкаНаОбъект") Тогда
Сообщить(Параметры.СсылкаНаОбъект);
Объект.СсылкаНаОбъект = Параметры.СсылкаНаОбъект;
КонецЕсли;
КонецПроцедуры
4. После чего можно свободно работать с объектом - "СсылкаНаОбъект"
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
В вашей внешней обработке из (1) ссылка на объект имеет тип Расходная накладная. А какому документу вы предназначаете эту печатную форму?
Если вы хотите чтобы ваша обработка могла подключаться к другим типам документов или справочнику, измените тип реквизита СсылкаНаОбъект на Документ (произвольного типа) и Справочник (произвольного типа) "Составной".
Если вы хотите чтобы ваша обработка могла подключаться к другим типам документов или справочнику, измените тип реквизита СсылкаНаОбъект на Документ (произвольного типа) и Справочник (произвольного типа) "Составной".
Что то не понела вашего вопроса. Вы хотите при начатие на кн Печать из документа чтоб выходила форма внешней обработки? или без открытия дополнительной формы брать данные из текущего документа?
УНФ 1.6 нет под рукой
УНФ 1.6 нет под рукой
Что то не понела вашего вопроса. Вы хотите при начатие на кн Печать из документа чтоб выходила форма внешней обработки? или без открытия дополнительной формы брать данные из текущего документа?
ДА. Можно пример и из УП 3
ДА. Можно пример и из УП 3
Я в самом начале выслал обработку. Если кто знает возьмите ее и добавьте строку для получения ссылки на документ и получения в него данных к примеру контрагента. Так ведь в 100 раз быстрее. А дальше я и сам разберусь.
&НаКлиенте
Процедура Печать(Команда)
Структура = Новый Структура;
Структура.Вставить("НазваниеПечатнойФормы", Объект.СсылкаНаОбъект);
Структура.Вставить("Печать" , Истина);
ЭтаФорма.Закрыть(Структура);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Сообщить(Объект.СсылкаНаОбъект);
КонецПроцедуры
Я это знаю эффект = 0
Процедура Печать(Команда)
Структура = Новый Структура;
Структура.Вставить("НазваниеПечатнойФормы", Объект.СсылкаНаОбъект);
Структура.Вставить("Печать" , Истина);
ЭтаФорма.Закрыть(Структура);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Сообщить(Объект.СсылкаНаОбъект);
КонецПроцедуры
Я это знаю эффект = 0
(17) треш. Забудьте что вы писали на ОФ. Это совершенно разные вещи. Скачайте БСП посмотрите как там реализовано. Почитайте на ИС статью как пишут внешние обработки. А то у вас нет представления как их пишут.
Реквизит обычно используют, чтобы отлаживать ВПФ, а не для того чтобы его заполнять!
Вот мои наработки на ИС . Вот статья чтобы понять как это работает.
Реквизит обычно используют, чтобы отлаживать ВПФ, а не для того чтобы его заполнять!
Вот мои наработки на ИС . Вот статья чтобы понять как это работает.
Я иду таким образом.
Есть библиотека стандартных подсистем, встроенная в каждую типовую 1с.
Пишем обработку, чтобы узнать точно ее версию в нашей конфигурации:
Скачиваем БСП нужной редакции и примерно ближайшей версии (возможно именно этой в списке версий нет)
Открываем обработки, ищем _ДемоПечатнаяФорма, _ДемоПечатьСчетовНаОплатуПокупателю, печать, сохраняем во внешние файлы и делаем как надо.
В них ссылка на объект не предусмотрена, только модуль и возможно макет.
Есть библиотека стандартных подсистем, встроенная в каждую типовую 1с.
Пишем обработку, чтобы узнать точно ее версию в нашей конфигурации:
&НаСервере
Функция Команда1НаСервере()
Возврат СтандартныеПодсистемыСервер.ВерсияБиблиотеки();
КонецФункции
&НаКлиенте
Процедура Команда1(Команда)
Версия = Команда1НаСервере();
Сообщить(Версия);
КонецПроцедуры
ПоказатьСкачиваем БСП нужной редакции и примерно ближайшей версии (возможно именно этой в списке версий нет)
Открываем обработки, ищем _ДемоПечатнаяФорма, _ДемоПечатьСчетовНаОплатуПокупателю, печать, сохраняем во внешние файлы и делаем как надо.
В них ссылка на объект не предусмотрена, только модуль и возможно макет.
Начинаем со сведений о внешней обработке для подключения ее в базу
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.3.1.73");
ПараметрыРегистрации.Информация = НСтр("ru = 'Обработка формирования печатной формы документа ""Расходная накладная"". Используется для демонстрации возможностей подсистемы ""Дополнительные отчеты и обработки"".'");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
ПараметрыРегистрации.Версия = "2.4.3.2";
ПараметрыРегистрации.Назначение.Добавить("Документ.РасходнаяНакладная");
Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Представление = НСтр("ru = 'Расходная накладная (вариант1 - внешняя печатная форма)'");
Команда.Идентификатор = "РасходнаяНакладная1";
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
Команда.ПоказыватьОповещение = Истина;
Команда.Модификатор = "ПечатьMXL";
//Команда.ЗаменяемыеКоманды = "РасходнаяНакладная";
Возврат ПараметрыРегистрации;
КонецФункции
Показать
Возможно проще не создавать внешнюю печатную форму, а сначала вставить всю эту обработку в конфигурацию, поймать ее вызов в отладчике на печати из списка (с несколькими выделенными строками в журнале) и рассмотреть переданные параметры
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Например так будет выглядеть стек вызовов от нажатия кнопки печать в журнале до собственно команды печать в обработке (это Демо в БСП, рабочий вариант в конфигурации УТ, БП или УНФ возможно будет больше). Эти промежуточные шаги мы пропускаем.
В парадигме управляемых форм выполняется пакетная печать нескольких выделенных в журнале (списке) объектов. В открытии формы по каждой полученной ссылке из полученного массива объектов смысла нет. Все должно исчерпывающе заполняться и запоминаться в документе(справочнике) - объекте.
В парадигме управляемых форм выполняется пакетная печать нескольких выделенных в журнале (списке) объектов. В открытии формы по каждой полученной ссылке из полученного массива объектов смысла нет. Все должно исчерпывающе заполняться и запоминаться в документе(справочнике) - объекте.
Прикрепленные файлы:
В массиве находятся все ссылки на выделенные элементы, теоретически даже отсортированные точно так, как они расположены в журнале(списке), за тем исключением что активный элемент может оказаться вначале, даже если он последний.
В простейшем случае ссылку на объект вы можете получить так: МассивОбъектов[0]
В простейшем случае ссылку на объект вы можете получить так: МассивОбъектов[0]
Прикрепленные файлы:
Все решил проблему сам.
1. Невозможно работать с общим реквизитом (с заполнены ранее значением из Модуля объекта). Так как он не имеет значение при открытии формы.
2. Нужно при вызове Формы передать ей значение массива где ОбъектыНазначенияМассив[0] = ссылка на документ:
3. В открытой форме нужно написать запрос на проверку и получение значение ранее отправленного параметра:
4. После чего можно свободно работать с объектом - "СсылкаНаОбъект"
1. Невозможно работать с общим реквизитом (с заполнены ранее значением из Модуля объекта). Так как он не имеет значение при открытии формы.
2. Нужно при вызове Формы передать ей значение массива где ОбъектыНазначенияМассив[0] = ссылка на документ:
ПараметрыФормы = Новый Структура("СсылкаНаОбъект", ОбъектыНазначенияМассив[0]);
ОткрытьФорму("ВнешняяОбработка.ПечатнаяФорма.Форма.ФормаВвода",ПараметрыФормы,,,,,Новый ОписаниеОповещения("ПечатьЗавершение", ЭтаФорма, ОбъектыНазначенияМассив), РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс); 3. В открытой форме нужно написать запрос на проверку и получение значение ранее отправленного параметра:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("СсылкаНаОбъект") Тогда
Сообщить(Параметры.СсылкаНаОбъект);
Объект.СсылкаНаОбъект = Параметры.СсылкаНаОбъект;
КонецЕсли;
КонецПроцедуры
4. После чего можно свободно работать с объектом - "СсылкаНаОбъект"
(28)
Больше никаких других параметров вы в УФ и формах не получите.
Механизм, используемый в ОФ с реквизитами обработки - аннулирован 1С.
Менеджера объекта - у внешних обработок и отчетов нет.
И никакие параметры передавать для отладки ВПФ не надо - сделать маленькую доп.формочку, в ней задавать ссылку на документ, далее передавать её в модуль объекта обработки в Печать().
И только так работает нормальная отладка ВПФ в УФ сейчас.
А задавать ссылку в коде жестко, как у вас - тоже, конечно, можно. И каждый раз подбирать документ, менять под это код, а потом еще и не забывать отменять жесткую ссылку в рабочей версии.
Разница в УП в том что параметры можно получать только &НаСервере.
Параметры формы - получаются при открытии формы ПриСозданииНаСервере.
Больше никаких других параметров вы в УФ и формах не получите.
Механизм, используемый в ОФ с реквизитами обработки - аннулирован 1С.
Менеджера объекта - у внешних обработок и отчетов нет.
И никакие параметры передавать для отладки ВПФ не надо - сделать маленькую доп.формочку, в ней задавать ссылку на документ, далее передавать её в модуль объекта обработки в Печать().
И только так работает нормальная отладка ВПФ в УФ сейчас.
А задавать ссылку в коде жестко, как у вас - тоже, конечно, можно. И каждый раз подбирать документ, менять под это код, а потом еще и не забывать отменять жесткую ссылку в рабочей версии.
(38)
Да ладно?! Если вы не знаете как, то не нужно об этом так категорично говорить.
Хоть и офтоп, т.к. про отладку вообще не говорилось...
Любая внешняя обработка отлично отлаживается, если предварительно ее открыть в конфигураторе и открыть через файл - открыть в предприятии.
Естественно обработка должна быть загружена во внешних обработках та же самая.
Т.е. правим - сохраняем - загружаем во внешние обработки - открываем через файл - открыть - закрываем и ВСЁ. Отладка работает!
И только так работает нормальная отладка ВПФ в УФ сейчас.
Да ладно?! Если вы не знаете как, то не нужно об этом так категорично говорить.
Хоть и офтоп, т.к. про отладку вообще не говорилось...
Любая внешняя обработка отлично отлаживается, если предварительно ее открыть в конфигураторе и открыть через файл - открыть в предприятии.
Естественно обработка должна быть загружена во внешних обработках та же самая.
Т.е. правим - сохраняем - загружаем во внешние обработки - открываем через файл - открыть - закрываем и ВСЁ. Отладка работает!
(41)
Вы вообще в УФ работали последние 3 года? Именно как раз 3 года назад 1С "отменили" сохранение на диск любых - внешних-внутренних-справочных обработок, - заодно аннулировав и так любимую вами "отладку с диска открытием в конфигураторе и предприятии".
Максимум - вы сможете "по-другому" отладить "внешнюю обработку", если сделаете её внутренней - втащите в конфигурацию. И то, если база серверная, просто так не пройдешься по серверным процедурам - нужно будет включать серверную же отладку, что зачастую в принципе невозможно по совсем другим причинам, не связанными с отладкой.
Любая внешняя обработка отлично отлаживается, если предварительно ее открыть в конфигураторе и открыть через файл - открыть в предприятии.
Давно с УФ работали? Или вообще не работали? Это какая сейчас внешняя обработка у вас "отлично отлаживается, если предварительно ее открыть в конфигураторе и открыть через файл - открыть в предприятии"?
Вы вообще в УФ работали последние 3 года? Именно как раз 3 года назад 1С "отменили" сохранение на диск любых - внешних-внутренних-справочных обработок, - заодно аннулировав и так любимую вами "отладку с диска открытием в конфигураторе и предприятии".
Максимум - вы сможете "по-другому" отладить "внешнюю обработку", если сделаете её внутренней - втащите в конфигурацию. И то, если база серверная, просто так не пройдешься по серверным процедурам - нужно будет включать серверную же отладку, что зачастую в принципе невозможно по совсем другим причинам, не связанными с отладкой.
(41)
В ОФ - можно было "поймать" выполняемую обработку из справочника на диске в виде темпового файла, сейчас и это невозможно.
Естественно обработка должна быть загружена во внешних обработках та же самая.
Т.е. правим - сохраняем - загружаем во внешние обработки
а это вообще непонятно что - у 1С никогда не были связаны обработки в справочнике "Внешние отчеты и обработки" - с файлами-обработками на диске.
Т.е. правим - сохраняем - загружаем во внешние обработки
В ОФ - можно было "поймать" выполняемую обработку из справочника на диске в виде темпового файла, сейчас и это невозможно.
(44) пропущу все ваши слова мимо... ОФ вообще не знаю.
посмотрите видео... специально для вас сделал!
посмотрите видео... специально для вас сделал!
Прикрепленные файлы:
2019-01-29 at 23-17-03.mp4
(45)так и УФ не знаете.
Не работает ваш способ, да и не работал (или нечто подобное, завязанное на чтение темпового файла обработки сразу с диска) уже с релиза 8.3.8.2137, когда и ввели эту ерунду с хранилищами и хранением обработок в BLOB в базе.
Что у вас за релиз такой волшебный, а, скорей всего - старый 8.3 наверняка, который еще на диск выгружал.
Не зря вы финты с открытием-закрытием обработки делаете, прежде чем вызвать по Печать.
Еще, поди, и отладка серверная включена, у вас же все просто - сервер туда, сервер сюда, под отладку )
Не работает ваш способ, да и не работал (или нечто подобное, завязанное на чтение темпового файла обработки сразу с диска) уже с релиза 8.3.8.2137, когда и ввели эту ерунду с хранилищами и хранением обработок в BLOB в базе.
Что у вас за релиз такой волшебный, а, скорей всего - старый 8.3 наверняка, который еще на диск выгружал.
Не зря вы финты с открытием-закрытием обработки делаете, прежде чем вызвать по Печать.
Еще, поди, и отладка серверная включена, у вас же все просто - сервер туда, сервер сюда, под отладку )
(29) так вопрос решается с гуглом один на один за 10 мин(ну час от силы, если опыта нет)...
ТС потратил на это день!
А после такого:
ТС потратил на это день!
А после такого:
Если вы не можете открыть код обработки буду вам высылать скриншоты с вопросами по нему. Я не знаю как еще разжевать вопрос.)))))))))))))))))))))))))))))))))))))))))))))))))
я бы вообще не отвечал!
Слишком поздно наверно, но решил немножко по другому. Добавил список значений в форму открытия ВПФ (как на рисунке) и в модуле формы добавил, все работает.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Попытка
РеквизитыОбработки.ЗагрузитьЗначения(Параметры.ОбъектыНазначения);
Исключение
КонецПопытки;
СписокДокументов = РеквизитыОбработки.ВыгрузитьЗначения();
Объект.Документ = СписокДокументов[0];
Сообщить(Объект.Документ);
КонецПроцедуры ПоказатьПрикрепленные файлы:
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот