Имя: Пароль:
1C
1С v8
Помогите разобраться с отчетом
, ,
0 Paracoccidioidomicos
 
25.07.17
11:50
КОГДА -1 * ЕСТЬNULL(ВзаиморасчетыПоДоговору.СуммаВзаиморасчетовОстаток, 0) - СуммыЗаказов.СуммаДокумента < СуммыЗаказов.ДоговорКонтрагента.ДопустимаяСуммаЗадолженности * -1
                            ТОГДА "Отгрузка запрещена"

http://pastenow.ru/43be749d988c853a1cf2be8964c9228b

Почему отгрузка запрещена ?

http://pastenow.ru/0200e4885d7e903c3dce1f5ad4e4f38c
1 Ёпрст
 
25.07.17
11:53
(0) Потому, что по капусте ползал белый червячок
2 Paracoccidioidomicos
 
25.07.17
11:54
(1) к чему это ?
3 ColonelAp4u
 
25.07.17
11:58
(0) а зачем ты все это делаешь с минусовыми суммами?
4 Paracoccidioidomicos
 
25.07.17
11:59
(3) Я ничего не делаю, отчет уже есть, я хочу разобраться, почему "Отгрузка запрещена"
5 Ёпрст
 
25.07.17
12:01
(4) см.(1).
6 Paracoccidioidomicos
 
25.07.17
12:02
(5) см.(2).
7 Ёпрст
 
25.07.17
12:02
А так, либо -1 выкинуть из кода, либо знак поменять в неравенстве
8 Paracoccidioidomicos
 
25.07.17
12:05
(7) Ну уже много лет этим отчетом пользовались и всё норм, а сейчас -1 или знак неравенства стал причиной ?
9 Ёпрст
 
25.07.17
12:05
ну и в твоей картинке, нет колонки, в которой видно СуммаВзаиморасчетовОстаток чему равен
10 Ёпрст
 
25.07.17
12:07
И причем тут флаг "контролировать сумму не более" тоже.
11 ColonelAp4u
 
25.07.17
12:07
может я не правильно понимаю логику данного выражения допустим пример
-(10000(остаток взаиморасчета)) - 5000(сумма заказа)< -(10000(сумма в договоре)) получаем -10000 - 5000 = -15000 а это явно меньше -(10000(сумма в договоре)) Если у тебя ситуация именно такая то соответственно тебе выдаст запрет
12 Ёпрст
 
25.07.17
12:08
Тебе лень получить всё это, нам, тем более, поэтому на вопрос "почему" - ответ в (1).
13 Paracoccidioidomicos
 
25.07.17
12:09
(12) СуммаВзаиморасчетовОстаток это  КредиторскаяЗадолженность
14 Ёпрст
 
25.07.17
12:13
(13)

(13) что есть СуммаДокумента на твоей картинке ?
Как влияет флаг "контролировать сумму задолженности" на форме ?
15 Сияющий Асинхраль
 
25.07.17
12:15
(7) Не, со знаками все правильно, просто, если обе стороны неравенства не умножать на -1, то знак действительно должен бы быть другой, но при наличии -1, знак правильный. Другое дело зачем ненужную сущность ввели (-1), но это уже вопрос к тому, кто написал такое в запросе...
16 Paracoccidioidomicos
 
25.07.17
12:16
КОГДА -1 * -49 766,82 - 2 880,00 < 99 120,00 * -1                            ТОГДА "Отгрузка запрещена"
17 Paracoccidioidomicos
 
25.07.17
12:17
чёто я не понимаб
18 Ёпрст
 
25.07.17
12:18
(16)Еще раз.
Что есть  "контролировать сумму задолженности" на форме и на что она влияет в тексте запроса (или потом) ?
19 Ёпрст
 
25.07.17
12:18
(17) покажи ВЕСЬ текст запроса.
20 Сияющий Асинхраль
 
25.07.17
12:20
По сути код в (0) равнозначен коду:

КОГДА ЕСТЬNULL(ВзаиморасчетыПоДоговору.СуммаВзаиморасчетовОстаток, 0) + СуммыЗаказов.СуммаДокумента > СуммыЗаказов.ДоговорКонтрагента.ДопустимаяСуммаЗадолженности

                            ТОГДА "Отгрузка запрещена"

Т.е. если сумма текущего остатка взаиморасчетов плюс сумма текущего документа превышает допустимую сумму задолженности, то отгрузка запрещена, что вполне логично...
21 Paracoccidioidomicos
 
25.07.17
12:20
ВЫБРАТЬ
    ЗаказПокупателя.ДоговорКонтрагента,
    СУММА(ЗаказПокупателя.СуммаДокумента) КАК СуммаДокумента
ПОМЕСТИТЬ СуммыЗаказов
ИЗ
    Документ.ЗаказПокупателя КАК ЗаказПокупателя
ГДЕ
    ЗаказПокупателя.ДатаОтгрузки МЕЖДУ НАЧАЛОПЕРИОДА(&Период, ДЕНЬ) И КОНЕЦПЕРИОДА(&Период, ДЕНЬ)
    И ЗаказПокупателя.Проведен

СГРУППИРОВАТЬ ПО
    ЗаказПокупателя.ДоговорКонтрагента
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СуммыЗаказов.ДоговорКонтрагента,
    ВзаиморасчетыПоДоговору.СуммаВзаиморасчетовОстаток * -1 КАК КредиторскаяЗадолженность,
    ВЫБОР
        КОГДА НЕ СуммыЗаказов.ДоговорКонтрагента.КонтролироватьСуммуЗадолженности
            ТОГДА "Контроль задолженности не ведется"
        ИНАЧЕ ВЫБОР
                КОГДА НЕ ВложенныйЗапрос.НачалоПериода ЕСТЬ NULL
                    ТОГДА "Контроль временно не ведется"
                ИНАЧЕ ВЫБОР
                        КОГДА -1 * ЕСТЬNULL(ВзаиморасчетыПоДоговору.СуммаВзаиморасчетовОстаток, 0) - СуммыЗаказов.СуммаДокумента < СуммыЗаказов.ДоговорКонтрагента.ДопустимаяСуммаЗадолженности * -1
                            ТОГДА "Отгрузка запрещена"
                        ИНАЧЕ "Отгрузка разрешена"
                    КОНЕЦ
            КОНЕЦ
    КОНЕЦ КАК Результат
ПОМЕСТИТЬ КонтрольСуммы
ИЗ
    СуммыЗаказов КАК СуммыЗаказов
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(КОНЕЦПЕРИОДА(&Период, ДЕНЬ), ) КАК ВзаиморасчетыПоДоговору
        ПО СуммыЗаказов.ДоговорКонтрагента = ВзаиморасчетыПоДоговору.ДоговорКонтрагента
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            р_КонтрольДоговоровСрезПоследних.Период КАК НачалоПериода,
            р_КонтрольДоговоров.Период КАК КонецПериода,
            р_КонтрольДоговоровСрезПоследних.ДоговорКонтрагента КАК ДоговорКонтрагента
        ИЗ
            РегистрСведений.р_КонтрольДоговоров КАК р_КонтрольДоговоровСрезПоследних
                ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.р_КонтрольДоговоров КАК р_КонтрольДоговоров
                ПО р_КонтрольДоговоровСрезПоследних.Регистратор = р_КонтрольДоговоров.Регистратор
                    И р_КонтрольДоговоровСрезПоследних.ДоговорКонтрагента = р_КонтрольДоговоров.ДоговорКонтрагента
                    И р_КонтрольДоговоровСрезПоследних.КонтролироватьСумму <> р_КонтрольДоговоров.КонтролироватьСумму
        ГДЕ
            р_КонтрольДоговоровСрезПоследних.Период <= КОНЕЦПЕРИОДА(&Период, ДЕНЬ)
            И р_КонтрольДоговоров.Период >= НАЧАЛОПЕРИОДА(&Период, ДЕНЬ)) КАК ВложенныйЗапрос
        ПО СуммыЗаказов.ДоговорКонтрагента = ВложенныйЗапрос.ДоговорКонтрагента
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЗаказПокупателяТовары.Ссылка.ДоговорКонтрагента.Владелец КАК Контрагент,
    ЗаказПокупателяТовары.Ссылка.ДоговорКонтрагента,
    ЗаказПокупателяТовары.Сумма КАК СуммаПоделено,
    ЗаказПокупателяТовары.Ссылка.ДоговорКонтрагента.ДопустимаяСуммаЗадолженности КАК ДопустимаяСуммаЗадолженности,
    ЗаказПокупателяТовары.Ссылка КАК ЗаказПокупателя,
    ЗаказПокупателяТовары.Номенклатура,
    ЗаказПокупателяТовары.Цена КАК ЦенаЗаказано,
    ВЫРАЗИТЬ(ПродажиОбороты.СтоимостьОборот / ПродажиОбороты.КоличествоОборот КАК ЧИСЛО(17, 2)) КАК ЦенаОтгружено,
    ПродажиОбороты.СтоимостьОборот КАК СуммаОтгружено,
    ПродажиОбороты.ДокументПродажи КАК РеализацияТоваровИУслуг,
    ПродажиОбороты.КоличествоОборот КАК КоличествоОтгружено,
    ЗаказПокупателяТовары.Количество КАК КоличествПоделено,
    КонтрольСуммы.КредиторскаяЗадолженность КАК КредиторскаяЗадолженность,
    ВЫБОР
        КОГДА НЕ РеализацияТоваровУслуг.Ссылка ЕСТЬ NULL
            ТОГДА "Отгружено"
        ИНАЧЕ КонтрольСуммы.Результат
    КОНЕЦ КАК Результат,
    ЗаказПокупателяТовары.Ссылка.Подразделение КАК Департамент,
    ЗаказПокупателяТовары.ДопКоличество КАК КоличествоЗаказано,
    ВЫРАЗИТЬ(ЗаказПокупателяТовары.ДопКоличество * ЗаказПокупателяТовары.Цена КАК ЧИСЛО(17, 2)) КАК СуммаЗаказано,
    ЗаказПокупателяТовары.Ссылка.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности КАК Отсрочка
ИЗ
    Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(НАЧАЛОПЕРИОДА(&Период, ДЕНЬ), КОНЕЦПЕРИОДА(&Период, ДЕНЬ), , ) КАК ПродажиОбороты
        ПО ЗаказПокупателяТовары.Номенклатура = ПродажиОбороты.Номенклатура
            И ЗаказПокупателяТовары.Ссылка = ПродажиОбороты.ЗаказПокупателя
        ЛЕВОЕ СОЕДИНЕНИЕ КонтрольСуммы КАК КонтрольСуммы
        ПО ЗаказПокупателяТовары.Ссылка.ДоговорКонтрагента = КонтрольСуммы.ДоговорКонтрагента
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        ПО ЗаказПокупателяТовары.Ссылка = РеализацияТоваровУслуг.Сделка
            И (РеализацияТоваровУслуг.Проведен)
ГДЕ
    ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки МЕЖДУ НАЧАЛОПЕРИОДА(&Период, ДЕНЬ) И КОНЕЦПЕРИОДА(&Период, ДЕНЬ)
    И НЕ ЗаказПокупателяТовары.Ссылка.ПометкаУдаления
22 Paracoccidioidomicos
 
25.07.17
12:22
(20) Ну дак не превышает же
23 Сияющий Асинхраль
 
25.07.17
12:24
(22) Вспоминаем школьную арифметику: при умножении обеих сторон неравенства на (-1) знак неравенства должен поменяться, что, собственно, и имеет место быть в (0)
24 Paracoccidioidomicos
 
25.07.17
12:27
(23) у других почему по-другому отрабатывает
25 Ёпрст
 
25.07.17
12:28
(21) ВзаиморасчетыПоДоговору.СуммаВзаиморасчетовОстаток * -1 КАК КредиторскаяЗадолженность

вот и ответ
26 Ёпрст
 
25.07.17
12:28
КОГДА -1 * -49 766,82 - 2 880,00 < -99 120,00 * -1                            ТОГДА "Отгрузка запрещена"
27 aka AMIGO
 
25.07.17
12:33
ОФФ Почему, интересно, не такая запись?
КОГДА (-1 * ЕСТЬNULL(ВзаиморасчетыПоДоговору.СуммаВзаиморасчетовОстаток, 0) - СуммыЗаказов.СуммаДокумента) < (СуммыЗаказов.ДоговорКонтрагента.ДопустимаяСуммаЗадолженности * (-1))

Особенно это бросается в глаза в операции * -1
два арифметических действия подряд..
28 Ёпрст
 
25.07.17
12:37
А всё..

Вот где главная хрень :

ЛЕВОЕ СОЕДИНЕНИЕ КонтрольСуммы КАК КонтрольСуммы
        ПО ЗаказПокупателяТовары.Ссылка.ДоговорКонтрагента = КонтрольСуммы.ДоговорКонтрагента
29 Ёпрст
 
25.07.17
12:37
Дальше даже лень объяснять.
30 Ёпрст
 
25.07.17
12:38
Чорт получил какие то лимиты кредита и соединяет только по договору, без учета всего остального. Очень весело. Скрестил ужа и ежа.
31 dezss
 
25.07.17
12:38
(28) да, тоже это заметил...
ТС, смотри сколько строк в этом заказе
32 Paracoccidioidomicos
 
25.07.17
12:39
1
33 dezss
 
25.07.17
12:39
(30) вот если б вывел суммы из первого запроса, то сразу бы все понял...
34 Paracoccidioidomicos
 
25.07.17
12:40
я вообще отчет не делал, чё вы
36 dezss
 
25.07.17
12:41
(35) блин...зачем ты это написал...теперь и я пытаюсь (
37 Paracoccidioidomicos
 
25.07.17
12:47
А как посмотреть кол-во дней задолженности ?
38 echo
 
25.07.17
12:55
(37) По ФИФО сваргань, над регистрами, и будет тебе счастье.
http://catalog.mista.ru/public/99207/ Это не совсем, конечно, по теме, но тоже не помешает.
39 echo
 
25.07.17
12:58
У меня модуль, манагер вбивает отгрузку, и вид оплаты: банковские/календарные дни. От этого и пляшу в просрочке. Что с покупателями, что с поставщиками.
40 echo
 
25.07.17
12:58
Это и в типовой есть, только через китай усложненное. Переписал, давно уже, по человечески.
41 echo
 
25.07.17
13:09
Ибо нефиг 2+2 усложнять. Но у 1С другие приоритеты.
42 echo
 
25.07.17
13:19
Нет, вы меня поймите правильно. У меня был Гуру, года так с 2003 примерно. Что есть бухгалтерия? Это сдача отчетности.
В бумажном, электронном виде - не важно! Суть в чем? Мякотка, если хотите.
Вот.
А весь этот ваш документооборот - для начальники.
И обмана то нет - всё по чесноку, просто дело то не в этом!
43 echo
 
25.07.17
13:20
Так что расслабьтесь и кушайте нектар, на заработанные деньги с 1с.
44 Paracoccidioidomicos
 
25.07.17
13:24
Ребят, подскажите, отчет Дебиторская задолженность по срокам долга
Интервал - Изменить - Граница интервала 90 - корректно работает ? Это 90 и более дней задолженности показывает ?
45 echo
 
25.07.17
13:26
(44) В типовом, ребят, корректно, но! Если ведете документооборот по физиологии 1с. В противном случае - хз.
46 echo
 
25.07.17
13:27
В договоре галочки там поставь, типовой ты мой.
47 Paracoccidioidomicos
 
25.07.17
13:28
(46) Какие ?
48 Paracoccidioidomicos
 
25.07.17
13:28
(46) контролировать число дней? стоит
49 h-sp
 
25.07.17
13:36
(48) вид договора проверь, может это не покупатель.
50 Paracoccidioidomicos
 
25.07.17
13:38
(49) с покупателем
51 Ёпрст
 
25.07.17
13:45
Аутор, если хочешь поправить своё изделие, то помести запрос к табличной части заказа и левое соединение к Продажи.Обороты
в отдельный запрос,в котором свернёшь результат по Договору и ссылке на заказ.
Затем ужо, делай левое соедиение к этому своих реализаций и лимиткредитов.
52 Paracoccidioidomicos
 
25.07.17
13:46
(51) Мне нельзя
53 Ёпрст
 
25.07.17
13:50
(51) ?
А кто запрещает ?
54 Paracoccidioidomicos
 
25.07.17
13:53
(53) Я тут учусь, делаю то, что скажут, а не то, что посчитаю правильным или что посоветуют на форуме, я просто передам )
55 h-sp
 
25.07.17
14:03
(54) ты бы уже давно открыл этот договор в регистре Взаиморасчеты и вручную на калькуляторе просчитал остаток. Может там действительно превышает.
56 echo
 
25.07.17
14:04
(54) Пц. Уборщицей работаешь там? " делаю то, что скажут, а не то, что посчитаю правильным"
Делай то, что считаешь правильным! Или нах с пляжа!
57 echo
 
25.07.17
14:04
(38) Читай еще раз. Ничего не понял???
58 Paracoccidioidomicos
 
25.07.17
14:05
(55) Я уже так сделал)) Не превышает, но вот по времени походу да
60 Paracoccidioidomicos
 
25.07.17
14:08
(59) ?
61 Paracoccidioidomicos
 
25.07.17
14:09
(57) не понимаю, для чего ?
63 echo
 
25.07.17
14:10
Функция ПолучитьТаблицуДвижений(Контрагент, СуммаВзаиморасчетов)
    ТаблицаДвижений = Новый ТаблицаЗначений;
    ТаблицаДвижений.Колонки.Добавить("Дата", , "Дата");
    ТаблицаДвижений.Колонки.Добавить("Регистратор", , "Регистратор");
    ТаблицаДвижений.Колонки.Добавить("ДатаОплаты", , "ДатаОплаты");
    ТаблицаДвижений.Колонки.Добавить("Сумма", , "Сумма");
    ТаблицаДвижений.Колонки.Добавить("Долг", , "Долг");
    ТаблицаДвижений.Очистить();
    
    ЗапросДокументы = Новый Запрос;
    ЗапросДокументы.Текст = "ВЫБРАТЬ
    |    ВзаиморасчетыСКонтрагентами.Период КАК Период,
    |    ВзаиморасчетыСКонтрагентами.ВидДвижения,
    |    ВзаиморасчетыСКонтрагентами.Контрагент КАК Контрагент,
    |    ВзаиморасчетыСКонтрагентами.Регистратор КАК Ссылка,
    |    ВЫБОР
    |        КОГДА ВзаиморасчетыСКонтрагентами.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
    |            ТОГДА ВзаиморасчетыСКонтрагентами.Регистратор.ДатаОплаты
    |        ИНАЧЕ ВзаиморасчетыСКонтрагентами.Регистратор.Дата
    |    КОНЕЦ КАК ДатаОплаты,
    |    ВзаиморасчетыСКонтрагентами.СуммаУпр
    |ИЗ
    |    РегистрНакопления.ВзаиморасчетыСКонтрагентами КАК ВзаиморасчетыСКонтрагентами
    |ГДЕ
    |    ВзаиморасчетыСКонтрагентами.Период <= &ДатаОтчета
    |    И ВзаиморасчетыСКонтрагентами.Контрагент = &Контрагент
    |    И ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СПокупателем)
    |    И ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента.ОсновнаяСтатьяДвиженияДенежныхСредств <> &СтатьяДС
    |    И ВзаиморасчетыСКонтрагентами.ВидДвижения = &ВидДвижения
    |    И ВзаиморасчетыСКонтрагентами.Регистратор.Подразделение <> &ПодразделениеГазпром
    //|    И ВзаиморасчетыСКонтрагентами.Регистратор.УсловиеОплаты <> &НеУслОплаты
    //|    И ВзаиморасчетыСКонтрагентами.Регистратор.ОтгрузкаПоТК = ЛОЖЬ
    |
    |УПОРЯДОЧИТЬ ПО
    |    Период УБЫВ";
    
    ЗапросДокументы.УстановитьПараметр("СтатьяДС", СтатьяДС);
    ЗапросДокументы.УстановитьПараметр("Контрагент", Контрагент);
    ЗапросДокументы.УстановитьПараметр("ВидДвижения", ВидДвиженияНакопления.Приход);
    ЗапросДокументы.УстановитьПараметр("ДатаОтчета", КонецДня(ДатаОтчета));
    ЗапросДокументы.УстановитьПараметр("ПодразделениеГазпром", ПодразделениеГазпром);
    ЗапросДокументы.УстановитьПараметр("НеУслОплаты", Перечисления.УсловияОплаты.Предоплата);
    
    ВыборкаДокументы = ЗапросДокументы.Выполнить().Выбрать();
    
    ТекущийДолг = СуммаВзаиморасчетов;
    Пока ВыборкаДокументы.Следующий() Цикл
        Если ТекущийДолг > 0 Тогда
            Если ВыборкаДокументы.СуммаУпр < 0 Тогда
                Продолжить;
            КонецЕсли;
            
            ТекСтрока = ТаблицаДвижений.Добавить();
            ТекСтрока.Дата = ВыборкаДокументы.Период;
            ТекСтрока.Регистратор = ВыборкаДокументы.Ссылка;
            ТекСтрока.ДатаОплаты = ВыборкаДокументы.ДатаОплаты;
            ТекСтрока.Сумма = ВыборкаДокументы.СуммаУпр;
            ТекСтрока.Долг = Мин(ВыборкаДокументы.СуммаУпр, ТекущийДолг);
            ТекущийДолг = ТекущийДолг - ВыборкаДокументы.СуммаУпр;
        Иначе
            Прервать;
        КонецЕсли;
    КонецЦикла;
    
    Возврат ТаблицаДвижений;
    
КонецФункции
64 echo
 
25.07.17
14:11
Прочуйствуй логику. Это тебе поможет на будующее.
65 h-sp
 
25.07.17
14:54
(58) сумму документа еще не забудь приплюсовать.
66 Paracoccidioidomicos
 
25.07.17
14:55
(65)Да всё норм по долгам у него
67 h-sp
 
25.07.17
14:58
(66) если было бы норм, то программа так бы не говорила.
68 Paracoccidioidomicos
 
25.07.17
15:00
(67) Она и не ссылается на конкретно цены, там 2 условия
1)сумма превышает 90к
2)кол-во дней задолженности(любая сумма) превышает 90 дней