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