Как зарегистрировать внешнюю обработку. Розница 2.0 (Управляемые формы)

1. markovki 19 22.11.13 15:10 Сейчас в теме
Помогите правильно зарегистрировать внешнюю обработку. Если быть более точным, то именно зарегистрировать в режиме предприятия (Розница 2.0, Управляемые формы) получается, обработка появляется в нужной нам подсистеме "Подсистемы.Маркетинг"... НО как сделать чтобы она запустилась, точнее чтобы запустилась её форма?

При попытке запуска пишет:
Не удалось выполнить команду "ПечатьЭтикетокИЦенников???"

Код модуля внешней обработки
Функция СведенияОВнешнейОбработке() Экспорт
   
	ПараметрыРегистрации = Новый Структура;
	МассивНазначений = Новый Массив;
	ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка");
	МассивНазначений.Добавить("Подсистемы.Маркетинг");
	ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
	ПараметрыРегистрации.Вставить("Наименование", "Печать этикеток и ценников. Дополнительно");
	ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
	ПараметрыРегистрации.Вставить("Версия", "1.5");
	ПараметрыРегистрации.Вставить("Информация", "Печать этикеток и ценников. Дополнительно");
	ТаблицаКоманд = ПолучитьТаблицуКоманд();
	ДобавитьКоманду(ТаблицаКоманд, "ПечатьЭтикетокИЦенников???", "ПечатьЭтикетокИЦенников", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
	ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
	
	Возврат ПараметрыРегистрации;
	
КонецФункции

Функция ПолучитьТаблицуКоманд()

   Команды = Новый ТаблицаЗначений;
   Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")); 
   Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
   Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
   Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
   Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
   
   Возврат Команды;
   
КонецФункции

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
	
  НоваяКоманда = ТаблицаКоманд.Добавить();
  НоваяКоманда.Представление = Представление;
  НоваяКоманда.Идентификатор = Идентификатор;
  НоваяКоманда.Использование = Использование;
  НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
  НоваяКоманда.Модификатор = Модификатор;

КонецПроцедуры

// <Описание функции>
//
// Параметры
//  <Параметр1>  - <Тип.Вид> - <описание параметра>
//                 <продолжение описания параметра>
//  <Параметр2>  - <Тип.Вид> - <описание параметра>
//                 <продолжение описания параметра>
//
// Возвращаемое значение:
//   <Тип.Вид>   - <описание возвращаемого значения>
//

//Функция ВыполнитьКоманду(ИдентификаторКоманды) Экспорт 
//	
//	ЭтотОбъект.ПолучитьФорму("Форма").Открыть();
//	//Сообщить("ок");

//КонецФункции // ВыполнитьКоманду()

Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. markovki 19 22.11.13 15:25 Сейчас в теме
Как я понимаю в ДобавитьКоманду прописываются параметры команды, но как сделать саму команду? Хотя бы пример?!
3. foxsis 111 22.11.13 15:33 Сейчас в теме
(2) markovki, вот пример

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

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

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
	// Добавляем команду в таблицу команд по переданному описанию.
	// Параметры и их значения можно посмотреть в функции ПолучитьТаблицуКоманд
	НоваяКоманда = ТаблицаКоманд.Добавить();
	НоваяКоманда.Представление = Представление;
	НоваяКоманда.Идентификатор = Идентификатор;
	НоваяКоманда.Использование = Использование;
	НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
	НоваяКоманда.Модификатор = Модификатор;
	
КонецПроцедуры
Показать
4. markovki 19 22.11.13 16:19 Сейчас в теме
(3) Foxsis, спасибо за хороший пример, но мне не ясно, где именно и как прописать открытие формы? Чтобы форма обработки открылась из ДополнительныеОбработки -> Выполнить
5. Bukaska 140 22.11.13 17:10 Сейчас в теме
(4) markovki, Пробуйте так. Только у меня вариант для отчета
Функция СведенияОВнешнейОбработке() Экспорт
	
	РегистрационныеДанные = Новый Структура;
	РегистрационныеДанные.Вставить("Наименование", "Отчет по спецификациям");
	РегистрационныеДанные.Вставить("БезопасныйРежим", Ложь);
	РегистрационныеДанные.Вставить("Версия", "1.0");
	РегистрационныеДанные.Вставить("ВерсияБСП", "1.2.1.4");
	РегистрационныеДанные.Вставить("ХранилищеВариантов", "ХранилищеВариантовОтчетов");

	РегистрационныеДанные.Вставить("Вид", "ДополнительныйОтчет");//Здесь как раз и пишем, дополнительный отчет или обработка
	
	РегистрационныеДанные.Вставить("Информация", "Отчет по спецификациям");
	
	ТЗКоманд = Новый ТаблицаЗначений;
	ТЗКоманд.Колонки.Добавить("Идентификатор");
	ТЗКоманд.Колонки.Добавить("Представление");
	ТЗКоманд.Колонки.Добавить("Модификатор");
	ТЗКоманд.Колонки.Добавить("ПоказыватьОповещение");
	ТЗКоманд.Колонки.Добавить("Использование");
	
	СтрокаКоманды = тзКоманд.Добавить();
	СтрокаКоманды.Идентификатор = Новый УникальныйИдентификатор;
	СтрокаКоманды.Представление = "Отчет по спецификациям";
	СтрокаКоманды.ПоказыватьОповещение = Истина;
	СтрокаКоманды.Использование = "ОткрытиеФормы"; //Это наверное что вы и спрашивали
	
	
	
	РегистрационныеДанные.Вставить("Команды", ТЗКоманд);
	
	Возврат РегистрационныеДанные;
	

КонецФункции
   
Показать


Функция ПолучитьТаблицуКоманд()

   // Создадим пустую таблицу команд и колонки в ней
   Команды = Новый ТаблицаЗначений;

   // Как будет выглядеть описание печатной формы для пользователя
   Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")); 

   // Имя нашего макета, что бы могли отличить вызванную команду в обработке печати
   Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));

   // Тут задается, как должна вызваться команда обработки
   // Возможные варианты:
   // - ОткрытиеФормы - в этом случае в колонке идентификатор должно быть указано имя формы, которое должна будет открыть система
   // - ВызовКлиентскогоМетода - вызвать клиентскую экспортную процедуру из модуля формы обработки
   // - ВызовСерверногоМетода - вызвать серверную экспортную процедуру из модуля объекта обработки
   Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));

   // Следующий параметр указывает, необходимо ли показывать оповещение при начале и завершению работы обработки. Не имеет смысла при открытии формы
   Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));

   // Для печатной формы должен содержать строку ПечатьMXL 
   Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
   Возврат Команды;
КонецФункции
Показать


Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
  // Добавляем команду в таблицу команд по переданному описанию.
  // Параметры и их значения можно посмотреть в функции ПолучитьТаблицуКоманд
  НоваяКоманда = ТаблицаКоманд.Добавить();
  НоваяКоманда.Представление = Представление;
  НоваяКоманда.Идентификатор = Идентификатор;
  НоваяКоманда.Использование = Использование;
  НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
  НоваяКоманда.Модификатор = Модификатор;

КонецПроцедуры
Показать
6. mie24 2 12.01.14 21:43 Сейчас в теме
У меня проблема с подключением внешнего отчета.
Регистрируется отчет и даже работает, но
Не могу его "подключить" в БП 3.0.26.6 к подсистеме. Только к документам. Как быть?

	МассивНазначений = Новый Массив;
	//МассивНазначений.Добавить("Документ.РеализацияТоваровУслуг");
	//МассивНазначений.Добавить("Документ.РасходныйКассовыйОрдер");
	МассивНазначений.Добавить("Подсистемы.ПокупкиИПродажи");


В форме списка документов появляется дополнительный отчет, а для подсистемы не выводится.

Подскажите, это ограничение БП?
7. Bukaska 140 12.01.14 21:51 Сейчас в теме
(6) mie24, Подсистему вы указываете в регистрационнных данных
Посмотрите предыдущий мой пост самый первый код
РегистрационныеДанные.Вставить("ВерсияБСП", "1.2.1.4");

А массив назначений.. это регистрация, к какому документу вы его привязываете
8. mie24 2 14.01.14 08:58 Сейчас в теме
(7) Bukaska, подскажите, а как именно зависит выбор подсистемы от версии БСП?
9. m-serg74 46 14.01.14 10:09 Сейчас в теме
(8) mie24, может просто вместо
ВызовСерверногоМетода
прописать ОткрытиеФормы
10. mie24 2 14.01.14 10:20 Сейчас в теме
(9) m-serg74, у меня как раз "ОткрытиеФормы".
Отчет подключается и работает (из формы списка документа), но мне его надо разместить в определенном разделе.
Вопрос: как в функции "СведенияОВнешнейОбработке" задать Раздел?
11. m-serg74 46 14.01.14 10:28 Сейчас в теме
(10) mie24, а чем в момент регистрации указать раздел или потом его сменить не устраивает?
12. mie24 2 14.01.14 11:05 Сейчас в теме
Конфигурация БП переписаная, решилась проблема при установке галки "Дополнительные отчеты" в командном интерфейсе подсистемы.
После этого доп отчеты стали отображаться в необходимом разделе.

Может есть другой способ?
13. mie24 2 14.01.14 11:13 Сейчас в теме
Все оказалось проще, при подключении отчета необходимо выбрать Раздел, затем, если нет отображения в выбранном Разделе(как было у меня) нужно в Настройках Панели Действий выбрать отображение "Дополнительные отчеты".

Проблемы была в том, что в Разделах не отображались Дополнительные отчеты.
Да, глупо, да, потрачено много времени, но зато опыт))))
14. Bukaska 140 14.01.14 11:29 Сейчас в теме
(13) mie24, есть такое.. Что надо и в настройках программы , а потом в командный интерфейс.. а потом в панель действий.. а там ещё настроить список..
Короче смех и грех.. мои знакомые оценили это.. как лазать через пятое место))) Но что поделать.. как сделали)))
15. Gendalf_beliy 14.01.14 11:54 Сейчас в теме
(13) mie24, опыт очень ценная штука. Именно из за него ценятся опытные работники. Знания можно набрать в книжках, а опыт только на практике ;)
16. natarezn 12.11.14 13:03 Сейчас в теме
почему то у меня не видно функции
17. Bukaska 140 12.11.14 16:56 Сейчас в теме
(16) natarezn, ВЫ функцию должны дать в модуле объекта и она у вас в обязательном порядке должна быть ЭКСПОРТНОЙ!!!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот