Имя: Пароль:
1C
1C 7.7
v7: Подскажите по 1С-77 (Бухгалтерия 4.5 v.01)
0 DimAAA
 
29.03.21
12:02
Всем привет!
Подскажите знающие, пожалуйста:
При открытии существующего документа Счет на оплату (из типовой конфигурации, ничего не менялось) - после вывода на экран табличной части с товарами (услугами) - ошибочно формируется Итоговая строка (не формируется строка с примененной ставкой НДС). Причем, при вводе новой строки - функция РассчитатьНалоги вызывается, соответственно, логика формирования вывода итоговой ставки НДС (через переменную НДСпоДокументу) отрабатывает. А при выводе формировании существующей строки значение НДСпоДокументу не меняется - даже вызовов не нашел.
Как этот механизм работает?
И еще вопрос- в каком событии я могу отследить построчное формирование табличной части СУЩЕСТВУЮЩЕГО ДОКУМЕНТА перед его выводом на экран?
Заранее спасибо!
1 Злопчинский
 
29.03.21
13:01
я очень сомневаюсь что косяк. конфа нстолько "старая". что такие явные косяки уже вылизаны. могу конеячно ошибаться
2 Злопчинский
 
29.03.21
13:03
(0) ТЧ не формируется. она уже есть как класс/данность.
при отображении и прорисовке формы в предопределенных процедурах раситываются необходимые "производные" значения для показа на форме. на форме также может лежать реквизит "текст", в формуле которго может сотять вызов локальной/глобальной функции, (в которую может передаваться контекст формы).
3 Злопчинский
 
29.03.21
13:06
"ошибочно формируется Итоговая строка (не формируется строка с примененной ставкой НДС)."
такого - не помню.
в общем случае в счете могут быть позиции с разными ставками НДС и насколько я помню на форме "примененные" ставки НДС как итоги по документу - не отображаются (могу конечно ошибаться, может что-то поменяли). А вот итоговая строка с итоговой суммой НДС суммарно по примененным ставкам НДС в документие - да. мы же понимаем - что
- строка с примненной ставкой НДС и
- сумма НДС по этим ставкам
- это немножко разные вещи, правда?
4 HawkEye
 
29.03.21
13:07
(0) "из типовой конфигурации, ничего не менялось" - вранье )))
5 Злопчинский
 
29.03.21
13:08
(4) вот и я о том же...
6 Злопчинский
 
29.03.21
13:09
(0) вывода итоговой ставки НДС
- насколько я представляю - *итоговой ставки НДС* - нет. ставки НДС друг с другом не складываются, не вычитаются, не умножаются и не делятся.
7 HawkEye
 
29.03.21
13:10
(0) ты внятно объясни проблему....
у тебя в документе табличная часть - пустая, потом ты этот документ открываешь и в нем оказывается новая строка?
8 Злопчинский
 
29.03.21
13:19
(0) " А при выводе формировании существующей строки значение НДСпоДокументу не меняется - даже вызовов не нашел."
а с чего оно должно меняться? оно есть, посчитано. откуда оно меняеться может? все что обычно делается при открытии документа - собирается ИТОГ по документу (если он ранее не собран и не зафиксирован) посредством типа
Итог("СуммаНДС") - где "СуммаНДС" - реквизит ТЧ документа. Всё.
9 Злопчинский
 
29.03.21
13:20
выражение Итог("СуммаНДС") - может стоять в формуле текста, выведенного на форму.
10 DimAAA
 
29.03.21
15:16
Спасибо всем за внимание к моей проблеме!

1. Насчет доработки типовой - конечно, это мое предположение, основанное на уверении бухгалтеров. Но все может быть...

2. речь идет именно про отображение ставки НДС (т.е. значение %) - саму сумму НДС в рублях считает верно.
В форме уже сохраненного счета после табличного документа размещена строка Итого, например:
Всего: 1,200-00, в т.ч. НДС (по ставке 0 %): 200-00, без налогов: 1,000-00
Начал разбираться, почему "НДС (по ставке 0 %)

в Функции ИтоговаяСтрока():
        ...
        Если НДСпоДокументу=-1 Тогда
        стрСтавкаНДС="(по разным ставкам)";
    ИначеЕсли НДСпоДокументу=0 Тогда
        стрСтавкаНДС="";
    Иначе
        стрСтавкаНДС="(по ставке " + СокрЛ(формат(НДСпоДокументу,"Ч2")) + " %)";
    КонецЕсли;
        ...

Отладчиком при открытии существующего документа на строке "Если НДСпоДокументу=-1 Тогда":  НДСпоДокументу="",
соответственно СокрЛ(формат(НДСпоДокументу,"Ч2")) формирует строку "0 %"

НДСпоДокументу присваивается в двух функциях:


Процедура Пересчет(ИмяРеквизита=""):
        ...
        Если КоличествоСтрок()=1 Тогда
        НДСпоДокументу=0;
    КонецЕсли;
        ...

и
Процедура РассчитатьНалоги():
        ...
        Если НДСпоДокументу>=0 Тогда //если ранее не устанавливался значение -1 что означает "по разным ставкам НДС"
        если НДСпоДокументу=0 Тогда
            НДСпоДокументу=СтавкаНДС;
        ИначеЕсли НДСпоДокументу<>СтавкаНДС Тогда
            НДСпоДокументу=-1;
        КонецЕсли;;
    КонецЕсли;
        ...
точки останова ни в первой функции, ни во второй при открытии УЖЕ СУЩЕСТВУЮЩЕГО документа не срабатывают.
Внимание, вопросы:
1. Где НДСпоДокументу выставляется?
2. Если это чья-то поделка, как в штатной реализации определяется величина налога?
11 DimAAA
 
29.03.21
15:23
для ясности: величина ставки налога
12 HawkEye
 
29.03.21
15:25
(10) полностью функцию ИтоговаяСтрока() - нам надо угадать, да?
13 Злопчинский
 
29.03.21
15:25
(10) более чем уверен что это нетиповой код.
14 HawkEye
 
29.03.21
15:26
(13) еще и написанный автором )))))
15 Злопчинский
 
29.03.21
15:30
(14) под веществами?
16 Злопчинский
 
29.03.21
15:30
(14) Всего: 1,200-00, в т.ч. НДС (по ставке 0 %): 200-00, без налогов: 1,000-00
17 DimAAA
 
29.03.21
15:39
Автором чего???
зуб даю - не я писал.

//*****************************************************************************
// ИтоговаяСтрока()
//
// Вызывается из формул элементов диалога:
//  Текст ИтоговаяСтрока.
//
// Описание:
//  Формирует строку, содержащую итоговые суммы колонок табличной части.
//
// используется значение НДСпоДокументу:
// если =-1, то добавляется строка "по разным ставкам"
//если =0, то не добавляется строка
//если >0 то добавляется "по ставке " + НДСпоДокументу + "%"

Функция ИтоговаяСтрока()
    
    перем стрСтавкаНДС;
    
    
    Если НДСпоДокументу=-1 Тогда
        стрСтавкаНДС="(по разным ставкам)";
    ИначеЕсли НДСпоДокументу=0 Тогда
        стрСтавкаНДС="";
    Иначе
        стрСтавкаНДС="(по ставке " + СокрЛ(формат(НДСпоДокументу,"Ч2")) + " %)";
    КонецЕсли;
    
    ИтСтр = "Всего: " + СокрЛ(Формат(Итог("Всего"),"Ч20.2-,")) + ", "+
            "в т.ч. НДС " + стрСтавкаНДС +": " + СокрЛ(Формат(Итог("НДС"),"Ч20.2-,"));
    Если Итог("НП") > 0 Тогда
        ИтСтр = ИтСтр + ", НП: " + СокрЛ(Формат(Итог("НП"),"Ч20.2-,"));
    КонецЕсли;
    
    ИтСтр = ИтСтр + ", без налогов: " + СокрЛ(Формат((Итог("Всего") - Итог("НДС") - Итог("НП")),"Ч20.2-,"));

    Возврат ИтСтр;
    
КонецФункции // ИтоговаяСтрока()
18 DimAAA
 
29.03.21
15:40
(16)Что Вы имели ввиду?
19 Злопчинский
 
29.03.21
15:41
(18) "что имею, то и введу..."
20 Злопчинский
 
29.03.21
15:42
НДС по ставке 0% = 200 руб... м.б. я, конечно, чего-то и не въезжаю...
21 DimAAA
 
29.03.21
15:43
(20) да я сам не въезжаю - смотрю на форму и думаю, как исправить.
22 DimAAA
 
29.03.21
15:44
Как в типовой этот механизм реализован?
23 Злопчинский
 
29.03.21
15:45
(22) возьми типовую и посмотри. Заратустра не запрещает.
24 DimAAA
 
29.03.21
15:50
нет под рукой типовой - была бы, не спрашивал.
25 Злопчинский
 
29.03.21
16:00
(24) а кому сейчас легко?
26 HawkEye
 
29.03.21
16:03
(17) идем дальше... НДСпоДокументу - это реквизит документа?
27 HK_Mers
 
29.03.21
16:04
(22)
Функция ИтоговаяСтрока()
    
    ИтСтр = "Всего: " + СокрЛ(Формат(Итог("Всего"),"Ч20.2-,")) + ", "+
            "в т.ч. НДС: " + СокрЛ(Формат(Итог("НДС"),"Ч20.2-,"));
    Если Итог("НП") > 0 Тогда
        ИтСтр = ИтСтр + ", НП: " + СокрЛ(Формат(Итог("НП"),"Ч20.2-,"));
    КонецЕсли;
    ИтСтр = ИтСтр + ", без налогов: " + СокрЛ(Формат((Итог("Всего") - Итог("НДС") - Итог("НП")),"Ч20.2-,"));

    Возврат ИтСтр;
    
КонецФункции // ИтоговаяСтрока()
28 DimAAA
 
29.03.21
16:06
to HK_Mers (22): спасибо, значит это была чья-то незаконченная поделка

(17) переменная уровня формы
29 DimAAA
 
29.03.21
16:07
промахиваюсь сегодня - понедельник, наверное

to HK_Mers (27): спасибо, значит это была чья-то незаконченная поделка

(26) переменная уровня формы
30 HawkEye
 
29.03.21
16:07
(28) тогда вариантов то особо и нет, в ПриОткрытии() и ее производных должна определяться
31 DimAAA
 
29.03.21
16:22
Всем спасибо, решил
32 Злопчинский
 
29.03.21
17:01
(31) ты - настоящий решала!
33 DimAAA
 
29.03.21
17:02
в 1С - не настоящий, как вы тут живете??? я в ахуе
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший