Вход | Регистрация


1С:Предприятие ::

Метки: 

Неправильные остатки таблицы ОстаткиИОбороты в СКД

Я
   Dwarrior
 
27.12.17 - 12:01
Здравствуйте!

Имеем простой вроде бы отчет СКД с запросом:

ВЫБРАТЬ РАЗЛИЧНЫЕ
    ДолгТараОстаткиИОбороты.Контрагент,
    ДолгТараОстаткиИОбороты.КоличествоПриход,
    ДолгТараОстаткиИОбороты.КоличествоРасход,
    ДолгТараОстаткиИОбороты.Регистратор,
    ДолгТараОстаткиИОбороты.КоличествоНачальныйОстаток,
    ДолгТараОстаткиИОбороты.КоличествоКонечныйОстаток,
    ДолгТараОстаткиИОбороты.Маршрут,
    ДолгТараОстаткиИОбороты.НомерДоставки,
    ДолгТараОстаткиИОбороты.ПериодСекунда,
    ДолгТараОстаткиИОбороты.Склад,
    ДолгТараОстаткиИОбороты.Регистратор.Сделка КАК ЗаказПокупателя
ИЗ
    РегистрНакопления.ДолгТара.ОстаткиИОбороты(, , Авто, , ) КАК ДолгТараОстаткиИОбороты
ГДЕ
    ДолгТараОстаткиИОбороты.Контрагент.Наименование <> " "
    И ДолгТараОстаткиИОбороты.Регистратор.Сделка <> ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)

Проблема - неправильно рассчитываются остатки на начало и конец при определенных группировках. А точнее - они складываются в разрезе регистраторов, например. Прочитал связанную статью ИТС "Типичные проблемы при расчете остатков". Не помогло.
Что интересно - если убираем из запроса условие "И ДолгТараОстаткиИОбороты.Регистратор.Сделка <> ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)" - остатки считаются правильно.
"
 
  Рекламное место пустует
   mistеr
 
1 - 27.12.17 - 12:08
(0) Как ты хочешь получить правильные остатки, выкинув часть данных? Перенеси условие в отбор СКД в группировке по регистратору.
   Dwarrior
 
2 - 27.12.17 - 12:44
(1) Да не, понятно, что изменение запроса это эксперименты с целью понять.
А если группировки по регистратору не будет? Отбор в таком случае сработает?
   Мандалай
 
3 - 27.12.17 - 13:01
Ищи на ИТС статью про получение остатков на начало и конец периода.
   Dwarrior
 
4 - 27.12.17 - 13:24
(3) Нашел и прочитал. Все рекомендации сделал
https://its.1c.ru/db/metod8dev/content/3093/hdoc
   Dwarrior
 
5 - 27.12.17 - 15:59
апну в надежде на новогоднее чудо:)
   piter3
 
6 - 27.12.17 - 16:02
(4) Не сделал судя пл (0)
   piter3
 
7 - 27.12.17 - 16:03
Что в консоли?
   piter3
 
8 - 27.12.17 - 16:09
И какой смысл остатку по доку?
   perester
 
9 - 27.12.17 - 16:18
Прикрути костыли - сделай запрос сначала по наименованию потом по его в Вт, а с Вт отбор по регистратору, ну или через вложенный запрос не сказать что верно, да и вообще не есть хорошо, но результат должен получиться
   mehfk
 
10 - 27.12.17 - 16:25
(0) Не вижу в запросе того, что ты должен был сделать, прочитав указанную тобой статью.
 
 
   mehfk
 
11 - 27.12.17 - 16:31
Присмотрелся - увидел.
Не, ну это - швах
И ДолгТараОстаткиИОбороты.Регистратор.Сделка <> ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
   kuzyara
 
12 - 27.12.17 - 16:31
(0) нужно добавить поле ПериодСекунда

А вот ещё запрос непонятный из ут10:
    Запрос.Текст = 
    "ВЫБРАТЬ 
    |    ЕСТЬNULL(Взаиморасчеты.СуммаВзаиморасчетовНачальныйОстаток, 0) КАК ОстатокНаНачало,
    |    ЕСТЬNULL(Взаиморасчеты.СуммаВзаиморасчетовКонечныйОстаток, 0)  КАК ОстатокНаКонец
    |ИЗ 
    |    РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, , ,"    + ТекстФильтра + ") КАК Взаиморасчеты";
    
    Результат = Запрос.Выполнить();


Зачем здесь используется ЕстьNull?
   Dwarrior
 
13 - 27.12.17 - 16:44
(12) Так есть же ПериодСекунда в запросе, 3 поле снизу
   Dwarrior
 
14 - 27.12.17 - 16:44
(11) а как лучше можно? Посоветуйте пожалуйста
   Dwarrior
 
15 - 27.12.17 - 16:46
(9) Как вариант, попробую, спасибо
   nordbox
 
16 - 27.12.17 - 16:51
(15) Убери отбор ГДЕ
https://its.1c.ru/db/metod8dev#content:2594:hdoc
читай винимательно:
   RainWoman
 
17 - 27.12.17 - 17:12
В СКД проблема при работе с виртуальной таблицей ОстаткиИОбороты также может быть связана с настройкой свойства МетодДополнения.
   Dwarrior
 
18 - 27.12.17 - 17:18
(16) Я бы с удовольствием указал отбор внутрь виртуальной таблицы, но там только измерения. Регистратора там нет, а мне нужен отбор по полю Сделка регистратора.
   mehfk
 
19 - 27.12.17 - 17:58
(18) Нет ножек - нет мультиков. Хуёвый код - хуёвый результат.
   mistеr
 
20 - 27.12.17 - 19:04
(18) Для поля Сделка роль настроена по (4) ?
   Dwarrior
 
21 - 28.12.17 - 09:37
(20) Не Сделка, а ЗаказПокупателя. Да, Измерение
   mistеr
 
22 - 28.12.17 - 10:37
(21) Не просто измерение, а с родителем Регистратор.
   Dwarrior
 
23 - 28.12.17 - 12:01
(22) Сделал, не помогло. Вот что еще заметил - если в отчете хоть где есть группировка по Регистратору (на любом уровне) - то остатки считаются верно. Например 1.Контрагент, 2.Регистратор. Или 1. Регистратор 2.Контрагент.
Однако если Регистратора нет в группировках - остаток неправильный. Например 1.Контрагент, 2.Маршрут
   Dwarrior
 
24 - 28.12.17 - 12:03
(9) Да, сделал еще через временную таблицу, т.е. ОстаткиИОбороты детализируются до Регистратора, выгружаются в ВТ, а потом из ВТ выбираются - тоже не помогло особо. Даже с правильной ролью поля ЗаказПокупателя.
   mistеr
 
25 - 28.12.17 - 12:04
Ты плохо читал (4). Регистратор должен быть.
   Dwarrior
 
26 - 28.12.17 - 12:41
(25) Извините за тупость:) Не совсем понятно, где должен быть Регистратор? В полях выборки есть. Роль у него -
"Период,1".
   mistеr
 
27 - 28.12.17 - 12:54
(26) В группировках.

Но у тебя еще концептуальная проблема с отбором по заказам. Чтобы иметь возможность получать правильные остатки в разрезе заказов (а отбор это частный случай), нужно иметь заказ в измерениях регистра.
   Dwarrior
 
28 - 28.12.17 - 13:01
(27) Т.е. как я понял, запросом не обойтись, надо менять структуру регистра?

А почему не работает через временную таблицу? Т.е. вытащить линейные записи (по регистратору) в ВТ, отобрав по непустому Заказу, а потом выбрать уже из ВТ. Там-то уже отборов накладывать не надо, просто полная выборка всех записей. А получается, поведение отчета такое же, как если бы я выбирал из ОстаткиИОбороты напрямую (С регистратором правильно, без регистратора - неправильно)
   mehfk
 
29 - 28.12.17 - 13:09
(28) https://image.ibb.co/mDMGjw/image.png

А теперь вычеркни несколько регистраторов, что будет с НачОст и КонОст ?
   mistеr
 
30 - 28.12.17 - 13:12
(28) Если выбрать из регистра остатки в разрезе регистраторов, то они будут верными, даже если часть регистраторов выкинуть. А если свернуть остатки по чему-либо еще (контрагенту, например), то верных остатков, не учитывающих регистраторы без заказов, нет НИГДЕ. В регистре есть только остатки, учитывающие все движения. И СКД тебе эти несуществующие остатки из воздуха не выдумает.

Поэтому добавляй заказ в регистр. Или не пиши в регистр движения без заказов.
   Dwarrior
 
31 - 29.12.17 - 10:47
(30) Спасибо, так и поступим. Ограничу запись в регистр реализаций без заказов



Список тем форума
Рекламное место пустует  
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует