Проект

Общее

Профиль

Дополнительные обработки » История » Версия 7

Всеволод Дорофеев, 02.06.2022 17:22

1 1 Всеволод Дорофеев
h1. Дополнительные обработки
2 1 Всеволод Дорофеев
3 3 Всеволод Дорофеев
h3. 1. Обработка заполнения данных формы без записи объекта
4 2 Всеволод Дорофеев
5 1 Всеволод Дорофеев
https://its.1c.ru/db/bsp246doc#content:31:1:issogl2_%D1%84%D0%BE%D0%BD%D0%BE%D0%B2%D0%BE%D0%B5_%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B4%D0%BB%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B9
6 4 Всеволод Дорофеев
7 4 Всеволод Дорофеев
h3. 2. Сохраняемые параметры дополнительной обработки
8 4 Всеволод Дорофеев
9 4 Всеволод Дорофеев
При необходимости задать параметры для дополнительной обработки можно воспользоваться реквизитом ХранилищеНастроек справочника ДополнительныеОтчетыИОбработки. Например, для заполнения документа Распределение прочих затрат необходимо получать цены по определенному, специально созданному для этих целей виду цен. Этот вид цен можно задавать с помощью сохраняемого параметра. В общем виде в реквизите ХранилищеНастроек можно сохранять произвольные параметры дополнительной обработки .(например, в виде структуры). Для доступа к реквизиту ХранилищеНастроек в команду выполнения обработки передается ссылка на связанный с ней элемент справочника ДополнительныеОтчетыИОбработки.
10 4 Всеволод Дорофеев
11 4 Всеволод Дорофеев
Пример кода для чтения параметра:
12 4 Всеволод Дорофеев
13 4 Всеволод Дорофеев
<pre>
14 4 Всеволод Дорофеев
ХранилищеНастроек = ОбщегоНазначения.ЗначениеРеквизита(ОбработкаСсылка,"ХранилищеНастроек");
15 4 Всеволод Дорофеев
НастройкиСтруктура = ХранилищеНастроек.Получить();
16 4 Всеволод Дорофеев
</pre>
17 4 Всеволод Дорофеев
18 4 Всеволод Дорофеев
для записи:
19 4 Всеволод Дорофеев
20 4 Всеволод Дорофеев
<pre>
21 4 Всеволод Дорофеев
ДополнительнаяОбработкаОбъект = Параметры.ДополнительнаяОбработкаСсылка.ПолучитьОбъект();
22 4 Всеволод Дорофеев
ДополнительнаяОбработкаОбъект.ХранилищеНастроек = НовыйХранилищеЗначения(НастройкиСтруктура);
23 4 Всеволод Дорофеев
ДополнительнаяОбработкаОбъект.Записать();
24 4 Всеволод Дорофеев
</pre>
25 5 Всеволод Дорофеев
26 5 Всеволод Дорофеев
h3. 3. Вызов процедуры модуля внешней обработки
27 5 Всеволод Дорофеев
28 5 Всеволод Дорофеев
<pre>
29 5 Всеволод Дорофеев
&НаСервере
30 5 Всеволод Дорофеев
Функция ПроверитьНДСНаСервере(Отказ)
31 5 Всеволод Дорофеев
	ИмОбработки = "Пересчет суммы НДС по итоговой сумме";
32 5 Всеволод Дорофеев
	ОбработкаПроверки = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмОбработки);
33 5 Всеволод Дорофеев
	Если Не ЗначениеЗаполнено(ОбработкаПроверки) Тогда
34 5 Всеволод Дорофеев
			ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
35 5 Всеволод Дорофеев
			                    НСтр("ru = 'Не найдена обработка " + ИмОбработки),
36 5 Всеволод Дорофеев
			                    КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
37 5 Всеволод Дорофеев
			Отказ = Истина;
38 5 Всеволод Дорофеев
			ВызватьИсключение ТекстСообщения;
39 5 Всеволод Дорофеев
	КонецЕсли;
40 5 Всеволод Дорофеев
	
41 5 Всеволод Дорофеев
	Если ОбработкаПроверки.Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок.Отчет
42 5 Всеволод Дорофеев
		ИЛИ ОбработкаПроверки.Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительныйОтчет Тогда
43 5 Всеволод Дорофеев
		Менеджер = ВнешниеОтчеты;
44 5 Всеволод Дорофеев
	Иначе
45 5 Всеволод Дорофеев
		Менеджер = ВнешниеОбработки;
46 5 Всеволод Дорофеев
	КонецЕсли;
47 5 Всеволод Дорофеев
	
48 5 Всеволод Дорофеев
	ИмяОбработки = ДополнительныеОтчетыИОбработки.ПодключитьВнешнююОбработку(ОбработкаПроверки);
49 5 Всеволод Дорофеев
	
50 5 Всеволод Дорофеев
	МенеджерОбработки = Менеджер.Создать(ИмяОбработки);
51 5 Всеволод Дорофеев
	МенеджерОбработки.ДокументДляОбработки = Объект.СсылкаНаОбъект;
52 5 Всеволод Дорофеев
	РазницаСумм = МенеджерОбработки.СуммаНДСКорректна(); //Менеджер.Создать(ИмяОбработки).ВыгрузитьВExcel(СтрокаКлиенты.НастройкиВыгрузки);
53 5 Всеволод Дорофеев
	возврат РазницаСумм;
54 5 Всеволод Дорофеев
КонецФункции
55 5 Всеволод Дорофеев
56 5 Всеволод Дорофеев
</pre>
57 6 Всеволод Дорофеев
58 6 Всеволод Дорофеев
59 7 Всеволод Дорофеев
h3. 4. Шаблон внешней обработки заполнения объекта на сервере
60 6 Всеволод Дорофеев
61 6 Всеволод Дорофеев
<pre>
62 6 Всеволод Дорофеев
//Проект ХХХХ. Всеволод. ХХ.ХХ.ХХХХ
63 6 Всеволод Дорофеев
64 6 Всеволод Дорофеев
65 6 Всеволод Дорофеев
Функция СведенияОВнешнейОбработке() Экспорт
66 6 Всеволод Дорофеев
	ПараметрыРегистрации                    = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.3.2.45");  
67 6 Всеволод Дорофеев
	ПараметрыРегистрации.Вид                = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиЗаполнениеОбъекта();
68 6 Всеволод Дорофеев
	ПараметрыРегистрации.БезопасныйРежим    = Истина;
69 6 Всеволод Дорофеев
	ПараметрыРегистрации.Наименование       = Метаданные().Синоним;
70 6 Всеволод Дорофеев
	ПараметрыРегистрации.Версия             = "02.06.2022";  
71 6 Всеволод Дорофеев
	ПараметрыРегистрации.Назначение.Добавить("Документ.РеализацияТоваровУслуг");
72 6 Всеволод Дорофеев
	
73 6 Всеволод Дорофеев
	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
74 6 Всеволод Дорофеев
	НоваяКоманда.Представление              = "Заполнить грузоотправителя по складу"; //Метаданные().Синоним;
75 6 Всеволод Дорофеев
	НоваяКоманда.Идентификатор              = Метаданные().Имя;  
76 6 Всеволод Дорофеев
	НоваяКоманда.Использование              = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
77 6 Всеволод Дорофеев
	НоваяКоманда.ПоказыватьОповещение       = Ложь;
78 6 Всеволод Дорофеев
	
79 6 Всеволод Дорофеев
	Возврат ПараметрыРегистрации;
80 6 Всеволод Дорофеев
КонецФункции 
81 6 Всеволод Дорофеев
82 6 Всеволод Дорофеев
&НаСервере
83 6 Всеволод Дорофеев
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, ПараметрыВыполнения) Экспорт 
84 6 Всеволод Дорофеев
	
85 6 Всеволод Дорофеев
	Если ТипЗнч(ОбъектыНазначения) = Тип("Массив") Тогда
86 6 Всеволод Дорофеев
87 6 Всеволод Дорофеев
		Для каждого ДокСсылка Из ОбъектыНазначения Цикл
88 6 Всеволод Дорофеев
89 6 Всеволод Дорофеев
			ЧтотоСделать(ДокСсылка);
90 6 Всеволод Дорофеев
91 6 Всеволод Дорофеев
		КонецЦикла;
92 6 Всеволод Дорофеев
	Иначе
93 6 Всеволод Дорофеев
		ЗаписьЖурналаРегистрации("ВнешняяОбработкаЗаполнениеГрузоотправителяПоСкладу",,,,"Передан ошибочный тип (ТипЗнч(ОбъектыНазначения)): " + ТипЗнч(ОбъектыНазначения));
94 6 Всеволод Дорофеев
	КонецЕсли;
95 6 Всеволод Дорофеев
	
96 6 Всеволод Дорофеев
97 6 Всеволод Дорофеев
КонецПроцедуры // ()
98 6 Всеволод Дорофеев
99 6 Всеволод Дорофеев
100 6 Всеволод Дорофеев
</pre>