Имя: Пароль:
1C
 
Код типа с условием, но там нет Если Тогда, как оно работает?
0 bizon2008
 
12.10.18
15:39
Код типа с условием, но там нет Если Тогда, как оно работает?
Это из типовой, я может чего не знаю. Теперь так пишут?
УПП 1,3 однако.

Вот такой кусок кода

Процедура УстановитьРеализацияТоваровОблагаемыхНДСУПокупателя()
    РеализацияТоваровОблагаемыхНДСУПокупателя = ДоговорКонтрагента.РеализацияТоваровОблагаемыхНДСУПокупателя
        И ЭтотОбъект.Дата >= Константы.ДатаНачалаОперацийСТоварамиОблагаемымиНДСУПокупателя.Получить();
        
    СкрытьНДСПриРеализацияТоваровОблагаемыхНДСУПокупателя();
    
КонецПроцедуры

Процедура СкрытьНДСПриРеализацияТоваровОблагаемыхНДСУПокупателя()
    
    // В случае реализации лома, скрываются колонки СтавкаНДС, СуммаНДС, Всего

    ОбработкаТабличныхЧастей.УстановитьВидимостьКолонкиТабЧасти(мКолонкиТовары.СтавкаНДС, Не РеализацияТоваровОблагаемыхНДСУПокупателя);
    ОбработкаТабличныхЧастей.УстановитьВидимостьКолонкиТабЧасти(мКолонкиТовары.СуммаНДС, Не РеализацияТоваровОблагаемыхНДСУПокупателя);
    ОбработкаТабличныхЧастей.УстановитьВидимостьКолонкиТабЧасти(мКолонкиТовары.Всего, Не РеализацияТоваровОблагаемыхНДСУПокупателя);
    // ... и надпись ВсегоНДС

    ЭлементыФормы.НадписьВсегоНДС.Видимость = Не РеализацияТоваровОблагаемыхНДСУПокупателя;
    ЭлементыФормы.ВсегоНДС.Видимость = Не РеализацияТоваровОблагаемыхНДСУПокупателя;
    
КонецПроцедуры

Тут по идее должно быть Если бля бла Тогда
РеализацияТоваровОблагаемыхНДСУПокупателя = ДоговорКонтрагента.РеализацияТоваровОблагаемыхНДСУПокупателя
        И ЭтотОбъект.Дата >= Константы.ДатаНачалаОперацийСТоварамиОблагаемымиНДСУПокупателя.Получить();
1 Darych
 
12.10.18
15:41
РеализацияТоваровОблагаемыхНДСУПокупателя будет истина когда оба истина
2 Гипервизор
 
12.10.18
15:42
Для чего вторая тема?
Какое вам если надо? В процедуру УстановитьВидимостьКолонкиТабЧасти третьим параметром передается Булево.
Или я не понял о чем речь.
3 ZDenis
 
12.10.18
15:42
(0) Стандартное условие на Истина Ложь
4 Гипервизор
 
12.10.18
15:42
Пардон, вторым параметром.
5 bizon2008
 
12.10.18
15:45
(1) Это понятно, дальше то оно никуда не идет.
Дальше строка которая должна отрабатывать если оба истина. Но она тогда по любому отрабатывает получается.
СкрытьНДСПриРеализацияТоваровОблагаемыхНДСУПокупателя();
6 ZDenis
 
12.10.18
15:47
(5) Оно в обоих случаях должно отрабатывать, оно ведь потом видимость и прочее устанавливает
7 bizon2008
 
12.10.18
15:48
(2) (4) Да блин первым вопросом понятно. Колонки все рано не прячутся.
А так просто интересно стало уж больно код замысловатый.

А я понял, они глобальную перемененную используют.
Ну это же не кошерно однако.
8 RomanYS
 
12.10.18
15:48
(5) Тебя название "Скрыть..." смущает? Так оно в обе стороны по факту работает.

Или сама поддержка 1С примитивной булевой алгебры удивляет? Для обитателя мисты с такой полоской это странно)
9 Buster007
 
12.10.18
15:52
(5) ВлияетПолоскаНаУровеньЗнаний = ЛОЖЬ ИЛИ ИСТИНА;
10 Гипервизор
 
12.10.18
15:52
(7) Какая еще глобальная переменная? оО
РеализацияТоваровОблагаемыхНДСУПокупателя - это реквизит документа.
11 bizon2008
 
12.10.18
15:52
(8) Меня смущает что как-то либо гениально, что я не въезжаю, либо коряво написано что я от типовой не ожидал однако.

У меня перерывы были. в полоске разрывы надо нарисовать.
12 bizon2008
 
12.10.18
15:56
(10) Тогда гениально, мдя, ну что будем имет в виду, что такой трюк вполне кошерен и можно в свой арсенал записать пользовать.
13 FIXXXL
 
12.10.18
15:57
>РеализацияТоваровОблагаемыхНДСУПокупателя = Истина(или Ложь, как повезет)
установили значение переменной или реквизиту или чем там оно является, дальше присваиваем установленное значение через процедуру ОбработкаТабличныхЧастей.УстановитьВидимостьКолонкиТабЧасти()
14 bolobol
 
12.10.18
16:08
(0) "Тут по идее должно быть Если бля бла Тогда" - в операции присваивания должно быть Если? - Возможно Если, но никаму ничего не должно.
15 fbear
 
12.10.18
17:05
Если а = б Тогда
    Выполнить(Истина);
Иначе
    Выполнить(Ложь);
КонецЕсли;

Можно заменить просто

Выполнить(а=б);

Ведь, результат а=б и есть Истина или Ложь, которое передают в параметр.
16 1Сергей
 
12.10.18
17:08
Вот так должно быть понятнее:

РеализацияТоваровОблагаемыхНДСУПокупателя = (ДоговорКонтрагента.РеализацияТоваровОблагаемыхНДСУПокупателя
        И ЭтотОбъект.Дата >= Константы.ДатаНачалаОперацийСТоварамиОблагаемымиНДСУПокупателя.Получить());

Сначала высчитывается выражение в скобках, потом переменной присваивается Истина или Ложь