Имя: Пароль:
1C
1С v8
Как добавить внешнюю обработку в меню конфигурации
0 mvgfirst
 
08.02.12
18:42
Написал внешнюю обработку, функционал достаточно общий, есть очень сильное желание сделать обработку доступной через пункт меню конфигурации. Т.е. что бы пользователь, например, выбрал пункт "Продажи - Проверка серийного номера" и ему открылась моя обработка.
При этом конфигурация типовая, и не хочется снимать с поддержки, и влезать в интерфейсы и править там что либо.
Обработку добавляю в справочник "Внешних обработок и печатных формы", но как сделать что бы без изменения конфигурации обработка вызывалась из пункта меню.
Вопрос возник потому что печатные формы подключаются как дополнительные кнопки (и даже подменяют стандартные формы)....
Логично было бы предположить что и зарегистрированные внешние обработки можно вызывать как-то быстрее чем "Сервис-Внешние отчеты и обработки-Внешние обработки-Выбор из огромного списка обработок"... особенно если обработку предполагается использовать очень часто.
1 mvgfirst
 
08.02.12
18:43
Если это важно - конфигурация УТП для Украины.
2 Иван Болван
 
08.02.12
18:47
никак, только пункт внешние обработки можно вынести в меню
3 БалбесВ1с
 
08.02.12
18:47
Очень хороший вопрос.С нетерпением жду ответа.Как несведующего в этих вопросах человека,меня тоже интересует расширение функционала типовых без изменения конфигурации.
4 mvgfirst
 
08.02.12
19:05
Печально... получается при всей крутизне 1С 8.2 в обычных формах меню это все-таки статично-заданный в конфигураторе объект повлиять на который программно нет возможности? Или просто у разработчиков типовых конфигураций небыло желания?
5 mvgfirst
 
08.02.12
19:17
Ну тогда подскажите, может существует какой-то программный механизм как открыть уже зарегистрированную внешнюю обработку?
Т.е. например добавляю кнопку на форму, в обработчике кнопки пишу что-то в стиле:
ОткрытьЗарегистрированнуюВнешнююОбработку(ИмяВнешнейОбработки);
6 mvgfirst
 
08.02.12
19:20
Блин... полез в форму списка справочника ВнешниеОбработки... так они там прям в обработчике "Выбор" табличного поля списка обработок пишут код открытия формы через выгрузку во временный файл!!! Вот непонятно мне... зачем делать так... неужели нельзя додуматься сделать какую нибудь экспортную функцию? Которую везде и использовать...
Это ж получается если мне нужно открыть эту обработку где-то в программе в своем коде - нужно будет дублировать тот же код?

Если я ошибаюсь - прошу поправьте!
7 rotting
 
08.02.12
19:23
(6) во всем ошибаешься, все придумали до нас, есть же механизм внешних обработок, или пользователи совсем тупые???
8 shuhard
 
08.02.12
19:23
(6)[Это ж получается если мне нужно открыть эту обработку где-то в программе в своем коде - нужно будет дублировать тот же код? ]
странное предположение, что мешает сохранить обработку в темповый файл и подключить как внешнюю ?
9 mvgfirst
 
08.02.12
19:31
(7) Пользователи не тупые, я просто не привык гонять пользователей через 6 пунктов меню каждый раз когда им нужно открыть частоиспользуемую обработку. Особенно если в справочнике внешних обработок их (обработок) поднаберется эдак штук 100 с разными папками и подпапками.

Вся суть вопроса как облегчить жизнь пользователю, да так что бы не ломать конфигурацию на поддержке.

Если есть подобный механизм (или функция какого-нибудь экспортного модуля) в типовой конфигурации - хотя бы намекните как называтся.

Еще раз повторю, вдруг не поняли. Задача: дать пользователю легкий и быстрый способ открыть конкретную внешнюю обработку которую он может использовать по 100-250 раз в день. (открыть один раз и не закрывать до конца дня не предлагать... тупое решение)
10 shuhard
 
08.02.12
19:32
(9) ты сам то себя понял ?
11 mvgfirst
 
08.02.12
19:34
(8) Что Вы имеете в виду когда говорите следующее: "что мешает сохранить обработку в темповый файл и подключить как внешнюю ?"

Если я правильно понял, вы предлагаете писать код, в котором брать обработку из справочника, сохранять во временный файл, и открывать ее из временного файла? Так? Вообще-то это уже реализовано... один раз в обработчике формы списка внешних обработок.

Вопрос звучал в следующем контексте: Нужно писать дублирующий код в своем обработчике что бы решить аналогичную задачу, или же есть все-таки стандартная функция которая это же выполняет в типовой конфигурации?
12 mvgfirst
 
08.02.12
19:34
(10) Что непонятного? Укажите место - объясню еще раз.
13 Адинэснег
 
08.02.12
19:36
(12)
(0)-(11)
14 mvgfirst
 
08.02.12
19:37
(13) Очень содержательный пост. Стало значительно понятней
15 shuhard
 
08.02.12
19:39
(12) тебе нужна кнопка в документе, по которой вызывается обработка, подцепленная в "дополнительные отчеты и обработки" ?
16 mvgfirst
 
08.02.12
19:43
(15) Мне нужен способ открыть внешнюю обработку подцепленную в "дополнительные отчеты и обработки" из пункта меню конфигурации.
Про кнопку - это я уже как альтернативный вариант решения проблемы. Т.е. если нельзя совсем не трогать кофинурацию, то как сделать что бы изменения были минимальными. (дублировать код выгрузки обработки во временный файл... как от не особо хочется)
17 mvgfirst
 
08.02.12
19:56
Дополнительный пример для иллюстрации моего вопроса:
1. Пишем обработку, называем ее "Обработка 1". Добавляем в список внешних обработок.
2. Пишем обработку, называем ее "Обработка 2". Добавляем ее тоже в список внешних обработок.
3. Учим пользователя открывать обработку 1 из списка зарегистрированных внешних обработок.
4. На форме обработки 2 нужно сделать кнопку при нажатии на которую должна открыться ранее зарегистрированная обработка 1.

Как это реализовать? Писать в обработчике кнопки код по сохранению файла обработки во временный файл и открывать его? И так в каждом месте где мне нужно будет вызывать внешнюю обработку из уже зарегистрированных?
18 shuhard
 
08.02.12
19:59
(17) [Писать в обработчике кнопки код по сохранению файла обработки во временный файл и открывать его]
вызвать процедурку из общего модуля не кошерно ?
19 Lama12
 
08.02.12
20:01
Мда... Делаем дополнительную внешнюю обоработку.
В ней делаем поля в которые можно выбирать обработки из списка внешних обработок (настраивать).
Пользователь настраивает такой список под себя и сохраняет. Дальше ему нужно запустить одну обработку и все. Все остальное запускать из нее.
Форму можно сделать скрывающейся.
Если лень запускать даже одну обработку, то можно только ее запуск внести в конфигурацию.
20 mvgfirst
 
08.02.12
20:06
(18) Назови имя этой процедурки?! Я именно об это и прошу. Суть вопросов как называется эта процедурка. Т.к. я у себя в УТП ее ненашел, очень даже может быть - плохо искал. Поэтому прошу назовите мне эту процедуру и я успокоюсь.
21 shuhard
 
08.02.12
20:08
(20) ОткрытьВнешнююОбработкуИзВременногоФайлаПолученнуюИзХранилища(ИмяОбработки,Владелец)
как то так
22 mvgfirst
 
08.02.12
20:14
(19) Делать обработки мне не лень. Я хотел сделать это без вмешательства в конфигурацию на поддержке. Это я писал в (0).
Дальше в обсуждении я пытаюсь развить тему как вызвать уже зарегистрированную внешнюю обработку из любого программного кода. Говоря совсем уж простым языком: "я тупо хочу узнать как называется функция или процедура общего модуля с помощью которой можно открыть внешнюю обработку из справочника внешних обработок программно".
23 mvgfirst
 
08.02.12
20:18
(21) Конфигурация "УТП для Украины". Глобальный поиск по фрагменту "ОткрытьВнешнюю" не дал ни одного результата.
Поэтому вопрос остается тот же... Существует ли готовый механизм или придется таки изобретать этот велосипед?
24 shuhard
 
08.02.12
20:19
(23) [Глобальный поиск по фрагменту "ОткрытьВнешнюю" не дал ни одного результата]
ржал
от души
ну ясен пень не может быть процедуры с таким именем
25 mvgfirst
 
08.02.12
20:23
(24) Вместо того что бы писать какой у нас тут пень, всего-то нужно было написать следующее:
"Такой функции в конфигурации нет, ее нужно написать в общем модуле самостоятельно и вызывать где понадобится".
26 mvgfirst
 
08.02.12
20:24
Собестенно, 10 лет не заходил на этот форум, но за это время мало что изменилось... люди что угодно будут писать.. и только единицы, четко и лаконично дают правильные ответы.
27 mvgfirst
 
08.02.12
20:25
(26) Упс.. поправочка... 7 лет и 2 мес
А то закидают ща... упреками.
28 takefive
 
08.02.12
20:26
Вот тебе рама от велосипеда...
ВнешняяОбработка.ХранилищеВнешнейОбработки.Получить().Записать(ИмяФайла);
Обработка = ВнешниеОбработки.Создать(ИмяФайла);
29 mvgfirst
 
08.02.12
20:36
(28) Спасибо, но уж как скопировать "велосипед" я разберусь и сам, тем более что есть откуда копировать :)

Смущает меня логика разработчиков конфигурации... видимо я уж слишком наивный идеалист... почему-то думалось, что раз уж добавили механизм хранения внешних обработок, то и интерфейсную обвязку по работе с ними тоже должны были сделать...
30 takefive
 
08.02.12
20:47
звонок на руль...
/Execute <имя файла внешней обработки> — предназначен для запуска внешней обработки в режиме 1С:Предприятие непосредственно после старта системы.
31 echo77
 
08.02.12
20:49
(29) На самом деле все не так уж и сложно. Добавить общий модуль, в нем создать экспорную процедуру, которая и будет открывать вашу внешнюю обработку

// Функция предназначенная для открытия внешней обработки, сохраненной в БД
//
// Параметры
//  Обработка  - ссылка на элемент справочник ВнешниеОбработки
//
// Возвращает объект внешнюю обработку/отчет, если не удалось открыть форму по умолчанию
Функция ОткрытьВнешнююОбработкуИзБД(ОбработкаСсылка) Экспорт
   
   ЭтоОбработка = ?(ОбработкаСсылка.ВидОбработки = Перечисления.ВидыДополнительныхВнешнихОбработок.Обработка, Истина, Ложь);
   ЭтоОтчет = ?(ОбработкаСсылка.ВидОбработки = Перечисления.ВидыДополнительныхВнешнихОбработок.Отчет, Истина, Ложь);
   
   ИмяФайла = ПолучитьИмяВременногоФайла();
   ДвоичныеДанные = ОбработкаСсылка.ХранилищеВнешнейОбработки.Получить();
   ДвоичныеДанные.Записать(ИмяФайла);
   
   Если ЭтоОтчет Тогда
       Форма = ВнешниеОтчеты.ПолучитьФорму(ИмяФайла);
   Иначе
       Форма = ВнешниеОбработки.ПолучитьФорму(ИмяФайла);
   КонецЕсли;
   
   Если Не Форма = Неопределено Тогда
       Форма.Открыть();
   Иначе
       ВнешняяОбработка = ВнешниеОбработки.Создать(ИмяФайла);
       
       Возврат ВнешняяОбработка;
   КонецЕсли;
   
КонецФункции


Вызывать примерно так:

Процедура Открыть_ТелефонныйСправочник() Экспорт
   // Здесь получаем ссылку на внешнюю обработку, расположенную в БД
   GUID = Новый УникальныйИдентификатор("c8acd5e2-0ef2-11df-9e2f-0017a44bab58");
   Ссылка = Справочники.ВнешниеОбработки.ПолучитьСсылку(GUID);
   //
   ОткрытьВнешнююОбработкуИзБД(Ссылка);

КонецПроцедуры
32 Mashinist
 
08.02.12
20:50
(0)вообще праведный гнев мне понятен
совсем без изменения конфигурации сделать ничего нельзя
поэтому что бы меньше трогать конфигурацию я добавлял при начале работы вызов одной обработки - типа рабочий стол, который пользователь сам себе настраивает как хочет
а обработок таких великое множество... ну или самому написать
33 ProProg
 
08.02.12
20:52
Согласен с (32). товарищ в (0) занимается онанизмом.
34 MaxS
 
08.02.12
20:57
Согласен с (0) не хватает гибкости в типовых...
Не хватает функционала, например, запустить дополнительную обработку при запуске в режиме предприятия. Эта обработка бы программно поправила бы интерфейс или вывела бы свой рабочий стол.
35 mvgfirst
 
08.02.12
20:59
(30) А как это будет работать в режиме Клиент-Сервер? Нужно будет допонительно создать общий каталог в сети откуда все клиенты будут открывать эту обработку?
Да и как это решение (без существенного допиливания) будет работать с обработками загруженными в справочник ВнешниеОбработки?
Но за "звонок на руль" спасибо.... осталось дождаться остальных запчастей, и велик готов...
36 mvgfirst
 
08.02.12
21:02
(33) Онанизмом занимались разработчики модуля работы с серийными номерами в УТП.
Видимо они долго и мучительно выполняли работу по оприходованию огромных партий товара с серийными номерами что написали такую удобную обработку.
И совсем забыли о каком-либо инструменте для отслеживания истории этих вот номеров.

Поэтому мой заказчик и заказывает дополнительную обработку которая будет компенсировать подобные недостатки. А т.к. я не привык заставлять своих клиентов заниматся этим самым "анонизмом" :) - то решил попробовать облегчить им труд... и не заставлять по 100 раз на день лезть по длинному пути в справочник внешних обработок...

Вообщем ладно. Спасибо всем кто понял... и неСпасибо тем кто решил постебаться вместо констурктивной помощи. :-)
37 ll13
 
08.02.12
21:04
механизм внешних обработки позволяет создавать обработки 4 типов (если мне не изменяет память) , в том числе обработки для заполнения тч и печ формы. Что тебе мешает написать обработку по стандарту печатных форм, но ничего не печатать, а выполнять любой требуемый код ?
38 MaxS
 
08.02.12
21:11
(31) кстати, не исследовал этот вопрос. Временные файлы внешних обработок удаляются из temp после выхода из 1С? ))
39 mvgfirst
 
08.02.12
23:27
(37) Да ничего не мешает, просто это уже операции из разряда операций по удалению гланд через задний проход. Да и собственно в этом случае возможность выполнить эту команду будет только при наличии открытого документа или справочника. Т.к. внешние печатные формы срабатывают только так. (практически... углубляться не буду т.к. метод хоть и рабочий но несколько алогичен)
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший