Проект

Общее

Профиль

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

Всеволод Дорофеев, 24.07.2019 10:01

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>