Имя: Пароль:
1C
1С v8
Как поставить условие!
,
0 SherifSP
 
14.07.12
10:30
Как правильно поставить условие. Нужно если контрагент просрочил дату задолженности на 14 дней тогда, сделать какие то действия.
У меня вариант такой
Если (Стр.Итог("СуммаПросрочки") > ДопустимаяСуммаПросрочки)И(Стр.Итог("Дата") > (Стр.Итог("Дата")+14)) Тогда

Стр это строка таблицы значения
24 m-serg74
 
14.07.12
11:25
нет, ТС бредит
25 m-serg74
 
14.07.12
11:26
(23) что получится по твоему? 01.05.2012 + 20.06.2012 = ?
26 SherifSP
 
14.07.12
11:26
(19) Стр.Итог("Дата") Это дата оплаты
27 Goggy
 
14.07.12
11:27
А зачем тебе итоги вообще в строке?
28 SherifSP
 
14.07.12
11:28
(27)Ладно пусть будит Стр.Дата
29 SherifSP
 
14.07.12
11:29
Если Стр.Дата > (Cтр.Дата+14)Тогда
30 m-serg74
 
14.07.12
11:30
(28) а как вообще Итог получается в одной Стр, у тебя синт. контроль молчит?
31 SherifSP
 
14.07.12
11:30
Или как?
32 m-serg74
 
14.07.12
11:30
или ты в блокноте код набираешь
33 SherifSP
 
14.07.12
11:30
Та забудь о итоге
34 m-serg74
 
14.07.12
11:31
Стр.Итог("СуммаПросрочки") тогда здесь тоже его нафиг
35 SherifSP
 
14.07.12
11:31
Есть дата просрочки, если контрагент просрочил эту дату просрочки на 14 дней тогда
36 Goggy
 
14.07.12
11:33
14.07.2012 11:32:30 > 14.07.2012 11:32:44 = 14.07.2012 11:32:30 + 14

вот это у тебя в результате
37 m-serg74
 
14.07.12
11:33
Если Стр.Дата > (Cтр.Дата+14)Тогда
несбыточное условие
х < х + 14 всегда меньше вообщето
38 m-serg74
 
14.07.12
11:35
наверное надо с ДатаОтгрузки + 14 сравнивать
39 izekia
 
14.07.12
11:36
ДатаОтгрузки + 14*86400
40 Ctyd
 
14.07.12
11:36
ЕСли (текущаяДата() > (Стр.Дата+86400)  Тогда

И больше никаких условий не надо
41 izekia
 
14.07.12
11:37
а то чувак только отъехал и уже просрочил
42 Ctyd
 
14.07.12
11:37
(Стр.Дата+14*86400) попровка на 14 дней
43 izekia
 
14.07.12
11:38
(40) 14 дней
44 m-serg74
 
14.07.12
11:40
(40) по тексту кода ТС наоборот никогда не просрочит
45 m-serg74
 
14.07.12
11:41
(42) а ТекущаяДата() тож не всегда верное, фиг знает от чего он отталкивается
46 m-serg74
 
14.07.12
11:42
+ (45) может он подготавливает запрет на два дня вперед
47 Ctyd
 
14.07.12
11:43
ну тогда пускай дату заказа ставит..
48 m-serg74
 
14.07.12
11:44
скорее все таки ДатаОтгрузки должа фигурировать
49 m-serg74
 
14.07.12
11:44
он на нее долг рассчитывает
50 m-serg74
 
14.07.12
11:45
Заказ пришел вчера а отгружать хотели через неделю, ??? не ясно как поступить)
51 m-serg74
 
14.07.12
11:46
кстати где ТС?
52 Ctyd
 
14.07.12
11:46
он поидее с заказом играеться... ещё до отгрузки дело не дошло.. значит ему неужно проверять дату заказа и текущую дату, что бы не делали заказы задним числом и проводили документы
53 m-serg74
 
14.07.12
11:48
> заблокирован и не добавлен в маршрут

навряд ли заказ
54 m-serg74
 
14.07.12
11:48
скорее реализации в маршруты укладывает
55 m-serg74
 
14.07.12
11:49
но (51) !!!
56 Ctyd
 
14.07.12
11:51
кинул он нас.. вот сидим теперь за него работу делаем=)
57 m-serg74
 
14.07.12
11:51
угадываем)))
58 SherifSP
 
14.07.12
11:53
Да я не могу понять смысл запроса, заполняю док, запрос возвращает пустое значение
59 m-serg74
 
14.07.12
11:56
а где запрос то?
60 m-serg74
 
14.07.12
11:57
и какой док заполняешь
61 Ctyd
 
14.07.12
11:58
так может у контрагента не было задолжености=)
62 SherifSP
 
14.07.12
12:02
63 SherifSP
 
14.07.12
12:02
Таблица значения
64 SherifSP
 
14.07.12
12:03
Если у контрагента дата оплаты просрочена на 14 дней тогда закрыть отгрузку
65 m-serg74
 
14.07.12
12:03
колонка просрочка - это секунды или что?
66 Ctyd
 
14.07.12
12:06
там есть ещё много интересного например сумма "-" =)..
(65) то дни прострочки
67 SherifSP
 
14.07.12
12:06
Функция ТекущийДолг(Контрагент, ТорговаяТочка, ТорговыйПредставитель,ДатаКонтроляПросрочки=Неопределено) Экспорт
   Если ДатаКонтроляПросрочки = Неопределено Тогда
       ДатаКонтроляПросрочки = ТекущаяДата();
   КонецЕсли;
   ТекстЗапроса = "ВЫБРАТЬ
                  |    Расчеты.ТорговаяТочка,
                  |    Расчеты.ТорговыйПредставитель,
                  |    Расчеты.Документ,
                  |    Расчеты.Склад,
                  |    Расчеты.Сумма,
                  |    Расчеты.ДатаОплаты,
                  |    Расчеты.Просрочка,
                  |    Расчеты.СуммаПросрочки
                  |ИЗ
                  |    (ВЫБРАТЬ
                  |        ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ТорговаяТочка КАК ТорговаяТочка,
                  |        ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ТорговыйПредставитель КАК ТорговыйПредставитель,
                  |        ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом КАК Документ,
                  |        ВЫБОР
                  |            КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом ССЫЛКА Документ.РеализацияТоваровУслуг
                  |                ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.Склад
                  |            КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом ССЫЛКА Документ.ВозвратТоваровОтПокупателя
                  |                ТОГДА ВЫБОР
                  |                        КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.СкладОрдер ССЫЛКА Справочник.Склады
                  |                            ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.СкладОрдер
                  |                        КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.СкладОрдер ССЫЛКА Документ.ПриходныйОрдерНаТовары
                  |                            ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.СкладОрдер.Склад
                  |                        ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
                  |                    КОНЕЦ
                  |            ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
                  |        КОНЕЦ КАК Склад,
                  |        ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток КАК Сумма,
                  |        ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты КАК ДатаОплаты,
                  |        РАЗНОСТЬДАТ(&ДатаИтогов, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты, ДЕНЬ) КАК Просрочка,
                  |        ВЫБОР
                  |            КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.УсловиеОплаты = ЗНАЧЕНИЕ(Перечисление.ВидыУсловийОплат.ОтПоставкиДоПоставки)
                  |                ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток
                  |            КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.УсловиеОплаты = ЗНАЧЕНИЕ(Перечисление.ВидыУсловийОплат.ПоФакту)
                  |                ТОГДА ВЫБОР
                  |                        КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты < НачалоПериода(&ДатаРасчета,День)
                  |                            ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток
                  |                        ИНАЧЕ 0
                  |                    КОНЕЦ
                  |            ИНАЧЕ ВЫБОР
                  |                    КОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты < &ДатаИтогов
                  |                        ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток
                  |                    ИНАЧЕ 0
                  |                КОНЕЦ
                  |        КОНЕЦ КАК СуммаПросрочки
                  |    ИЗ
                  |        РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки(&ДатаРасчета, ) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки
                  |    ГДЕ
                  |        ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.Контрагент = &Контрагент
                  //|        И ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки.СуммаВзаиморасчетовОстаток > 0
                  |        ) КАК Расчеты
                  |ГДЕ
                  |    Расчеты.Склад <> ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)";
                  Если ЗначениеЗаполнено(ТорговаяТочка) Тогда
                      ТекстЗапроса = ТекстЗапроса+"
                      |    И Расчеты.ТорговаяТочка = &ТорговаяТочка";
                  КонецЕсли;
                 
                  Если ЗначениеЗаполнено(ТорговыйПредставитель) Тогда
                      ТекстЗапроса = ТекстЗапроса+"
                      |    И Расчеты.ТорговыйПредставитель = &ТорговыйПредставитель";
                  КонецЕсли;
   Запрос = Новый Запрос(ТекстЗапроса);              
   Запрос.УстановитьПараметр("Контрагент",Контрагент);
   Запрос.УстановитьПараметр("ТорговаяТочка",ТорговаяТочка);
   Запрос.УстановитьПараметр("ТорговыйПредставитель",ТорговыйПредставитель);
   Запрос.УстановитьПараметр("ДатаИтогов",НачалоДня(ДатаКонтроляПросрочки)-Константы.ДопустимыеДниПросрочки.Получить()*24*60*60);
   Запрос.УстановитьПараметр("ДатаРасчета",КонецДня(ТекущаяДата()));
   
   Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
68 m-serg74
 
14.07.12
12:10
(66) и ТСу что то в днях много по два года не платят?
69 SherifSP
 
14.07.12
12:12
Как его условие наложить правильно
70 m-serg74
 
14.07.12
12:15
Запрос.УстановитьПараметр("ДатаИтогов",НачалоДня(ДатаКонтроляПросрочки)-Константы.ДопустимыеДниПросрочки.Получить()*24*60*60)

получается ДатаИтогов в принципе всегда меньше чем датаОтгрузки на Константы.ДопустимыеДниПросрочки.Получить()*24*60*60) вот такое время? это правильно?
71 SherifSP
 
14.07.12
12:15
да
72 Ctyd
 
14.07.12
12:16
Для Каждого Стр Из ТекущийДолг Цикл
                           Если Стр.СуммаПросрочки > 0 И Стр.просрочка < -14 Тогда
                               тглОбщегоНазначения.СообщитьПользователю("Есть просроченный долг: контрагент "+Заказ.Контрагент+", торговая точка "+Заказ.ТорговаяТочка+", торговый представитель "+Заказ.ТорговыйПредставитель, , ТаблицаСообщений, Контрагент, ТорговаяТочка, Заказ.Ссылка);
                               тглОбщегоНазначения.СообщитьПользователю("Заказ "+Заказ+" заблокирован и не добавлен в маршрут! Сумма просрочки = "+ТекущийДолг.Итог("СуммаПросрочки"),СтатусСообщения.ОченьВажное, ТаблицаСообщений, Контрагент, ТорговаяТочка, Заказ.Ссылка);
                               Продолжить;
                           КонецЕсли;
                       КонецЦикла;
73 Ctyd
 
14.07.12
12:17
Для Каждого Стр Из ТекущийДолг Цикл
                           Если Стр.СуммаПросрочки > 0 И Стр.просрочка < 0 Тогда
                               тглОбщегоНазначения.СообщитьПользователю("Есть просроченный долг: контрагент "+Заказ.Контрагент+", торговая точка "+Заказ.ТорговаяТочка+", торговый представитель "+Заказ.ТорговыйПредставитель, , ТаблицаСообщений, Контрагент, ТорговаяТочка, Заказ.Ссылка);
                               тглОбщегоНазначения.СообщитьПользователю("Заказ "+Заказ+" заблокирован и не добавлен в маршрут! Сумма просрочки = "+ТекущийДолг.Итог("СуммаПросрочки"),СтатусСообщения.ОченьВажное, ТаблицаСообщений, Контрагент, ТорговаяТочка, Заказ.Ссылка);
                               Продолжить;
                           КонецЕсли;
                       КонецЦикла;
74 Ctyd
 
14.07.12
12:18
тогда вот так... если дата итогов уже в запрос вбита
75 SherifSP
 
14.07.12
12:20
Какой вариант рабочий?
76 m-serg74
 
14.07.12
12:20
только наверное не Продолжить, а вывалиться с флагом запрета отгрузки
77 m-serg74
 
14.07.12
12:21
а то получается по одной реализации два года долг, по другой три дня - ХЗ что делать то?
78 m-serg74
 
14.07.12
12:22
только тогда проще отсортировать по Просрочка Уьыв и проверить первую строку, если больше чем 14 - кирдык
79 m-serg74
 
14.07.12
12:23
> если больше чем 14
имел ввиду если есть просрочка оплаты)
80 m-serg74
 
14.07.12
12:24
хотя это все в запросе вообще то надо
81 Ctyd
 
14.07.12
12:27
не не не .. ты же сам говорил что дата итогов и так меньше на 14 дней.. то есть если ещё в условии 14 дадим то тогда 28 дней получиться... значит последний вариант рабочий, но там ещё флаг на отказ ставить надо..
82 m-serg74
 
14.07.12
12:28
да (80) вообще и никаких циклов
83 m-serg74
 
14.07.12
12:30
отобрать суммы где есть просрочка, сгруппировать Суммыдолгов сложить в результате проверить ОбщаяСуммаДолгов > ДопустимойСуммыДолга - Отказ! все...
84 Ctyd
 
14.07.12
12:30
не скажи.. если нужно сообщить по чем и на какую сумму просрочено тогда без цикла не обойтись
85 m-serg74
 
14.07.12
12:31
ну если так то да, но
ТекущийДолг.Итог("СуммаПросрочки") тоже не совсем правильно, не по всем документам просрочка
86 m-serg74
 
14.07.12
12:32
просто все равно не ясна четкая цель действа сего)
87 m-serg74
 
14.07.12
12:34
и
>  Если Стр.СуммаПросрочки > 0
тоже не корректно у него есть понятие ДопустимаяСуммаПросрочки
88 Ctyd
 
14.07.12
12:34
что внутри цикла я не проверял... он же спрашивал про условие..
а вообще говорят ТС на работу устраивается?? И как много ещё заданий будет?
89 Ctyd
 
14.07.12
12:36
то нужно проверять на суму просрочки или же на дату?
90 m-serg74
 
14.07.12
12:36
за (85) сорри у него в запросе если нет просрочки то 0
91 m-serg74
 
14.07.12
12:37
я ж говорю (86), а ТС скрывается)
92 SherifSP
 
14.07.12
12:38
(89) На дату
93 SherifSP
 
14.07.12
12:42
Но сначала проверяем есть ли вообще просрочка, если есть проверяем дату оплаты, если контрагент просрочил дату оплаты на 14 дней тогда закрываем отгрузку
94 SherifSP
 
14.07.12
12:44
Дату которая в таблице значения
95 m-serg74
 
14.07.12
12:45
в запросе сразу отбеои только те строки где есть просрочка, потом проверишь общую сумму просрочки если больше положенной тогда сообщишь по каким докам и на какую сумму и все
96 m-serg74
 
14.07.12
12:45
отбеои = отбери
97 Ctyd
 
14.07.12
12:46
Запрос не катит.... совсем не катит..если контрагент погасил задолженность неделю назад. ему все равно закроют заказ..
98 m-serg74
 
14.07.12
12:47
(97) как это? а Взаиморасчеты он нафик проверяет
99 m-serg74
 
14.07.12
12:47
он же не просто доки берет а именно остатки по ним
100 Learn_
 
14.07.12
12:47
100
101 m-serg74
 
14.07.12
12:49
(100) о "белые колготки" подтянулись)))
102 izekia
 
14.07.12
12:49
да уж, ну вы и флудить
103 m-serg74
 
14.07.12
12:49
(102) простите? эт кому?
104 Ctyd
 
14.07.12
12:52
ну сам подумай.. если он берет остатки ХХ дневной давности (грубо говоря). То вся оплата которая была в промежутке между этими ХХ днями и датой отгрузки пропадает. и мы видим не корректную инфу по задолженности.
105 izekia
 
14.07.12
12:53
(103) вам всем
106 m-serg74
 
14.07.12
12:56
)))
107 m-serg74
 
14.07.12
12:56
(104) так пусть правильно берет, но все равно запросом
108 m-serg74
 
14.07.12
12:57
кажись догнал (97) было не на (95), а ТСу))) да?
109 SherifSP
 
14.07.12
12:59
Вот так сделал
Если (Стр.СуммаПросрочки > ДопустимаяСуммаПросрочки)И(ТекущаяДата() > (Стр.ДатаОплаты+14*86400))

хз прокатит ли)
110 m-serg74
 
14.07.12
12:59
все правильно в запросе:
ИЗ
                  |        РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки(&ДатаРасчета, ) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки

Запрос.УстановитьПараметр("ДатаРасчета",КонецДня(ТекущаяДата()));
111 m-serg74
 
14.07.12
13:00
(110) 2 (104)
112 SherifSP
 
14.07.12
13:01
То есть потом проверять по этой дате расчета?
113 izekia
 
14.07.12
13:01
Автор периодически, в течении полутора месяцев пытается изучить 1С, причем пытается по большей части лезть на форум и задавать глупые вопросы, вместо того чтобы нормально изучить теорию.

Я бы настоятельно не рекомендовал тратить на него свое время, а то и сами что-нибудь полезное пропустите и он с таким подходом так ничего и не изучит.
114 Ctyd
 
14.07.12
13:02
да теперь вижу....
признаю свою ошибку на (110)..
на (109) не прокатит 100%
на (113) поддерживаю =)
115 izekia
 
14.07.12
13:03
116 izekia
 
14.07.12
13:04
конкретно посты 5 и 7
117 Learn_
 
14.07.12
13:09
(101) по делу ниче не могу сказать, так хоть что то ляпну )))))
118 m-serg74
 
14.07.12
13:15
))) не в тему, зато метко)))
119 m-serg74
 
14.07.12
13:15
(115) да уж...
120 SherifSP
 
14.07.12
13:34
Есть 2 условия одно отрабатывает в цикле, оно как раз и не работает как надо в условии есть продолжить;

       ТекущийДолг = тглРасчетыСПокупателями.ТекущийДолг(Заказ.Контрагент,Заказ.ТорговаяТочка, Заказ.ТорговыйПредставитель,ДатаОтгрузки);
                           Для Каждого Стр Из ТекущийДолг Цикл
                               Если (Стр.СуммаПросрочки > ДопустимаяСуммаПросрочки)Или(ТекущаяДата() > (Стр.ДатаОплаты+14*86400)) Тогда
                                   тглОбщегоНазначения.СообщитьПользователю("Есть просроченный долг: контрагент "+Заказ.Контрагент+", торговая точка "+Заказ.ТорговаяТочка+", торговый представитель "+Заказ.ТорговыйПредставитель, , ТаблицаСообщений, Контрагент, ТорговаяТочка, Заказ.Ссылка);
                                   тглОбщегоНазначения.СообщитьПользователю("Заказ "+Заказ+" заблокирован и не добавлен в маршрут! Сумма просрочки = "+ТекущийДолг.Итог("СуммаПросрочки"),СтатусСообщения.ОченьВажное, ТаблицаСообщений, Контрагент, ТорговаяТочка, Заказ.Ссылка);
                                   Продолжить;
                               КонецЕсли;
                           КонецЦикла;
                           
                           ТекущийДолг = тглРасчетыСПокупателями.ТекущийДолг(Заказ.Контрагент,Заказ.ТорговаяТочка, Заказ.ТорговыйПредставитель,ДатаОтгрузки);
                           Если (ТекущийДолг.Итог("СуммаПросрочки") > ДопустимаяСуммаПросрочки)И(ТекущийДолг.Итог("Сумма") > 0) Тогда
                               тглОбщегоНазначения.СообщитьПользователю("Есть просроченный долг: контрагент "+Заказ.Контрагент+", торговая точка "+Заказ.ТорговаяТочка+", торговый представитель "+Заказ.ТорговыйПредставитель, , ТаблицаСообщений, Контрагент, ТорговаяТочка, Заказ.Ссылка);
                               тглОбщегоНазначения.СообщитьПользователю("Заказ "+Заказ+" заблокирован и не добавлен в маршрут! Сумма просрочки = "+ТекущийДолг.Итог("СуммаПросрочки"),СтатусСообщения.ОченьВажное, ТаблицаСообщений, Контрагент, ТорговаяТочка, Заказ.Ссылка);
                               Продолжить;
                           КонецЕсли;
121 SherifSP
 
14.07.12
13:36
как сделать чтобы когда транзакция попадала на продолжить выходило не с под цикла, а с главного цикла
122 m-serg74
 
14.07.12
13:42
(120)(121) теперь тебе... да уж(((
123 izekia
 
14.07.12
14:38
предлагаю запретить отсрочку, и проблемы не будет