Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Внешний отчет(условия)  (Прочитано 14553 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Aidar
Новенький

kz
Offline Offline

« : 21-07-2017 08:52 » 

Здравствуйте!сделал внешний отчет 1с 8.2!у меня проблема с условиями в форме отчета,есть начало периода и конец периода, а также еще есть сетевой участок, прописал код вроде правильно, но в реальности работает либо период., либо сетевой участок, пробовал в вкладке условия сделать но все равно не получается, пробовал прописывать в коде разные варианты,тоже не получается(работает почему то либо период либо сетевой участок)Как быть?
"ВЫБРАТЬ
                  |   торо_ЗаявкаНаРемонтТранспорт.Транспорт,
                  |   торо_ЗаявкаНаРемонтТранспорт.НормаРасхода,
                  |   торо_ЗаявкаНаРемонтТранспорт.Километры,
                  |   торо_ЗаявкаНаРемонтТранспорт.Расход,
                  |   торо_ЗаявкаНаРемонтТранспорт.ЧасыРаботы,
                  |   торо_ЗаявкаНаРемонтТранспорт.НормаРасходаСпецОборудования,
                  |   торо_ЗаявкаНаРемонт.Ссылка,
                  |   торо_ЗаявкаНаРемонт.Дата,
                  |   торо_ЗаявкаНаРемонт.СетевойУчасток
                  |ИЗ
                  |   Документ.торо_ЗаявкаНаРемонт.Транспорт КАК торо_ЗаявкаНаРемонтТранспорт
                  |      ЛЕВОЕ СОЕДИНЕНИЕ Документ.торо_ЗаявкаНаРемонт КАК торо_ЗаявкаНаРемонт
                  |      ПО торо_ЗаявкаНаРемонтТранспорт.Ссылка = торо_ЗаявкаНаРемонт.Ссылка
               |ГДЕ
          вариант1|    торо_ЗаявкаНаРемонт.Дата МЕЖДУ &НачалоПериода И &КонецПериода
          вариант1|    торо_ЗаявкаНаРемонт.СетевойУчасток = &СетевойУчасток

          вариант2| (&ИспользоватьПериод ИЛИ торо_ЗаявкаНаРемонт.Дата МЕЖДУ &НачалоПериода И &КонецПериода)
          вариант2|  И (&ИспользоватьСУ ИЛИ торо_ЗаявкаНаРемонт.СетевойУчасток = &СетевойУчасток)            

          вариант3| //УсловиеПоСетевомуУчастку";

           вариант3   Если ЗначениеЗаполнено(СетевойУчасток) Тогда
      ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "//УсловиеПоСетевомуУчастку", "
      |   И торо_ЗаявкаНаРемонт.СетевойУчасток = &СетевойУчасток");
      //Описание = Описание + " Сетевой участок - " + СокрЛП(СетевойУчасток.Наименование) + ".";
   КонецЕсли;
Записан
Radistka
Помогающий

ru
Offline Offline
Пол: Женский

« Ответ #1 : 25-08-2017 11:05 » new

Не очень внятно написано, что хочет автор но попытаюсь телепатировать:

допустим, что у автора должно в запросе накладываться условие всегда только одно: либо на период, либо на участок.

тогда, я бы формировала запрос динамически:
Код: (1C v8)
Запрос.Текст = "ВЫБРАТЬ
                  |   торо_ЗаявкаНаРемонтТранспорт.Транспорт,
                  |   торо_ЗаявкаНаРемонтТранспорт.НормаРасхода,
                  |   торо_ЗаявкаНаРемонтТранспорт.Километры,
                  |   торо_ЗаявкаНаРемонтТранспорт.Расход,
                  |   торо_ЗаявкаНаРемонтТранспорт.ЧасыРаботы,
                  |   торо_ЗаявкаНаРемонтТранспорт.НормаРасходаСпецОборудования,
                  |   торо_ЗаявкаНаРемонтТранспорт.Ссылка,
                  |   ЕстьNULL(торо_ЗаявкаНаРемонт.Дата,ДатаВремя(1,1,1)),
                  |   ЕстьNULL(торо_ЗаявкаНаРемонт.СетевойУчасток,Значение(Справочник.СетевойУчасток.ПустаяСсылка))
                  |ИЗ
                  |   Документ.торо_ЗаявкаНаРемонт.Транспорт КАК торо_ЗаявкаНаРемонтТранспорт
                  |      ЛЕВОЕ СОЕДИНЕНИЕ Документ.торо_ЗаявкаНаРемонт КАК торо_ЗаявкаНаРемонт
                  |      ПО торо_ЗаявкаНаРемонтТранспорт.Ссылка = торо_ЗаявкаНаРемонт.Ссылка"

                 +?(ЗначениеЗаполнено(СетевойУчасток),
                   "  И торо_ЗаявкаНаРемонт.СетевойУчасток = &СетевойУчасток",
                   "  И торо_ЗаявкаНаРемонт.Дата МЕЖДУ &НачалоПериода И &КонецПериода");

Есть вариант, что автору необходимо, чтобы условие в отчете отрабатывало только если оно заполнено на форме, тогда последние строки будут выглядеть примерно так:

Код: (1C v8)
+?(ЗначениеЗаполнено(СетевойУчасток), " И торо_ЗаявкаНаРемонт.СетевойУчасток = &СетевойУчасток","")
+?(ЗначениеЗаполнено(НачалоПериода), " И торо_ЗаявкаНаРемонт.Дата >= &НачалоПериода ","")
+?(ЗначениеЗаполнено(КонецПериода),   " И торо_ЗаявкаНаРемонт.Дата <= &КонецПериода","");

Ну и надо обратить внимание автора, на всякий случай, что если он использует левое соединение, то надо бы задать значения полей на случай, если записей во второй таблице не окажется
Если автору такие строки в результате не нужны, значит имеет смысл использовать внутреннее соединение.
            
« Последнее редактирование: 25-08-2017 11:21 от Radistka » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines