gifts2017

ТиС: Ведомость по отрицательным (минусовым) остаткам ТМЦ

Опубликовал Евгений (jk3) в раздел Отчеты - Управленческие

Вам знакома ситуация, когда остаток на начало и конец дня неотрицательный, а в течение дня остатки уходят в минус?

В отчете так же видны и отрицательные резервы.

 

Т.к. он сделан на основе стандартной ведомости по остаткам ТМЦ (релиз 959), то работоспособность отчета гаратнитируется на типовой ТиС для России. На более младших релизах тоже будет работать (проверял на 933 релизе).

 

[+] добавлен быстрый выбор даты начала: 1) основная дата отчетов 2) граница основной последовательности 3) дата запрета редактирования

[*] исправлен повторный вывод вышестоящих группировок

Скачать файлы

Наименование Файл Версия Размер
- 242
.ert 214,00Kb
20.11.09
242
.ert 214,00Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Сергей Ожерельев (Поручик) 21.10.09 17:22
Вообще-то за отрицательные остатки положено 3.14zditь ржавой лопатой, так как это говорит о:
1. снятом контроле за остатками,
2. блудливых ручонках юзеров, распроводящих доки поступлений-перемещений.
3. толпоопстве руководителя, глбуха, админа, не следящими за правами доступа юзверей.
4. ........
2. Евгений (jk3) 22.10.09 09:56
(1) Да кто ж спорит, только вот практически в каждой базе ТиС есть такие косяки, и чем оперативнее их выяснять (допустим, запуская отчет каждую неделю), тем легче вставить люлей тем, кто накосячил
3. Альтаир (Altair777) 22.10.09 10:27
(2) Восстановление последовательности все и так выявит :)
4. Владимир (vovan519) 22.10.09 11:24
(3) Абсолютно верно. Но речь об оперотивности и об удобстве. Выявив в течении дня отрицательные остатки, вставив люлей, исправив и включив на ночь востановленние последовательности мы получим НА УТРО РЕЗУЛЬТАТ отличающийся от просто ночного востановления последовательности.
5. Альтаир (Altair777) 22.10.09 11:30
(4) разумно
Но есть несколько "но" :)
1) Если запускать этот отчет только за текущий день, то как проконтролировать изменения задними числами?
2) Есть возможность автоматического выбора начала анализа с позиции последовательности?
3) Если надо будет, то еще придумаю ;)
6. Евгений (jk3) 22.10.09 11:31
(3) ну да-да, только все ли двигают эту самую границу последовательности?

Большинство просто не знают что это такое и для чего нужно, игнорируют предупреждение в отчетах.

Или как вариант: попробовали восстановить последовательность, оно заткнулось и больше не стали пробовать -- и так ведь работает

Вариант 2: пару лет работали и не двигали ГП, теперь уже поздно пытаться двигать, т.к. восстановление последовательности переносит ТА на границу последовательности, а магазин работает каждый день :)
7. Евгений (jk3) 22.10.09 11:38
(4) да, кстати, можно и так
получается как просмотр предварительного результата, восстановится последовательность или заткнется ночью
8. Евгений (jk3) 22.10.09 11:43
(5) насчет контроля изменений задним числом -- нужно двигать дату запрета редактирования -- чтобы уж чересчур давние доки не редактировали и не запарывали остатки

наверное добавлю 2 выбора начальной даты:
1) дата запрета редактирования
2) дата границы последовательности

правда надо проверить какой максимальный объем данных сможет за раз переварить система, т.к. для выявления косяков формируется очень большая временная выборка данных. Проверял за месяц -- нормально, надо попробовать больше период поставить...
9. Альтаир (Altair777) 22.10.09 11:44
(7) вот-вот :D
но последовательность может заткнутся не только из-за отрицательных остатков по товарам. А и из-за отрицательных остатков на счетах/кассах (только не спрашивайте меня зачем в последовательности есть такие документы :) ).
Смотря какие документы входят в последовательность и сколько вообще есть последовательностей.
Поэтому если делать, то уже делать с учетом всех нюансов учета.
10. Альтаир (Altair777) 22.10.09 11:46
(8) Дата запрета редактирования тоже может быть разной.
По разным видам документов и по разным наборам прав/ролей.
Например, администратор БД может изменять любой документ.
И это правильно! :)
11. Альтаир (Altair777) 22.10.09 11:46
+(10) в начале должно было быть (8 )
12. Евгений (jk3) 22.10.09 12:51
(9) насчет нюансов -- это отчет для типовой ТиС, и imho основная причина затыков восстановления основной последовательности -- это отсутствие остатков ТМЦ
13. Евгений (jk3) 22.10.09 13:12
(10) тоже самое, в типовой ТиС одна дата запрета редактирования, а администратор тоже может наделать косяков

а вообще основная идея -- это это сканировать периоды (например, по месяцу), начиная с самого первого дока в базе и если минусов нет, то двигать дату запрета редактирования, чтобы отрицательные остатки и не могли появится
14. Альтаир (Altair777) 22.10.09 13:12
(12) Надо или написать это в описании, или сделать отчет универсальным.

P.S. Причин затыков может быть много. Например, добавили новое поле и при проведении учитывается его заполненность. Но это так... вообще.

P.P.S. Типовая ТиС 9.2
Форма.Закладки.УстановитьЗначение(2,?(глМножественныйФильтрЗадан<<?>>(ТаблицаМФ)=1,"(!) ","")+"Множественный фильтр");
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(67)}: Функция не обнаружена (глМножественныйФильтрЗадан)
Форма.Закладки.УстановитьЗначение(2,?(глМножественныйФильтрЗадан(ТаблицаМФ)<<?>>=1,"(!) ","")+"Множественный фильтр");
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(67)}: Неопознанный оператор
ПечНачОст = глФРМКоличество<<?>>(Запрос.КоличествоНачОст,ПечЕд);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(244)}: Функция не обнаружена (глФРМКоличество)
ПечПриход = глФРМКоличество<<?>>(Запрос.КоличествоПриход - Дельта,ПечЕд);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(247)}: Функция не обнаружена (глФРМКоличество)
ПечРасход = глФРМКоличество<<?>>(Запрос.КоличествоРасход - Дельта,ПечЕд);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(248)}: Функция не обнаружена (глФРМКоличество)
ПечКонОст = глФРМКоличество<<?>>(Запрос.КоличествоКонОст,ПечЕд);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(249)}: Функция не обнаружена (глФРМКоличество)
ПечКонОстР= глФРМКоличество<<?>>(Запрос.РезервКонОст, ПечЕд);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(250)}: Функция не обнаружена (глФРМКоличество)
ПечНачОст = глФРМКоличество<<?>>(Запрос.КоличествоНачОст,"");
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(254)}: Функция не обнаружена (глФРМКоличество)
ПечПриход = глФРМКоличество<<?>>(Запрос.КоличествоПриход - Дельта,"");
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(255)}: Функция не обнаружена (глФРМКоличество)
ПечРасход = глФРМКоличество<<?>>(Запрос.КоличествоРасход - Дельта,"");
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(256)}: Функция не обнаружена (глФРМКоличество)
ПечКонОст = глФРМКоличество<<?>>(Запрос.КоличествоКонОст,"");
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(257)}: Функция не обнаружена (глФРМКоличество)
ПечКонОстР= глФРМКоличество<<?>>(Запрос.РезервКонОст, "");
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(258)}: Функция не обнаружена (глФРМКоличество)
ПечНачОст = глФРМКоличество<<?>>(Запрос.КоличествоНачОст,ПечЕд);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(331)}: Функция не обнаружена (глФРМКоличество)
ПечПриход = глФРМКоличество<<?>>(Запрос.КоличествоПриход - Дельта,ПечЕд);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(334)}: Функция не обнаружена (глФРМКоличество)
ПечРасход = глФРМКоличество<<?>>(Запрос.КоличествоРасход - Дельта,ПечЕд);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(335)}: Функция не обнаружена (глФРМКоличество)
ПечКонОст = глФРМКоличество<<?>>(Запрос.КоличествоКонОст,ПечЕд);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(336)}: Функция не обнаружена (глФРМКоличество)
ПечКонОстР= глФРМКоличество<<?>>(Запрос.РезервКонОст, ПечЕд);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(337)}: Функция не обнаружена (глФРМКоличество)
ПечНачОст = глФРМКоличество<<?>>(Запрос.КоличествоНачОст,"");
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(341)}: Функция не обнаружена (глФРМКоличество)
ПечПриход = глФРМКоличество<<?>>(Запрос.КоличествоПриход - Дельта,"");
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(342)}: Функция не обнаружена (глФРМКоличество)
ПечРасход = глФРМКоличество<<?>>(Запрос.КоличествоРасход - Дельта,"");
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(343)}: Функция не обнаружена (глФРМКоличество)
ПечКонОст = глФРМКоличество<<?>>(Запрос.КоличествоКонОст,"");
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(344)}: Функция не обнаружена (глФРМКоличество)
ПечКонОстР= глФРМКоличество<<?>>(Запрос.РезервКонОст, "");
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(345)}: Функция не обнаружена (глФРМКоличество)
ПечПриход = глФРМКоличество<<?>>(Запрос.КоличествоПриход-Дельта,ПечЕд);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(389)}: Функция не обнаружена (глФРМКоличество)
ПечРасход = глФРМКоличество<<?>>(Запрос.КоличествоРасход-Дельта,ПечЕд);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(390)}: Функция не обнаружена (глФРМКоличество)
ПечКонОст = глФРМКоличество<<?>>(ТекОстК,ПечЕд);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(391)}: Функция не обнаружена (глФРМКоличество)
ПечКонОстР = глФРМКоличество<<?>>(ТекОстР,ПечЕд);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(392)}: Функция не обнаружена (глФРМКоличество)
ПечПриход = глФРМКоличество<<?>>(Запрос.КоличествоПриход-Дельта,ПечЕд);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(449)}: Функция не обнаружена (глФРМКоличество)
ПечРасход = глФРМКоличество<<?>>(Запрос.КоличествоРасход-Дельта,ПечЕд);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(450)}: Функция не обнаружена (глФРМКоличество)
ПечКонОст = глФРМКоличество<<?>>(ТекОстК,ПечЕд);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(451)}: Функция не обнаружена (глФРМКоличество)
ПечКонОстР = глФРМКоличество<<?>>(ТекОстР,ПечЕд);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(452)}: Функция не обнаружена (глФРМКоличество)
ПечТекстСтроки = ""+глПредставлениеДокумента<<?>>(ПечТекстСтроки) + " (" +
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(542)}: Функция не обнаружена (глПредставлениеДокумента)
ПечТекстСтроки = ?(ПустоеЗначение(ПечТекстСтроки)=1,глПредставлениеПустогоЗначения<<?>>(НазваниеГруппировки),ПечТекстСтроки);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(547)}: Функция не обнаружена (глПредставлениеПустогоЗначения)
ПечТекстСтроки = ""+глПредставлениеДокумента<<?>>(ПечТекстСтроки) + " (" +
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(657)}: Функция не обнаружена (глПредставлениеДокумента)
ПечТекстСтроки = ?(ПустоеЗначение(ПечТекстСтроки)=1,глПредставлениеПустогоЗначения<<?>>(НазваниеГруппировки),ПечТекстСтроки);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(662)}: Функция не обнаружена (глПредставлениеПустогоЗначения)
ПечТекстСтроки = ""+глПредставлениеДокумента<<?>>(ПечТекстСтроки) + " (" +
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(853)}: Функция не обнаружена (глПредставлениеДокумента)
ПечТекстСтроки = ?(ПустоеЗначение(ПечТекстСтроки)=1,глПредставлениеПустогоЗначения<<?>>(НазваниеГруппировки),ПечТекстСтроки);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(858)}: Функция не обнаружена (глПредставлениеПустогоЗначения)
Если глПроверкаДаты<<?>>(ДатаНачала,ДатаКонца)=0 Тогда
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(1077)}: Процедура вызывается как функция (глПроверкаДаты)
глПриСменеСтрокиТаблицыМФ<<?>>(1,ТекСтрокаВТаблице,Контекст); // записываем изменения если они были
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(1136)}: Процедура не обнаружена (глПриСменеСтрокиТаблицыМФ)
Если глМножественныйФильтрЗадан<<?>>(ТаблицаМФ) = 1 Тогда
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(1138)}: Функция не обнаружена (глМножественныйФильтрЗадан)
НетОш = НетОш * глФильтрПоПеременнойЗапроса<<?>>(ТаблицаМФ, "Фирма",ВыбРазделитель1,"ВыбРазделитель1",ТекстЗапроса,Загол);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(1153)}: Функция не обнаружена (глФильтрПоПеременнойЗапроса)
НетОш = НетОш * глФильтрПоПеременнойЗапроса<<?>>(ТаблицаМФ, "ЮрЛицо",,,ТекстЗапроса,Загол);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(1154)}: Функция не обнаружена (глФильтрПоПеременнойЗапроса)
НетОш = НетОш * глФильтрПоПеременнойЗапроса<<?>>(ТаблицаМФ, "УпрАналитика",,,ТекстЗапроса,Загол);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(1155)}: Функция не обнаружена (глФильтрПоПеременнойЗапроса)
НетОш = НетОш * глФильтрПоПеременнойЗапроса<<?>>(ТаблицаМФ, "ЮрЛицо",ВыбРазделитель2,"ВыбРазделитель2",ТекстЗапроса,Загол);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(1157)}: Функция не обнаружена (глФильтрПоПеременнойЗапроса)
НетОш = НетОш * глФильтрПоПеременнойЗапроса<<?>>(ТаблицаМФ, "Фирма",,,ТекстЗапроса,Загол);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(1158)}: Функция не обнаружена (глФильтрПоПеременнойЗапроса)
НетОш = НетОш * глФильтрПоПеременнойЗапроса<<?>>(ТаблицаМФ, "УпрАналитика",,,ТекстЗапроса,Загол);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(1159)}: Функция не обнаружена (глФильтрПоПеременнойЗапроса)
НетОш = НетОш * глФильтрПоПеременнойЗапроса<<?>>(ТаблицаМФ, "УпрАналитика",ВыбРазделитель3,"ВыбРазделитель3",ТекстЗапроса,Загол);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(1161)}: Функция не обнаружена (глФильтрПоПеременнойЗапроса)
НетОш = НетОш * глФильтрПоПеременнойЗапроса<<?>>(ТаблицаМФ, "Фирма",,,ТекстЗапроса,Загол);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(1162)}: Функция не обнаружена (глФильтрПоПеременнойЗапроса)
НетОш = НетОш * глФильтрПоПеременнойЗапроса<<?>>(ТаблицаМФ, "ЮрЛицо",,,ТекстЗапроса,Загол);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(1163)}: Функция не обнаружена (глФильтрПоПеременнойЗапроса)
НетОш = НетОш * глФильтрПоПеременнойЗапроса<<?>>(ТаблицаМФ, "Номенклатура",ВыбТМЦ,"ВыбТМЦ",ТекстЗапроса,Загол,"СвойстваНоменклатуры");
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(1165)}: Функция не обнаружена (глФильтрПоПеременнойЗапроса)
НетОш = НетОш * глФильтрПоПеременнойЗапроса<<?>>(ТаблицаМФ, "Склад",ВыбСклад,"ВыбСклад",ТекстЗапроса,Загол);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(1166)}: Функция не обнаружена (глФильтрПоПеременнойЗапроса)
Если глПолучитьПолномочие<<?>>("РазрешитьРедактированиеТаблиц") = 0 Тогда
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(1251)}: Функция не обнаружена (глПолучитьПолномочие)
глДобавитьВТаблицуМФ<<?>>(ТаблицаМФ,"Справочник","Номенклатура", "Номенклатура", "По номенклатуре");
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(1270)}: Процедура не обнаружена (глДобавитьВТаблицуМФ)
глДобавитьВТаблицуМФ<<?>>(ТаблицаМФ,"Справочник","Склады", "Склад", "По складам");
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(1271)}: Процедура не обнаружена (глДобавитьВТаблицуМФ)
глДобавитьВТаблицуМФ<<?>>(ТаблицаМФ,"Справочник","ЗначенияСвойств", "Номенклатура", "По свойствам номенклатуры");
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(1272)}: Процедура не обнаружена (глДобавитьВТаблицуМФ)
глДобавитьВТаблицуМФ<<?>>(ТаблицаМФ,"Справочник","Фирмы", "Фирма", "По фирмам");
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(1273)}: Процедура не обнаружена (глДобавитьВТаблицуМФ)
глДобавитьВТаблицуМФ<<?>>(ТаблицаМФ,"Справочник","СвоиЮрЛица", "ЮрЛицо", "По юр. лицам");
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(1274)}: Процедура не обнаружена (глДобавитьВТаблицуМФ)
глДобавитьВТаблицуМФ<<?>>(ТаблицаМФ,"Справочник","УпрАналитика", "УпрАналитика", "По упр. аналитике");
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(1275)}: Процедура не обнаружена (глДобавитьВТаблицуМФ)
ДатаНачала = глЗначениеПоУмолчанию<<?>>("ОсновнаяДатаНачалаОтчетов");
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(1281)}: Функция не обнаружена (глЗначениеПоУмолчанию)
глПриСменеСтрокиТаблицыМФ<<?>>(1,ТекСтрокаВТаблице,Контекст);
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(1344)}: Процедура не обнаружена (глПриСменеСтрокиТаблицыМФ)
глПриСменеСтрокиТаблицыМФ<<?>>(1,ТекСтрокаВТаблице,Контекст); // записываем изменения если они были
{D:\Downloads\1С\VedomostjPoOtricateljnymOstatkamTMC.ert(1365)}: Процедура не обнаружена (глПриСменеСтрокиТаблицыМФ)
При проверке модуля обнаружены синтаксические ошибки!
15. Альтаир (Altair777) 22.10.09 13:15
16. Альтаир (Altair777) 22.10.09 13:27
+(14)
упс.... Эти ошибки были из Украинской ТиС
17. Евгений (jk3) 22.10.09 14:23
(14) в принципе, я могу сделать так, чтобы из отчета не было вызовов к глобальным функциям, включив их в модуль, но смысла в этом не вижу, т.к. запрос ориентирован именно на ту структуру регистров ОстаткиТМЦ и РезервыТМЦ, которые есть в типовой ТиС

(16) то-то же
18. Альтаир (Altair777) 22.10.09 15:06
(17) Можно и адаптировать под украинские регистры.
Украинских пользователей много....
Если Вам лень, могу и я сделать. А если не лень, могу дать необходимую информацию ;)
19. Евгений (jk3) 22.10.09 17:01
(18) мда, посмотрел я эту типовую ТиС для Укранины....
печальное зрелище, чего стоит только регистр РезервыТоваров без измерения Фирма :(

Так что Altair777, хочешь, делай для украинских пользователей и выкладывай, они оценят. Я для Украины заморачиваться не буду.
20. Альтаир (Altair777) 22.10.09 17:07
(19) Все слышали? Я первый застолбил :)

А насчет недостатков украинских конфигураций все претензии фирме "1С" в Москве ;)
Она же отдала из разработку "ABBYY Ukraine".
21. Геннадий Малюков (bes-kkm) 19.09.11 10:47
Если честно у меня эта обработка не заработала.
22. Евгений (jk3) 20.09.11 09:25
(21) А можно поподробнее, что вы понимаете под "не заработала".
Если за выбранный период в базе нет отрицательных остатков, то она и не покажет ничего.
Это очень хорошо!
23. Lenston (Lenston) 18.10.11 11:44
Может минусов нет, вот и не заработала:)
А вообще полезная штукенция для тех, кому лень вести тотал контроль ежедневно при наличие уже как минимум двух операторов работающих в одной базе.
А бывает и такое чудо, когда есть ЦБ и РБД и там и там умудряются провести один документ, но по причине префикса уникальность не нарушается, а только сползают остатки в минус.
в больших конторах такое отследить проблематично сразу.
А вот данным отчетиком легко:)