Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Не правильно формирует отчет , выбор начала и конца периода не влияет на результат.          
sasha_bako Подменю пользователя
сообщение 21.04.15, 23:24
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 2
Спасибо сказали: 0 раз
Рейтинг: 0

//*******************************************
// Процедура генерации запроса Сформировать.
//
Процедура Сформировать()
    
    Перем Запрос, ТекстЗапроса, Таб;
    Если ВыбМастер.Выбран()=0 Тогда
         Предупреждение("Не выбран мастер");
         Возврат;
    КонецЕсли;
    Если ВыбВидРемонта.Выбран()=0 Тогда
         Предупреждение("Не выбран вид ремонта");
         Возврат;
КонецЕсли;    

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

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



 ! 

Правила: 3, 12
 


Сообщение отредактировал Vofka - 22.04.15, 7:58

miha74 Подменю пользователя
сообщение 22.04.15, 7:43
Сообщение #2

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 153
Спасибо сказали: 81 раз
Рейтинг: 0

Цитата(sasha_bako @ 21.04.15, 23:24) *
НачОтчета=Дата("01.01.00");
КонОтчет=КонГода(ВыбКонПериода);

Видимо в этом причина. Начало у Вас жестко задано, а конец установлен на конец года в "ВыбКонПериода".

sasha_bako Подменю пользователя
сообщение 23.04.15, 6:45
Сообщение #3

Молчаливый
*
Группа: Пользователи
Сообщений: 2
Спасибо сказали: 0 раз
Рейтинг: 0

Если ставлю (ВыбНачПериода) тогда вообще отчет не выводит.

Домовик Подменю пользователя
сообщение 23.04.15, 7:30
Сообщение #4

Ветеран
Иконка группы
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0

вы список документов дважды ограничиваете. первый раз -сама выборка. Второй раз условие при обходе результата запроса.
поэтому указанный период выборки иногда может и не влиять, так как приоритет у условия, кот при обходе. чтобы влияло, нужно чтоб период был шире по датам.
честно говоря, не понятна цель этого.


пробуйте документ.Рк.датаРемонта поставить как поле, и добавить еще условие с этим полем. Зачем вам создавать выборку, а потом ее суживать в цикле?

miha74 Подменю пользователя
сообщение 24.04.15, 10:24
Сообщение #5

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 153
Спасибо сказали: 81 раз
Рейтинг: 0

Я лично при отладке всяческих отчетов, обработок и т.д. смотрю результаты запросов так: выгружаю запрос в таблицу значений а потом вывожу эту тз в виде таблицы с помощью универсальной обработки Show.ert (надыбал давно где-то в инете, уже нигде не скачать...).
//***************************************************************************
Процедура Показать(Значение, Заголовок = "")
    Если ФС.СуществуетФайл(КаталогИБ()+"ExtForms\Show.ert") = 0 Тогда  
        Сообщить("Не найден внешний отчет: """+КаталогИБ()+"ExtForms\Show.ert""", "!");
    Иначе
        глФлагРасшифровки = 1;
        глОбновить = 0;
        глРасшифровка = СоздатьОбъект("СписокЗначений");
        глРасшифровка.Установить("Значение", Значение);
        глРасшифровка.Установить("Заголовок", Заголовок);
        ОткрытьФорму("Отчет#",, КаталогИБ()+"ExtForms\Show.ert");
        глФлагРасшифровки = 0;
        глРасшифровка = 0;
        глОбновить = 0;
    КонецЕсли;
КонецПроцедуры //Показать()

[необходимо зарегистрироваться для просмотра ссылки]
Show.ert должна быть в папке ExtForms каталога базы.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 29.03.24, 6:33
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!