Не работает обработка, вызваная из обработки, в которой вызывается обработка.

1. Amal24rus 08.05.24 09:45 Сейчас в теме
Столкнулся с этим, и не пойму это ошибка 1С или что. 1С 8.3.23.1912. Задача была посложнее, я максимально упростил. Есть одинаковые 3 обработки, из 1-ой вызывается 2-я, из 2й вызывается 3я. Модуль в 1ой отрабатывает, модуль второй тоже, а модуль 3й - нет почему то. Обработки добавлены в доп. обработки, в модуле обьекта описаны СведенияОВнешнейОбработке() и т.д.

//Модуль в форме ВнешняяОбработка1:
&НаКлиенте
Процедура Сформировать(Команда)
 	Вызвать();   
	Обработка = ПолучитьФорму("ВнешняяОбработка.ВнешняяОбработка2.Форма.Форма"); 
	Обработка.Вызвать(); 
КонецПроцедуры
&НаСервере
Процедура Вызвать() Экспорт
	Спр = Справочники.Контрагенты.НайтиПоКоду("БП-000015").ПолучитьОбъект(); 
	Спр.Наименование = Спр.Наименование +"1";
	Спр.Записать();
КонецПроцедуры
Показать


//Модуль в форме ВнешняяОбработка2:
&НаКлиенте
Процедура Сформировать(Команда)
    Вызвать();   
	Обработка = ПолучитьФорму("ВнешняяОбработка.ВнешняяОбработка3.Форма.Форма"); 
	Обработка.Вызвать(); 
КонецПроцедуры
&НаСервере
Процедура Вызвать() Экспорт
	Спр = Справочники.Контрагенты.НайтиПоКоду("БП-000015").ПолучитьОбъект(); 
	Спр.Наименование = Спр.Наименование +"2";
	Спр.Записать();
КонецПроцедуры
Показать


//Модуль в форме ВнешняяОбработка3:
&НаКлиенте
Процедура Сформировать(Команда)
   Вызвать();   
КонецПроцедуры
&НаСервере
Процедура Вызвать() Экспорт
	Спр = Справочники.Контрагенты.НайтиПоКоду("БП-000015").ПолучитьОбъект(); 
	Спр.Наименование = Спр.Наименование +"3";
	Спр.Записать();
КонецПроцедуры
Показать


В итоге к наименованию добавляются только цифры 12.
Прикрепленные файлы:
Обработки.zip
По теме из базы знаний
Найденные решения
4. Amal24rus 03.06.24 12:49 Сейчас в теме
Всем спасибо, получилось, так работает:

&НаКлиенте
Процедура Сформировать(Команда)
ИмяОтчетаОбработки = "Отправка актов сверки в СБИС";
ВнешнийОтчетОбработкаДляОткрытияСсылка = ПолучитьСсылкуНаВнешнийОтчетОбработкуПоИмениНаСервере (ИмяОтчетаОбработки);
ИмяОбработкиСлужебное =ДополнительныеОтчетыИОбработкиВызовСервера.ПодключитьВнешнююОбработку(ВнешнийОтчетОбработкаДляОткрытияСсылка);
Обработка = ПолучитьФорму("ВнешняяОбработка." + ИмяОбработкиСлужебное + ".Форма");
Обработка.ОтметитьПодписаныеКл();
КонецПроцедуры


&НаСервереБезКонтекста
Функция ПолучитьСсылкуНаВнешнийОтчетОбработкуПоИмениНаСервере(ИмяОтчетаОбработки)
Возврат Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмяОтчетаОбработки).Ссылка;
КонецФункции
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SlavaKron 08.05.24 11:36 Сейчас в теме
(1) В общем случае, сеанс ничего не знает про ВнешняяОбработка.ВнешняяОбработка2 и ВнешняяОбработка.ВнешняяОбработка3. Перед тем как обращаться к ним по имени, необходимо их подключить через ДополнительныеОтчетыИОбработки.ПодключитьВнешнююОбработку(Ссылка).
3. isn 15 08.05.24 16:20 Сейчас в теме
(1) ВнешняяОбработка используется для обращения к открываемой внешней обработке.
для обработок добавленных в ДополнительныеОтчетыИОбработки необходимо выполнять поиск в справочнике ДополнительныеОтчетыИОбработки по имени объекта.
 //пример кода из 1С
		ЭтоВнешняяОбработка = ВРег(ЧастиИмени[0]) = "ВНЕШНЯЯОБРАБОТКА";
		Если ЭтоВнешняяОбработка Тогда
			ВыполнитьПроверкуПравДоступа("ИнтерактивноеОткрытиеВнешнихОбработок", Метаданные);
			МенеджерОбъекта = ВнешниеОбработки;
			ОбработкаОтчетОбъект = МенеджерОбъекта.Создать(ЧастиИмени[1], БезопасныйРежим());
			ТаблицаДанных =  ОбщегоНазначения.ВызватьФункциюОбъекта(ОбработкаОтчетОбъект, ЧастиИмени[3], МассивПараметров);
		КонецЕсли;

	СсылкаНаОбработку=Справочники.ДополнительныеОтчетыИОбработки.НайтиПоРеквизиту("ИмяОбъекта","НазваваниеОбработки");

Показать
4. Amal24rus 03.06.24 12:49 Сейчас в теме
Всем спасибо, получилось, так работает:

&НаКлиенте
Процедура Сформировать(Команда)
ИмяОтчетаОбработки = "Отправка актов сверки в СБИС";
ВнешнийОтчетОбработкаДляОткрытияСсылка = ПолучитьСсылкуНаВнешнийОтчетОбработкуПоИмениНаСервере (ИмяОтчетаОбработки);
ИмяОбработкиСлужебное =ДополнительныеОтчетыИОбработкиВызовСервера.ПодключитьВнешнююОбработку(ВнешнийОтчетОбработкаДляОткрытияСсылка);
Обработка = ПолучитьФорму("ВнешняяОбработка." + ИмяОбработкиСлужебное + ".Форма");
Обработка.ОтметитьПодписаныеКл();
КонецПроцедуры


&НаСервереБезКонтекста
Функция ПолучитьСсылкуНаВнешнийОтчетОбработкуПоИмениНаСервере(ИмяОтчетаОбработки)
Возврат Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмяОтчетаОбработки).Ссылка;
КонецФункции
Оставьте свое сообщение

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