Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Вопросы по СКД (число прочтений - 3617 )
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Вопросы по СКД
11. Августа 2011 :: 02:56
Печать  
Думаю, это будет универсальная тема, т.к. вопросов СКД вызывает немеряно...

Сейчас пытаюсь побороть невозможность указать роль НачОст и КонОст для вычисляемого поля, ибо группируется оно очень каряво...

Как победить такой ресурс? Поле вычисляемое, но имеет роль НачОст, которую в СКД установить не нашел как.
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Вопросы по СКД
Ответ #1 - 12. Сентября 2011 :: 06:49
Печать  
Если прямого решения нет, то как можно иначе показать суммарный отчет по двум регистрам, регистраторы которых могут не пересекаться?
Т.е. надо получить соедующее:
Регистратор НачОст1 Прих1 Расх1 КонОст1 НачОст2 Прих2 Расх2 КонОст2 НачОст Прих Расх КонОст
Док1 0 10 0 10 0 0 0 0 0 10 0 10
Док2 10 0 5 5 0 5 0 5 10 5 5 10
Док3 5 2 0 7 5 0 0 5 10 2 0 12
Док4 7 0 0 7 5 0 5 0 12 0 5 7
Док5 7 0 7 0 0 0 0 0 7 0 7 0
По строкам я такое смог получить, но в группировках получается следующее:
Регистратор НачОст1 Прих1 Расх1 КонОст1 НачОст2 Прих2 Расх2 КонОст2 НачОст Прих Расх КонОст
Группа 29 12 12 29 10 5 5 10 39 17 17 39
а должно быть:
Регистратор НачОст1 Прих1 Расх1 КонОст1 НачОст2 Прих2 Расх2 КонОст2 НачОст Прих Расх КонОст
Группа 0 12 12 0 0 5 5 0 0 17 17 0
Причина в том, что поля НачОстХ и КонОстХ вычисляемые, а для них нельзя установить роль  Плачущий
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вопросы по СКД
Ответ #2 - 12. Сентября 2011 :: 12:19
Печать  
Dmitry The Wing писал(а) 12. Сентября 2011 :: 06:49:
Если прямого решения нет, то как можно иначе показать суммарный отчет по двум регистрам, регистраторы которых могут не пересекаться?
(

Так вычисляй сразу в запросе, соединений регистров укажи прямо в запросе, и поля остатков также вычисляй в запросе - типа
ЕСТЬ(Рег1.КонОст, 0) + ЕСТЬ(Рег2.КонОст, 0) КАК КонОст
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Вопросы по СКД
Ответ #3 - 13. Сентября 2011 :: 01:10
Печать  
artbear писал(а) 12. Сентября 2011 :: 12:19:
Так вычисляй сразу в запросе, соединений регистров укажи прямо в запросе, и поля остатков также вычисляй в запросе - типа
ЕСТЬ(Рег1.КонОст, 0) + ЕСТЬ(Рег2.КонОст, 0) КАК КонОст
Этого можно достичь и простым юнионом, но тогда получаются пробелы типа:
НачОст1 Прих1 Расх1 КонОст1
10 5 2 13
0 0 0 0
13 2 5 10
Причина в том, что док не делает движений по одному из регистров.
Именно потому поля и сделаны вычисляемыми, - в нач и кон ост помещается значение с предыдущей строки...
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вопросы по СКД
Ответ #4 - 13. Сентября 2011 :: 05:39
Печать  
Поэтому и говорю про соединения (полные), во всех полях делай проверку на
1. ЕСТЬNULL(Рег1.Док, Рег2.Док) КАК Док
или
2. ЕСТЬ(Рег1.КонОст, 0) + ЕСТЬ(Рег2.КонОст, 0) КАК КонОст
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вопросы по СКД
Ответ #5 - 13. Сентября 2011 :: 05:51
Печать  
Ну или после юнион делай группировку, но имхо Соединения в данном случае удобнее и быстрее
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Вопросы по СКД
Ответ #6 - 11. Октября 2011 :: 07:17
Печать  
Думал, что победил, а оказалось не так. Выкладываю тестовую базу, в которой реализованы 2 регистра, 3 документа и отчет, который должен показать:
0 10 0 10 0 10 0 10
10 0 5 5 0 10 0 10
10 0 5 5 10 0 5 5
5 5 0 10 5 5 0 10
10 0 10 0 5 5 0 10
0 0 0 0 5 5 0 10
, а вместо этого показывает:
0 10 0 10 0 10 0 10
10 0 5 5 0 0 0 0
0 0 0 0 10 0 5 5
5 5 0 10 5 5 0 10
10 0 10 0 0 0 0 0
0 0 0 0 5 5 0 10
  

__________2.zip ( 29 KB | Загрузки )
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать