Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
15 Дек 2017, 05:48
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Отчет с отбором и без  (Прочитано 2603 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Yeahkaterina

  • *
  • Сообщений: 22
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-03-16
  • Сайт: 
  • Профессия: Бухгалтер
Здравствуйте. Мое задание состоит в том, чтоб сформировать отчет с отбором по контрагентам и без.... Имеется код:

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

      
   
   ВыборкаКонтрагент=Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
   Пока ВыборкаКонтрагент.Следующий() Цикл
      ОблКон.Параметры.Заполнить(ВыборкаКонтрагент);
      ТабДок.Вывести(ОблКон, ВыборкаКонтрагент.Уровень());
      
      ВыборкаДокумент=ВыборкаКонтрагент.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
      Пока ВыборкаДокумент.Следующий() Цикл
         ОблДок.Параметры.Заполнить(ВыборкаДокумент);
         ТабДок.Вывести(ОблДок, ВыборкаДокумент.Уровень());
         
         
               
         
      КонецЦикла;
   КонецЦикла;
   ТабДок.ЗакончитьАвтогруппировкуСтрок();


В рез-те выполнения есть следующие ошибки:
1. если не выбрать из списка контрагент, то ошибка звучит так:"Не задано значение параметра "Контрагенты" ГДЕ ПродажиОбороты.Контрагенты=<<?>>&Контрагенты"
2.если в списке выбрать какой-либо контрагент, то отображается только заголовок и шапка макета


помогите пожалуйста разобраться в чем проблема!


Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Во-первых, условие по Контрагенту надо задавать в параметрах виртуальной таблицы оборотов.

РегистрНакопления.Продажи.Обороты(&НачПериода, &КонПериода, , Контрагенты = &Контрагенты) КАК ПродажиОбороты

Во-вторых, это условие надо "вырезать" и подставлять подстрокой

|  РегистрНакопления.Продажи.Обороты(&НачПериода, &КонПериода, , 
| "+УсловиеКонтрагента+") КАК ПродажиОбороты

а потом вот здесь

Если ЗначениеЗаполнено(Контрагенты) Тогда
    Запрос.УстановитьПараметр("Контрагенты",Контрагенты);
КонецЕсли;

добавляем

УсловиеКонтрагента = "";
Если ЗначениеЗаполнено(Контрагенты) Тогда
    Запрос.УстановитьПараметр("Контрагенты",Контрагенты);
    УсловиеКонтрагента = "Контрагенты = &Контрагенты";
КонецЕсли;
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн Yeahkaterina

  • *
  • Сообщений: 22
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-03-16
  • Сайт: 
  • Профессия: Бухгалтер
Извините, но я не поняла куда именно нужно вставлять эти строки:
|  РегистрНакопления.Продажи.Обороты(&НачПериода, &КонПериода, ,
| "+УсловиеКонтрагента+") КАК ПродажиОбороты

если можно немного подробнее, т.к. я делаю это первый раз :dfbsdfbsdf:

Оффлайн Yeahkaterina

  • *
  • Сообщений: 22
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-03-16
  • Сайт: 
  • Профессия: Бухгалтер
Если заменить код

            | ИЗ
    |  РегистрНакопления.Продажи.Обороты(&НачПериода, &КонПериода, , ) КАК ПродажиОбороты
    |  ГДЕ ПродажиОбороты.контрагенты=&Контрагенты
на
           | ИЗ
           |  РегистрНакопления.Продажи.Обороты(&НачПериода, &КонПериода, ,
           | "+УсловиеКонтрагента+") КАК ПродажиОбороты

и доплнить код

          Если ЗначениеЗаполнено(Контрагенты) Тогда
    Запрос.УстановитьПараметр("Контрагенты",Контрагенты);
КонецЕсли;


Вот Так:


       УсловиеКонтрагента = "";
      Если ЗначениеЗаполнено(Контрагенты) Тогда
      Запрос.УстановитьПараметр("Контрагенты",Контрагенты);
     УсловиеКонтрагента = "Контрагенты = &Контрагенты";
    КонецЕсли;

то
     ошибка такова:

"Переменная не определена (УсловиеКонтрагента)
    | "+<<?>>УсловиеКонтрагента+") КАК ПродажиОбороты (Проверка: Толстый клиент (обычное приложение))"

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Ну УсловиеКонтрагента = ""; вставьте где нибудь в начале процедуры чтобы эта переменка инициализировалась.

Ваша строка такая

|  РегистрНакопления.Продажи.Обороты(&НачПериода, &КонПериода, , ) КАК ПродажиОбороты

и условие ГДЕ надо убрать.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
175 Сообщений
ilyay ilyay
69 Сообщений
oleg-x
48 Сообщений
alex0402
44 Сообщений
AIFrame
39 Сообщений
andron81_81
38 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
Golickoff Golickoff
31 Сообщений
BuhRust
30 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 279
  • Точка Скрытых: 0
  • Точка Пользователей: 4
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal