7.7 Отчет по документу 1С7.7

Тема в разделе "Общие вопросы "1С:Предприятие 7.7"", создана пользователем rshakiro, 29 июл 2011.

  1. TopicStarter Overlay
    rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    День добрый! Имеется отчет в измененной конфигурации 7.7 Автохозяйство, формируется запрос по Документу.Ремонт, выводит все ремонты по Автомобилю за указанный период. Нужно, чтобы в макете группировал ремонты по одной и той же технике, как сделать не могу додуматься. В файле 111.jpg(исходный результат), в файле 123.jpg(нужный результат) Вот текст кода:

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

    Вложения:

    • 111.JPG
      111.JPG
      Размер файла:
      131,4 КБ
      Просмотров:
      129
    • 123.JPG
      123.JPG
      Размер файла:
      204,3 КБ
      Просмотров:
      113
  2. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    При выводе в отчет просто объединять области (при смене техники).
  3. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Ознакомьтесь с разделом получения и работы с областями печатной формы.
  4. TopicStarter Overlay
    rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    Не могу додуматься, где можно ознакомиться с указанным разделом?
  5. TopicStarter Overlay
    rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    Прикрепляю макет, здесь нужно добавить новую область, а затем в модуле объединить!? Какую область добавить вертикальную или горизонтальную? Или новый запрос добавить?

    Вложения:

    • 222.JPG
      222.JPG
      Размер файла:
      223,1 КБ
      Просмотров:
      46
  6. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    ничего добавлять не нужно.
    Принцип такой:
    определяем начальную и конечную строку для одной и той же техники. Колонки известны. Програмно выделяем область. Затем просто применяем метод Объединить()
  7. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Ознакомиться можно в Синтакс-помощнике и в книге "Описание встроенного языка" (идет в комплекте)
  8. TopicStarter Overlay
    rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    Принцип такой:
    определяем начальную и конечную строку для одной и той же техники. Колонки известны. Програмно выделяем область. Затем просто применяем метод Объединить() >>>
    А если запрос по 30 видам техники, как он их объединит? Нужно прописать условие?
    Как метод объединить прописать?
    Код:
    Таблица.Область.Объединить(R7C7:R7C8)
    
    !?
    Покажите пример плиз
  9. TopicStarter Overlay
    rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    Попробовал так:
    Код:
    Таб = СоздатьОбъект("Таблица");
    ВыбОбласть = Таб.Область("R7C7:R7C8");
    ВыбОбласть.Объединить();
    
    эффекта нет
  10. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Хммм.... а где вывод информации в вашем коде?

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