Имя: Пароль:
1C
 
Обработчик кнопки только различия
,
0 falselight
 
20.06.19
13:55
Есть обработка с заполненной табличной частью.
Нужно сделать обработчик кнопки, который удаляет из этой табличной строки где
колонка 15 <> колонка 16 или колонка 15 и колонка 16 = 0

Подскажите как правильно это сделать?

А то вроде есть какие то проблемы при удалении строк из таблицы значений или табличной части.
1 PuhUfa
 
20.06.19
14:00
(0) никаких проблем нет если правильно удалять. примеров "как правильно" полно
2 falselight
 
20.06.19
14:01
(1) Так не идет

//
&НаСервере
Процедура ТолькоРазличияНаСервере()
    Для каждого СтрТч Из Объект.СравнениеОтчетов Цикл
        Если (СтрТч.ВУчетаДавальца <> СтрТч.ВУчетеПереработчика) или
            (СтрТч.ВУчетаДавальца = 0 и СтрТч.ВУчетеПереработчика = 0) Тогда
            //
        Иначе
            //
            Объект.СравнениеОтчетов.Удалить(СтрТч);
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры
//
3 Fish
 
20.06.19
14:02
(2) ОМГ.  :)
4 falselight
 
20.06.19
14:03
(3) Ну подскажите как нужно?
5 Fish
 
20.06.19
14:05
(4) Мне вот интересно, неужели у тебя за столько лет на форуме ни разу не возникло желания набрать самому вопрос в яндексе и сделать на основе примеров?

Это же азы.
6 falselight
 
20.06.19
14:13
И так не работает ((((

//
&НаСервере
Процедура ТолькоРазличияНаСервере()
    СтруктураДляУдаления = Новый Структура;
    Для Каждого СтрТч Из Объект.СравнениеОтчетов Цикл
        Если (СтрТч.ВУчетаДавальца <> СтрТч.ВУчетеПереработчика) или
            (СтрТч.ВУчетаДавальца = 0 и СтрТч.ВУчетеПереработчика = 0) Тогда
            //
        Иначе
            //
            СтруктураДляУдаления.Вставить("Строка", СтрТч);
            //Объект.СравнениеОтчетов.Удалить(СтрТч);
        КонецЕсли;
    КонецЦикла;
    //
    Для Каждого Строка Из СтруктураДляУдаления Цикл
        Объект.СравнениеОтчетов.Удалить(Строка.Значение);
    КонецЦикла;
КонецПроцедуры
//
7 falselight
 
20.06.19
14:14
(5) У меня вечер. Я ничего не соображаю, а доделать нужно.
8 falselight
 
20.06.19
14:15
(5) Я и смотрю по примерам. от куда я (6) взял то?
Но не работает это!!!!!!

Или много раз нужно жать на кнопку.
9 Fish
 
20.06.19
14:17
(8) Судя по (0) у тебя в условии ошибка.
10 Valkyrie
 
20.06.19
14:17
Встать отладчиком и смотреть, как отрабатывают эти условия:
Если (СтрТч.ВУчетаДавальца <> СтрТч.ВУчетеПереработчика) или
            (СтрТч.ВУчетаДавальца = 0 и СтрТч.ВУчетеПереработчика = 0) Тогда

(7) По ночам-вечерам нужно отдыхать.
11 falselight
 
20.06.19
14:20
так вроде

//
&НаСервере
Процедура ТолькоРазличияНаСервере()
    МассивДляУдаления    = Новый Массив;
    Для Каждого СтрТч Из Объект.СравнениеОтчетов Цикл
        Если (СтрТч.ВУчетаДавальца <> СтрТч.ВУчетеПереработчика) или
            (СтрТч.ВУчетаДавальца = 0 и СтрТч.ВУчетеПереработчика = 0) Тогда
            //
        Иначе
            //
            МассивДляУдаления.Добавить(СтрТч);
        КонецЕсли;
    КонецЦикла;
    //
    Для Каждого ЭлементМас Из МассивДляУдаления Цикл
        Объект.СравнениеОтчетов.Удалить(ЭлементМас);
    КонецЦикла;
КонецПроцедуры
//