Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Как наложить условие реквизит регистра остатков в запросе для 1с++? (число прочтений - 4204 )
sanches
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 64
Местоположение: Челябинск
Зарегистрирован: 15. Ноября 2006
Пол: Мужской
Как наложить условие реквизит регистра остатков в запросе для 1с++?
09. Мая 2010 :: 07:03
Печать  
Привет.
Использую виртуальную таблицу РегистрОстаткиОбороты.
Мне нужно функции приход и расход ограничить определенным кодом операции (как в типовой ведомости по партиям). Пишу:

Код
Выбрать все
SELECT ПартииНаличиеОстаткиОбороты.Номенклатура [Номенклатура $Справочник.Номенклатура]
    |,ПартииНаличиеОстаткиОбороты.Период "+Периодичность+"
    |    , Sum(ПартииНаличиеОстаткиОбороты.КоличествоНачальныйОстаток) КоличествоНачОст
    |    , Sum(ПартииНаличиеОстаткиОбороты.КоличествоПриход) КоличествоПриход
    |    , Sum(ПартииНаличиеОстаткиОбороты.КоличествоРасход) КоличествоРасход
    |    , Sum(ПартииНаличиеОстаткиОбороты.КоличествоКонечныйОстаток) КоличествоКонОст
    |FROM ерации=:КодыПеремещений,
    |	  Номенклатура,
    |	  Количество) AS ПартииНаличиеОстаткиОбороты
    |GROUP BY ПартииНаличиеОстаткиОбороты.Номенклатура,
ПартииНаличиеОстаткиОбороты.Период";
  




В результате ошибка:
Meta name parser error: это метаимя разрешить невозможно "$РегистрОстаткиОбороты.ПартииНаличие"State 42S22, native 207, message [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'КодОперации'

Как можно ограничить Приход и Расход по коду операции. И по хорошему это должен быть список значений.

Посоветовали использовать совместно 2 вирт. таблицы итогов и оборотов, но мне нужно по периодам разложить НачОст и КонОст.

Может можно как-то написать:
КоличествоПриход = Приход(Количество) Когда (КодОперации В Список);?
Или в виртуальной таблице РегистрОстаткиОбороты вообще нет информации об реквизитах регистра?
  
Наверх
 
IP записан
 
pavel_tr
Senior Member
****
Отсутствует



Сообщений: 279
Местоположение: Казань
Зарегистрирован: 14. Октября 2006
Пол: Мужской
Re: Как наложить условие реквизит регистра остатков в запросе для 1с++?
Ответ #1 - 09. Мая 2010 :: 07:18
Печать  
Реквизит есть, если не ошибаюсь, только в таблице движений, но не остатков
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как наложить условие реквизит регистра остатков в запросе для 1с++?
Ответ #2 - 09. Мая 2010 :: 07:19
Печать  
Реквизиты движений в таблице остатков отсутствуют. Отсюда два варианта:
  • пересчитывать остатки при обходе выборки как

    КонОст = НачОст + Приход - Расход      (1)

    и получить нереальные остатки в конце периода, т.к. учитываются не все движения;
  • скрестить остатки из ВТ ОстаткиОбороты с оборотами из ВТ Обороты и получить отчёт, для которого формула (1) не верна.

Выбери меньшее из двух зол.  Круглые глаза
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
sanches
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 64
Местоположение: Челябинск
Зарегистрирован: 15. Ноября 2006
Пол: Мужской
Re: Как наложить условие реквизит регистра остатков в запросе для 1с++?
Ответ #3 - 09. Мая 2010 :: 07:25
Печать  
Спасибо за оперативность!
Надо подумать.
Просто я сам ни разу итоги не пробовал делать по периодам Улыбка
И еще с прямыми запросами 1с++ не знаком. На ToySQL пишу.
  
Наверх
 
IP записан
 
sanches
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 64
Местоположение: Челябинск
Зарегистрирован: 15. Ноября 2006
Пол: Мужской
Re: Как наложить условие реквизит регистра остатков в запросе для 1с++?
Ответ #4 - 09. Мая 2010 :: 07:32
Печать  
pavel_tr писал(а) 09. Мая 2010 :: 07:18:
Реквизит есть, если не ошибаюсь, только в таблице движений, но не остатков


Да есть, но мне надо видеть по периодам НачОст,Приход,Расход,КонОст.
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Как наложить условие реквизит регистра остатков в запросе для 1с++?
Ответ #5 - 09. Мая 2010 :: 18:11
Печать  
sanches писал(а) 09. Мая 2010 :: 07:32:
pavel_tr писал(а) 09. Мая 2010 :: 07:18:
Реквизит есть, если не ошибаюсь, только в таблице движений, но не остатков


Да есть, но мне надо видеть по периодам НачОст,Приход,Расход,КонОст.

Если не секрет, то как ты собираешься расчитать НачОст? Если что, то напомню, Реквизит есть только у движений, т.е. у приходов и расходов. Будешь все считать движения "с начала времен"?
  
Наверх
ICQ  
IP записан
 
sanches
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 64
Местоположение: Челябинск
Зарегистрирован: 15. Ноября 2006
Пол: Мужской
Re: Как наложить условие реквизит регистра остатков в запросе для 1с++?
Ответ #6 - 10. Мая 2010 :: 08:36
Печать  
Salimbek писал(а) 09. Мая 2010 :: 18:11:
sanches писал(а) 09. Мая 2010 :: 07:32:
pavel_tr писал(а) 09. Мая 2010 :: 07:18:
Реквизит есть, если не ошибаюсь, только в таблице движений, но не остатков


Да есть, но мне надо видеть по периодам НачОст,Приход,Расход,КонОст.

Если не секрет, то как ты собираешься расчитать НачОст? Если что, то напомню, Реквизит есть только у движений, т.е. у приходов и расходов. Будешь все считать движения "с начала времен"?

Я вкурсе, что только для движений реквизит. Вот думаю теперь как быть...
  
Наверх
 
IP записан
 
sanches
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 64
Местоположение: Челябинск
Зарегистрирован: 15. Ноября 2006
Пол: Мужской
Re: Как наложить условие реквизит регистра остатков в запросе для 1с++?
Ответ #7 - 10. Мая 2010 :: 08:40
Печать  
Подскажите еще пожалуйста. ТИС. Как мне выбрать к примеру юр. лицо из такого запроса
Код
Выбрать все
SELECT ПартииНаличиеОстаткиОбороты.Фирма [Фирма $Справочник.Фирмы]
,ПартииНаличиеОстаткиОбороты.Период Месяц
	, Sum(ПартииНаличиеОстаткиОбороты.КоличествоНачальныйОстаток) КоличествоНачОст
	, Sum(ПартииНаличиеОстаткиОбороты.КоличествоПриход) КоличествоПриход
	, Sum(ПартииНаличиеОстаткиОбороты.КоличествоРасход) КоличествоРасход
	, Sum(ПартииНаличиеОстаткиОбороты.КоличествоКонечныйОстаток) КоличествоКонОст
FROM #T909EFB0F64F0492F9DEAA76F58082AC5 AS ПартииНаличиеОстаткиОбороты
LEFT JOIN sc4014 Ф ON Ф.ID =  Фирма
LEFT JOIN sc131 СвоиЮрЛица ON СвоиЮрЛица.ID =  Ф.ЮрЛицо
GROUP BY ПартииНаличиеОстаткиОбороты.Фирма, ПартииНаличиеОстаткиОбороты.Период 


На второй LEFT JOIN ругается:State 42S22, native 207, message [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'ЮрЛицо'.
Как правильно написать, чтобы получить еще информацию о юр лице?
Пробовал писать в параметр "Соединение" для вирт. таблицы, такая же ошибка.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как наложить условие реквизит регистра остатков в запросе для 1с++?
Ответ #8 - 10. Мая 2010 :: 09:09
Печать  
$Ф.ЮрЛицо
  
Наверх
 
IP записан
 
sanches
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 64
Местоположение: Челябинск
Зарегистрирован: 15. Ноября 2006
Пол: Мужской
Re: Как наложить условие реквизит регистра остатков в запросе для 1с++?
Ответ #9 - 10. Мая 2010 :: 09:11
Печать  
Спасибо! Очень довольный
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как наложить условие реквизит регистра остатков в запросе для 1с++?
Ответ #10 - 10. Мая 2010 :: 09:19
Печать  
А почему ты как-то выборочно метапарсером пользуешься?
Вот так ведь краше выглядит:
Код
Выбрать все
LEFT JOIN $Справочник.Фирмы Ф ON Ф.ID =  Фирма 


чем так:
Код
Выбрать все
LEFT JOIN sc4014 Ф ON Ф.ID =  Фирма 

  
Наверх
 
IP записан
 
sanches
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 64
Местоположение: Челябинск
Зарегистрирован: 15. Ноября 2006
Пол: Мужской
Re: Как наложить условие реквизит регистра остатков в запросе для 1с++?
Ответ #11 - 10. Мая 2010 :: 09:51
Печать  
Да это я текст взял из окна сообщений, который выводится в режиме отладки. Так-то я пишу
Код
Выбрать все
LEFT JOIN $Справочник.Фирмы Ф ON Ф.ID =  Фирма 

  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать