18.06.2018 (М) ПОДГОТОВКА К ХРОНОЛОГИЧЕСКОЙ ЗАМЕНЕ % НДС — различия между версиями
Материал из Фабиус wiki
Maria (обсуждение | вклад) (Новая страница: «<font size=4> В OnAfterUpdateCondig() уже предусмотрено автозаполнение хронологии NDS_STND/PRVLG при очередно…») |
Maria (обсуждение | вклад) м |
||
Строка 5: | Строка 5: | ||
− | '''Если вызов из R165, R186, R220, … - где определена CurDate:''' | + | <u>'''Если вызов из R165, R186, R220, … - где определена CurDate:'''</u><br/> |
− | SeekRef(спрк, код, | + | : SeekRef(спрк, код, 'PRODNDS',…) --> ProdNDS(код [,спрк]), где спрк = R08, R11, R197; умолч.=R11 |
− | + | : ProdNDS(код [, спрк]) без изменений | |
− | ProdNDS(код, спрк) без изменений | + | : ProdNDS(код, [спрк], умолч) --> ProdNDS(код, [спрк], GetPrm('NDS_...', , , dtdt:=CurDate)) |
− | ProdNDS(код, [спрк], умолч) | + | : dtdt, как обычно, необязательно определять |
− | + | ||
− | Если вызов из запросов, п/ф, … - где НЕ определена CurDate: | + | |
− | ProdNDS(код, [спрк], [ | + | <u>'''Если вызов из запросов, п/ф, … - где НЕ определена CurDate:'''</u><br/> |
− | a_s() = alltrim(str()) с автоматическим отсечением дробной части при её равенстве 0 | + | : ProdNDS(код, [спрк], , некаяДата) |
− | Получение из ставки НДС цифирьки-субсчёта -1 или -2: | + | : ProdNDS(код, [спрк], GetPrm('NDS_...', , , dtdt:=некаяДата), некаяДата) - если передаётся пар-р умолчания НДС |
− | min(2, round(n_d_s/10,0)) | + | |
− | iif(n_d_s=GetPrm( | + | ''a_s() = alltrim(str()) с автоматическим отсечением дробной части при её равенстве 0'' |
− | где n_d_s может быть как ProdNDS(код), | + | |
− | так и просто R11->PRODNDS: | + | |
− | SQL-запросы: | + | <u>'''Получение из ставки НДС цифирьки-субсчёта -1 или -2:'''</u><br/> |
− | Было | + | : вариант 1 min(2, round(n_d_s/10,0)) |
− | Меняем на: | + | : вариант 2 max(1, round(n_d_s/10,0)) |
− | Новые переменные Local ndsS:=GetPrm('NDS_STND',,,dtdt:=…), ndsP:=GetPrm('NDS_PRVLG',,,dtdt:=…) | + | : вариант 3 iif(n_d_s=GetPrm('NDS_Prvlg', , , dtdt:=CurDateилиИнаяДата),'1','2') |
− | + | где n_d_s может быть как ProdNDS(код),<br/> | |
− | Расчёт на то, что 10 % - неизменная ставка. | + | так и просто R11->PRODNDS: в R11 может стоять и 18, и 20 – всё равно получится -2. |
− | НЕ забываем: если в запросе просто обращение “…R11.PRODNDS”, после замены пишем эйлиас: | + | |
− | + | ||
− | + | <u>'''SQL-запросы:'''</u><br/> | |
− | «Реквизит» R11[R08].PRODNDS | + | : Было "…, SUM(round(RTH_SUM*(100+R11[R08].PRODNDS)/100,2)) …" |
− | 1 | + | : Меняем на: |
− | Если там же запрос периода, сразу присвоить значения этим ndsS/P. | + | : Новые переменные |
− | Иначе в «Условии отбора» R238, где уже известен период ArrMY, присвоить | + | :: Local ndsS:=GetPrm('NDS_STND',,,dtdt:=…), ndsP:=GetPrm('NDS_PRVLG',,,dtdt:=…) |
− | ndsS/P:=GetPrm('NDS_...', , , dtdt:= SToD(atr(ArrMY[1,1]))) | + | :: "…, SUM(round(RTH_SUM*(100+iif(R11[R08].PRODNDS="+a_s(ndsP)+","+a_s(ndsS)+","+a_s(ndsS)+"))/100,2)) …" |
− | «Выражение преобразования» {|| “iif(R11.PRODNDS=”+a_s(ndsP)+”,”+a_s(ndsP)+”,”+a_s(ndsS)+”)” } | + | : Расчёт на то, что 10 % - неизменная ставка. |
− | + | : НЕ забываем: если в запросе просто обращение “…R11.PRODNDS”, после замены пишем эйлиас: | |
− | 2 | + | : "…iif(R11.PRODNDS="+a_s(ndsP)+","+a_s(ndsS)+","+a_s(ndsS)+") '''as PRODNDS'''" |
− | «Выражение отображения» ProdNDS(val(Value), [‘R08’], , MYToDate(wCurMonth,wCurYear)) | + | |
+ | |||
+ | <u>'''Колонки Сводных запросов (R239):'''</u><br/> | ||
+ | : «Реквизит» R11[R08].PRODNDS | ||
+ | : вариант 1 | ||
+ | :: На уровне вызова запроса (R174 или в R266) определить как Global ndsS, ndsP. | ||
+ | :: Если там же запрос периода, сразу присвоить значения этим ndsS/P. | ||
+ | :: Иначе в «Условии отбора» R238, где уже известен период ArrMY, присвоить | ||
+ | :: ndsS/P:=GetPrm('NDS_...', , , dtdt:= SToD(atr(ArrMY[1,1]))) | ||
+ | :: «Выражение преобразования» {|| “iif(R11.PRODNDS=”+a_s(ndsP)+”,”+a_s(ndsP)+”,”+a_s(ndsS)+”)” } | ||
+ | : вариант 2 | ||
+ | :: «Выражение преобразования» R11[R08].KOD | ||
+ | :: «Выражение отображения» ProdNDS(val(Value), [‘R08’], , MYToDate(wCurMonth,wCurYear)) |
Версия 09:16, 20 июня 2018
В OnAfterUpdateCondig() уже предусмотрено автозаполнение хронологии NDS_STND/PRVLG при очередном обновлении.
При правильно заполненной хронологии параметров в R11 (R08,R197) может стоять и 18%, и 20%.
Доработанная ф-я ProdNDS() вернёт 20%, если 2019 год и 18%, если 2018.
Если вызов из R165, R186, R220, … - где определена CurDate:
- SeekRef(спрк, код, 'PRODNDS',…) --> ProdNDS(код [,спрк]), где спрк = R08, R11, R197; умолч.=R11
- ProdNDS(код [, спрк]) без изменений
- ProdNDS(код, [спрк], умолч) --> ProdNDS(код, [спрк], GetPrm('NDS_...', , , dtdt:=CurDate))
- dtdt, как обычно, необязательно определять
Если вызов из запросов, п/ф, … - где НЕ определена CurDate:
- ProdNDS(код, [спрк], , некаяДата)
- ProdNDS(код, [спрк], GetPrm('NDS_...', , , dtdt:=некаяДата), некаяДата) - если передаётся пар-р умолчания НДС
a_s() = alltrim(str()) с автоматическим отсечением дробной части при её равенстве 0
Получение из ставки НДС цифирьки-субсчёта -1 или -2:
- вариант 1 min(2, round(n_d_s/10,0))
- вариант 2 max(1, round(n_d_s/10,0))
- вариант 3 iif(n_d_s=GetPrm('NDS_Prvlg', , , dtdt:=CurDateилиИнаяДата),'1','2')
где n_d_s может быть как ProdNDS(код),
так и просто R11->PRODNDS: в R11 может стоять и 18, и 20 – всё равно получится -2.
SQL-запросы:
- Было "…, SUM(round(RTH_SUM*(100+R11[R08].PRODNDS)/100,2)) …"
- Меняем на:
- Новые переменные
- Local ndsS:=GetPrm('NDS_STND',,,dtdt:=…), ndsP:=GetPrm('NDS_PRVLG',,,dtdt:=…)
- "…, SUM(round(RTH_SUM*(100+iif(R11[R08].PRODNDS="+a_s(ndsP)+","+a_s(ndsS)+","+a_s(ndsS)+"))/100,2)) …"
- Расчёт на то, что 10 % - неизменная ставка.
- НЕ забываем: если в запросе просто обращение “…R11.PRODNDS”, после замены пишем эйлиас:
- "…iif(R11.PRODNDS="+a_s(ndsP)+","+a_s(ndsS)+","+a_s(ndsS)+") as PRODNDS"
Колонки Сводных запросов (R239):
- «Реквизит» R11[R08].PRODNDS
- вариант 1
- На уровне вызова запроса (R174 или в R266) определить как Global ndsS, ndsP.
- Если там же запрос периода, сразу присвоить значения этим ndsS/P.
- Иначе в «Условии отбора» R238, где уже известен период ArrMY, присвоить
- ndsS/P:=GetPrm('NDS_...', , , dtdt:= SToD(atr(ArrMY[1,1])))
- «Выражение преобразования» {|| “iif(R11.PRODNDS=”+a_s(ndsP)+”,”+a_s(ndsP)+”,”+a_s(ndsS)+”)” }
- вариант 2
- «Выражение преобразования» R11[R08].KOD
- «Выражение отображения» ProdNDS(val(Value), [‘R08’], , MYToDate(wCurMonth,wCurYear))