![]() |
#1 |
Участник
|
Navision 2.60
После неверной отмены 2-х счетов продажи. Неверно отображаются значение в полях "Оборот" и "СкладОстаток" таблицы "Товар". По утверждениям кладовщиков данные поля должны быть равны. Различие есть только у товаров входивших в отмененные документы. Повторные учет и отмена документов дела не решает. Не привязаных операций вроде как нет: Возможно ли как то запросами проверить правильно ли значение поля "СкладОстаток" и "Кол-во" например, на основе учтенных операций или "Товар Книги Применения" Вот, что я проверял: --1) наличие ссылок на несуществующие операции declare @no int, @ileno int, @iato int, @iafrom int, @qty decimal(38, 20), @post_date datetime, @message varchar(140) declare ia cursor for select [Операция Но.], [Товар Книга Операция Но.], [Примен.-к Операции Но.], [Примен.-из Операции Но.], [Кол-во], [Дата Учета] from [FIRMA$Товар Книга Применения] where [Примен.-из Операции Но.] <> 0 and [Кол-во] < 0 and [Дата Учета] >= '20041001' open ia fetch next from ia into @no, @ileno, @iato, @iafrom, @qty, @post_date while @@fetch_status = 0 begin if exists (select 1 from [FIRMA$Товар Книга Операций] where [Операция Но.] = @ileno) and exists (select 1 from [FIRMA$Товар Книга Операций] where [Операция Но.] = @iato) and exists (select 1 from [FIRMA$Товар Книга Операций] where [Операция Но.] = @iafrom) begin if @iato = @iafrom begin select @message = cast(@no as char(10)) + ' ' + cast(@ileno as char(10)) + ' ' + cast(@iato as char(10)) + ' ' + cast(@iafrom as char(10)) + ' ' + /*cast(round(@qty, 1) as varchar(20) ) + */' ' + convert(char(10), @post_date,4) print @message end end else begin select @message = cast(@no as char(10)) + ' ' + cast(@ileno as char(10)) + ' ' + cast(@iato as char(10)) + ' ' + cast(@iafrom as char(10)) + ' ' + /*cast(round(@qty, 1) as varchar(20) ) + */' ' + convert(char(10), @post_date,4) print @message end fetch next from ia into @no, @ileno, @iato, @iafrom, @qty, @post_date end close ia deallocate ia -- 2) по "Товар Книге Применения" соответствие полей select a.*,a.[Кол-во] - b.iapQty diff,b.* from ( select [Операция Но.], [Документ Но.], [Дата Учета], [Товар Но.],[Кол-во], [Остаток Кол-во] from [FIRMA$Товар Книга Операций] where Положительна = 0 and [Дата Учета] >= '20050101' and [Кол-во] <> 0 and [Товар Но.] = 'П-М-000501') a, ( select [Примен.-из Операции Но.], sum([Кол-во]) iapQty from [FIRMA$Товар Книга Применения] --where [Дата Учета] >= '20050101' group by [Примен.-из Операции Но.] having sum([Кол-во]) <> 0) b where a.[Операция Но.] = b.[Примен.-из Операции Но.] |
|
![]() |
#2 |
Moderator
|
Что-то странное вы задумали. И в чем же оказались неверными отмены Счетов Продажи?
Поля Inventory (Остаток) и Net Change (Оборот) отличаются только наличием у последнего Дата Фильтра, т.е. возможна фильтрация по датам. |
|
![]() |
#3 |
Участник
|
Ошибка в отмене была связана с сериями номеров, точнее отменялись только первая записть из счета и из накладной. Остальные записи оставались в базе, к ним вроде как что-то привязывалось из других операций. Теперь "размотать" все трудно.
|
|
![]() |
#4 |
Moderator
|
А чем отменяли? Кредит-Нотой?
|
|
![]() |
#5 |
Участник
|
Нет, спецально для этого написанным внедренцами заданием
|
|
![]() |
#6 |
Moderator
|
Этого я и боялся...
Ну чтож, тогда ручками перебираете 32 таблицу по проблемным товарам, начиная с отменяющих записей, проверяете флажок Open, поле Remaining Quantity и соответственно примененные входящие/исходящие операции и выявляете несоответствие кол-ва. Но у меня есть подозрение, что просто ваша "отмена" прошла "неправильной датой", а т.к. вы смотрите еще и поле Оборот, то это может влиять. |
|