Имя: Пароль:
1C
1С v8
Условия если
0 Татьяна211287
 
04.06.12
07:34
Не работает конструкция - первые 2 условия выводятся без ошибок, а вот если СуммаАванса - не заполнена, то выводится пустая строка


Пока Выборка.Следующий()Цикл    
       Если ЗначениеЗаполнено (Выборка.СуммаАванса) И Выборка.СуммаАванса = СсылкаНаОбъект.СуммаДокумента
           ТОГДА
           СтрокаСуммаАванса = "        3.2. «Заказчик» обязуется оплатить Исполнителю в порядке предварительной оплаты всю сумму, обозначенную в п. 3.1. Договора в день его подписания. Оплата производится путём внесения денежных средств представителю Исполнителя.";    
       Иначе    
           СтрокаСуммаАванса = "        3.2. «Заказчик» обязуется оплатить Исполнителю в порядке предварительной оплаты сумму (аванс) в размере" + " " + Выборка.СуммаАванса + "руб. в день подписания настоящего Договора. Оставшаяся часть денежных средств за оказание услуг, выполнение работ оплачивается Заказчиком в течение 30 дней с момента подписания настоящего Договора. Оплата производится путём внесения денежных средств представителю Исполнителя.";
           Если НЕ ЗначениеЗаполнено (Выборка.СуммаАванса)
       ТОГДА
    СтрокаСуммаАванса = "        3.2. «Заказчик» обязуется оплатить Исполнителю в порядке предварительной оплаты сумму (аванс) в размере_______руб. в день подписания настоящего Договора. Оставшаяся часть денежных средств за оказание услуг, выполнение работ оплачивается Заказчиком в течение 30 дней с момента подписания настоящего Договора. Оплата производится путём внесения денежных средств представителю Исполнителя.";            
           КонецЕсли;
       КонецЕсли;

КонецЦикла;
1 ДенисЧ
 
04.06.12
07:45
СтрокаСуммаАванса = "        3.2. «Заказчик» обязуется оплатить Исполнителю в порядке предварительной оплаты сумму (аванс) в размере" + " " + ?(ЗначениеЗаполнено(Выборка.СуммаАванса),Выборка.СуммаАванса, "???") + "руб. в день подписания настоящего Договора. Оставшаяся часть денежных средств за оказание услуг, выполнение работ оплачивается Заказчиком в течение 30 дней с момента подписания настоящего Договора. Оплата производится путём внесения денежных средств представителю Исполнителя.";
2 Живой Ископаемый
 
04.06.12
07:57
как узнаешь что сумма аванса не заполнена?
3 Татьяна211287
 
04.06.12
08:00
Есть запрос по выборке суммы аванса, вот как раз и не знаю как записать условие, что если сумма аванса пустая, то...
4 dva1c
 
04.06.12
08:03
(3) Что хотелось бы выводить?
5 Живой Ископаемый
 
04.06.12
08:06
2(3) сделай как в (1)
или б) поменяй условия местами, сначала проверяй на незаполненность, и только потом на заполненность И равенство.
в) открой для себя условие с... вариантами более 2-х типа:
Если Вариант1 Тогда
{копрокод1}
ИначеЕсли Вариант2 Тогда
{копрокод2}
Иначе
{копрокод3, который выполнится если первый два условия не сработают}
КонецЕсли;
6 dva1c
 
04.06.12
08:07
(5)+100 )
7 Татьяна211287
 
04.06.12
08:25
НЕ РАБОТАЕТ, может как то по другому проверять незаполненность суммы аванса



Пока Выборка.Следующий()Цикл    
       Если НЕ ЗначениеЗаполнено (Выборка.СуммаАванса)
           ТОГДА
           СтрокаСуммаАванса = "        3.2. «Заказчик» обязуется оплатить Исполнителю в порядке предварительной оплаты сумму (аванс) в размере_______руб. в день подписания настоящего Договора. Оставшаяся часть денежных средств за оказание услуг, выполнение работ оплачивается Заказчиком в течение 30 дней с момента подписания настоящего Договора. Оплата производится путём внесения денежных средств представителю Исполнителя.";
       Иначе если     Выборка.СуммаАванса = СсылкаНаОбъект.СуммаДокумента
           ТОГДА СтрокаСуммаАванса = "        3.2. «Заказчик» обязуется оплатить Исполнителю в порядке предварительной оплаты всю сумму, обозначенную в п. 3.1. Договора в день его подписания. Оплата производится путём внесения денежных средств представителю Исполнителя.";    
       Иначе
           СтрокаСуммаАванса = "        3.2. «Заказчик» обязуется оплатить Исполнителю в порядке предварительной оплаты сумму (аванс) в размере" + " " + Выборка.СуммаАванса + "руб. в день подписания настоящего Договора. Оставшаяся часть денежных средств за оказание услуг, выполнение работ оплачивается Заказчиком в течение 30 дней с момента подписания настоящего Договора. Оплата производится путём внесения денежных средств представителю Исполнителя.";
                           //СтрокаСуммаАванса = "        3.2. «Заказчик» обязуется оплатить Исполнителю в порядке предварительной оплаты сумму (аванс) в размере" + " " + ?(ЗначениеЗаполнено(Выборка.СуммаАванса),Выборка.СуммаАванса, "???") + "руб. в день подписания настоящего Договора. Оставшаяся часть денежных средств за оказание услуг, выполнение работ оплачивается Заказчиком в течение 30 дней с момента подписания настоящего Договора. Оплата производится путём внесения денежных средств представителю Исполнителя.";
                   
           //КонецЕсли;
       КонецЕсли;  
       КонецЕсли;
       КонецЦикла;
8 Zmich
 
04.06.12
08:30
Если Выборка.СуммаАванса = 0  Тогда
//....

Числовой реквизит не может быть "не заполненным"
9 Фокусник
 
04.06.12
08:31
ИначеЕсли а не Иначе если
10 Живой Ископаемый
 
04.06.12
08:39
2(7) не работает, потому что не последовала рекомендациям
11 unregistered
 
04.06.12
08:40
(8) >> Числовой реквизит не может быть "не заполненным"

Не проснулся еще?
Почитай СП.
12 Фокусник
 
04.06.12
08:41
(8) >Числовой реквизит не может быть "не заполненным"
Это ложное утверждение:
http://s019.radikal.ru/i608/1206/80/bd14e3594d6f.jpg
13 unregistered
 
04.06.12
08:44
Автор, а отладчик что говорит по поводу проверяемых значений и условий?
14 Татьяна211287
 
04.06.12
09:10
ошибок не выдает, пишет переменная не определена когда СуммаАванса отсутствует
15 фросия
 
04.06.12
09:14
(14) еще раз проверьте код. а лучше- отладчиком посмотреть
16 unregistered
 
04.06.12
09:24
(14) >> пишет переменная не определена

Что за бред?...

Чт означит "переменная не определена"? Какая именно переменная?
17 Татьяна211287
 
04.06.12
09:30
я пытаюсь в табло отследить значение суммы аванса
18 ХочуСказать
 
04.06.12
09:31
(14) потому что этого поля нет в запрое
19 unregistered
 
04.06.12
09:33
(17) Выборка.СуммаАванса - "переменная не определена" или "Неопределено"
Если "переменная не определена", то смотри (18).
20 Татьяна211287
 
04.06.12
09:43
сама знаю что бред, как вот его только решить
21 unregistered
 
04.06.12
09:44
(20) Написать запрос так, чтобы в нем было поле "СуммаАванса"
22 Фокусник
 
04.06.12
09:46
(20) Выборка.СуммаАванса всегда "переменная не определена"?
Быть может в другом реквизите находится эта сумма?
23 Татьяна211287
 
04.06.12
09:51
нет, именно в этом, запрос работает верно, т.к если сумма ПКо = Сумме заказа или меньше ее, то выволится все верно, не работает только условие, когда ПКО отсутствует, т.е.СуммаАванса = 0
24 unregistered
 
04.06.12
09:58
(23) Что ты тут нам по мозгам ездишь, если отладчик тебе русским языком пишет "переменная не определена".

Для совсем деревянных поясняю:  "переменная не определена" означает, что её вообще не существует. А ты нам тут паришь что она = 0.

Может у тебя там грамматическая ошибка. Например, обозвала в запросе поле "СуммаАв" а в тексте кода спрашиваешь поле "СуммаАванса".
25 Татьяна211287
 
04.06.12
10:04
Когда проверяю отладчиком СуммаАванса - значение пустое, а тип пишет неопределено
26 dva1c
 
04.06.12
10:34
(25) Определи СуммаАванса. СуммаАванса = ""
27 Zmich
 
04.06.12
10:37
Текст запроса выложи уже, у тебя там косяки, видать.
28 unregistered
 
04.06.12
10:43
(25) >> СуммаАванса - значение пустое, а тип пишет неопределено

Я тебя об этом в (19) спрашивал.  Тебе помощь вообще нужна?

(27) +1 нужен текст запроса.

А что отладчик пишет по поводу ЗначениеЗаполнено(Выборка.СуммаАванса) ?
29 Татьяна211287
 
04.06.12
10:56
нужна конечно помощь!
вот мой запрос

//ЗАПОПРОС СУММА АВАНАС ПКО
   Запрос = Новый Запрос;    
   Запрос.УстановитьПараметр("СсылкаНаЗаказ",ССылкаНаОбъект);
   Запрос.Текст =
               "ВЫБРАТЬ
               |    СУММА(ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовРасход) КАК СуммаАванса, ВзаиморасчетыСКонтрагентамиОбороты.Сделка КАК Сделка ПОМЕСТИТЬ ВТ_Аванс
               |ИЗ
               |            РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(, , регистратор, Сделка = &СсылкаНаЗаказ) КАК ВзаиморасчетыСКонтрагентамиОбороты
                 |        ГДЕ
               |            ВзаиморасчетыСКонтрагентамиОбороты.Регистратор ССЫЛКА Документ.ПриходныйКассовыйОрдер        
               |        СГРУППИРОВАТЬ ПО
               |            ВзаиморасчетыСКонтрагентамиОбороты.Сделка;
               |ВЫБРАТЬ
               |    ЗаказПокупателя.Ответственный КАК ДоверенноеЛицо,
               |    ЗаказПокупателя.СуммаДокумента,
               |    ЗаказПокупателя.Ответственный.Наименование,
               |    ВТ_Аванс.СуммаАванса КАК СуммаАванса
               |ИЗ
               |    ВТ_Аванс КАК ВТ_Аванс
               |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК ЗаказПокупателя ПО ЗаказПокупателя.Ссылка = ВТ_Аванс.Сделка";
       Результат = Запрос.Выполнить();
       Выборка = Запрос.Выполнить().Выбрать();
30 Zmich
 
04.06.12
11:20
|    ВТ_Аванс.СуммаАванса КАК СуммаАванса

заменить на

|    ЕСТЬNULL(ВТ_Аванс.СуммаАванса, 0) КАК СуммаАванса

?
31 Татьяна211287
 
05.06.12
11:14
можно как то записать условие для Выборка.СуммаАванса не ровна 0?
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший