Добрый день!
Внешняя обработка зарегистрирована в справочнике внешних обработках.
Из формы друго-го справочника при нажатии хочу открыть свою Внешнюю обработку, открывается форма регистрации а не форма моей обработки. Подскажите пожалуйста, что не так. Толстый клиент, обычние формы.
Процедура ОсновныеДействияФормыФормыСпецификаций(Кнопка)
ВнешняяФорма = Справочники.ВнешниеОбработки.НайтиПоКоду("000000109");
Форма = ВнешняяФорма.ПолучитьФорму();
Форма.Открыть();
КонецПроцедуры
Внешняя обработка зарегистрирована в справочнике внешних обработках.
Из формы друго-го справочника при нажатии хочу открыть свою Внешнюю обработку, открывается форма регистрации а не форма моей обработки. Подскажите пожалуйста, что не так. Толстый клиент, обычние формы.
Процедура ОсновныеДействияФормыФормыСпецификаций(Кнопка)
ВнешняяФорма = Справочники.ВнешниеОбработки.НайтиПоКоду("000000109");
Форма = ВнешняяФорма.ПолучитьФорму();
Форма.Открыть();
КонецПроцедуры
По теме из базы знаний
- Универсальная отладка внешней обработки заполнения (типовые механизмы, без внешних файлов, расширений или вызова внешних файлов)
- Улучшайзер - как одна внешняя обработка может улучшать другие внешние обработки
- Внесение изменений в выгрузку торгового каталога из 1С: УПП (обычные формы, платформа 8.3) на сайт с помощью стандартной обработки 1С Битрикс
- Работа с внешними обработками на управляемых формах
- Программное открытие второй формы внешней обработки в 1С 8.3
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Спасибо я разобрался. По анологии с типовым функционалом.
ВнешняяФорма = Справочники.ВнешниеОбработки.НайтиПоНаименованию("Имя обработки");
ИмяФайла = ПолучитьИмяВременногоФайла();
ДвоичныеДанные = ВнешняяФорма.ХранилищеВнешнейОбработки.Получить();
ДвоичныеДанные.Записать(ИмяФайла);
Форма = ВнешниеОбработки.ПолучитьФорму(ИмяФайла);
Форма.Открыть();
user1743808; VyacheslavShilov; nekit_rdx; mikl79; CHSN88; solary; ulenergo; Saipl; kotlovD; denis83; akR00b; Sega; simuljakr; user822247; user1619761; maxrubtsoff; user820492; ValeriyZ; -Vosmiruk-; acuta; user1194102; shyne; 1C-Nic; Henistaromin; ital; user1113173; user721122; user_pdd; d.snissarenko; galamus; EugeneMIPT; adhocprog; sad123; Sibcar; by_1Cnik; komatoza; Kesak; KroVladS; solontsov; tata111; harmless; freeek; VitusBering; rayastar; MrFlanker; Chaotic; iiiaiiika; Катя84; M.Shalimov; oleglega; Ulia_Bat; dicwork; Ethan Gold; stepancherkov; odin777; admin; Shilov; Отованец; free11; timberwolf2010;
+60
–
Ответить
Использовал подобное решение для нетиповой конфигурации тут аналогично как у Вас, но с контролем ошибок периода исполнения, т.к. вожможны ситуации:
1. внешней обработки просто нет, изменили название:
2. нет прав на создание временного файла обработки в каталоге или просто на доступ к каталогу с использованием
1. внешней обработки просто нет, изменили название:
2. нет прав на создание временного файла обработки в каталоге
ПолучитьИмяВременногоФайла()
попытка ... исключение
Для управляемых форм вот так можно открыть форму внешней обработки:
&НаКлиенте
Процедура Команда1(Команда)
ИмяОбр = ПолучитьИмяВнешней("C:\мояОбработка.epf");
ПараметрыОткрытия = Новый Структура("КлючВарианта", "");
Уникальность = "ВнешняяОбработка." + ИмяОбр + "/КлючВарианта.";
ОткрытьФорму("ВнешняяОбработка." + ИмяОбр + ".Форма", , Неопределено, Уникальность);
КонецПроцедуры
Функция ПолучитьИмяВнешней(ИмяФайла)
дд = Новый ДвоичныеДанные(ИмяФайла);
АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(дд);
ИмяОбр = ВнешниеОбработки.Подключить(АдресВоВременномХранилище,,);
Возврат ИмяОбр;
КонецФункции
ПоказатьАдресФайла="C:\Users\User\Desktop\СтартАвтоЗаписи.epf";
ВнешняяОбработка = ВнешниеОбработки.Создать(АдресХранилища);
НашаОбработка=ВнешняяОбработка.ПолучитьФорму();
НашаОбработка.Открыть();
Вот здесь для новых версий платформы, начиная с 8.3.15
https://www.1s-up.ru/programmnoe-otkrytie-obrabotok-v-1s
Рискую предположить, что постановки задачи открытия внешней обработки или отчёта из справочника на управляемых формах не было в открытом виде. После поисков написал решение такой задачи.
&НаКлиенте
Процедура ВыполнитьОткрытиеОтчетаИлиОбработки()
АдресХранилища = "";
ИмяФайла = ПолучитьИмяВременногоФайла();
ЭтоОтчёт = ЭтоОтчет(ЗаголовокОтчетаИлиОбработкиВСправочнике);
ЭтоПечатнаяФорма = ЭтоПечатнаяФорма(ЗаголовокОтчетаИлиОбработкиВСправочнике);
Если НЕ ЭтоОтчёт ИЛИ ЭтоПечатнаяФорма Тогда
ПолучитьОбработкуНаСервере(АдресХранилища, ЗаголовокОтчетаИлиОбработкиВСправочнике, ИмяФайла);
Результат = ПоместитьФайл(АдресХранилища, ИмяФайла, , Ложь);
ИмяОбработки = ПодключитьВнешнююОбработку(АдресХранилища);
ОткрытьФорму("ВнешняяОбработка."+ ИмяОбработки +".Форма");
Иначе
Если СсылкаНаОбработку(ЗаголовокОтчетаИлиОбработкиВСправочнике) Тогда
КлючВарианта = ПолучитьКлючВариантаОтчета();
ПараметрыФормы = Новый Структура("КлючВарианта", КлючВарианта);
ОткрытьФорму("ВнешнийОтчет.Отчет.Форма", ПараметрыФормы);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Функция ПолучитьОбработкуНаСервере(АдресХранилища, ЗаголовокОбработки, ИмяФайла);
ВнешняяОбработка = Неопределено;
ТекСсылка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ЗаголовокОбработки);
ДвоичныеДанные = ТекСсылка.ХранилищеОбработки.Получить();
ДвоичныеДанные.Записать(ИмяФайла);
КонецФункции
Функция ЭтоОтчет(Заголовок)
ТекСсылка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(Заголовок);
Возврат ТекСсылка.Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительныйОтчет;
КонецФункции
Функция ЭтоПечатнаяФорма(Заголовок)
ТекСсылка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(Заголовок);
Возврат ТекСсылка.Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок.ПечатнаяФорма;
КонецФункции
&НаСервере
Функция ПодключитьВнешнююОбработку(АдресХранилища)
Возврат ВнешниеОбработки.Подключить(АдресХранилища);
КонецФункции
&НаСервере
Функция ПолучитьКлючВариантаОтчета()
СписокВариантов = ХранилищеВариантовОтчетов.ПолучитьСписок("ВнешнийОтчет.Отчет");
Если СписокВариантов.Количество() = 0 Тогда
Возврат Неопределено;
КонецЕсли;
Возврат СписокВариантов[0].Значение;
КонецФункции
&НаСервере
Функция СсылкаНаОбработку(ЗаголовокОтчета)
ОтчетСсылка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ЗаголовокОтчета);
Если ОтчетСсылка.Пустая() Тогда
Сообщить("Не удалось найти внешний отчет");
Возврат Ложь;
КонецЕсли;
ДвоичныеДанные = ОтчетСсылка.ХранилищеОбработки.Получить();
АдресХранилища = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
ВнешниеОтчеты.Подключить(АдресХранилища, "Отчет");
Возврат Истина;
КонецФункции
Показать
(18) Как оказалось, о методе из БСП по открытию внешней обработки или отчёта из справочника на управляемых формах сведения в открытом виде нашлись: https://infostart.ru/1c/articles/1027823/
Добрый день. Тоже пытаюсь открыть программно форму документа из расширения.
Вот код:
КонецФункции
При выполнении &Наклиенте процедуру &Насервере не видит.
Почему???? (тонкий клиент)
Вот код:
&После("ПриНачалеРаботыСистемы")
&НаКлиенте
Процедура Команда()
СсылкаНаДокумент = ЗаполнитьДанные();
Текдок = СсылкаНаДокумент.СсылкаДокумент;
Панель=ПолучитьФорму("Документ.НачалоМесяца.Форма.ФормаСписка",Текдок);
Панель.Открыть();
КонецПроцедуры
&НаСервере
Функция ЗаполнитьДанные()
ДатаЗаполнения = ТекущаяДата();
ЗапросНачаломесяца = Новый Запрос;
ЗапросНачаломесяца.УстановитьПараметр("ДатаНачалаМесяца",НачалоМесяца(ДатаЗаполнения));
ЗапросНачаломесяца.текст = "ВЫБРАТЬ
| НачалоМесяца.Ссылка КАК Ссылка
|ИЗ
| Документ.НачалоМесяца КАК НачалоМесяца
|ГДЕ
| НачалоМесяца.Дата = &ДатаНачалаМесяца";
РезультатЗапроса = ЗапросНачаломесяца.Выполнить();
СсылкаДокумент = РезультатЗапроса.Выгрузить()[0].Ссылка;
СтруктураДок = Новый Структура;
СтруктураДок.Вставить("ДатаДок",СсылкаДокумент.Дата);
СтруктураДок.Вставить("СсылкаДок",СсылкаДокумент);
//СтруктураДок.Вставить("ОбъектДок",СсылкаДокумент.ПолучитьОбъект());
возврат СтруктураДок;
ПоказатьКонецФункции
При выполнении &Наклиенте процедуру &Насервере не видит.
Почему???? (тонкий клиент)
Использовать типовой механизм
&НаСервере
Функция ПолучитьКоманду()
ВнешняяФорма = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Название обработки");
МассивОбъектов = Новый Массив();
МассивОбъектов.Добавить(Неопределено);
СтуктураОбработки = Новый Структура;
СтуктураОбработки.Вставить("ВариантЗапуска",Перечисления.СпособыВызоваДополнительныхОбработок.ОткрытиеФормы);
СтуктураОбработки.Вставить("ВариантЗапуска",Перечисления.ВидыДополнительныхОтчетовИОбработок.ЗаполнениеОбъекта);
СтуктураОбработки.Вставить("Идентификатор","1");
СтуктураОбработки.Вставить("Модификатор","");
СтуктураОбработки.Вставить("ОбъектНазначение",МассивОбъектов);
СтуктураОбработки.Вставить("ПоказыватьОповещения",Истина);
СтуктураОбработки.Вставить("Представление","Название обработки");
СтуктураОбработки.Вставить("Ссылка",ВнешняяФорма);
СтуктураОбработки.Вставить("ЭтоОтчет",Ложь);
Возврат СтуктураОбработки;
КонецФункции
&НаКлиенте
Процедура ВнестиДанные(Команда)
Команда = ПолучитьКоманду();
ДополнительныеОтчетыИОбработкиКлиент.ВыполнитьОткрытиеФормыОбработки(Команда,Неопределено,Неопределено);
КонецПроцедуры
Показать
(24) Спасибо, но я немного у себя поправил, работает, мне нужно было открывать внешнюю форму обработки по нажатию на гиперссылке формы:
БП 3.0.151.38
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(СтандартныеПодсистемыСервер.ВерсияБиблиотеки());
Заголовок = НСтр("ru = 'Обработка файла Enterpise Data Мой Склад'");
ПараметрыРегистрации.Информация = Заголовок;
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
ПараметрыРегистрации.Версия = "2022-05-18";
ПараметрыРегистрации.БезопасныйРежим = Истина;
Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Представление = Заголовок;
Команда.Идентификатор = СтрЗаменить(Заголовок, " ", "");
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
Команда.ПоказыватьОповещение = Ложь;
//Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеКаталогаВременныхФайлов(Ложь,Истина,"Тест");
//ПараметрыРегистрации.Разрешения.Добавить(Разрешение);
Возврат ПараметрыРегистрации;
КонецФункции
ПоказатьБП 3.0.151.38
Открытие формы из epf/erf в толстом клиенте:
Для отладки вместо Файл/открыть.
ИмяФайла="D:\имяфайланаклиенте.epf";
Об = ВнешниеОбработки.Создать(ИмяФайла, Ложь, Новый ОписаниеЗащитыОтОпасныхДействий);
ИмяОбработки = "ИмяИзМетаданных";
ОткрытьФорму("ВнешняяОбработка." + ИмяОбработки + ".Форма");
Для отладки вместо Файл/открыть.
(28) 1. Регишь на сервере с уникальным именем.
2. Получаешь по этому имени на клиенте форму.
ЗЫ: Как там Вологда живет? )))
2. Получаешь по этому имени на клиенте форму.
&НаСервере
ВнешниеОбработки.Подключить(АдресХранилища, ИдентификаторОбработки, Ложь);
//...
&НаКлиенте
Форма = ПолучитьФорму("ВнешняяОбработка."+ИдентификаторОбработки+".Форма.Форма");
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот