Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
02 дек 2025, 10:28

Обновить данные на форме элемента

Автор Алексей_1985_06, 14 окт 2025, 20:27

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

Алексей_1985_06

Всем здравствуйте! Помогите с таким вопросом:
1. Из формы элемента справочника (по кнопке) открываю запись РС для редактирования/записи
2. При открытии формы элемента справочника в процедуре ПриСозданииНаСервере, запросом получаю данные из РС и вывожу их на форму.
3. Задача: Мне необходимо после закрытия формы записи РС (если модифицированность = истина), сразу обновить данные на форме элемента справочника, чтобы пользователь сразу увидел измененные данные, т.е сымитировать вызов процедуры ПриСозданииНаСервере.
Подскажите как правильно реализовать такой функционал?

bsn-chita

Пример на котиках. Есть справочник "Номенклатура" и регистр сведений "ЦеныНоменклатуры". Плодить везде однотипный код по получению цены не нужно, его и менять придется везде в случае чего. Нужно куда то пристроить метод получения цены при чем так чтобы другой разработчик тоже мог его найти. Логично код расположить в модуле менеджера регистра сведений или справочника. Параметр передаваемый в метод будет Номенклатура, а на выходе Цена. Полная реализация например будет в регистре сведений где делаем запрос в который передаем параметр и получим цену, в справочнике делаем метод который воспользуется методом из регистра сведений. На форме делаем процедуру где всякие данные формы будем присваивать(может не только данные какого то регистра сведений нужно показать). Вызываем эту процедуру из события при создании на сервере и там где нужно еще.

ММ Регистра сведений
Функция ПолучитьЦенуНоменклатуры(Номенклатура) Экспорт
    Цена = 0;
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ЦеныНоменклатуры.Цена КАК Цена
        |ИЗ
        |    РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
        |ГДЕ
        |    ЦеныНоменклатуры.Номенклатура = &Номенклатура";
   
    Запрос.УстановитьПараметр("Номенклатура", Номенклатура);   
    РезультатЗапроса = Запрос.Выполнить();
    Если Не РезультатЗапроса.Пустой() Тогда
        ВыборкаЦена = РезультатЗапроса.Выбрать();
        ВыборкаЦена.Следующий();
        Цена = ВыборкаЦена.Цена;
    КонецЕсли;
    Возврат Цена;
КонецФункции

ММ Справочника
Функция ПолучитьЦенуНоменклатуры(Номенклатура) Экспорт
     Возврат РегистрыСведений.ЦеныНоменклатуры.ПолучитьЦенуНоменклатуры(Номенклатура);
КонецФункции

На форме
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ОбновитьДанныеФормы();
КонецПроцедуры   

&НаСервере
Процедура ОбновитьДанныеФормы()
    //Цена = РегистрыСведений.ЦеныНоменклатуры.ПолучитьЦенуНоменклатуры(Объект.Ссылка);   
    Цена = Справочники.Номенклатура.ПолучитьЦенуНоменклатуры(Объект.Ссылка);   
КонецПроцедуры

Ну и там где нужно еще вызываем ОбновитьДанныеФормы.

Алексей_1985_06


Алексей_1985_06

bsn-chita, Подскажите пожалуйста, мне нужно обновить данные на форме элемента справочника, только в том случае если в РС данные были изменены, попробовал через оповещения:

&НаКлиенте

// НА форме записи РС
Процедура ПослеЗаписи(ПараметрыЗаписи)

// Если данные в РС были изменены, тогда оповестим об этом!
Если Модифицированность Тогда
Оповестить("МодифицированностьЗаписи");
КонецЕсли;

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


На форме элемента справочника:
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

Если ИмяСобытия = "МодифицированностьЗаписи" Тогда
ОбновитьДанныеНаФорме(); // Процедура обновления данных
КонецЕсли;

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

Но в таком случае данные уже записаны в БД и данные обновляется "старыми" сведениями.
Подскажите, как реализовать обновления в справочнике, только в том случае, если в РС данные были модифицированы?

antoneus

Цитата: Алексей_1985_06 от 16 окт 2025, 11:49данные обновляется "старыми" сведениями

Тут не понял.

Теги:

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

Рейтинг@Mail.ru

Поиск