Имя: Пароль:
1C
1С v8
Я в тупике. СКД криво считает конечный остаток. Я всё изучил но не могу понять.
,
0 Капюшон
 
29.10.12
16:15
Уважаемые программисты. Помогите мне решить одну проблему. Сразу говорю - я прочитал и книжки по СКД и статьи с диска ИТС, в частности статью "типичные проблемы при расчете остатков" и мне это не полностью помогло.

Сейчас изложу суть проблемы:
хоть и конфигурация - УТ нетиповая, суть запроса простая. Получаем НачОст, Приход,Расход,КонОст из двух виртуальных таблиц остатков и оборотов и вложенным запросом соединяем запросы. Как и полагается, использую регистратор в группировке, но при этом и завожу поле "ПериодСекунда" и выставляю этому полю в настройках СКД период с большей нумерацией, поскольку поле регистратор является уточнением поля "периодсекунда" и обязан иметь нумерацию в ролях с меньшей цифрой.

Итоги рассчитываются корректно за исключением поля "Конечный остаток". при этом наблюдаю одну закономерность. Если в параметрах виртуальной таблицы, указываю метод дополнения "Движения" для обоих виртуальных таблиц, то итог конечныйого остатка второй виртуальной таблицы не считается, остаётся пустым не смотря на то, что приход и расход имеется. Если же метод дополнения оставляю пустым, то итоги конечного остатка первой виртуальной таблицы не считается, а второй таблицы считается. Никак не могу добиться, чтобы оба считались правильно. Чего только не перепробовал. xls двух версий отчета выкладываю.
http://files.mail.ru/Q2H04F

а так же сам запрос.

ВЫБРАТЬ
   ВложенныйЗапрос.Регистратор КАК Регистратор,
   ВложенныйЗапрос.Склад КАК Склад,
   ВложенныйЗапрос.Номенклатура КАК Номенклатура,
   ВложенныйЗапрос.ПотребностьНачальныйОстаток КАК ПотребностьНачальныйОстаток,
   ВложенныйЗапрос.ПотребностьПриход КАК ПотребностьПриход,
   ВложенныйЗапрос.ПотребностьРасход КАК ПотребностьРасход,
   ВложенныйЗапрос.ПотребностьКонечныйОстаток КАК ПотребностьКонечныйОстаток,
   ВложенныйЗапрос.ПотребностьНачальныйОстаток1 КАК ПотребностьНачальныйОстаток1,
   ВложенныйЗапрос.ПотребностьПриход1 КАК ПотребностьПриход1,
   ВложенныйЗапрос.ПотребностьРасход1 КАК ПотребностьРасход1,
   ВложенныйЗапрос.ПотребностьКонечныйОстаток1 КАК ПотребностьКонечныйОстаток1,
   ВложенныйЗапрос.ПериодСекунда КАК ПериодСекунда
{ВЫБРАТЬ
   Регистратор.*,
   Склад.*,
   Номенклатура.*,
   ПотребностьНачальныйОстаток,
   ПотребностьПриход,
   ПотребностьРасход,
   ПотребностьКонечныйОстаток,
   ПотребностьНачальныйОстаток1,
   ПотребностьПриход1,
   ПотребностьРасход1,
   ПотребностьКонечныйОстаток1,
   ПериодСекунда}
ИЗ
   (ВЫБРАТЬ
       ПотребностьЗаказаПокупателяОстаткиИОбороты.Регистратор КАК Регистратор,
       ПотребностьЗаказаПокупателяОстаткиИОбороты.Склад КАК Склад,
       ПотребностьЗаказаПокупателяОстаткиИОбороты.Номенклатура КАК Номенклатура,
       ПотребностьЗаказаПокупателяОстаткиИОбороты.ПотребностьНачальныйОстаток КАК ПотребностьНачальныйОстаток,
       ПотребностьЗаказаПокупателяОстаткиИОбороты.ПотребностьПриход КАК ПотребностьПриход,
       ПотребностьЗаказаПокупателяОстаткиИОбороты.ПотребностьРасход КАК ПотребностьРасход,
       ПотребностьЗаказаПокупателяОстаткиИОбороты.ПотребностьКонечныйОстаток КАК ПотребностьКонечныйОстаток,
       NULL КАК ПотребностьНачальныйОстаток1,
       NULL КАК ПотребностьПриход1,
       NULL КАК ПотребностьРасход1,
       NULL КАК ПотребностьКонечныйОстаток1,
       ПотребностьЗаказаПокупателяОстаткиИОбороты.ПериодСекунда КАК ПериодСекунда
   {ВЫБРАТЬ
       Регистратор.*,
       Склад.*,
       Номенклатура.*,
       ПотребностьНачальныйОстаток,
       ПотребностьПриход,
       ПотребностьРасход,
       ПотребностьКонечныйОстаток,
       ПериодСекунда}
   ИЗ
       РегистрНакопления.ПотребностьЗаказаПокупателя.ОстаткиИОбороты({(&ВыбНачПериода)}, {(&ВыбКонПериода)}, Авто, Движения, ) КАК ПотребностьЗаказаПокупателяОстаткиИОбороты
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       ПотребностьЗаказаПоставщикуОстаткиИОбороты.Регистратор,
       ПотребностьЗаказаПоставщикуОстаткиИОбороты.Склад,
       ПотребностьЗаказаПоставщикуОстаткиИОбороты.Номенклатура,
       NULL,
       NULL,
       NULL,
       NULL,
       ПотребностьЗаказаПоставщикуОстаткиИОбороты.ПотребностьНачальныйОстаток,
       ПотребностьЗаказаПоставщикуОстаткиИОбороты.ПотребностьПриход,
       ПотребностьЗаказаПоставщикуОстаткиИОбороты.ПотребностьРасход,
       ПотребностьЗаказаПоставщикуОстаткиИОбороты.ПотребностьКонечныйОстаток,
       ПотребностьЗаказаПоставщикуОстаткиИОбороты.ПериодСекунда
   ИЗ
       РегистрНакопления.ПотребностьЗаказаПоставщику.ОстаткиИОбороты({(&ВыбНачПериода)}, {(&ВыбКонПериода)}, Авто, Движения, ) КАК ПотребностьЗаказаПоставщикуОстаткиИОбороты) КАК ВложенныйЗапрос
1 Rovan
 
гуру
29.10.12
16:21
(0) попробуй соединить запросы соединением !
2 Капюшон
 
29.10.12
16:22
(1)полным?
3 Капюшон
 
29.10.12
16:22
(1)соединение наборов сделать или соединение временных таблиц?
4 rphosts
 
29.10.12
16:23
если  тебе нужно все данные из обоих таблиц - внешним
5 rphosts
 
29.10.12
16:23
внешним сроединением
6 Капюшон
 
29.10.12
16:24
и ещё что я заметил. если допустим итог Конечного остатка первой виртуальной таблицы считается не верно, то если из запроса вырезать вторую виртуальную таблицу, то он начинает считаться корректно. грубо говоря по одному они хорошо работают. а вместе не хотят почемуто
7 zak555
 
29.10.12
16:25
зачем два запроса к ПотребностьЗаказаПоставщику ?
8 Капюшон
 
29.10.12
16:27
(7) один же запрос. первый к ПотребностьЗаказаПокупателя, второй к ПотребностьЗаказаПоставщику
9 GANR
 
29.10.12
16:33
(0) Может {} снести ??? А никто не прольет свет на эту проблему v8: v8: СКД. Не ВСЕГДА инициализируются доступные настройки компоновщика. ?
10 zak555
 
29.10.12
16:34
не проще сделать объедение двух наборов ?
11 Капюшон
 
29.10.12
16:47
(10)сделал. заработало. но я их по регистратору связал. а по идее ненадо наверное было. но в таком случае как группировки делать?
12 Капюшон
 
29.10.12
16:48
(9)ну а если снесу {} то придется автозаполнением пользоваться. но попробую и так.
Закон Брукера: Даже маленькая практика стоит большой теории.