7.7 помогите сделать выборку в отчете

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем AD1986, 23 мар 2012.

  1. TopicStarter Overlay
    AD1986
    Offline

    AD1986 Опытный в 1С

    Регистрация:
    8 фев 2011
    Сообщения:
    138
    Симпатии:
    0
    Баллы:
    26
    Пожалуйста подскажить есть 1с 7.7 Беларусь ЮКОЛА . Типовой отчет Реализация по договорам, в формк можно выбрать дату, но мне нужно было еще дабавить выбор по наменклатуре и контрагенту, по номенклатуре выбирает а вот по котрагету определенному нет может кто подскжит что я не так сделлал код ниже скриншот тоже имееться буду очень благодарен:

    [CODE1C]
    Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб,ВыбДоговора;


    ВыбДоговора= СоздатьОбъект("Справочник.Договора");

    ВыбДоговора.ИспользоватьВладельца(ВыбКонтрагента);
    ВыбДоговора.ВыбратьЭлементы();
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Товар = Документ.Накладная.Товар;
    |ТекущийДокумент = Документ.Накладная.ТекущийДокумент;
    |Получатель = Документ.Накладная.Получатель;
    |Договор = Документ.Накладная.Договор;
    |Владелец = Документ.Накладная.ВладелецТранспорта;
    |Количество = Документ.Накладная.Количество;
    |СуммаСНДС = Документ.Накладная.СуммаСНДС;
    |Функция КолДок = Счётчик(ТекущийДокумент);
    |Функция КоличествоСумма = Сумма(Количество);
    |Функция СуммаСНДССумма = Сумма(СуммаСНДС);
    |Группировка Получатель упорядочить по Получатель.наименование без групп;
    |Группировка Договор;
    |Группировка Товар;
    |Группировка ТекущийДокумент;
    |Условие(Товар В ВыбНоменклатура);
    |Условие(Договор В ВыбДоговора);
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;

    // Подготовка к заполнению выходных форм данными запроса
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    // Заполнение полей "Заголовок"
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Пока Запрос.Группировка(1) = 1 Цикл
    Если Запрос.Товар.ПринадлежитГруппе(ВыбНоменклатура)=1 Тогда
    Если Запрос.Товар.ЭтоГруппа()=0 Тогда
    // Заполнение полей Получатель
    Таб.ВывестиСекцию("Получатель");
    КонецЕсли;
    КонецЕсли;
    Пока Запрос.Группировка(2) = 1 Цикл
    // Заполнение полей Договор
    Таб.ВывестиСекцию("Договор");
    Пока Запрос.Группировка(3) = 1 Цикл
    // Заполнение полей Товар
    Если Запрос.КолДок=1 Тогда
    Пока Запрос.Группировка(4) = 1 Цикл
    // Заполнение полей ТекущийДокумент
    Таб.ВывестиСекцию("ТоварДок");

    КонецЦикла;

    Иначе
    Таб.ВывестиСекцию("Товар");
    Пока Запрос.Группировка(4) = 1 Цикл
    // Заполнение полей ТекущийДокумент
    Таб.ВывестиСекцию("Док");

    КонецЦикла;
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
    // Заполнение полей "Итого"
    // Вывод заполненной формы
    Таб.ТолькоПросмотр(1);
    Таб.ПараметрыСтраницы(1,,,,3);
    Таб.Показать("Сформировать", "");
    КонецПроцедуры

    ВыбНачпериода=НачалоПериодаБИ();
    ВыбКонПериода=КонецПериодаБИ();
    [/CODE1C]

    Вложения:

    • 22.JPG
      22.JPG
      Размер файла:
      18,2 КБ
      Просмотров:
      38
  2. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    [CODE1C]ТекстЗапроса =
    "
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Товар = Документ.Накладная.Товар;
    |ТекущийДокумент = Документ.Накладная.ТекущийДокумент;
    |Получатель = Документ.Накладная.Получатель;
    |Договор = Документ.Накладная.Договор;
    |Владелец = Документ.Накладная.ВладелецТранспорта;
    |Количество = Документ.Накладная.Количество;
    |СуммаСНДС = Документ.Накладная.СуммаСНДС;
    |Функция КолДок = Счётчик(ТекущийДокумент);
    |Функция КоличествоСумма = Сумма(Количество);
    |Функция СуммаСНДССумма = Сумма(СуммаСНДС);
    |Группировка Получатель упорядочить по Получатель.наименование без групп;
    |Группировка Договор;
    |Группировка Товар;
    |Группировка ТекущийДокумент;
    |";

    Если ВыбКонтрагента.Выбран() = 1 Тогда
    ТекстЗапроса = ТекстЗапроса + "
    |Условие (Получатель в ВыбКонтрагента);";
    Иначе
    Если ВыбНоменклатура.Выбран() = 1 Тогда
    ТекстЗапроса = ТекстЗапроса + "
    |Условие (Товар в ВыбНоменклатура);";
    Иначе[/CODE1C]
  3. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    AD1986, убедительная просьба пользоваться тегами. Я кажется вас уже предупреждал.
  4. TopicStarter Overlay
    AD1986
    Offline

    AD1986 Опытный в 1С

    Регистрация:
    8 фев 2011
    Сообщения:
    138
    Симпатии:
    0
    Баллы:
    26
    Я извеняюсь изменил код ничего не выводит вообще не по товару не по контрагенту((
    Код:
    //*******************************************
    // Процедура генерации запроса Сформировать.
    //
    Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб,ВыбДоговора;
    
    
    ВыбДоговора= СоздатьОбъект("Справочник.Договора");
    
    ВыбДоговора.ИспользоватьВладельца(ВыбКонтрагента);
    ВыбДоговора.ВыбратьЭлементы();
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Товар = Документ.Накладная.Товар;
    |ТекущийДокумент = Документ.Накладная.ТекущийДокумент;
    |Получатель = Документ.Накладная.Получатель;
    |Договор = Документ.Накладная.Договор;
    |Владелец = Документ.Накладная.ВладелецТранспорта;
    |Количество = Документ.Накладная.Количество;
    |СуммаСНДС = Документ.Накладная.СуммаСНДС;
    |Функция КолДок = Счётчик(ТекущийДокумент);
    |Функция КоличествоСумма = Сумма(Количество);
    |Функция СуммаСНДССумма = Сумма(СуммаСНДС);
    |Группировка Получатель упорядочить по Получатель.наименование без групп;
    |Группировка Договор;
    |Группировка Товар;
    |Группировка ТекущийДокумент;
    |";
    Если ВыбКонтрагента.Выбран() = 1 Тогда
    ТекстЗапроса = ТекстЗапроса + "
    |Условие (Получатель в ВыбКонтрагента);";
    Иначе
    Если ВыбНоменклатура.Выбран() = 1 Тогда
    ТекстЗапроса = ТекстЗапроса + "
    |Условие (Товар в ВыбНоменклатура);";
    Иначе
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    // Подготовка к заполнению выходных форм данными запроса
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    // Заполнение полей "Заголовок"
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Пока Запрос.Группировка(1) = 1 Цикл
    Если Запрос.Товар.ПринадлежитГруппе(ВыбНоменклатура)=1 Тогда
    Если Запрос.Товар.ЭтоГруппа()=0 Тогда
    // Заполнение полей Получатель
    Таб.ВывестиСекцию("Получатель");
    КонецЕсли;
    КонецЕсли;
    Пока Запрос.Группировка(2) = 1 Цикл
    // Заполнение полей Договор
    Таб.ВывестиСекцию("Договор");
    Пока Запрос.Группировка(3) = 1 Цикл
    // Заполнение полей Товар
    Если Запрос.КолДок=1  Тогда
    Пока Запрос.Группировка(4) = 1 Цикл
    // Заполнение полей ТекущийДокумент
    Таб.ВывестиСекцию("ТоварДок");
    
    КонецЦикла;
    
    Иначе
    Таб.ВывестиСекцию("Товар");
    Пока Запрос.Группировка(4) = 1 Цикл
    // Заполнение полей ТекущийДокумент
    Таб.ВывестиСекцию("Док");
    
    КонецЦикла;
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    КонецЦикла; 
    // Заполнение полей "Итого"
    // Вывод заполненной формы
    Таб.ТолькоПросмотр(1);
    Таб.ПараметрыСтраницы(1,,,,3);
    Таб.Показать("Сформировать", "");
    КонецПроцедуры
    ВыбНачпериода=НачалоПериодаБИ();
    ВыбКонПериода=КонецПериодаБИ();
  5. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Там где условия добавляются исправьте (опечатался):
    [CODE1C]Если ВыбКонтрагента.Выбран() = 1 Тогда
    ТекстЗапроса = ТекстЗапроса + "
    |Условие (Получатель в ВыбКонтрагента);";
    КонецЕсли;
    Если ВыбНоменклатура.Выбран() = 1 Тогда
    ТекстЗапроса = ТекстЗапроса + "
    |Условие (Товар в ВыбНоменклатура);";
    КонецЕсли;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;[/CODE1C]

    P.S. И кстати:
    1. ВыбДоговора (и все конструкции с ним связанные) не нужны.
    2. Конструкция Запрос.Товар.ПринадлежитГруппе(ВыбНоменклатура)=1 тоже не нужна.
    3. Конструкция Если Запрос.Товар.ЭтоГруппа()=0 Тогда не обязательна (можно в тексте запроса указать без групп по группировке Товар)
  6. TopicStarter Overlay
    AD1986
    Offline

    AD1986 Опытный в 1С

    Регистрация:
    8 фев 2011
    Сообщения:
    138
    Симпатии:
    0
    Баллы:
    26
    неа все равно что то нето не выводит ничего не по номенклатуре ни по контрагенту

    Я извеняюсь выводит по наменклатуре а вот по контрагенту все та же ситуация ничего не выводит
  7. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    А так:
    [CODE1C]Если ВыбКонтрагента.Выбран() = 1 Тогда
    Если ВыбКонтрагента.ЭтоГруппа() = 1 Тогда
    ТекстЗапроса = ТекстЗапроса +
    "
    |Условие (Получатель в ВыбКонтрагента);
    |";
    Иначе
    ТекстЗапроса = ТекстЗапроса +
    "
    |Условие (Получатель = ВыбКонтрагента);
    |";
    КонецЕсли;
    КонецЕсли;
    Если ВыбНоменклатура.Выбран() = 1 Тогда
    Если ВыбНоменклатура.ЭтоГруппа() = 1 Тогда
    ТекстЗапроса = ТекстЗапроса +
    "
    |Условие (Товар в ВыбНоменклатура);
    |";
    Иначе
    ТекстЗапроса = ТекстЗапроса +
    "
    |Условие (Товар = ВыбНоменклатура);
    |";
    КонецЕсли;
    КонецЕсли;[/CODE1C]

    P.S. Данные по вашему отбору точно есть?
  8. TopicStarter Overlay
    AD1986
    Offline

    AD1986 Опытный в 1С

    Регистрация:
    8 фев 2011
    Сообщения:
    138
    Симпатии:
    0
    Баллы:
    26
    Все извеняюсь еще раз все работает огромное огромное спасибо
  9. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    [off]
    Для спасибо кнопочка [​IMG] есть. :rolleyes:
    [/off]

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