1.
sergey svetlakov
1327.01.19 09:49 Сейчас в теме
И как мне ссылку перенести в форму по последующего получения данных? Эта ссылка не извлекается из модуля объекта. Что делать? как работать с документом из которого открыта печатная форма?
Пример из УНФ 1.6 если кто знает попробуйте отредактировать что бы при открытии организация из документа во внешнию форму переносилась. Уже неделю мучаюсь
Не работает ссылка на объект. Я бы хотел чтобы при открытии по ссылке на объект я мог заполнить форму.
27.
sergey svetlakov
1327.01.19 21:49 Сейчас в теме
Все решил проблему сам.
1. Невозможно работать с общим реквизитом (с заполнены ранее значением из Модуля объекта). Так как он не имеет значение при открытии формы.
2. Нужно при вызове Формы передать ей значение массива где ОбъектыНазначенияМассив[0] = ссылка на документ:
ПараметрыФормы = Новый Структура("СсылкаНаОбъект", ОбъектыНазначенияМассив[0]);
ОткрытьФорму("ВнешняяОбработка.ПечатнаяФорма.Форма.ФормаВвода",ПараметрыФормы,,,,,Новый ОписаниеОповещения("ПечатьЗавершение", ЭтаФорма, ОбъектыНазначенияМассив), РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);
3. В открытой форме нужно написать запрос на проверку и получение значение ранее отправленного параметра:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("СсылкаНаОбъект") Тогда
Сообщить(Параметры.СсылкаНаОбъект);
Объект.СсылкаНаОбъект = Параметры.СсылкаНаОбъект;
КонецЕсли;
КонецПроцедуры
4. После чего можно свободно работать с объектом - "СсылкаНаОбъект"
В вашей внешней обработке из (1) ссылка на объект имеет тип Расходная накладная. А какому документу вы предназначаете эту печатную форму?
Если вы хотите чтобы ваша обработка могла подключаться к другим типам документов или справочнику, измените тип реквизита СсылкаНаОбъект на Документ (произвольного типа) и Справочник (произвольного типа) "Составной".
Что то не понела вашего вопроса. Вы хотите при начатие на кн Печать из документа чтоб выходила форма внешней обработки? или без открытия дополнительной формы брать данные из текущего документа?
УНФ 1.6 нет под рукой
3.
sergey svetlakov
1327.01.19 16:05 Сейчас в теме
Что то не понела вашего вопроса. Вы хотите при начатие на кн Печать из документа чтоб выходила форма внешней обработки? или без открытия дополнительной формы брать данные из текущего документа?
ДА. Можно пример и из УП 3
8.
sergey svetlakov
1327.01.19 17:26 Сейчас в теме
https://infostart.ru/public/191796/ видел я эту статью. она не отвечает на мой вопрос - как получить данные из документа при открытии внешней обработки!
9.
sergey svetlakov
1327.01.19 17:29 Сейчас в теме
Я в самом начале выслал обработку. Если кто знает возьмите ее и добавьте строку для получения ссылки на документ и получения в него данных к примеру контрагента. Так ведь в 100 раз быстрее. А дальше я и сам разберусь.
13.
sergey svetlakov
1327.01.19 19:33 Сейчас в теме
Если вы не можете открыть код обработки буду вам высылать скриншоты с вопросами по нему. Я не знаю как еще разжевать вопрос.)))))))))))))))))))))))))))))))))))))))))))))))))
(13) ой насмешили!
Потому что это УФ и пора книжки читать!
На форме к реквизиту нужно обращаться через основной реквизит это обычно Объект. В отчетах Отчет.
(17) треш. Забудьте что вы писали на ОФ. Это совершенно разные вещи. Скачайте БСП посмотрите как там реализовано. Почитайте на ИС статью как пишут внешние обработки. А то у вас нет представления как их пишут.
Реквизит обычно используют, чтобы отлаживать ВПФ, а не для того чтобы его заполнять!
Вот мои наработки на ИС https://infostart.ru/public/622195/. Вот статья https://infostart.ru/public/558559/ чтобы понять как это работает.
18.
sergey svetlakov
1327.01.19 20:12 Сейчас в теме
Структура.Вставить("НазваниеПечатнойФормы", в этом месте хоть что делай нет связи с Общим реквизитом - "СсылкаНаОбъект", с массивами из Модуля объекта, они не сообщаются не как);
(18) в УФ реквизиты обработки не работают, они доступны только в МодулеОбъекта, но не на форме. А модуля менеджера - для внешних обработок 1С не ввела.
В общем, 1С сделала реквизиты обработки ненужным рудиментом.
Я иду таким образом.
Есть библиотека стандартных подсистем, встроенная в каждую типовую 1с.
Пишем обработку, чтобы узнать точно ее версию в нашей конфигурации:
&НаСервере
Функция Команда1НаСервере()
Возврат СтандартныеПодсистемыСервер.ВерсияБиблиотеки();
КонецФункции
&НаКлиенте
Процедура Команда1(Команда)
Версия = Команда1НаСервере();
Сообщить(Версия);
КонецПроцедуры
Показать
Скачиваем БСП нужной редакции и примерно ближайшей версии (возможно именно этой в списке версий нет)
Открываем обработки, ищем _ДемоПечатнаяФорма, _ДемоПечатьСчетовНаОплатуПокупателю, печать, сохраняем во внешние файлы и делаем как надо.
В них ссылка на объект не предусмотрена, только модуль и возможно макет.
Возможно проще не создавать внешнюю печатную форму, а сначала вставить всю эту обработку в конфигурацию, поймать ее вызов в отладчике на печати из списка (с несколькими выделенными строками в журнале) и рассмотреть переданные параметры
23.
sergey svetlakov
1327.01.19 21:00 Сейчас в теме
Проще нет функции на языке 1с получить ссылку на документ из которого формы открылась и все?
Не в обиду придумал поговорку.
Умный в гору не пойдет, и 1с разработчик за ним не пойдет, он гору - вые***.
Например так будет выглядеть стек вызовов от нажатия кнопки печать в журнале до собственно команды печать в обработке (это Демо в БСП, рабочий вариант в конфигурации УТ, БП или УНФ возможно будет больше). Эти промежуточные шаги мы пропускаем.
В парадигме управляемых форм выполняется пакетная печать нескольких выделенных в журнале (списке) объектов. В открытии формы по каждой полученной ссылке из полученного массива объектов смысла нет. Все должно исчерпывающе заполняться и запоминаться в документе(справочнике) - объекте.
В массиве находятся все ссылки на выделенные элементы, теоретически даже отсортированные точно так, как они расположены в журнале(списке), за тем исключением что активный элемент может оказаться вначале, даже если он последний.
В простейшем случае ссылку на объект вы можете получить так: МассивОбъектов[0]
27.
sergey svetlakov
1327.01.19 21:49 Сейчас в теме
Все решил проблему сам.
1. Невозможно работать с общим реквизитом (с заполнены ранее значением из Модуля объекта). Так как он не имеет значение при открытии формы.
2. Нужно при вызове Формы передать ей значение массива где ОбъектыНазначенияМассив[0] = ссылка на документ:
ПараметрыФормы = Новый Структура("СсылкаНаОбъект", ОбъектыНазначенияМассив[0]);
ОткрытьФорму("ВнешняяОбработка.ПечатнаяФорма.Форма.ФормаВвода",ПараметрыФормы,,,,,Новый ОписаниеОповещения("ПечатьЗавершение", ЭтаФорма, ОбъектыНазначенияМассив), РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);
3. В открытой форме нужно написать запрос на проверку и получение значение ранее отправленного параметра:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("СсылкаНаОбъект") Тогда
Сообщить(Параметры.СсылкаНаОбъект);
Объект.СсылкаНаОбъект = Параметры.СсылкаНаОбъект;
КонецЕсли;
КонецПроцедуры
4. После чего можно свободно работать с объектом - "СсылкаНаОбъект"
Разница в УП в том что параметры можно получать только &НаСервере.
Параметры формы - получаются при открытии формы ПриСозданииНаСервере.
Больше никаких других параметров вы в УФ и формах не получите.
Механизм, используемый в ОФ с реквизитами обработки - аннулирован 1С.
Менеджера объекта - у внешних обработок и отчетов нет.
И никакие параметры передавать для отладки ВПФ не надо - сделать маленькую доп.формочку, в ней задавать ссылку на документ, далее передавать её в модуль объекта обработки в Печать().
И только так работает нормальная отладка ВПФ в УФ сейчас.
А задавать ссылку в коде жестко, как у вас - тоже, конечно, можно. И каждый раз подбирать документ, менять под это код, а потом еще и не забывать отменять жесткую ссылку в рабочей версии.
И только так работает нормальная отладка ВПФ в УФ сейчас.
Да ладно?! Если вы не знаете как, то не нужно об этом так категорично говорить.
Хоть и офтоп, т.к. про отладку вообще не говорилось...
Любая внешняя обработка отлично отлаживается, если предварительно ее открыть в конфигураторе и открыть через файл - открыть в предприятии.
Естественно обработка должна быть загружена во внешних обработках та же самая.
Т.е. правим - сохраняем - загружаем во внешние обработки - открываем через файл - открыть - закрываем и ВСЁ. Отладка работает!
Любая внешняя обработка отлично отлаживается, если предварительно ее открыть в конфигураторе и открыть через файл - открыть в предприятии.
Давно с УФ работали? Или вообще не работали? Это какая сейчас внешняя обработка у вас "отлично отлаживается, если предварительно ее открыть в конфигураторе и открыть через файл - открыть в предприятии"?
Вы вообще в УФ работали последние 3 года? Именно как раз 3 года назад 1С "отменили" сохранение на диск любых - внешних-внутренних-справочных обработок, - заодно аннулировав и так любимую вами "отладку с диска открытием в конфигураторе и предприятии".
Максимум - вы сможете "по-другому" отладить "внешнюю обработку", если сделаете её внутренней - втащите в конфигурацию. И то, если база серверная, просто так не пройдешься по серверным процедурам - нужно будет включать серверную же отладку, что зачастую в принципе невозможно по совсем другим причинам, не связанными с отладкой.
Естественно обработка должна быть загружена во внешних обработках та же самая.
Т.е. правим - сохраняем - загружаем во внешние обработки
а это вообще непонятно что - у 1С никогда не были связаны обработки в справочнике "Внешние отчеты и обработки" - с файлами-обработками на диске.
В ОФ - можно было "поймать" выполняемую обработку из справочника на диске в виде темпового файла, сейчас и это невозможно.
(45)так и УФ не знаете.
Не работает ваш способ, да и не работал (или нечто подобное, завязанное на чтение темпового файла обработки сразу с диска) уже с релиза 8.3.8.2137, когда и ввели эту ерунду с хранилищами и хранением обработок в BLOB в базе.
Что у вас за релиз такой волшебный, а, скорей всего - старый 8.3 наверняка, который еще на диск выгружал.
Не зря вы финты с открытием-закрытием обработки делаете, прежде чем вызвать по Печать.
Еще, поди, и отладка серверная включена, у вас же все просто - сервер туда, сервер сюда, под отладку )
(50) Вот только УФ и знаю... и довольно не плохо.
При открытии внешней обработки через файл - открыть, платформа сопоставляет открытый файл внешним обработкам/печформам. Дальше все просто. Человек я воспитанный. Не люблю выскочек не образованных.
(29) так вопрос решается с гуглом один на один за 10 мин(ну час от силы, если опыта нет)...
ТС потратил на это день!
А после такого:
Если вы не можете открыть код обработки буду вам высылать скриншоты с вопросами по нему. Я не знаю как еще разжевать вопрос.)))))))))))))))))))))))))))))))))))))))))))))))))
(30) Ну... Все мы были такими, когда не знали что такое управляемые формы и чем они отличаются от обычных.
Автор растет и ему не все равно на сообщество инфостарта - задал вопрос - нашел ответ - поделился информацией.
За это и плюс.
(32) поиском ищите "Язык запросов 1С".
Например, тут как работать со строками в запросе "helpme1c.ru_yazyk-zaprosov-1s-8-3-dlya-nachinayushhix-programmistov-funkcii-dlya-raboty-so-strokami"
(32) по секрету скажу - в инете есть бесплатный доступ к таким материалам.
Вот еще неплохой материал - Трюки и уловки при работе с отчетами на базе СКД.
Слишком поздно наверно, но решил немножко по другому. Добавил список значений в форму открытия ВПФ (как на рисунке) и в модуле формы добавил, все работает.