7.7 Отчет

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

  1. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Странный вопрос. Так вы же заполняете переменные результатом запроса! Но одновременно можно вывести только используя ТаблицуЗначений
  2. TopicStarter Overlay
    Ermak27
    Offline

    Ermak27 Опытный в 1С

    Регистрация:
    3 дек 2012
    Сообщения:
    54
    Симпатии:
    0
    Баллы:
    26
    Решил попробовать сделать на простом примере, но почему то не выводит Номенклатуру и Вид расхода

    Код:
    Процедура Сформировать()
    
    Если ((НачДата=ПолучитьПустоеЗначение("Дата")) или (КонДата=ПолучитьПустоеЗначение("Дата"))) Тогда
    Предупреждение("Не задан период формирования отчета.");
    Возврат;
    КонецЕсли;
    
    Если НачДата>КонДата Тогда
    Предупреждение("Неправильно задан период формирования отчета");
    НачДата=КонДата;
    Возврат;
    КонецЕсли;
    
    Если КонДата>ПолучитьДатуТА() Тогда
    Предупреждение("Конечная дата построения отчета не может быть больше ТА");
    КонДата=ПолучитьДатуТА();
    Если НачДата>КонДата Тогда
    НачДата=КонДата;
    КонецЕсли;
    Возврат;
    КонецЕсли;
    
    Запрос=СоздатьОбъект("Запрос");
    ТекстЗапроса="
    |Период С НачДата По КонДата;											
    |пзВидРасхода=Регистр.ТехнологическиеПотери.ВидРасхода;
    |пзВидОтпуска=Регистр.ТехнологическиеПотери.ВидОтпуска;
    |Номенклатура = Регистр.ТехнологическиеПотери.Номенклатура;
    
    |пзКоличество=Регистр.ТехнологическиеПотери.Количество;
    |Группировка Номенклатура;
    |Группировка пзВидРасхода;
    |Функция фзКоличество=Сумма(пзКоличество);			
    |";														
    
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Таблица");
    Таб.ВывестиСекцию("Шапка");
    ТЗ=СоздатьОбъект("ТаблицаЗначений"); 
    Запрос.Выгрузить(ТЗ);
    ТЗ.Свернуть("Номенклатура","пзВидРасхода,пзКоличество");
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку()=1 Цикл
    Таб.ВывестиСекцию("Стр");
    
    КонецЦикла;
    
    Таб.ПараметрыСтраницы(1);
    Таб.Показать();
    
    КонецПроцедуры
  3. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    выложите сам файл отчета. Неизвестно что у вас там в макете.
    + ВидРасхода явно при свертке не в тот параметр запихали... Суммировать нужно только по колическтву
  4. TopicStarter Overlay
    Ermak27
    Offline

    Ermak27 Опытный в 1С

    Регистрация:
    3 дек 2012
    Сообщения:
    54
    Симпатии:
    0
    Баллы:
    26
    Вот сам отчет

    Вложения:

  5. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    так и есть........
    в таблицу выводите в цикле по ТЗ,а в самой таблице - переменные запроса.....

    Запрос.Номенклатура заменить на ТЗ.Номенклатура и т.д.
  6. TopicStarter Overlay
    Ermak27
    Offline

    Ermak27 Опытный в 1С

    Регистрация:
    3 дек 2012
    Сообщения:
    54
    Симпатии:
    0
    Баллы:
    26
    ТЗ.пзВидРасхода не выводит!
  7. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    см выше.... я указал
    нужно вот так
    Код:
    ТЗ.Свернуть("Номенклатура,пзВидРасхода","пзКоличество"); 
    убедительная просьба: быть внимательным при прочтении ответов
  8. TopicStarter Overlay
    Ermak27
    Offline

    Ermak27 Опытный в 1С

    Регистрация:
    3 дек 2012
    Сообщения:
    54
    Симпатии:
    0
    Баллы:
    26
    Спасибо! А как теперь сгруппировать?
  9. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    http://www.1c-pro.ru/topic47205.html/page__view__findpost__p__249857
    первый запрос у вас есть...
    делаем второй и просто добавляем в ТЗ результаты (методом Выгрузить пользоваться нельзя)
    затем сворачиваем... и выводим
  10. TopicStarter Overlay
    Ermak27
    Offline

    Ermak27 Опытный в 1С

    Регистрация:
    3 дек 2012
    Сообщения:
    54
    Симпатии:
    0
    Баллы:
    26
    Я не понимаю как сделать группировку

    Код:
    Пока Запрос.Группировка(1)=1 Цикл
    КонецЦикла;
  11. TopicStarter Overlay
    Ermak27
    Offline

    Ermak27 Опытный в 1С

    Регистрация:
    3 дек 2012
    Сообщения:
    54
    Симпатии:
    0
    Баллы:
    26
    Пытаюсь сгруппировать что то не так идет

    Вложения:

  12. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    просто последовательно добавляйте строки и затем сворачивайте ТЗ
  13. TopicStarter Overlay
    Ermak27
    Offline

    Ermak27 Опытный в 1С

    Регистрация:
    3 дек 2012
    Сообщения:
    54
    Симпатии:
    0
    Баллы:
    26
    Например так

    Код:
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Таблица");
    Таб.ВывестиСекцию("Шапка");
    ТЗ=СоздатьОбъект("ТаблицаЗначений");
    ТЗ.НоваяКолонка("Номенклатура");
    ТЗ.НоваяКолонка("пзВидРасхода");
    ТЗ.НоваяКолонка("пзКоличество");
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку()= 1 Цикл
    ТЗ.НоваяСтрока();
    ТЗ.Номенклатура = Запрос.Номенклатура;
    ТЗ.пзВидРасхода = Запрос.пзВидРасхода;
    ТЗ.пзКоличество = Запрос.пзКоличество;
    КонецЦикла;
    ТЗ.Свернуть("Номенклатура,пзВидРасхода","пзКоличество");		  
    Таб.ВывестиСекцию("Стр");
    Таб.ПараметрыСтраницы(1);
    Таб.Показать();
  14. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Почти! Только несколько нюансов...
    1) ТЗ создавать в данном случае не нужно (уже есть при перовом запросе)
    2) Нужно только одна колонка (не номенклатура и не вид), а то что выводится во втором столбце...
    3) Цикл идет по группировкам запроса

    А в целом мыслите в правильном направлении. Еще чуть-чуть и отчет готов.
  15. TopicStarter Overlay
    Ermak27
    Offline

    Ermak27 Опытный в 1С

    Регистрация:
    3 дек 2012
    Сообщения:
    54
    Симпатии:
    0
    Баллы:
    26
    Сделал вроде все как надо но почему то все равно не выводит номенклатуру и не все значения выдает

    Вложения:

  16. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    1) ТЗ.ВыбратьСтроки(); стр 21 - не нужна
    2) выборке результатов запроса нужно добавлять строки. Используте ТЗ.НоваяСтрока()
    3) Не используете вторую группировку запросов... Номенклатура-то нужна... Сам сказали
  17. TopicStarter Overlay
    Ermak27
    Offline

    Ermak27 Опытный в 1С

    Регистрация:
    3 дек 2012
    Сообщения:
    54
    Симпатии:
    0
    Баллы:
    26
    Это например так вы имеете ввиду
  18. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    НЕ ТАК!!!!
    приблизительно так. Цикл должен быть вложенным
    Код:
    Пока Запрос.Группировка(1)=1 Цикл
    Пока Запрос.Группировка(2)=1 Цикл
    ТЗ.НоваяСтрока();
    ТЗ.Номенклатура=Запрос.Номенклатура;
    ТЗ.пзВидРасхода=Запрос.пзВидРасхода;
    вр=Запрос.пзВидРасхода;
    клв=Запрос.фзКоличество;  
    Если	вр=Перечисление.ВидыТехнологическихПотерь.С4 Тогда
    ТЗ.т_С4=клв;ТЗ.т_ИтогоТехПотери=ТЗ.т_ИтогоТехПотери+Запрос.фзКоличество;
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
  19. TopicStarter Overlay
    Ermak27
    Offline

    Ermak27 Опытный в 1С

    Регистрация:
    3 дек 2012
    Сообщения:
    54
    Симпатии:
    0
    Баллы:
    26
    Сделал как сказали все равно не выводит :sm_cry:

    Вложения:

  20. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    ну как же.... вы же "убиваете" созданные колонки при сворачивании!
    Они ВСЕ должны быть!
    Т.е.
    Код:
    ТЗ.Свернуть("Номенклатура,пзВидРасхода","т_С4, гт_С4, т_С5,гт_С4, и так далее");
    + зачет убрали цикл по ТЗ?
    там же вывод результата!

    Вернитесь к первому вашему экспериментальному варианту и посмотрите.

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