Имя: Пароль:
1C
1С v8
Условие при выборе
0 Singenor
 
04.09.12
13:53
У меня есть условие: при выборе контрагента заполняются данными элементы на форме, но из 3х данных, которые должны заполнятьлся, заполняются только 2е, почему? ниже код
1 Singenor
 
04.09.12
13:55
Функция Долг (ЭлементыФормы)  Экспорт
       Запрос = Новый Запрос;
       Запрос.Текст = "ВЫБРАТЬ
                      |    ДоговорыКонтрагентов.Ссылка КАК Ссылка,
                      |    ДоговорыКонтрагентов.СрокДействия КАК СрокДействия,
                      |    ДоговорыКонтрагентов.ПометкаУдаления КАК Пометка
                      |ИЗ
                      |    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
                      |ГДЕ
                      |    ДоговорыКонтрагентов.ВидВзаиморасчетов = ЗНАЧЕНИЕ(Справочник.ВидыВзаиморасчетов.ИТС)
                      |    И ДоговорыКонтрагентов.Владелец = &Владелец";
       Запрос.УстановитьПараметр("Владелец", Контрагент);
       Дог1 = Запрос.Выполнить().Выбрать();
       Если Дог1.Следующий() Тогда
           Если НЕ Дог1.Пометка Тогда
           Если Дог1.СрокДействия > Дата Тогда
               ЭлементыФормы.ГиперСсылкаДоговорНаУслуги.ЦветТекста = WebЦвета.Зеленый;    
               ЭлементыФормы.ГиперСсылкаДоговорНаУслуги.Заголовок= Дог1.Ссылка;
           Иначе
               ЭлементыФормы.ГиперСсылкаДоговорНаУслуги.ЦветТекста = WebЦвета.Красный;
               ЭлементыФормы.ГиперСсылкаДоговорНаУслуги.Заголовок= Дог1.Ссылка;
           КонецЕсли;
       Иначе
           ЭлементыФормы.ГиперСсылкаДоговорНаУслуги.ЦветТекста = WebЦвета.ОранжевоКрасный;
           ЭлементыФормы.ГиперСсылкаДоговорНаУслуги.Заголовок = "Договора на ИТС нет";
       КонецЕсли;
   Иначе
       КонецЕсли;
   
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |    ДоговорыКонтрагентов.Ссылка КАК Ссылка,
                  |    ДоговорыКонтрагентов.СрокДействия КАК СрокДействия,
                  |    ДоговорыКонтрагентов.ПометкаУдаления КАК Пометка
                  |ИЗ
                  |    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
                  |ГДЕ
                  |    ДоговорыКонтрагентов.ВидВзаиморасчетов = ЗНАЧЕНИЕ(Справочник.ВидыВзаиморасчетов.Сопровождение)
                  |    И ДоговорыКонтрагентов.Владелец = &Владелец";
   Запрос.УстановитьПараметр("Владелец", Контрагент);
   Дог2 = Запрос.Выполнить().Выбрать();
   Если Дог2.Следующий() Тогда
       Если НЕ Дог2.Пометка Тогда
       Если Дог2.СрокДействия > Дата Тогда
           ЭлементыФормы.НадписьПодпискаИТС.ЦветТекста = WebЦвета.Зеленый;
           ЭлементыФормы.НадписьПодпискаИТС.Заголовок= Дог2.Ссылка;
       Иначе
           ЭлементыФормы.НадписьПодпискаИТС.ЦветТекста = WebЦвета.Красный;
           ЭлементыФормы.НадписьПодпискаИТС.Заголовок= Дог2.Ссылка;
       КонецЕсли;
   Иначе
       ЭлементыФормы.НадписьПодпискаИТС.ЦветТекста = WebЦвета.ОранжевоКрасный;
       ЭлементыФормы.НадписьПодпискаИТС.Заголовок = "Договора на услуги нет";
   КонецЕсли;
Иначе
   КонецЕсли;
   
   Запрос = Новый Запрос;
   Запрос.Текст ="ВЫБРАТЬ
   |    ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток
   |ИЗ
   |    РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(
   |    &Дата,
   |    ДоговорКонтрагента.ВидВзаиморасчетов = ЗНАЧЕНИЕ(Справочник.ВидыВзаиморасчетов.ОбучениеКОРП)
   |    ИЛИ ДоговорКонтрагента.ВидВзаиморасчетов = ЗНАЧЕНИЕ(Справочник.ВидыВзаиморасчетов.ОбучениеФЛ)
   |    ИЛИ ДоговорКонтрагента.ВидВзаиморасчетов = ЗНАЧЕНИЕ(Справочник.ВидыВзаиморасчетов.ОбучениеЮЛ)
   |    ИЛИ ДоговорКонтрагента.ВидВзаиморасчетов = ЗНАЧЕНИЕ(Справочник.ВидыВзаиморасчетов.Поставка)
   |    И Контрагент = &Контрагент) КАК ВзаиморасчетыСКонтрагентамиОстатки";
   Запрос.УстановитьПараметр("Дата", ТекущаяДата());
   Запрос.УстановитьПараметр("Контрагент",Контрагент);
   СальдоРезультат = Запрос.Выполнить().Выбрать();
   Если СальдоРезультат.Следующий() Тогда
   Если СальдоРезультат.СуммаВзаиморасчетовОстаток < 0 Тогда
       ЭлементыФормы.НадписьСальдоВзаиморасчетов.ЦветТекста = WebЦвета.Зеленый;
       ЭлементыФормы.НадписьСальдоВзаиморасчетов.Заголовок = "Долгов нет";
   Иначе
     ЭлементыФормы.НадписьСальдоВзаиморасчетов.ЦветТекста = WebЦвета.Красный;
       ЭлементыФормы.НадписьСальдоВзаиморасчетов.Заголовок = "Долг составляет: " + СальдоРезультат.СуммаВзаиморасчетовОстаток;
   КонецЕсли;
   КонецЕсли;
2 Singenor
 
04.09.12
13:56
В контрагенте при изменении просто выбираю потом эту функцию(см. выше)
3 Галахад
 
гуру
04.09.12
13:59
Наверное результат пустой.
4 le_
 
04.09.12
14:00
(1) Запрос по взаиморасчетам неверно составлен.
5 chelentano
 
04.09.12
14:00
(0) отладчиком пользоваться не пробовал?
6 Singenor
 
04.09.12
14:03
(1) выдает мне ведьрезультат от этого запроса, просто там как будто жесткая привязка стоит, то есть я создаю новым документ, а там даже до выбора контрагента, уже прописано сальдо взаиморасчетов, а мне нужно,чтобы не было)(
7 le_
 
04.09.12
14:03
ИТС:
"Особенности расчета итогов по полям остатка. Использование реквизитов измерений."
http://a.imageshack.us/img412/5521/18053290.jpg

"Типичные проблемы при расчете остатков."
http://a.imageshack.us/img405/476/73796797.jpg
8 Singenor
 
04.09.12
14:07
так а в итоге как сделать, чтобы данные заполнялись после выбора контрагента?
9 Singenor
 
04.09.12
14:20
все, сделал