Имя: Пароль:
1C
1C 7.7
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)