Имя: Пароль:
 
1C
1С v8
Управляемая форма, как обновить реквизит.
0 Быдло замкадное
 
06.10.17
11:14
На форме 2 таблички, при удалении строки из одной таблицы надо изменить значение в колонке другой таблице.
Все работало до того как я стал после этого действия еще принудительно проводить документ.
Теперь во второй табличке на форме не видны изменения.
Что пробовал:
1. ОбновитьОтображениеДанных - не помогло
2. Прочитать - не помогло
3.
ОбъектОбработка = РеквизитФормыВЗначение("Объект");
//редактирование ТЧ
ЗначениеВРеквизитФормы(ОбъектОбработка, "Объект");
- тоже не помогло.

Каааак его обновить? Сейчас обновляется только после того как кнопку Записать нажмешь.

Код:

&НаКлиенте
Процедура ТоварыПередУдалением(Элемент, Отказ)
    
    Номенклатура = Элемент.ТекущиеДанные.Номенклатура;
    Количество = Элемент.ТекущиеДанные.Количество;
    
    УбратьКоличествоНаСервере(Номенклатура, Количество);
    
    Записать(Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение));
    
КонецПроцедуры

&НаСервере
Процедура УбратьКоличествоНаСервере(Номенклатура, Количество)
      
    СтруктураПоиска = Новый Структура;
    СтруктураПоиска.Вставить("Номенклатура", Номенклатура);
    МассивСтрок = Объект.ПланФакт.НайтиСтроки(СтруктураПоиска);
    СтрокаПланФакт = МассивСтрок[0];    
    СтрокаПланФакт.Количество = СтрокаПланФакт.Количество - Количество;
        
КонецПроцедуры
1 Быдло замкадное
 
06.10.17
11:16
Записать(Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение));
    
Тоже делал и на сервере и на клиенте, все равно форма не обновляется
2 DmitrO
 
06.10.17
11:23
А ничего, что сначала происходит запись, а потом удаляется строка из таблицы Товары?
3 Быдло замкадное
 
06.10.17
11:24
(2) почему? Последовательность вроде такая:

УбратьКоличествоНаСервере(Номенклатура, Количество);
    
    Записать(Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение));
4 DmitrO
 
06.10.17
11:25
Да, обработчик-то называется ПередУдалением.
5 Быдло замкадное
 
06.10.17
11:27
(4) упс! щас исправлю
6 Быдло замкадное
 
06.10.17
11:36
Заработало! думал косяк управляемой формы, а оказался косяк моей логики)

Правильный код:

&НаКлиенте
Процедура ТоварыПередУдалением(Элемент, Отказ)
    
    Номенклатура = Элемент.ТекущиеДанные.Номенклатура;
    Количество = Элемент.ТекущиеДанные.Количество;
    
    УбратьКоличествоНаСервере(Номенклатура, Количество);    
    
КонецПроцедуры

&НаСервере
Процедура УбратьКоличествоНаСервере(Номенклатура, Количество)
      
    СтруктураПоиска = Новый Структура;
    СтруктураПоиска.Вставить("Номенклатура", Номенклатура);
    МассивСтрок = Объект.ПланФакт.НайтиСтроки(СтруктураПоиска);
    СтрокаПланФакт = МассивСтрок[0];    
    СтрокаПланФакт.Количество = СтрокаПланФакт.Количество - Количество;
        
КонецПроцедуры

&НаКлиенте
Процедура ТоварыПослеУдаления(Элемент)
    
    Записать(Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение));
    
КонецПроцедуры
7 DmitrO
 
06.10.17
11:37
угу..
А теперь скажи, твои юзеры знают о такой чудесной возможности: выделить две строки и нажать Del один раз? Если нет, то лучше не рассказывай им об этом..
8 Быдло замкадное
 
06.10.17
11:45
(7) они на ТСД работают, там ни 2 строк, на правой кнопки мышки нет
9 DmitrO
 
06.10.17
11:49
ну тогда готово