Имя: Пароль:
1C
 
Сводный остаток, проблема с итогами?
0 WebInc
 
05.09.05
03:10
Такой глюк отловил, остаток в регистре ОстаткиТоваров для некоторых позиций неверный. Причем запрос выбирает правильный остаток а метод Остаток или СводныйОстаток нет! Правильный методы выдают только на ТА и на КонецПериода. В чем может быть глюк? И как его можно исправить?

Конфа самописная от ТиС,1С 7.7, релиз платформы  23
1 Simod
 
05.09.05
07:47
(0) Может быть неправильно используешь методы Остаток() или СводныйОстаток(), фильры там какие или измерения. Возможно имеет смысл пересчитать итоги в режиме Тестирование и исправление ИБ.
2 WebInc
 
05.09.05
07:58
(1) Правильно, пересчитывал итоги и перепроводил месяц, один фиг.
Фильтры нормально использую. На ТА и конец периода он же корректные данные выдает!
3 Simod
 
05.09.05
08:00
(2) Кинь код запроса и методов Остаток(), СводныйОстаток().
4 WebInc
 
05.09.05
08:45
ТекстЗапроса="
   |ПЕРИОД С ДатаФормир По ДатаФормир;
   |Товар=Регистр.ПартииТоваров.Товар;
   |Фирма=Регистр.ПартииТоваров.Фирма;
   |Склад=Регистр.ПартииТоваров.Склад;
   |КодОперации=Регистр.ПартииТоваров.КодОперации;
   |ТипУчета=Регистр.ПартииТоваров.ТипУчета;
   |Статус=Регистр.ПартииТоваров.Статус;
   |ОстатокТовара=Регистр.ПартииТоваров.ОстатокТовара;
   |СрокГодности=Регистр.ПартииТоваров.СрокГодности;
   |Стоимость=Регистр.ПартииТоваров.Стоимость;
   |НДС=Регистр.ПартииТоваров.НДС;
   |Функция КонОстатокТовара=КонОст(ОстатокТовара);
   |Функция КонСтоимость=КонОст(Стоимость);
   |Функция КонНДС=КонОст(НДС);
   |Условие (ТипУчета=ТУ);
   |Условие (ОстатокТовара>0);
   |Группировка Склад;
   |Группировка Статус;
   |Группировка Товар Без групп Упорядочить По Товар.Код;";  
   
   Если Релиз="14" ТОгда
       ТекстЗапроса=ТекстЗапроса+"Условие (Фирма=ВыбФирма);";  
   Иначе
       ТекстЗапроса = ТекстЗапроса + "Условие (Сравнить(Фирма,ВыбФирма)=1);";
   КонецЕсли;
   
   Если ВыбСклад.Выбран() = 0 Тогда
   Иначе
       ТекстЗапроса = ТекстЗапроса + "Условие (Склад = ВыбСклад);";
   КонецЕсли;
   
   Если ВыбТовар.Выбран()=0 Тогда
   ИначеЕсли ВыбТовар.ЭтоГруппа()=1 Тогда
      ТекстЗапроса=ТекстЗапроса+"Условие(Товар.ПринадлежитГруппе(ВыбТовар)=1);";  
   Иначе
        ТекстЗапроса=ТекстЗапроса+"Условие(Товар=ВыбТовар);";
   КонецЕсли;


Методы!!!
Рег=СоздатьОбъект("Регистр.ОстаткиТоваров");
Рег.ВременныйРасчет();  

РассчитатьРегистрыНА(ДатаОтчета);
//Цикл по группировкам Запроса
Рег.СводныеОстатки(Запрос.Товар,Запрос.Склад,Запрос.Фирма);
КонОст1=Рег.ОстатокТовара;
5 Simod
 
05.09.05
08:54
(4) Во первых, почему в тексте запроса "ПартииТоваров", а в Методах "ОстаткиТоваров"?
Второе, используешь РассчитатьРегистрыНА(), а в запросе используешь КонОст().
Что касается
|Условие (ОстатокТовара>0); - это что?
и остальных условий, то довольно мутно. Возможно имеет смысл во использовать "в" (почитай ЖКК или СП).
6 inka
 
05.09.05
09:42
Может перед вызовом методов "Остаток" или "СводныйОстаток" стоит фильтр? Внимательно проверьте.
7 ТЕА
 
05.09.05
10:04
>для некоторых позиций неверный

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

и вот еще интересно - на начало всего периода работы остатки как?
8 WebInc
 
05.09.05
10:16
(7) Именно
>    Следует ли понимать, интересно, что для некоторых позиций остаток все же   >верный? и чем они отличаются друг от друга?
   На начало периода, неправильно а на конец верные.
(4) Как думаешь остаток по партиям и остаток по Остатком должен быть разным? Нет конечно.
Проверка идет на равенство количества по Партиям и по ОстаткиТовара
9 ТЕА
 
05.09.05
10:19
то есть есть дата, когда ты заносил первые остатки, допустим, 31 декабря; на конец 31 декабря все правильно по ВСЕМ позициям; на начало 1 января - по НЕКОТОРЫМ позициям есть разница? и суммы этих разниц не навевают никаких мыслей?
10 ТЕА
 
05.09.05
10:20
+9 то есть прошу проверить именно на Дата_Ввода_Остатков и на (Дата_Ввода_Остатков+1)
11 WebInc
 
05.09.05
10:20
Даже если использовать ВыгрузитьИтоги в ТЗ результат тот же
12 ТЕА
 
05.09.05
10:23
код товара уникальный?
13 ТЕА
 
05.09.05
10:26
|Условие (ТипУчета=ТУ);
здесь могут быть грабли, попробуй это условие покрутить.
14 WebInc
 
05.09.05
10:27
(12) Это то тут при чем?
15 WebInc
 
05.09.05
10:29
(13) Да запрос то все корректно выводит!
    Метод регистра остатка глючит
16 WebInc
 
05.09.05
10:30
(6) Нету никаких фильтров
17 Simod
 
05.09.05
10:31
(8) Если конфа переделанная ТиС, то там по регистру "ПартииНаличие" ведется учет партий ТМЦ в разрезе МОЛ, а по регистру "ОстаткиТМЦ" остатки ТМЦ в разрезе Склад. Контроль остатка осуществлялся только по регистру "ОстаткиТМЦ", по "ПартииНаличие" контроль не велся. Как у вас там сейчас незнаю, но это могло приводить к расхождению остатков, особенно если корректировали процедуры проведения.
Что касается КонОст() и РассчитатьРегистрыНа():
КонОст() = РассчитатьРегистрыНа() + Приход - Расход
при условии ДатаОтчета = ДатаФормир.
По некоторым позициям может быть совпадение, если Приход и Расход = 0.
18 WebInc
 
05.09.05
10:36
(8) Расхождение по учету исключено, учет и там и там в разрезе складов.
В этом дне нет ни прихода ни расхода.
глюк наблюдается только для НЕКОТОРЫХ позиций!!
19 ТЕА
 
05.09.05
10:58
(12,14) ну если запрос все делает правильно, то тогда конечно. Хотя я подумала, что
>Даже если использовать ВыгрузитьИтоги в ТЗ результат тот же
неправильные итоги выгрузились.

Возможно, по фирме траблы - в запросе вроде группировки по фирме нет, м.б. где-то есть неуказанная или другая.

И еще раз прошу проверить на ПЕРВЫЙ, второй и еще пару дней ПОСЛЕ ВВОДА ОСТАТКОВ.
20 WebInc
 
05.09.05
11:12
(19) С остатками на первы и тд. день все нормально, косяк начался для одной конкретной позиции с 01.09.05 т.е. на 31.08 все норм, и на 30.08 тоже, а на 01.09 остаток = 1 :(
21 ТЕА
 
05.09.05
11:18
(20)
то есть в дальнейшем по другим позициям тоже косяки начались? или ТОЛЬКО ОДНА позиция гонит?

ну таки это все же где-то нераспределенка либо скорей фирма (или другой какой реквизит) не указано.

вопще подозрительно, что на 1-е число. Поставь ТА на 30-е, погоняй проведение ручками пары документов из 30-го. Потом перенеси ТА на ну скажем 3-е сентября. Пошуршит остатками, может, одумается.

Возьми разницу (Правильный_Хвостик_31_августа - 1) и поищи в документах 31-го такое количество.
22 WebInc
 
06.09.05
02:51
(21) косяки, повторяю, по НЕСКОЛЬКИМ позициям. Перепроводил все документы с начала предидущего месяца. Переносил ТА с начала года на тек дату. Все бестолку.
Запрос по регистру Остатки товара. Выдает корректные данные. Не могло быть такого расхода 30 000 шт. И нету его, проверял.
23 raykom
 
06.09.05
03:21
А расчитать НА и По не вникал ?
24 raykom
 
06.09.05
03:32
(4)ПЕРИОД С ДатаФормир По ДатаФормир;
Это включая все события в ДатаФормир, а значит Расчитать ПО
25 WebInc
 
07.09.05
02:41
(24) не может там быть остатка = 1
Я подозреваю что проблема в таблицах с итогами, мне интересно как это можно исправить. Перепроведением и пересчетом итогов не получилось.
26 Морозов Александр
 
07.09.05
04:37
Наверно если никак не получается исправить косяк в итогах, надо выгрузить данные, создать новую базу и загрузить в нее данные.
27 WebInc
 
07.09.05
05:24
(26) Попробую, я над этим тоже думал.
28 427
 
07.09.05
05:49
а кто сказал, что это косяк 1С, а не рук делающего?
29 WebInc
 
07.09.05
06:06
(28) Ага значит грабли в мой огород
Где косяк в этом коде?
Рег=СоздатьОбъект("Регистр.ОстаткиТоваров");
   
Рег.УстановитьЗначениеФильтра("Товар",выбТовар,1);
Рег.УстановитьЗначениеФильтра("Склад",выбСклад,1);
Рег.УстановитьЗначениеФильтра("Фирма",выбФирма,1);

Рег.ВременныйРасчет();  
РассчитатьРегистрыНА(выбДата);
   
тз = СоздатьОбъект("ТаблицаЗначений");
 
Рег.ВыгрузитьИтоги(тз,1,1);

тз.ВыбратьСтроку();

Структура регистра ОстаткиТоваров
 Измерения:
   Товар
   Склад
   Фирма
 Ресурсы
   ОстатокТовара
30 Guk
 
07.09.05
06:19
(0) Ключевая фраза "Конфа самописная от ТиС,1С 7.7". Что там у тебя может быть, одному богу известно...
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.