Имя: Пароль:
1C
1С v8
регистратор в запросе
0 vip67
 
09.04.12
09:50
Добрый день! 1с 8.2, ЗуП. подскажите, как в следующем запросе поставить условие на определенный регистратор (нужно исключить строки, записанные определенным видом документа)

   // Заполнение ТЧ Взносы, ВзхносыФОТ
   Запрос = Новый Запрос;
   Запрос.УстановитьПараметр("парамДата",    Дата);
   Запрос.УстановитьПараметр("парамКонМесяца", КонецМесяца(Дата)+1);  
   Запрос.УстановитьПараметр("парамНачало",    НачалоМесяца(ПериодРегистрации));
   Запрос.УстановитьПараметр("парамКонец",        КонецМесяца(ПериодРегистрации));
   Запрос.УстановитьПараметр("ПериодРегистрации",    ПериодРегистрации);
   Запрос.УстановитьПараметр("парамОрганизация",    Организация);
   
   ТекстЗапроса = "
   |ВЫБРАТЬ РАЗРЕШЕННЫЕ
   |    Взаиморасчеты.Налог                            КАК Налог,
   |    Взаиморасчеты.СтатьяНалоговойДекларации        КАК СтатьяНалоговойДекларации,
   |    ВидыРасчетов.ВидРасчета.СпособРасчета        КАК СпособРасчета,
   |    Взаиморасчеты.ПериодВзаиморасчетов            КАК ПериодВзаиморасчетов,
   |    Взаиморасчеты.БазаОстаток                    КАК База,
   |    Взаиморасчеты.БазаВзносаОстаток                КАК БазаВзноса,
   |    Взаиморасчеты.РезультатОстаток                КАК Результат
   |
   |        ИЗ РегистрНакопления.ВзаиморасчетыПоВзносамВФонды.Остатки( &парамКонМесяца,
   |            Организация = &парамОрганизация
   |        " + ?(ВидВыплаты = Справочники.ВидыВыплат.ОчереднаяПогашениеДолговВзносы," И    ПериодВзаиморасчетов <= &ПериодРегистрации"," И    ПериодВзаиморасчетов = &ПериодРегистрации") + "
   |    ) КАК Взаиморасчеты
   |ЛЕВОЕ СОЕДИНЕНИЕ  РегистрСведений.ВидыРасчетовВзносовВФонды.СрезПоследних(&парамДата) КАК ВидыРасчетов
   |ПО Взаиморасчеты.Налог = ВидыРасчетов.Налог
   |
   |УПОРЯДОЧИТЬ ПО Взаиморасчеты.Налог.Код
   |";
1 Wobland
 
09.04.12
09:51
>(нужно исключить строки, записанные определенным видом документа)
ГДЕ НЕ Регистратор ССЫЛКА...
2 cViper
 
09.04.12
09:52
ГДЕ
   НЕ Регистратор ССЫЛКА Документ.твойДокумент
3 КМ155
 
09.04.12
09:53
(0) где тизнч(...)<>Тип(Документ.КакойНеНужен)
4 vip67
 
09.04.12
09:54
я делал так:
регистратор <> документ.платежноепоручениеисходящее, ругалось что нету колонки "регистратор"
5 vip67
 
09.04.12
09:54
спс, попробую
6 Jstunner
 
09.04.12
09:55
(4) а его и нет в ВТ остатков
7 Wobland
 
09.04.12
09:56
+(6) пока не указана периодичность
8 ssh2006
 
09.04.12
09:56
> ...исключить строки, записанные определенным видом документа
Отсюда исключить:
РегистрНакопления.ВзаиморасчетыПоВзносамВФонды.Остатки?
9 Ненавижу 1С
 
гуру
09.04.12
09:56
остатки нельзя получить по части записей, только "ручками собирать"
10 butterbean
 
09.04.12
09:56
(7) в остатках??
11 skiller3000
 
09.04.12
09:56
оборот с нулевой даты на дату остатков с периодичностью регистратор и условием на тип регистратора - чем больше регистр - тем дольше работает такой запрос
12 Ненавижу 1С
 
гуру
09.04.12
09:56
(7) >>пока не указана периодичность
у остатков, ага
13 Wobland
 
09.04.12
09:57
(10) нуда, ерунду сказал ;)
14 DarKySiK
 
09.04.12
09:58
(7)Кто-то сегодня не проснулся.
15 skiller3000
 
09.04.12
10:02
типа

|ВЫБРАТЬ РАЗРЕШЕННЫЕ
|    Взаиморасчеты.Налог                            КАК Налог,
|    Взаиморасчеты.СтатьяНалоговойДекларации        КАК СтатьяНалоговойДекларации,
|    ВидыРасчетов.ВидРасчета.СпособРасчета        КАК СпособРасчета,
|    Взаиморасчеты.ПериодВзаиморасчетов            КАК ПериодВзаиморасчетов,
|    СУММА(Взаиморасчеты.БазаОборот)                    КАК База,
|    СУММА(Взаиморасчеты.БазаВзносаОборот)                КАК БазаВзноса,
|    СУММА(Взаиморасчеты.РезультатОборот)                КАК Результат
|
|        ИЗ РегистрНакопления.ВзаиморасчетыПоВзносамВФонды.Обороты(, &парамКонМесяца, Регистратор, ........) КАК Взаиморасчеты
ГДЕ Взаиморасчеты.Регистратор ССЫЛКА ТвойТип

желательно конечно это все во временную таблицу, а потом уже делать соединения
16 vip67
 
09.04.12
10:02
(8) да, отсюда.
17 PR
 
09.04.12
10:06
16 постов и ни одного с верным ответом :))
Нужно просто обычно тупо посчитать остатки по виртуальной таблице и объединить это с таблицей обычных движений по одному регистратору с отрицательными суммами.
18 Ненавижу 1С
 
гуру
09.04.12
10:07
(17) а вот и КО
19 Никола_
Питерский
 
09.04.12
10:18
(17) Спасибо КЭП !
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший