|
v7: Корректировка истории периодических реквизитов | ☑ | ||
---|---|---|---|---|
0
linoblack
17.05.17
✎
16:17
|
О-хо-хо...опять уперся, нужен совет. Опишу ситуацию:
в базе вели учет частного предпринимателя. т.к. не пользовались эндээсом, то в справочнике "цены" все цены с НДС (ну им так удобнее было). теперь возникла необходимость использовать НДС. для правильного округления (чтоб не вылазили копейки при регистрации налоговых в инспекции) необходимо перейти на использование цен без НДС, и использовать наценку. это вроде и не сложно - достаточно переключить константу "ОсновнаяЦена" (исходя из которой рассчитываются суммы в товарных документах) и программно пересчитать справочник "цены" со всеми периодическими значениями цены. просто поделить все на 1.2, НО!!!!! исторические значения периодического реквизита "Цена" заданы ДОКУМЕНТАМИ. это приходники, переоценки и т.п. не получается программно изменить значение цены. вылазит ошибка "Значение установлено документом!". я так понимаю, это сообщение непосредственно платформы, не конфигурации. понятно, что при изменении модулей проведения документов и перепроведении там все станет как надо, но как это сделать БЕЗ перепроведения? |
|||
1
Ёпрст
17.05.17
✎
16:21
|
прямым запросом проапдейтить табличку 1sconst
|
|||
2
Ёпрст
17.05.17
✎
16:22
|
и если че, ндс давно уже не 20%
|
|||
3
linoblack
17.05.17
✎
16:23
|
(2) уа
|
|||
4
linoblack
17.05.17
✎
16:24
|
(1) это средствами SQL ?
|
|||
5
Ёпрст
17.05.17
✎
16:32
|
(4) вот такой примитивный запрос и привет
update Константы set Константы.value = Константы.value/1.2 from _1sconst Константы where Константы.id=$ИсторияРеквизита.Цены.Цена зы: формат базы не важен, хоть sql, хоть дбф. для дбф только, желательно потом переиндексировать табличку. |
|||
6
linoblack
17.05.17
✎
16:52
|
(5) благодарю, щас попробую.....
|
|||
7
linoblack
17.05.17
✎
17:22
|
State 22003, native 8115, message [Microsoft][ODBC SQL Server Driver][SQL Server]Ошибка арифметического переполнения при преобразовании varchar к типу данных numeric.
наверно нужно как-то типы преобразовать? не секу...((( |
|||
8
Ёпрст
17.05.17
✎
17:22
|
(7)
cast воткни |
|||
9
linoblack
17.05.17
✎
17:23
|
(8) понил. еще один вопрос, округление какая команда?
|
|||
10
Ёпрст
17.05.17
✎
17:26
|
Или так, должно прокатить:
set Константы.value = 0.000 + Константы.value/1.2 |
|||
11
Ёпрст
17.05.17
✎
17:29
|
||||
12
linoblack
17.05.17
✎
17:29
|
сработало. округление само прошло по разрядности
ТекстЗапроса = " |UPDATE | Константы |SET | Константы.value = cast(Константы.value as numeric)/1.2 |FROM | _1sconst Константы |WHERE | Константы.id=$ИсторияРеквизита.Цены.Цена"; Ёпрст, в который раз - ОГРОМНОЕ СПАСИБО!!!! |
|||
13
linoblack
18.05.17
✎
12:51
|
(1) после апдейта не нужно ли делать какой-нибудь пересчет? штатно или поделкой?
|
|||
14
Ёпрст
18.05.17
✎
12:55
|
(13) нет. Если скуль, то ничего не надо, если дбф, то прибить индексный файл от 1сконст и зайти монопольно (на всякий)
|
|||
15
linoblack
30.05.17
✎
12:40
|
если кому интересно, то правильно вот так
|SET |Константы.value = ROUND(cast(Константы.value as decimal(15,2))/1.2,2) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |