1С 8.3 Программное переоткрытие внешних обработок
Данные > Примеры кода 1С > 1С 8.3 Форма, элементы
Перейти в раздел примеры кода 1С 8.3:
Copypaste. Полная статья на infostart.ru. Автор Константин Федоров. По каким-то причинам была Публикация неактивна. Поэтому перезалил сюда.
"На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.
Если работаю со отчетом или обработкой – обычно выгружаю как внешний, и уже внешний объект начинаю править. Когда сделана основная работа и пришло время отладки или доработки интерфейса – нужно часть закрывать и открывать внешний объект, чтобы применились правки.
Предварительно сделайте возможность сохранять данные формы в настройках:
В основной форме создайте два реквизита «Отладка» (тип булево) и «ПутьКОбработке» (тип строка). Реквизит «Отладка» выведите на форму."
В итоге, когда установите флаг на форме – при закрытии обработка будет запоминать свое текущее имя и переоткрываться с изменениями. Когда закончите – вычистите вышеизложенный код и передайте в эксплуатацию.
Дополню: Если получите ошибку РеквизитФормыВЗначение("Объект").ИспользуемоеИмяФайла Недопустимое значение параметра (параметр номер '1'). Обратите внимание на название реквизита. В моём случае, пришлось заменить имя Обработка на Объект. Пример из теста:
В событиях формы ПередЗакрытием и ПриЗакрытии в 1С 8.3:
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
Если ЗавершениеРаботы Тогда
Возврат;
КонецЕсли;
ИнициализироватьОбработкуДляПерезапуска();
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
Если ЗавершениеРаботы Тогда
Возврат;
КонецЕсли;
ПерезапуститьОбработку();
КонецПроцедуры
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
Если ЗавершениеРаботы Тогда
Возврат;
КонецЕсли;
ИнициализироватьОбработкуДляПерезапуска();
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
Если ЗавершениеРаботы Тогда
Возврат;
КонецЕсли;
ПерезапуститьОбработку();
КонецПроцедуры
Код служебных процедур в 1С 8.3:
&НаКлиенте
Процедура ПерезапуститьОбработку()
Если Отладка = Ложь Тогда
Возврат;
КонецЕсли;
ОткрытьФорму("ВнешняяОбработка."+ ПолучитьОбработкуПерезапуска(
ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ПутьКОбработке))) + ".Форма");
КонецПроцедуры
Если Отладка = Ложь Или ПустаяСтрока(ПутьКОбработке) = Ложь Тогда
Возврат;
КонецЕсли;
ПутьКОбработке = РеквизитФормыВЗначение("Объект").ИспользуемоеИмяФайла;
КонецПроцедуры
&НаСервере
Функция ПолучитьОбработкуПерезапуска(Знач АдресОбработки)
Возврат ВнешниеОбработки.Подключить(АдресОбработки,,Ложь);
Процедура ПерезапуститьОбработку()
Если Отладка = Ложь Тогда
Возврат;
КонецЕсли;
ОткрытьФорму("ВнешняяОбработка."+ ПолучитьОбработкуПерезапуска(
ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ПутьКОбработке))) + ".Форма");
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьОбработкуДляПерезапуска()
Процедура ИнициализироватьОбработкуДляПерезапуска()
Если Отладка = Ложь Или ПустаяСтрока(ПутьКОбработке) = Ложь Тогда
Возврат;
КонецЕсли;
ПутьКОбработке = РеквизитФормыВЗначение("Объект").ИспользуемоеИмяФайла;
КонецПроцедуры
&НаСервере
Функция ПолучитьОбработкуПерезапуска(Знач АдресОбработки)
Возврат ВнешниеОбработки.Подключить(АдресОбработки,,Ложь);
КонецФункции
Обработка события ПриИзменении элемента формы Отладка в 1С 8.3:
// Если не планируете удалять данные реквизиты
&НаКлиенте
Процедура ОтладкаПриИзменении(Элемент)
Если Отладка = Ложь Тогда
ПутьКОбработке = "";
КонецЕсли;
КонецПроцедуры
1
комментарий
Banev
25 апр 2024
Ni4ego ne ponyal
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник