Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
23 фев 2026, 23:49

Изменить по условию значение реквизита

Автор Алексей_1985_06, Сегодня в 14:48

0 Пользователей и 1 гость просматривают эту тему.

Алексей_1985_06

Ребят подскажите как реализовать следующие:
1. Есть справочник "ОбъектыЭксплуатации" (Рис. 1), в котором есть реквизит: УчётНаработки (тип:Булево)
2. При установки УчётНаработки в значение Истина, окрывается форма записи РС (рис.2) в которой указывается значение и показатель наработки для данного объекта.

Как сделать так, чтобы если пользователь после открытия формы записи РС, (например ничего туда не ввел и просто ее закрыл), на форме элемента справочника "ОбъектыЭксплуатации" занчение реквизита УчётНаработки - установить в значение Ложь? Может как то через передачу параметров формы это можно сделать? Прошу у знатоков помощи!!!

Максим75

Алексей_1985_06, смотрите, если кратко, то принцип такой:

1. Используете при открытии формы записи РС функцию ОткрытьФорму, в ней много параметров, имя самой формы и оповещение, которое будет вызвано после закрытия вызываемой формы.
2. На форме записи прописываете, что при закрытии через кнопку что-то вернет, есть у формы метод Закрыть и в нем можно что-то передать.
3. Вот в процедуре оповещения (что из первого пункта) есть один из параметров, называется допустим РезультатОткрытияФормы, вот этот параметр будет равен Неопределено, если вызываемая форма была закрыта "по крестику", ну т.е. ничего не вводили и просто закрыли саму форму.
ну и обрабатываете факт того, что открываемая форма вернула Неопределено.

Алексей_1985_06

Максим75, Не подскажите почему возникает такая штука (рис.1).

Код написал такой:

&НаКлиенте
Процедура УчитыватьНаработкуПриИзменении(Элемент)   



Если Объект.УчитыватьНаработку Тогда
ОписаниеОповещенияОЗавершении = Новый ОписаниеОповещения ("ПослеОтветаНаВопрос", ЭтотОбъект); // Создадим оповещение
ПоказатьВопрос(ОписаниеОповещенияОЗавершении, "Вы хотите зарегистрировать показатель наработки?",РежимДиалогаВопрос.ОКОтмена,,,"Активация функции учета наработки");
КонецЕсли;

КонецПроцедуры


&НаКлиенте
Процедура ПослеОтветаНаВопрос(РезультатВопроса, ДополнительныеПараметры) Экспорт   

// Если пользователь ответил на вопрос: ОК
Если РезультатВопроса = КодВозвратаДиалога.ОК  Тогда

// Откроем форму записи РС и передадим туда параметр заполнения (ссылку на объект эксплуатации)
ОбъектЭксплуатации = Новый Структура("ОбъектЭксплуатации", Объект.Ссылка);  // Значение объекта эксплуатации (ссылка)
ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", ОбъектЭксплуатации);   

ОписаниеОповещенияОЗакрытии = Новый ОписаниеОповещения ("ПослеЗакрытияФормыРегистраСведений", ЭтотОбъект); // Создадим оповещение. Содержит описание процедуры, которая будет вызвана при закрытии формы Регистра сведений
ОткрытьФорму("РегистрСведений.СоответствиеПоказателейНаработки.ФормаЗаписи", ПараметрыФормы,,,,,ОписаниеОповещенияОЗакрытии);

Иначе
Объект.УчитыватьНаработку = Ложь;  // Снимем флаг с учета наработки (значение: Ложь), если пользователь нажмет: Отмена
КонецЕсли;

КонецПроцедуры


&НаКлиенте
Процедура ПослеЗакрытияФормыРегистраСведений(РезультатЗакрытия, ДополнительныеПараметры) Экспорт 

Если  РезультатЗакрытия = Неопределено Тогда
  Объект.УчитыватьНаработку = Ложь;
КонецЕсли;

КонецПроцедуры
[attach id=48502]1.PNG[/attach]

Максим75

Алексей_1985_06, видимо так не получится.
Вы же уже изменили реквизит и выполняете событие по его изменению и в этом же событии пытаетесь его снова изменить.
попробуйте кнопку какую-нибудь пририсовать, что типа по ее нажатию будет все это кино делаться.
да и думаю можно без Объект.УчитыватьНаработку обойтись, а просто УчитыватьНаработку, ну т.е. обратиться на клиенте сразу к реквизиту формы.

Алексей_1985_06

Максим75, Чего-то все равно не пойму, это предупреждение: "Не удалось начать редактирование", выскакивает только после повторного открытия элемента справочника. :dfbsdfbsdf:  :dfbsdfbsdf:  :dfbsdfbsdf:  Т.е все работает как надо, но стоит сохранить элемент, а потом снова его открыть - вылетает такое предупреждение......

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск