8.х Изменение запроса

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем mialord, 4 фев 2010.

  1. TopicStarter Overlay
    mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!
    Есть текст запроса из акта взаиморасчетов, стоит задача, позволить выбрать клиенту не только конкретного контрагента, но и группу контрагентов для составления актов.
    Вопрос стоит в следующем, как надо изменить запрос дабы данная задача была выполнима, запрос прилагается
    Код:
    ВЫБРАТЬ
    ХозрасчетныйОбороты.Период КАК Дата,
    ХозрасчетныйОбороты.Регистратор.Номер КАК Номер,
    ХозрасчетныйОбороты.Регистратор КАК Документ,
    ХозрасчетныйОбороты.Субконто2 КАК Договор,
    ВЫБОР
    КОГДА &Валюта = НЕОПРЕДЕЛЕНО
    ТОГДА ХозрасчетныйОбороты.СуммаОборотДт
    ИНАЧЕ ХозрасчетныйОбороты.ВалютнаяСуммаОборотДт
    КОНЕЦ КАК Дебет,
    ВЫБОР
    КОГДА &Валюта = НЕОПРЕДЕЛЕНО
    ТОГДА ХозрасчетныйОбороты.СуммаОборотКт
    ИНАЧЕ ХозрасчетныйОбороты.ВалютнаяСуммаОборотКт
    КОНЕЦ КАК Кредит,
    ЕСТЬNULL(ХозрасчетныйОбороты.Регистратор.НомерВходящегоДокумента, НЕОПРЕДЕЛЕНО) КАК НомерВходящегоДокумента,
    ЕСТЬNULL(ХозрасчетныйОбороты.Регистратор.ДатаВходящегоДокумента, НЕОПРЕДЕЛЕНО) КАК ДатаВходящегоДокумента,
    ХозрасчетныйОбороты.КорСчет,
    ХозрасчетныйОбороты.КорСубконто1,
    ХозрасчетныйОбороты.КорСубконто2,
    ХозрасчетныйОбороты.КорСубконто3,
    ХозрасчетныйОбороты.Валюта,
    ХозрасчетныйОбороты.ВалютнаяСуммаОборот,
    ВЫБОР
    КОГДА ХозрасчетныйОбороты.КорСубконто1 ССЫЛКА Справочник.ПрочиеДоходыИРасходы
    ТОГДА ХозрасчетныйОбороты.КорСубконто1.ВидПрочихДоходовИРасходов
    ИНАЧЕ НЕОПРЕДЕЛЕНО
    КОНЕЦ КАК ВидПрочихДоходовИРасходов,
    ХозрасчетныйОбороты.Счет
    ИЗ
    РегистрБухгалтерии.Хозрасчетный.Обороты(
    &ДатаНачала,
    &ДатаОкончания,
    Регистратор,
    Счет В ИЕРАРХИИ (&ФильтрСписокСчетов),
    &АналитикаРасчетов,
    Организация = &Организация
    И ВЫБОР
    КОГДА &Валюта = НЕОПРЕДЕЛЕНО
    ТОГДА ИСТИНА
    ИНАЧЕ Валюта = &Валюта
    КОНЕЦ
    И Субконто1 = &Контрагент
    И ВЫБОР
    КОГДА &ДоговорКонтрагента = НЕОПРЕДЕЛЕНО
    ТОГДА ИСТИНА
    ИНАЧЕ Субконто2 = &ДоговорКонтрагента
    КОНЕЦ,
    ,
    ) КАК ХозрасчетныйОбороты
    ГДЕ
    ВЫБОР
    КОГДА ХозрасчетныйОбороты.КорСчет В ИЕРАРХИИ (&ФильтрСписокСчетов)
    ТОГДА ВЫБОР
    КОГДА &ДоговорКонтрагента = НЕОПРЕДЕЛЕНО
    ТОГДА (НЕ ХозрасчетныйОбороты.КорСубконто1 = &Контрагент)
    ИНАЧЕ (НЕ(ХозрасчетныйОбороты.КорСубконто1 = &Контрагент
    И ХозрасчетныйОбороты.КорСубконто2 = &ДоговорКонтрагента))
    КОНЕЦ
    ИНАЧЕ ИСТИНА
    КОНЕЦ
    И (НЕ(ВЫБОР
    КОГДА &Валюта = НЕОПРЕДЕЛЕНО
    ТОГДА ХозрасчетныйОбороты.СуммаОборотДт
    ИНАЧЕ ХозрасчетныйОбороты.ВалютнаяСуммаОборотДт
    КОНЕЦ = 0
    И ВЫБОР
    КОГДА &Валюта = НЕОПРЕДЕЛЕНО
    ТОГДА ХозрасчетныйОбороты.СуммаОборотКт
    ИНАЧЕ ХозрасчетныйОбороты.ВалютнаяСуммаОборотКт
    КОНЕЦ = 0))
    
    УПОРЯДОЧИТЬ ПО
    Дата,
    Документ
    
    Текст установки параметров указан ниже
    Код:
    КоличествоСчетов = СписокСчетов.Количество();
    Если ФильтрСписокСчетов = неопределено Тогда
    ФильтрСписокСчетов = Новый массив();
    Для каждого СтрокаСчета Из СписокСчетов Цикл
    Если НЕ ЗначениеЗаполнено(СтрокаСчета.Счет) или СтрокаСчета.УчаствуетВРасчетах = Ложь Тогда
    Продолжить;
    Иначе
    ФильтрСписокСчетов.Добавить(СтрокаСчета.Счет);
    КонецЕсли; 
    КонецЦикла; 
    
    Если ФильтрСписокСчетов.Количество() = 0 Тогда
    ОбщегоНазначения.СообщитьОбОшибке("Неверно задан список счетов, по которым производится сверка!",,,СтатусСообщения.Важное);
    Возврат;
    КонецЕсли;
    
    КонецЕсли; 
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ДатаНачала",    ?(НЕ ЗначениеЗаполнено(ДатаНачала),Неопределено, Новый граница (ДатаНачала,ВидГраницы.Включая)));
    Запрос.УстановитьПараметр("ДатаОкончания", ?(НЕ ЗначениеЗаполнено(ДатаОкончания),неопределено,новый граница(КонецДня(ДатаОкончания), ВидГраницы.Включая)));
    Запрос.УстановитьПараметр("Организация",   Организация);
    //Запрос.УстановитьПараметр("Контрагент",    Контрагент);
    Запрос.УстановитьПараметр("Валюта",        ?(НЕ ЗначениеЗаполнено(ВалютаДокумента) или (ВалютаДокумента = мВалютаРегламентированногоУчета), неопределено,ВалютаДокумента));
    Запрос.УстановитьПараметр("ФильтрСписокСчетов", ФильтрСписокСчетов);
    
    АналитикаРасчетов = новый Массив();
    АналитикаРасчетов.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты);
    АналитикаРасчетов.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры);
    Запрос.УстановитьПараметр("АналитикаРасчетов",    АналитикаРасчетов);
    
    Запрос.УстановитьПараметр("ДоговорКонтрагента", ?(НЕ ЗначениеЗаполнено(ДоговорКонтрагента),Неопределено,ДоговорКонтрагента));
    
    Заранее благодарю откликнувшихся
  2. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Вместо "= &Контрагент", поставить " В ИЕРАРХИИ(&Контрагент)".

    Или я не правильно понял задачу?
  3. TopicStarter Overlay
    mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Всё правильно Вы поняли, это я уже туплю :unsure:, работы много, я так и сделал.
    Благодарю за ответ, сейчас еще потестю на наличие ошибок в выборки данных.
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    У 1С есть ошибка в этом коде, надо заменить этот участок:
    Код:
    "ВЫБОР
    КОГДА ХозрасчетныйОбороты.КорСчет В ИЕРАРХИИ (&ФильтрСписокСчетов)
    ТОГДА ВЫБОР
    КОГДА &ДоговорКонтрагента = НЕОПРЕДЕЛЕНО
    ТОГДА (НЕ ХозрасчетныйОбороты.КорСубконто1 = &Контрагент)
    ИНАЧЕ (НЕ(ХозрасчетныйОбороты.КорСубконто1 = &Контрагент
    И ХозрасчетныйОбороты.КорСубконто2 = &ДоговорКонтрагента))
    КОНЕЦ
    ИНАЧЕ ИСТИНА
    КОНЕЦ"
    
    на:
    Код:
    "ВЫБОР
    КОГДА ХозрасчетныйОбороты.КорСчет В ИЕРАРХИИ (&ФильтрСписокСчетов)
    ТОГДА ВЫБОР
    КОГДА &ДоговорКонтрагента = НЕОПРЕДЕЛЕНО
    ТОГДА (НЕ (ХозрасчетныйОбороты.КорСубконто1 = &Контрагент И ХозрасчетныйОбороты.КорСубконто2 = ХозрасчетныйОбороты.Субконто2))
    ИНАЧЕ (НЕ(ХозрасчетныйОбороты.КорСубконто1 = &Контрагент
    И ХозрасчетныйОбороты.КорСубконто2 = &ДоговорКонтрагента))
    КОНЕЦ
    ИНАЧЕ ИСТИНА
    КОНЕЦ"
    
    Сама ошибка описана тут код ошибки 10044928 (для бухни)

Поделиться этой страницей