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

Как обновить данные на форме.

Автор Tanya_Lo, 20 июл 2013, 07:37

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

Tanya_Lo

Ситуация такая. Открывается форма документа договора, на ней есть кнопка - заполнить на основании доп.соглашение. Нажимаю - открывается форма Доп.Соглашения. Создаю доп.соглашение и вношу изменения в Договор. Сохраняю - форма Доп.соглашения закрывается - а на форме Договора данные не обновились, их видно только при повторном открытии формы Договор.
Подскажите пожалуйста как обновлять данные на форме?

andryscha92

Попробуйте программно.Используйте метод Обновить()

MuI_I_Ika


Tanya_Lo

вот процедура которая выполняется Подпиской на событие перед записию Доп.соглашения.
Процедура ПодпискаСозданиеДопСоглашенияПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
ДогСсылка=Источник.ДоговорСсылка;
ДоговорОбъект = ДогСсылка.ПолучитьОбъект();
     ДоговорОбъект.СрокДоговора = Источник.СрокДоговора;
     ДоговорОбъект.Записать();
КонецПроцедуры


Данные меняются, но только при повторном открытии формыЭлемента Договора.
такая же ситуация с созданием дополнительного соглашения - создаю на ОСНОВАНИИ
Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.Договор") Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДопСоглашения.Ссылка
|ИЗ
| Документ.ДопСоглашения КАК ДопСоглашения
|ГДЕ
| ДопСоглашения.НомерДоговора = &НомерДоговора";

Запрос.УстановитьПараметр("НомерДоговора", ДанныеЗаполнения.Номер);

Результат = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = Результат.Выбрать();
кол=ВыборкаДетальныеЗаписи.Количество();
Номер=Кол+1;
        ДоговорСсылка = ДанныеЗаполнения.Ссылка;
ВидАвансовыйПлатеж = ДанныеЗаполнения.ВидАвансовыйПлатеж;
ВидДоговора = ДанныеЗаполнения.ВидДоговора;
ВидКонтрагента = ДанныеЗаполнения.ВидКонтрагента;
ИсполнительДолжность = ДанныеЗаполнения.ИсполнительДолжность;
ИсполнительФИО = ДанныеЗаполнения.ИсполнительФИО;
Контрагент = ДанныеЗаполнения.Контрагент;
КонтрагентИП = ДанныеЗаполнения.КонтрагентИП;
КонтрагентИсполнитель = ДанныеЗаполнения.КонтрагентИсполнитель;
КонтрагентФиз = ДанныеЗаполнения.КонтрагентФиз;
НомерДоговораКонтрагента = ДанныеЗаполнения.НомерДоговораКонтрагента;
Организация = ДанныеЗаполнения.Организация;
НомерДоговора = ДанныеЗаполнения.Номер;
ОтметкаОбОплатеДляПериодических = ДанныеЗаполнения.ОтметкаОбОплатеДляПериодических;
ПериодНеопределенногоДоговора = ДанныеЗаполнения.ПериодНеопределенногоДоговора;
ОкончательныйРасчет = ДанныеЗаполнения.ОкончательныйРасчет;
ПорядокОплаты = ДанныеЗаполнения.ПорядокОплаты;
Предмет = ДанныеЗаполнения.Предмет;
СрокДоговора = ДанныеЗаполнения.СрокДоговора;
СрокДоговораДатаНачала = ДанныеЗаполнения.СрокДоговораДатаНачала;
СрокДоговораДатаОкончания = ДанныеЗаполнения.СрокДоговораДатаОкончания;
СрокДоговораОпределенного = ДанныеЗаполнения.СрокДоговораОпределенного;
Сумма = ДанныеЗаполнения.Сумма;
Для Каждого ТекСтрокаСрокИсполнения Из ДанныеЗаполнения.СрокИсполнения Цикл
НоваяСтрока = СрокИсполнения.Добавить();
НоваяСтрока.Конец = ТекСтрокаСрокИсполнения.Конец;
НоваяСтрока.Начало = ТекСтрокаСрокИсполнения.Начало;
КонецЦикла;
КонецЕсли;

Нажимаю на кнопку "ПРОВЕСТИ И ЗАКРЫТЬ" - Форма закрывается, но данные сразу тоже обновляется. Придумла кнопку - на нее нажимаю и

&НаКлиенте
Процедура ОбновитьДанные(Команда)
Доп.Очистить();
МассивДоп=Новый Массив;
МассивДоп=ОбщиеМеханизмы.ЗаполнениеНомеровДопСоглашений(Объект.Номер);
Для Каждого ЭлементМассива Из МассивДоп Цикл
    НоваяСтрока = Доп.Добавить();
НоваяСтрока.НомерДопСоглашения=ЭлементМассива;
КонецЦикла;

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


&НаСервере
   Функция ЗаполнениеНомеровДопСоглашений (НомерДоговора) экспорт
   ВидДокумента="ДОП";
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДоговораИДопСоглашения.НомерДопСоглашения
|ИЗ
| РегистрСведений.ДоговораИДопСоглашения КАК ДоговораИДопСоглашения
|ГДЕ
| ДоговораИДопСоглашения.ВидДокумента = &ВидДокумента
| И ДоговораИДопСоглашения.НомерДоговора = &НомерДоговора";

Запрос.УстановитьПараметр("ВидДокумента", ВидДокумента);
Запрос.УстановитьПараметр("НомерДоговора", НомерДоговора);

Результат = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = Результат.Выбрать();
    МасДоп  = Новый Массив;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
//НоваяСтрока = Доп.Добавить();
        МасДоп.Добавить(ВыборкаДетальныеЗаписи.НомерДопСоглашения);
КонецЦикла;

СписокЗначений = Новый СписокЗначений;
    СписокЗначений.ЗагрузитьЗначения(МасДоп);
    СписокЗначений.СортироватьПоЗначению();
    МасДоп = СписокЗначений.ВыгрузитьЗначения();

    возврат МасДоп;
КонецФункции


MuI_I_Ika

В 1С есть такой метод как Оповестить() в форме нужно будет отлавливать обработкой оповещения

Новенькая

А вот этот метод не поможет ЭтаФорма.Прочитать(); ?

MuI_I_Ika

скорее всего поможет, надо попробовать

Tanya_Lo


Теги:

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

Рейтинг@Mail.ru

Поиск