7.7 Отчет по запчастям

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем pofigist, 16 окт 2009.

  1. TopicStarter Overlay
    pofigist
    Offline

    pofigist

    Регистрация:
    13 авг 2009
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Не пойму почему не все данные отображаются в отчете. Данные по запчастям беруться из ВнутренееПеремещениеТМЦ, там например на один автомобиль используют 4 запчасти а в отчете отображается только две или вообще не отображает данные по автомобилю. Или вообще ставлю период за другой месяц он вообще неформирует не чего в отчете. Подскажите почему так?
    Код:
    //*******************************************
    // Процедура генерации запроса Сформировать.
    //
    Процедура Сформировать()  
    
    
    Перем Запрос, ТекстЗапроса, Таб;
    ОчиститьОкноСообщений();	
    Сообщить("Начало обработки");
    Тз.УдалитьСтроки();	
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода; 
    |ВнутреннееПеремещениеТМЦ = Документ.ВнутреннееПеремещениеТМЦ.ТекущийДокумент;
    |ТМЦ = Документ.ВнутреннееПеремещениеТМЦ.ТМЦ;
    |Количество = Документ.ВнутреннееПеремещениеТМЦ.Количество;
    |Машина = Документ.ВнутреннееПеремещениеТМЦ.Машина;
    |Сумма = Документ.ВнутреннееПеремещениеТМЦ.Сумма;
    |ДатаДок = Документ.ВнутреннееПеремещениеТМЦ.ДатаДок;
    |Группировка СтрокаДокумента;  
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;
    Пока Запрос.Группировка(1) = 1 Цикл 
    ДатаДок=Запрос.ДатаДок;  
    
    
    Если ПустоеЗначение(Запрос.Машина)=0 Тогда 
    сообщить("_"+ДатаДок+"_"+Запрос.ТМЦ +"_"+Запрос.Машина); 
    Тз.НоваяСтрока();
    Тз.ДатаДокумента = ДатаДок;   
    Тз.Запчасть		 = Запрос.ТМЦ; 
    Тз.Количество	 = Запрос.Количество;
    Тз.Автомобиль  	 = Запрос.Машина;
    Тз.Сумма		 = Запрос.Сумма;
    КонецЕсли;	
    КонецЦикла;	
    
    
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Таблица");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");  
    Таб.ВывестиСекцию("Шапка");
    Состояние("Заполнение выходной таблицы...");	
    Тз.Сортировать("Автомобиль");  
    Тз.ВыбратьСтроки();
    
    Машина="";
    
    Пока Тз.ПолучитьСтроку() = 1 Цикл       
    Если (ПустоеЗначение(Машина)=0) и (Тз.Автомобиль<>Машина) <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/тогда')">Тогда		</span>
    ДатаДок="";
    Авто="";
    ТМЦ="";
    Колво=""; 
    Сумма="";
    Таб.ВывестиСекцию("Строка");
    конецЕсли;	
    ДатаДок=Тз.ДатаДокумента;
    Авто=Тз.Автомобиль;
    ТМЦ=Тз.Запчасть;
    Колво=Тз.Количество;
    Сумма=Тз.Сумма;
    Таб.ВывестиСекцию("Строка");
    Машина=Авто;
    КонецЦикла;
    
    
    // Подготовка к заполнению выходных форм данными запроса
    
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    // Вывод заполненной формы
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Таблица", "");    
    
    КонецПроцедуры  
    
    
    //*******************************************
    // Предопределенная процедура
    Процедура ПриОткрытии()
    ВыбНачПериода = НачМесяца(ТекущаяДата()-2);	
    ВыбКонПериода = КонМесяца(ТекущаяДата()-2);  
    Тз.НоваяКолонка("ДатаДокумента","",12,,"Дата док",12,"",1);
    Тз.НоваяКолонка("Запчасть","",150,,"Наименование Запчасти",25,"",1);
    Тз.НоваяКолонка("Количество","",15,3,"Количество",15,"",1);
    Тз.НоваяКолонка("Автомобиль","",25,,"Автомобиль",25,"",1);
    Тз.НоваяКолонка("Сумма","Число",14,2,"Сумма",14,"",2);			
    
    КонецПроцедуры // ПриОткрытии()
    
  2. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Попробуй запрос выгрузить в ТЗ и посмотри, что реально туда попадает.
    Тогда будешь знать либо запрос "кривой", либо вывод "хромает".
  3. TopicStarter Overlay
    pofigist
    Offline

    pofigist

    Регистрация:
    13 авг 2009
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Так вот туда тоже выгружается не все. Что не так в запросе? почему не все он выбирает?
  4. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Какой смысл группировать по строке?
    Попробуй

    Код:
    Группировка ВнутреннееПеремещениеТМЦ;
    
    
  5. TopicStarter Overlay
    pofigist
    Offline

    pofigist

    Регистрация:
    13 авг 2009
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Да пробовал так. Воводится только последняя строка из документа ВнутреннееПеремещениеТМЦ.
  6. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Конечно. Вы нигде не используете функцию суммирования
    Код:
    СуммаКол=Сумма(Количество);
    СуммаСум=Сумма(Сумма);
    
    
    
    Если бы вы выгружали из запроса значения дополнительных переменных - вы бы это увидели

    Код:
    Запрос.Выгрузить(ТЗ,1,0);
    
    
  7. TopicStarter Overlay
    pofigist
    Offline

    pofigist

    Регистрация:
    13 авг 2009
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Что то несоображу подскажите пожалуйста куда что надо добавить.
  8. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Код:
    |Период с ВыбНачПериода по ВыбКонПериода; 	
    |ВнутреннееПеремещениеТМЦ = Документ.ВнутреннееПеремещениеТМЦ.ТекущийДокумент;	
    |ТМЦ = Документ.ВнутреннееПеремещениеТМЦ.ТМЦ;	
    |Количество = Документ.ВнутреннееПеремещениеТМЦ.Количество;	
    |Машина = Документ.ВнутреннееПеремещениеТМЦ.Машина;	
    |Сумма = Документ.ВнутреннееПеремещениеТМЦ.Сумма;	
    |ДатаДок = Документ.ВнутреннееПеремещениеТМЦ.ДатаДок;	
    |СуммаКол=Сумма(Количество);
    |СуммаСум=Сумма(Сумма);
    |Группировка ВнутреннееПеремещениеТМЦ;  
    
    
  9. TopicStarter Overlay
    pofigist
    Offline

    pofigist

    Регистрация:
    13 авг 2009
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Я понял куда это ставить в запросе, не пойму как дальше это использовать.
  10. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Что вы вообще хотели получить от отчета?
  11. TopicStarter Overlay
    pofigist
    Offline

    pofigist

    Регистрация:
    13 авг 2009
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Должна выводиться печатная форма на которой отображаються данные о том какие запчасти на какие автомобили использовали за определеный период, тоесть обычно это последнее число месяца. Делается это по документу ВнутренееПеремещениеТМЦ по счету 10.3 (у нас такой счет). Тут просто надо гл.буху распечатывать отчет на какую машину сколько и какие запчасти использовались. Например за август, сентябрь, октябрь и т.д., на такую то машину такие то запчасти.
  12. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Делай через конструктор чтобы сразу получить макет......
    Код:
    |Период с ВыбНачПериода по ВыбКонПериода; 	
    |ТМЦ = Документ.ВнутреннееПеремещениеТМЦ.ТМЦ;	
    |Количество = Документ.ВнутреннееПеремещениеТМЦ.Количество;	
    |Машина = Документ.ВнутреннееПеремещениеТМЦ.Машина;	
    |Сум = Документ.ВнутреннееПеремещениеТМЦ.Сумма;	
    |СуммаКол=Сумма(Количество);
    |СуммаСум=Сумма(Сум);
    |Группировка Месяц;  
    |Группировка Машина;  
    |Группировка ТМЦ; 
    
    
  13. TopicStarter Overlay
    pofigist
    Offline

    pofigist

    Регистрация:
    13 авг 2009
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Ну подскажите из этого текста почему выводится только последняя строка из документа ВнутреннееПеремещениеТМЦ. так все правильно. Почему он из списка берет только последнюю строку. Где что дописать что бы он из документа все строки брал а не последнюю?
    Код:
    //*******************************************
    // Процедура генерации запроса Сформировать.
    //
    Процедура Сформировать()  
    
    
    Перем Запрос, ТекстЗапроса, Таб;
    ОчиститьОкноСообщений();    
    Сообщить("Начало обработки");
    Тз.УдалитьСтроки();    
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |ОбрабатыватьДокументы все;
    |ВнутреннееПеремещениеТМЦ = Документ.ВнутреннееПеремещениеТМЦ.ТекущийДокумент;
    |ТМЦ = Документ.ВнутреннееПеремещениеТМЦ.ТМЦ;
    |Количество = Документ.ВнутреннееПеремещениеТМЦ.Количество;
    |Машина = Документ.ВнутреннееПеремещениеТМЦ.Машина;
    |Сумма = Документ.ВнутреннееПеремещениеТМЦ.Сумма;
    |ДатаДок = Документ.ВнутреннееПеремещениеТМЦ.ДатаДок; 
    |Группировка ВнутреннееПеремещениеТМЦ;
    |"//}}ЗАПРОС;
    // Если ошибка в запросе, то выход из процедуры 
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли; 
    Пока Запрос.Группировка(1) = 1 Цикл 
    ДатаДок=Запрос.ДатаДок;  
    
    
    Если ПустоеЗначение(Запрос.Машина)=0 Тогда 
    сообщить("_"+ДатаДок+"_"+Запрос.ТМЦ +"_"+Запрос.Машина); 
    Тз.НоваяСтрока();
    Тз.ДатаДокумента = ДатаДок;   
    Тз.Запчасть         = Запрос.ТМЦ; 
    Тз.Количество     = Запрос.Количество;
    Тз.Автомобиль       = Запрос.Машина;
    Тз.Сумма         = Запрос.Сумма;
    КонецЕсли;    
    КонецЦикла;    
    
    
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Таблица");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");  
    Таб.ВывестиСекцию("Шапка");
    Состояние("Заполнение выходной таблицы...");    
    Тз.Сортировать("Автомобиль");  
    Тз.ВыбратьСтроки();
    
    Машина="";
    
    Пока Тз.ПолучитьСтроку() = 1 Цикл       
    Если (ПустоеЗначение(Машина)=0) и (Тз.Автомобиль<>Машина) Тогда        
    ДатаДок="";
    Авто="";
    ТМЦ="";
    Колво=""; 
    Сумма="";
    Таб.ВывестиСекцию("Строка");
    конецЕсли;    
    ДатаДок=Тз.ДатаДокумента;
    Авто=Тз.Автомобиль;
    ТМЦ=Тз.Запчасть;
    Колво=Тз.Количество;
    Сумма=Тз.Сумма;
    Таб.ВывестиСекцию("Строка");
    Машина=Авто;
    КонецЦикла;
    
    
    // Подготовка к заполнению выходных форм данными запроса
    
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    // Вывод заполненной формы
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Таблица", "");    
    
    КонецПроцедуры  
    
    
    //*******************************************
    // Предопределенная процедура
    Процедура ПриОткрытии()
    ВыбНачПериода = НачМесяца(ТекущаяДата()-2);    
    ВыбКонПериода = КонМесяца(ТекущаяДата()-2);  
    Тз.НоваяКолонка("ДатаДокумента","",12,,"Дата док",12,"",1);
    Тз.НоваяКолонка("Запчасть","",150,,"Наименование Запчасти",25,"",1);
    Тз.НоваяКолонка("Количество","",15,3,"Количество",15,"",1);
    Тз.НоваяКолонка("Автомобиль","",25,,"Автомобиль",25,"",1);
    Тз.НоваяКолонка("Сумма","Число",14,2,"Сумма",14,"",2);            
    
    КонецПроцедуры // ПриОткрытии()
    
    
    
  14. TopicStarter Overlay
    pofigist
    Offline

    pofigist

    Регистрация:
    13 авг 2009
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Спасибо вам. Тольку от вас не какого.

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