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