Имя: Пароль:
1C
1С v8
Запрос,лишняя группировка
,
0 НикДляЗапросов
 
15.08.12
12:14
Это запрос Акта сверки, если был взаимозачет 60 - 62 счет регистратор один и тотоже и строчка с КО и ДО оборотом вырезается, как бы этого избежать?

   Запрос = Новый Запрос;
   Запрос.УстановитьПараметр("ДатаНачала",    ?(НЕ ЗначениеЗаполнено(ДатаНачала),Неопределено,ДатаНачала));
   Запрос.УстановитьПараметр("ДатаОкончания", ?(НЕ ЗначениеЗаполнено(ДатаОкончания),Неопределено,КонецДня(ДатаОкончания)));
   //Запрос.УстановитьПараметр("ДатаНачала",    ?(НЕ ЗначениеЗаполнено(ДатаНачала),Неопределено,Новый Граница (ДатаНачала,ВидГраницы.Включая)));
   //Запрос.УстановитьПараметр("ДатаОкончания", ?(НЕ ЗначениеЗаполнено(ДатаОкончания),Неопределено,Новый Граница(КонецДня(ДатаОкончания),ВидГраницы.Включая)));
   Запрос.УстановитьПараметр("Организация",   Организация);
   Запрос.УстановитьПараметр("Валюта",        ?(Валюта = мВалютаРегламентированногоУчета,Неопределено,Валюта));
   Запрос.УстановитьПараметр("ФильтрСписокСчетов", ФильтрСписокСчетов);
   
   Если Не ЗначениеЗаполнено(Валюта) или Валюта = мВалютаРегламентированногоУчета Тогда
       СверкаВВалютеРегламентированногоУчета = Истина;
   Иначе
       СверкаВВалютеРегламентированногоУчета = Ложь;
       Запрос.УстановитьПараметр("Валюта", Валюта);
   КонецЕсли;    
   
   // Определим условия для контрагента и договора
   Если Не ЗначениеЗаполнено(Контрагент) Тогда
       КонтрагентУсловие = "";
   Иначе
       Если Контрагент.ЭтоГруппа Тогда
           КонтрагентУсловие = "И Субконто1 В ИЕРАРХИИ (&Контрагент)";
       Иначе
           КонтрагентУсловие = "И Субконто1 = &Контрагент";
       КонецЕсли;    
       Запрос.УстановитьПараметр("Контрагент", Контрагент);
   КонецЕсли;    
   
   
   Если СписокДоговоров.Количество()=0 Тогда
       ДоговорКонтрагентаУсловие = "";
       Запрос.УстановитьПараметр("ДК", 0);
       Запрос.УстановитьПараметр("ДоговорКонтрагента", ФильтрСписокДоговоров);
   Иначе
       //Если ДоговорКонтрагента.ЭтоГруппа Тогда
           ДоговорКонтрагентаУсловие = "И Субконто2 В ИЕРАРХИИ(&ДоговорКонтрагента)";
       //Иначе
           //ДоговорКонтрагентаУсловие = "И Субконто2 = &ДоговорКонтрагента";
       //КонецЕсли;
       Запрос.УстановитьПараметр("ДК", 1);
       Запрос.УстановитьПараметр("ДоговорКонтрагента", ФильтрСписокДоговоров);
   КонецЕсли;    
   
   
   АналитикаРасчетов = новый Массив();
   АналитикаРасчетов.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты);
   АналитикаРасчетов.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры);
   Запрос.УстановитьПараметр("АналитикаРасчетов", АналитикаРасчетов);
   
   
   Запрос.Текст = "ВЫБРАТЬ
                   |    ХозрасчетныйОбороты.Субконто1 КАК Контрагент,
                   |    ХозрасчетныйОбороты.Субконто1.Наименование КАК КонтрагентНаименование,
                   |    ХозрасчетныйОбороты.Субконто1.ИНН КАК КонтрагентИНН,
                   |    ХозрасчетныйОбороты.Субконто1.КПП КАК КонтрагентКПП,
                   |    ХозрасчетныйОбороты.Субконто1.ОсновноеКонтактноеЛицо.Наименование КАК ПредставительКонтрагента,
                   |    ХозрасчетныйОбороты.Субконто1.ОсновноеКонтактноеЛицо.Должность КАК ДолжностьПредставителяКонтрагента,
                   |    ХозрасчетныйОбороты.Субконто2 КАК Договор,
                   |    ХозрасчетныйОбороты.Регистратор КАК Документ,
                   |    ХозрасчетныйОбороты.Регистратор.Дата КАК Дата,
                   |    ХозрасчетныйОбороты.Регистратор.Номер КАК Номер,
                   |    "+?(СверкаВВалютеРегламентированногоУчета,
                           "СУММА(ХозрасчетныйОбороты.СуммаОборотДт) КАК Дебет,
                           |СУММА(ХозрасчетныйОбороты.СуммаОборотКт) КАК Кредит,",
                           "СУММА(ХозрасчетныйОбороты.ВалютнаяСуммаОборотДт) КАК Дебет,
                           |СУММА(ХозрасчетныйОбороты.ВалютнаяСуммаОборотКт) КАК Кредит,")+"
                   |    0 КАК ОстатокНаНачало,
                   // Это для формирования представления документа
                   |    ЕСТЬNULL(ХозрасчетныйОбороты.Регистратор.НомерВходящегоДокумента, НЕОПРЕДЕЛЕНО) КАК НомерВходящегоДокумента,
                   |    ЕСТЬNULL(ХозрасчетныйОбороты.Регистратор.ДатаВходящегоДокумента, НЕОПРЕДЕЛЕНО) КАК ДатаВходящегоДокумента
                   |    "+?(ВыводитьПолныеНазванияДокументов,"",",
                           |    ХозрасчетныйОбороты.КорСчет КАК КорСчет,
                           |    ХозрасчетныйОбороты.КорСубконто1 КАК КорСубконто1,
                           |    ВЫБОР
                           |        КОГДА ХозрасчетныйОбороты.КорСубконто1 ССЫЛКА Справочник.ПрочиеДоходыИРасходы
                           |            ТОГДА ХозрасчетныйОбороты.КорСубконто1.ВидПрочихДоходовИРасходов
                           |        ИНАЧЕ НЕОПРЕДЕЛЕНО
                           |    КОНЕЦ КАК ВидПрочихДоходовИРасходов,
                           |    ХозрасчетныйОбороты.Счет КАК Счет")+"
                   |ИЗ
                   |    РегистрБухгалтерии.Хозрасчетный.Обороты(
                   |            &ДатаНачала,
                   |            &ДатаОкончания,
                   |            Регистратор,
                   |            Счет В ИЕРАРХИИ (&ФильтрСписокСчетов),
                   |            &АналитикаРасчетов,
                   |            Организация = &Организация
                   |            "+?(СверкаВВалютеРегламентированногоУчета,"","И Валюта = &Валюта")+"
                   |           "+КонтрагентУсловие+"
                   |            "+ДоговорКонтрагентаУсловие+",
                   |            ,
                   |            ) КАК ХозрасчетныйОбороты
                   |ГДЕ
                   |    ВЫБОР
                   |        КОГДА ХозрасчетныйОбороты.КорСчет В ИЕРАРХИИ (&ФильтрСписокСчетов)
                   |            ТОГДА ВЫБОР
                   |                    КОГДА &ДК = 0
                   |                        ТОГДА (НЕ ХозрасчетныйОбороты.КорСубконто1 = ХозрасчетныйОбороты.Субконто1)
                   |                    ИНАЧЕ (НЕ(ХозрасчетныйОбороты.КорСубконто1 = ХозрасчетныйОбороты.Субконто1
                   |                                И ХозрасчетныйОбороты.КорСубконто2 = ХозрасчетныйОбороты.Субконто2))
                   |                КОНЕЦ
                   |        ИНАЧЕ ИСТИНА
                   |    КОНЕЦ
                   |    "+?(СверкаВВалютеРегламентированногоУчета,
                           "И (ХозрасчетныйОбороты.СуммаОборотДт <> 0 ИЛИ ХозрасчетныйОбороты.СуммаОборотКт <> 0)",
                           "И (ХозрасчетныйОбороты.ВалютнаяСуммаОборотДт <> 0 ИЛИ ХозрасчетныйОбороты.ВалютнаяСуммаОборотКт <> 0)")+"
                   |
                   |СГРУППИРОВАТЬ ПО
                   |    ХозрасчетныйОбороты.Субконто1,
                   |    ХозрасчетныйОбороты.Субконто1.Наименование,
                   |    ХозрасчетныйОбороты.Субконто1.ИНН,
                   |    ХозрасчетныйОбороты.Субконто1.КПП,
                   |    ХозрасчетныйОбороты.Субконто1.ОсновноеКонтактноеЛицо.Наименование,
                   |    ХозрасчетныйОбороты.Субконто1.ОсновноеКонтактноеЛицо.Должность,
                   |    ХозрасчетныйОбороты.Субконто2,
                   |    ХозрасчетныйОбороты.Регистратор,
                   |    ХозрасчетныйОбороты.Регистратор.Дата,
                   |    ХозрасчетныйОбороты.Регистратор.Номер,
                   |    0,
                   // Это для формирования представления документа
                   |    ЕСТЬNULL(ХозрасчетныйОбороты.Регистратор.НомерВходящегоДокумента, НЕОПРЕДЕЛЕНО),
                   |    ЕСТЬNULL(ХозрасчетныйОбороты.Регистратор.ДатаВходящегоДокумента, НЕОПРЕДЕЛЕНО)
                   |    "+?(ВыводитьПолныеНазванияДокументов,"",",
                           |    ХозрасчетныйОбороты.КорСчет,
                           |    ХозрасчетныйОбороты.КорСубконто1,
                           |    ВЫБОР
                           |        КОГДА ХозрасчетныйОбороты.КорСубконто1 ССЫЛКА Справочник.ПрочиеДоходыИРасходы
                           |            ТОГДА ХозрасчетныйОбороты.КорСубконто1.ВидПрочихДоходовИРасходов
                           |        ИНАЧЕ НЕОПРЕДЕЛЕНО
                           |    КОНЕЦ,
                           |    ХозрасчетныйОбороты.Счет")+"
                   |
                   |ОБЪЕДИНИТЬ ВСЕ
                   |
                   |ВЫБРАТЬ
                   |    ХозрасчетныйОстатки.Субконто1,
                   |    ХозрасчетныйОстатки.Субконто1.Наименование,
                   |    ХозрасчетныйОстатки.Субконто1.ИНН,
                   |    ХозрасчетныйОстатки.Субконто1.КПП,
                   |    ХозрасчетныйОстатки.Субконто1.ОсновноеКонтактноеЛицо.Наименование КАК ПредставительКонтрагента,
                   |    ХозрасчетныйОстатки.Субконто1.ОсновноеКонтактноеЛицо.Должность КАК ДолжностьПредставителяКонтрагента,
                   |    ХозрасчетныйОстатки.Субконто2,
                   |    """",
                   |    """",
                   |    """",
                   |    0,
                   |    0,
                   |    "+?(СверкаВВалютеРегламентированногоУчета,
                           "ХозрасчетныйОстатки.СуммаОстаток,",
                           "ХозрасчетныйОстатки.ВалютнаяСуммаОстаток,")+"
                   // Это для формирования представления документа
                   |    """",
                   |    """"
                   |    "+?(ВыводитьПолныеНазванияДокументов,"",",
                           |    """",
                           |    """",
                           |    """",
                           |    """"")+"
                   |ИЗ
                   |    РегистрБухгалтерии.Хозрасчетный.Остатки(
                   |            &ДатаНачала,
                   |            Счет В ИЕРАРХИИ (&ФильтрСписокСчетов),
                   |            &АналитикаРасчетов,
                   |            Организация = &Организация
                   |            "+?(СверкаВВалютеРегламентированногоУчета,"","И Валюта = &Валюта")+"
                   |           "+КонтрагентУсловие+"
                   |            "+ДоговорКонтрагентаУсловие+")
                   |                КАК ХозрасчетныйОстатки
                   |УПОРЯДОЧИТЬ ПО
                   |    КонтрагентНаименование,
                   // Если необходимо разбить по договорам, тогда нужно добавить дополнительный
                   // уровень итогов и сортировки по Договору
                   |"+?(РазбитьПоДоговорам,
                           "    Договор,
                           |    Дата,
                           |    Документ
                           |
                           |ИТОГИ
                           |    СУММА(Дебет),
                           |    СУММА(Кредит),
                           |    СУММА(ОстатокНаНачало)
                           |ПО
                           |    Контрагент,
                           |    Договор",
                           //|    Документ",
                           
                           "    Дата,
                           |    Документ
                           |
                           |ИТОГИ
                           |    СУММА(Дебет),
                           |    СУММА(Кредит),
                           |    СУММА(ОстатокНаНачало)
                           |ПО
                           |    Контрагент");
1 DrShad
 
15.08.12
12:17
ахренел чтоли? кто все это читать будет?
2 НикДляЗапросов
 
15.08.12
12:20
Да я так )), вдруг кому скучно )
3 PuhUfa
 
15.08.12
12:20
(0) куда она вырезается? и кто ее вырезает?
4 Лоботряс
 
15.08.12
12:21
Как вариант периодичность по записи поставить в оборотах
5 НикДляЗапросов
 
15.08.12
12:31
Надо както добится чтобы договору не сворачивался, так как договоры на 60 и 62 разные
6 Лоботряс
 
15.08.12
12:34
(5)Ну вывести поля субконто, значения которых у этих счетов разные. Ну или договор вывести. В чем сложность то?
7 НикДляЗапросов
 
15.08.12
12:37
(6) Сложность? В нехватке знаний и опыта
8 UnAmerican
 
15.08.12
12:45
Вот тебе ответ.
// Если необходимо разбить по договорам, тогда нужно добавить дополнительный

                   // уровень итогов и сортировки по Договору

                   |"+?(РазбитьПоДоговорам,
                           "    Договор,
                           |    Дата,
                           |    Документ
                           |
                           |ИТОГИ
                           |    СУММА(Дебет),
                           |    СУММА(Кредит),
                           |    СУММА(ОстатокНаНачало)
                           |ПО
                           |    Контрагент,
                           |    Договор",
                           //|    Документ",

                           
                           "    Дата,
                           |    Документ
                           |
                           |ИТОГИ
                           |    СУММА(Дебет),
                           |    СУММА(Кредит),
                           |    СУММА(ОстатокНаНачало)
                           |ПО
                           |    Контрагент");
9 НикДляЗапросов
 
15.08.12
12:47
Т.е.
Сначала строчка выбирается при кореспонденции 60 с 62
Потом 62 с 60
Соответственно они сгруппировываются, это я понимаю как переписать запрос я не знаю у меня все время какието ошибки
10 НикДляЗапросов
 
15.08.12
12:48
(8) Это не ответ, до этого место уже снруппировалось
11 НикДляЗапросов
 
15.08.12
12:48
|    Документ", -- я эту строчку пытался добавить, но групировка произошла раннее
12 Лоботряс
 
15.08.12
12:51
А договор уже есть , значит они одинаковые. Ну добавь в выбранные поля и в СГРУППИРОВАТЬ ПО
                   |    ХозрасчетныйОбороты.СчетДт,
|    ХозрасчетныйОбороты.СчетКт,
13 Лоботряс
 
15.08.12
12:57
Ну в смысле и заменить таблицу обороты на ОборотыДтКт
14 НикДляЗапросов
 
15.08.12
13:13
Ладно всем спасибо
15 НикДляЗапросов
 
15.08.12
18:11
|            ТОГДА ВЫБОР
                   |                    КОГДА &ДК = 0
                   |                        ТОГДА (НЕ (ХозрасчетныйОбороты.КорСубконто1 = ХозрасчетныйОбороты.Субконто1
                   |                                И ХозрасчетныйОбороты.КорСубконто2 = ХозрасчетныйОбороты.Субконто2))
                   |                    ИНАЧЕ (НЕ
(ХозрасчетныйОбороты.КорСубконто1 = ХозрасчетныйОбороты.Субконто1
                   |                                И ХозрасчетныйОбороты.КорСубконто2 = ХозрасчетныйОбороты.Субконто2))
Основная теорема систематики: Новые системы плодят новые проблемы.