Исходная обработка http://infostart.ru/public/162019/, здесь просто исправлены некоторые процедуры и функции для управляемого приложения. (Публикуется с согласия автора SeiOkami)
12.07.2016 - Версия 4.3 - убрал модальность для управляемой формы, изменена встроенная ВПФ .
23.11.2016 - Версия 4.4 - изменена встроенная ВПФ .
03.04.2018 - Версия 4.7 - исправлено сохранение ВПФ в клиент-серверном варианте от vshish.
11.05.2018 - Версия 4.8 - исправление от VovkaPutin плюс убрал из текста модуля ВПФ директивы препроцессора (то, что начинается с "#"), убрал модальность при открытии ВПФ из конструктора.
17.10.2019 - Версия 5.1 - тестировалось на платформе 8.3.15.1700, БП 3.0.73.54
(1) progr-2008, Расскажите подробней, как Вы использовали обработку?
Вот две ВПФ, которые я только что создал для обычного и управляемого приложения.
Читайте исходную статью, как пользоваться обработкой (изменял для управляемого приложенгия, если найдёте косяки в обычном - пишите - исправлю)
У меня разнообразные ошибки выдаются при разных наборах требуемых функций.
- про подробнее, будет время выложу инструкцию - сейчас полугодие - не дадут)))
Вы пишИте, что не получается, может в таком режиме смогу помочь...
А то у меня информации 0, только по первому посту могу предположить, что пробуете в обычном приложении...
(7) и в обычном, и в управляемых, в разных конфигурациях - сообщения разные.
Формирую по-умолчанию в УПП 1.3 и в БП 3.0.
Похоже, от версии конфигурации зависит - в некоторых работает, в некоторых нет.
(8) progr-2008, Давайте попробуем таки на абстракное
в разных конфигурациях - сообщения разные.
а пойдём прям по примерам, в такой то конфигурации для такого то документа возникает такая-то ошибка, лучше с картинками, по другому я ничего понять не смогу...
"...наметилась тенденция выносить процедуры и функции печати из модуля менеджера в общие модули. Поэтому, чаще всего, созданную конструктором ВПФ придётся допиливать, перенося в модуль ВПФ эти самые процедцры и функции из общих модулей."
А как-то можно эти общий процедуры и функции программно перенести в ВПФ?
А как-то можно эти общий процедуры и функции программно перенести в ВПФ
овчинка выделки не стоит... Для этого всё равно придётся скопировать тексты общих модулей в конструктор и придумать анализатор текста, чтобы из вызовов процедур общих модулей убрать их имена. Проще создать заготовку ВПФ конструктором, а потом нужные процедуры и функции общих модулей (те, в которых планируется сделать изменения) перенести в модуль ВПФ и тут уже отредактировать. Время на разработку ВПФ всё равно в разы сокращается...
(10)Alex_E, отличное описание, особенно важно про изменения ВПФ.
На этой версии конфигурации все сразу получилось и для счета, и для реализации, причем, в счете даже сумма прописью сразу была.
Пункты 1-6 так и делала раньше, только версии конфигураций другие были, не во всех работало, а еще - по несколько форм сразу включала.
Проще намного по одной форме делать, а не сразу пакет.
(12) с этой версией БП 3.0, если делать по одной форме - ошибок пока нет, пробовала на нескольких документах. Получилось и несколько форм для реализации.
Теперь стало понятно, что если в УПП включать по одной форме и выбирать не Печать, а функцию для этой формы, тоже пока получается без ошибок. Пробовала на реализации, счете.
А вот если несколько форм сразу включить - тогда проблемы, связанные с параметрами печати и т.д.
Но лучше по одной форме делать, намного проще разбираться.
Например, для счета в УПП, если основная Печать:
{ВнешняяОбработка.СчетНаОплатуПокупателю_ВнешняяПечатная.МодульОбъекта(18,19)}: Ожидается выражение
ПараметрыПечати =<<?>> ;
{ВнешняяОбработка.СчетНаОплатуПокупателю_ВнешняяПечатная.МодульОбъекта(19,25)}: Ожидается выражение
КоллекцияПечатныхФорм =<<?>> ;
{ВнешняяОбработка.СчетНаОплатуПокупателю_ВнешняяПечатная.МодульОбъекта(21,19)}: Ожидается выражение
ПараметрыВывода =<<?>> ;
А в реализации еще:
{ВнешняяОбработка.РеализацияТоваровУслуг_ВнешняяПечатная.МодульОбъекта(47)}: Значение не является значением объектного типа (ДоступнаПечатьПоКомплектно)
ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;
(13) progr-2008, покрутил на УПП 1.3, сразу - запускать только в обычном приложении! Потом - под одной печатной форме однозначно) Если нужен пакет - сделать на основании одной ВПФ не проблема, могу, конечно, написать инструкцию, но оно надо?
(15) этим занимаются не модераторы. Тем не менее, проверила письмо с рассылкой, Ваша публикация там есть. В блоке "Новые разработки за StartMoney", примерно в середине списка
Есть проблема с сохранением печатной формы, когда конфа серверная. Компилируется и создается начальное представление на сервере, а конечное сохранение происходит на клиенте, а это разные пути, соответственно файла не видит. Я побыстрому выпутался так:
1. Создал реквизит формы произвольного типа - ДвоичныеДанныеОбработки;
2. поправил код команды "КомандаСохранить":
//Не работает когда серверная
//ДвоичныеДанныеОбработки = Новый ДвоичныеДанные(Объект.ИмяГотовогоФайла);
//ФайлОбработки = Новый Файл(Объект.ИмяГотовогоФайла);
ПолучитьДвоичныеДанные();
ФайлОбработкиСуществует = СуществованиеФайлаОбработки();
//Если ФайлОбработки.Существует() тогда
Если ФайлОбработкиСуществует тогда
Показать
3. создал соответственно серверную процедуру и функцию:
&НаСервере
Процедура ПолучитьДвоичныеДанные()
ДвоичныеДанныеОбработки = Новый ДвоичныеДанные(Объект.ИмяГотовогоФайла);
КонецПроцедуры
&НаСервере
Функция СуществованиеФайлаОбработки()
ФайлОбработки = Новый Файл(Объект.ИмяГотовогоФайла);
Возврат ФайлОбработки.Существует();
КонецФункции
(0), на мой взгляд - отличная дыра в безопасности.
Я с помощью Вашей обработки легко получу доступ к серваку где будет находится база.
Не спрашивайте: -Как?
Догадайтесь сами.
(23) BigB, Дыр в безопасности существует много, но есть поговорка - нато и щука в пруду, что бы карась не зевал)))
ЗЫ Обработка вообще то не моя, см. анонс, и существует здесь уже довольно таки длительное время... Но, если вы имеете доступ к базе, то зачем Вам получать его ещё?
Выдается ошибка пробовал на 2х конфигурациях платформа 8.3.8.2027:
Возможно, обработка (отчет) устарела или не является дополнительной:Метод объекта не обнаружен (СведенияОВнешнейОбработке)
-------------------
Нашел решение, необходимо добавить функции в модуль объекта обработки - как сказано в статье:
(Для того чтобы добавить дополнительную обработку или отчет в тонкий клиент нужно в модули отчета или обработки прописать одну процедуру и две функции.)
http://infostart.ru/public/305037/
(28) Светлый ум, А можно поподробнее о каких конфигурациях идёт речь? И хотя бы текст ошибки - просто пробую на БП 3.0 УТ 11 .2 ЗУП 3.0 - всё на УФ - ошибок нет, ежели есть - хочу увидеть и исправить...правда...
Текст ошибки я уже приводил:
"Возможно, обработка (отчет) устарела или не является дополнительной:Метод объекта не обнаружен (СведенияОВнешнейОбработке)"
- у меня докрученная Розница "Розница 8. Магазин бытовой техники и средств связи, редакция 2.1 (2.1.8.16)",
поэтому сильно не заморачивайтесь по поводу ошибки, кому надо тот из комментов возьмет - способ допила.
(Плюс комменту 28 поставьте, чтобы в шапке публикации решение было)
(35) Светлый ум, Как скажете (поставил)... Вообще этот конструктор не решает всех проблем - просто даёт заготовку для разработки с минимизацией времени на типовое решение))))
Почему может такая ошибка выдаваться при компиляции:{ВнешняяОбработка.КонструкторВнешнихПечатныхФорм.МодульОбъекта(78)}: Метод объекта не обнаружен (Run)
WshShell.Run(СтрокаЗапуска, 0, Истина);
(39) Попробуйте на платформе постарше, у мня таких проблем не наблюдается, но ставить 8.3.6.* при наличии 8.3.9.* как то не хочется. Если очень нужно - пишите в личку - мог посмотреть через амми админ
Вот такая ошибка, что в обычном, что в клиент-серверном режиме.
Платформа 1С:Предприятие 8.3 (8.3.8.1933)
{ВнешняяОбработка.КонструкторВнешнихПечатныхФорм.МодульОбъекта(1311,9)}: Процедура или функция с указанным именем не определена (РазобратьСтрокуRegEx)
рез=<<?>>РазобратьСтрокуRegEx(НРег(ОбрабатываемаяПроцедураФункция.ТекстПроцедуры),"[\(\)\.\,\;\s=]"+имя+"[\(\)\.\,\;\s=]");
(0)"наметилась тенденция выносить процедуры и функции печати из модуля менеджера в общие модули"
сейчас это уже и не тенденция вовсе, а "стандарт" - разные БСП в разных конфигурациях и разных внутренних версиях БП, ЗУП и УПП, все во внешних модулях, которые бесконечно вызывают друг друга, и постоянное изменение кода модулей (от правки кода до исправления описаний функций и комментариев).
Так что если кто желает сделать пусть даже простенькую общую ВПФ для разных конфигураций (не говоря уже про универсальные обработки) - предстоит веселенькое занятие сбора, а потом и бесконечной актуализации по всем версиям.
Молодец 1С, как обычно, сделала все правильно - теперь еще и зарубила на корню универсальные обработки.
(50) Вот прям всё прочитал, публикацию и комменты, но приведённой цитаты не нашёл))))) но это ничего, тем более поправить что-то можно только в течении получаса, так что терпите, сэр, или просто, коли не нравится, уйдите по английски))))
ЗЫ если бы и нашёл, то исправлять бы не стал, ибо не вижу ничего криминального
(52) это ближе к концу, абзацем ниже от
"Внимание: После каждого изменения лучше сохранять ВПФ и проверять работоспособность, если менять всё подряд, потом может получится, что легче будет начать с начало, чем исправить то, что наменяли. Ещё совет, когда всё работает, и собираетесь что- то допилить, создайте новую версию ВПФ, и меняйте её – останется рабочий вариант, и текущий, с попыткой допила" :)
Кстати, не указали, что теперь всегда нужно при создании своей ВПФ - сразу создавать и сервисную форму отладки для этой ВПФ. Именно по причине невозможности теперь создавать универсальные обработчики, в том числе - универсальные отладчики ВПФ. Но уже по причине невозможности программного открытия самих ВПФ при отладке.
У вас форма как раз есть в примере, только не указано, насколько она будет важна в дальнейшем.
(54) Форма для отладки создается всегда, в реальной работе (после подключения ВПФ) она не используется, нужна только для отладки. В принципе никому не мешает, но если дело принципа - можно удалить, на работоспобность ВПФ не повлияет
Нормальная обработка, но не все работает если база серверная.
1. Кнопка сохранить пытается сохранить на клиенте то, что сформировано на сервере и нет на клиенте.
2. кнопка зарегистрировать тоже не работает( не разбирался почему.
а так да очень удобно создать ВПФ и подправить ее под себя.
Уже писал в (63), что при серверном варианте базы обработка не работает.
Компилируется на сервере, а сохраняется на клиенте. и файл не передается.
исправить можно заменой процедуры Команда сохранить на исправленный вариант
Алексей. Если не сложно исправь и опубликуй.
&НаСервереБезКонтекста
Функция ПолучитьДвоичныеДанныеФайла(ИмяГотовогоФайла, Отказ)
ФайлОбработки = Новый Файл(ИмяГотовогоФайла);
Если ФайлОбработки.Существует() тогда
Возврат Новый ДвоичныеДанные(ИмяГотовогоФайла);
Иначе
Отказ = Истина;
Возврат Неопределено;
КонецЕсли;
КонецФункции // ПолучитьДвоичныеДанныеФайла()
&НаКлиенте
Процедура КомандаСохранить(Команда)
Если НЕ Объект.сФайлВродеБыГотов тогда
ПоказатьПредупреждение(,"Скомпилируйте файл ВПФ!");
Возврат;
КонецЕсли;
Отказ = Ложь;
ДвоичныеДанныеОбработки = ПолучитьДвоичныеДанныеФайла(Объект.ИмяГотовогоФайла, Отказ);
Если не Отказ тогда
ДиалогФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
ДиалогФайла.Фильтр = "*.epf";
ДиалогФайла.Расширение = "epf";
ДиалогФайла.ПолноеИмяФайла = Объект.ИмяНовойОбработки;
Если ДиалогФайла.Выбрать() Тогда
ИмяФайла = ДиалогФайла.ПолноеИмяФайла;
ДвоичныеДанныеОбработки.Записать(ИмяФайла);
ГотовыйФайлик = Новый Файл(ИмяФайла);
Счетчик = 0;
Пока НЕ ГотовыйФайлик.Существует() И Счетчик < 999 цикл
Счетчик = Счетчик + 1;
КонецЦикла;
сФайлСохранен = Истина;
Если ГотовыйФайлик.Существует() тогда
Объект.ПолныйПутьВПФ = ГотовыйФайлик.ПолноеИмя;
Режим = РежимДиалогаВопрос.ДаНет;
Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияОткрытияВПФ", ЭтаФорма, Параметры);
ПоказатьВопрос(Оповещение, "Файл внешней печатной формы сохранен. Открыть его для проверки?", Режим, 0);
Иначе
ПоказатьПредупреждение(,"Чего-то не так =(");
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
(79) я пока выложу Ваше исправление, а с регистрацией срозхданной ВПФ на сервере потом - нет времени развернуть сервер, когда сделаю - сделаю и это, а так потестить не на чем....
Если программист сделал за свою жизнь сам хотя бы одну внешнюю печатную форму, то сделать вторую не представляется трудным. И времени на это нужно немного.
Инструмент, ускоряющий создание печатных форм, конечно очень нужен и ценен, но только тем, кто этим занимается постоянно. Но если Вы программист широкого профиля, которому нужно делать эти формы не чаще раза в полгода , то вникать во всевозможные инструменты по ускорению создания чего то там ..., форм, обработок, обращению к HTTP сервисам и т.п. нецелесообразно. Слишком много таких инструментов может существовать .... для того , чтобы забивать ими свой единственный мозг.
(69) Аааа, ну эт мы всегда пожалуйста)))
Итак, ИМХО - по мне так он ценен как раз не тем, кто постоянно этим занимается (им не нужно, когда конвейер работает давно и ставбильно, он не требует пристального внимания наладчиков), а тому, кто делает ВПФ от случая к случаю, и загружать свой мозг информацией, как это делается нет никакой необходимости - есть инструмент, в который это заложено, им и пользуемся...
А то, ить, все знают как копать ямы, но можно копать руками, а можно экскаватором, в разных ситуациях использование каждого из этих способов может быть вполне себе оправдано, но по мне так, в любом случае, лопату нужно иметь...
Для того , чтобы копать экскаватором , нужно сначала на курсы экскаваторщиков устроиться. Поучиться недельку другую. Спасибо за ваш инструмент. Как только придется сделать ВПФ, сразу о нем вспомню!
Гуманоидов, инопланетян и др. не рассматриваем. Берем обычного отечественного 1С программиста. Вот что действительно ему нужно, так это принципы, приемы построения (кодирования) ВПФ. Из учебников 1С, ИТС и др. Иначе он не программист , а студент-гуманоид. А инструменты - это дело наживное, хочу использую, хочу нет. Но не подумайте, что я спорю. Безусловно , инструменты всякие нужны, инструменты всякие важны!
(81) Привет! Скачал версию 4.7, она в модуле объекта почему-то не до конца пишет слово "КонецПроцедуры" в процедуре печать. Естественно потом не открывается) после исправления в конфигураторе открывается нормально.
Видел такое у кого-то из клиентов, когда на его компе делал ВПФ, потом стал исправлять на своём - не проявилось... В принципе дописать КонецПроцедуры не проблема, но...порядок быть должЁн - пишите в личку - посмотрим серез АА на Вашем компе - может удастся словить причину...
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
(89) Вот это, ИМХО, лишнее... Обработка запускается в разных базах, используется редко, потому регистрация ни к чему...если конечно не стоит задача постоянно ваять ВПФ для конкретной базы))))
Выложил новую версию 4.8 с исправление от VovkaPutin (ещё раз спасибо), плюс убрал из текста модуля ВПФ все строки с #Если... #КонецЕсли #Область ... #КонецОбласти итд. Плюс убрал модальность при открытии ВПФ из конструктора, в последних версиях конфигураций на УФ от неё совсем отказались, потому падало с ошибкой...