7.7 Отчет по датам

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем daab, 17 май 2012.

  1. TopicStarter Overlay
    daab
    Offline

    daab Опытный в 1С

    Регистрация:
    14 окт 2011
    Сообщения:
    269
    Симпатии:
    0
    Баллы:
    26
    Приветсвую всех!

    Ну чтото я мучился как только не коверкал отчет и табличную часть какая то ерунда выходит

    а надо вот такой вид









    Дата1
    Дата2
    Дата3
    Дата4







    Товар1
    Цена
    Цена
    Цена
    Цена







    Товар2
    Цена
    Цена
    Цена
    Цена







    Товар3
    Цена
    Цена
    Цена
    Цена














    Подсобите, что надо в выходной части писать

    Через ПрисоединитьСекцию, тоже пытался
  2. TopicStarter Overlay
    daab
    Offline

    daab Опытный в 1С

    Регистрация:
    14 окт 2011
    Сообщения:
    269
    Симпатии:
    0
    Баллы:
    26
    _______Дата1 Дата2 Дата3 Дата4 …

    Товар1 Цена Цена Цена Цена

    Товар2 Цена Цена Цена Цена

    Товар3 Цена Цена Цена Цена
  3. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Ничего не понятно!
  4. Allizar
    Offline

    Allizar Опытный в 1С

    Регистрация:
    24 сен 2006
    Сообщения:
    413
    Симпатии:
    0
    Баллы:
    26
    Отчет-то какой? На СДК или на построителе?
    Текст запроса не помешал бы.
  5. TopicStarter Overlay
    daab
    Offline

    daab Опытный в 1С

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

    арбуз 01.01.2012 30 руб
    арбуз 02.01.2012 32 руб
    апельсин 01.01.2012 10 руб
    апельсин 02.01.2012 15 руб

    а хотелось бы, чтобы по вертикали был список товара по горизонтале количество дат

    _________01.01.2021___02.01.2012
    арбуз 30 руб 35 руб
    апельсин 10 руб 15 руб
  6. Allizar
    Offline

    Allizar Опытный в 1С

    Регистрация:
    24 сен 2006
    Сообщения:
    413
    Симпатии:
    0
    Баллы:
    26
    Так у Вас "семерка"! Опять я проглядел. Так здесь и надо использовать "ПрисоединитьСекцию()". Нужно, конечно, учесть, что не на всякий день есть цена и присоединять пустую секцию. Нужно видеть, как Вы присоединяли секции, и что у Вас не получилось.
  7. Бухгалтерский угодник
    Offline

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

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

    daab Опытный в 1С

    Регистрация:
    14 окт 2011
    Сообщения:
    269
    Симпатии:
    0
    Баллы:
    26
    блин а как сделать так чтобы не сто дат выводилось с ценами а 3 даты и на них все цены на товар?

    и цена только на первый день появляются, почему так?
  9. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Покажите что там у вас получилось с ТЗ. Похоже что не так делаете
  10. TopicStarter Overlay
    daab
    Offline

    daab Опытный в 1С

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

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Код:
    Табзн = СоздатьОбъект("ТаблицаЗначений");
    ТЗ_Дат = СоздатьОбъект("ТаблицаЗначений");
    ТЗ_ТВР = СоздатьОбъект("ТаблицаЗначений");
    Запрос.выгрузить(ТабЗн);
    
    //получим даты из запроса
    Запрос.выгрузить(ТЗ_Дат);
    ТЗ_Дат.Свернуть("Дата","");
    
    //Получим товар из запроса
    Запрос.выгрузить(ТЗ_ТВР);
    ТЗ_ТВР.Свернуть("Товар","");
    
    Таб=СоздатьОбъект("Таблица");
    //Таб.ИсходнаяТаблица("Таблица"); не надо... итак по умолчанию
    
    //пример вывода заголовка по датам
    Таб.ВывестиСекцию("Шапка|Заголовок");
    ТЗ_Дат.ВыбратьСтроки();
    Пока ТЗ_Дат.ПолучитьСтроку()=1 Цикл
    Таб.ПрисоединитьСекцию("Шапка|День");
    КонецЦикла;
    
    //Табзн.НоваяКолонка("Товар"); это еще зачем?
    
    //цикл по товару
    ТЗ_Твр.ВыбратьСтроки();
    Пока ТЗ_ТВР.ПолучитьСтроку()=1 Цикл
    
    Таб.ВывестиСекцию("Товар");
    //цикл по датам
    ТЗ_Дат.ВыбратьСтроки();
    Пока ТЗ_Дат.ПолучитьСтроку()=1 Цикл
    а=0;
    ТабЗн.НайтиЗначение(ТЗ_Твр.Товар,а,"Товар");
    НашлиДату=0;
    Для к=а По ТабЗн.КоличествоСтрок() Цикл
    ТабЗн.ПолучитьСтрокуПоНомеру(к);
    Если ТабЗн.Товар<>ТЗ_Твр.Товар Тогда
    прервать;//пошел другой товар
    КонецЕсли;	
    Если ТабЗн.Дата=ТЗ_Дат.Дата Тогда
    НашлиДату=1;
    прервать; //то что нам надо
    КонецЕсли;
    КонецЦикла;
    Если НашлиДату=1 Тогда
    //тут присваивай значения тля таблицы отчета
    Иначе
    //не забываем обнулить переменные
    КонецЕсли;
    Таб.ПрисоединитьСекцию("Товар|День");
    КонецЦикла;
    КонецЦикла;
    
    Таб.ТолькоПросмотр(1);
    Таб.ПараметрыСтраницы(1,100,1);
    Таб.Показать("");
    КонецПроцедуры
  12. TopicStarter Overlay
    daab
    Offline

    daab Опытный в 1С

    Регистрация:
    14 окт 2011
    Сообщения:
    269
    Симпатии:
    0
    Баллы:
    26
    ого спасибо за код, офигенски, теперь бы еще цену додумать как вывести
  13. TopicStarter Overlay
    daab
    Offline

    daab Опытный в 1С

    Регистрация:
    14 окт 2011
    Сообщения:
    269
    Симпатии:
    0
    Баллы:
    26
    Код:
    ТЗ_ЦН.ВыбратьСтроки();
    Пока ТЗ_ЦН.ПолучитьСтроку()=1 Цикл  
    б=0;
    в=0;
    ТабЗн.НайтиЗначение(ТЗ_Твр.Товар,б,"Товар");
    для к=б по ТабЗн.КоличествоСтрок() цикл  //открываем цикл по строкам
    ТабЗн.НайтиЗначение(ТЗ_Дат.День,в,"День");
    для с=в по ТабЗн.КоличествоСтрок() цикл    //открываем цикл по столбцам
    цена=подскажите условие для выборки цен;
    
    Если с=1 Тогда
    Таб.Вывестисекцию("Товар|День");
    иначе
    Таб.Присоединитьсекцию("Товар|День");
    КонецЕсли;	 
    КонецЦикла;  
    КонецЦикла;
    КонецЦикла;  
    так ли можно?
  14. TopicStarter Overlay
    daab
    Offline

    daab Опытный в 1С

    Регистрация:
    14 окт 2011
    Сообщения:
    269
    Симпатии:
    0
    Баллы:
    26
    Код:
    Таб.ВывестиСекцию("Шапка|Заголовок");
    ТЗ_Дат.ВыбратьСтроки();
    Пока ТЗ_Дат.ПолучитьСтроку()=1 Цикл
    Таб.ПрисоединитьСекцию("Шапка|День");
    КонецЦикла;
    здесь выводяться даты

    а для чего етот блок?

    Код:
     //цикл по датам
    ТЗ_Дат.ВыбратьСтроки();
    Пока ТЗ_Дат.ПолучитьСтроку()=1 Цикл
    а=0;
    ТабЗн.НайтиЗначение(ТЗ_Твр.Товар,а,"Товар");
    НашлиДату=0;
    Для к=а По ТабЗн.КоличествоСтрок() Цикл
    ТабЗн.ПолучитьСтрокуПоНомеру(к);
    Если ТабЗн.Товар<>ТЗ_Твр.Товар Тогда
    прервать;//пошел другой товар
    КонецЕсли;
    Если ТабЗн.Дата=ТЗ_Дат.Дата Тогда
    НашлиДату=1;
    прервать; //то что нам надо
    КонецЕсли;
    КонецЦикла;
    Если НашлиДату=1 Тогда
    //тут присваивай значения тля таблицы отчета
    Иначе
    //не забываем обнулить переменные
    КонецЕсли;
    Таб.ПрисоединитьСекцию("Товар|День");
    КонецЦикла;
    КонецЦикла;
  15. TopicStarter Overlay
    daab
    Offline

    daab Опытный в 1С

    Регистрация:
    14 окт 2011
    Сообщения:
    269
    Симпатии:
    0
    Баллы:
    26

    Вложения:

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

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    1) Шаблон сделан правильно
    2) ТабЗн.Цена - вот что вам нужно. Все же уже есть в запросе.
    3) Блок нужен для вывода товара и цен
  17. TopicStarter Overlay
    daab
    Offline

    daab Опытный в 1С

    Регистрация:
    14 окт 2011
    Сообщения:
    269
    Симпатии:
    0
    Баллы:
    26
    ага все есть! Это чтото я перемудрил, своего надобавлял просто.
  18. TopicStarter Overlay
    daab
    Offline

    daab Опытный в 1С

    Регистрация:
    14 окт 2011
    Сообщения:
    269
    Симпатии:
    0
    Баллы:
    26
    не могу понять почему он мне одну дату точками ставить и выстраивает таблицу вот таким образом?!
    Посмотреть вложение 11187

    Вложения:

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

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Потому что там выгружаются итоги в ТЗ из запроса....
    Прочитайте про метод Выгрузить в СП...
    Нужно добавить параметры
    Код:
    Запрос.выгрузить(ТабЗн,0,0);
    и для вспомогательных ТЗ тоже
  20. TopicStarter Overlay
    daab
    Offline

    daab Опытный в 1С

    Регистрация:
    14 окт 2011
    Сообщения:
    269
    Симпатии:
    0
    Баллы:
    26
    оки, уловил!

    я вот так убрал нулевую дату


    Код:
    Если Строка(ТЗ_Дат.День) = "  .  .  " Тогда
    ТЗ_Дат.УдалитьСтроку ();
    КонецЕсли;    

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