7.7 Печать ТаблицыЗначений с группировками

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Necrodamus, 27 июл 2010.

  1. TopicStarter Overlay
    Necrodamus
    Offline

    Necrodamus Опытный в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    57
    Симпатии:
    0
    Баллы:
    26
    Доброго времени суток!
    Объясните доходчиво,пожалуйста,как правильно выводить на печать ТЗ с группировками?
    Код:
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = 
    "
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Склад = Регистр.МестаХранения.МОЛ;
    |Товар = Регистр.МестаХранения.Материал.ТекущийЭлемент;
    |Родитель = Регистр.МестаХранения.Материал.Родитель;
    |Количество = Регистр.МестаХранения.Количество;
    |Функция КонОст = КонОст(Количество);
    |Группировка Товар без групп;
    |Группировка День;
    |Условие(Склад = ВыбСклад);
    |Условие(Родитель в СписокГрупп);
    |";
    
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;
    
    ТЗ = СоздатьОбъект("ТаблицаЗначений");
    Запрос.Выгрузить(ТЗ,1,0);
    ТЗ.НоваяКолонка("Колво","Число",10,2);
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку() = 1 Цикл
    ТЗ.Колво = 1;
    КонецЦикла;
    ТЗ.Свернуть("Родитель,День","Колво,КонОст");
    
    
    
    В макете 2 секции "Родитель" и "День"...

    Сделал так:
    Код:
    	ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку() = 1 Цикл
    Груп = ТЗ.Родитель;
    Если ТЗ.Родитель = Груп Тогда
    Таб.ВывестиСекцию("Родитель");
    КонецЕсли;
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку() = 1 Цикл
    Если ТЗ.Родитель = Груп Тогда
    Таб.ВывестиСекцию("День");
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    
    Но выводится только первая группировка...
  2. dedalx7
    Offline

    dedalx7 Опытный в 1С

    Регистрация:
    20 май 2009
    Сообщения:
    97
    Симпатии:
    0
    Баллы:
    26
    1С под рукой нет, так что попытаюсь ткнуть пальцем в небо:
    Код:
        ТЗ.Сортировать("Родитель,День");
    Груп = ПолучитьПустоеЗначение();
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку() = 1 Цикл
    Если ТЗ.Родитель <> Груп Тогда
    Груп = ТЗ.Родитель;
    Таб.ВывестиСекцию("Родитель");
    КонецЕсли;
    Таб.ВывестиСекцию("День"); 
    КонецЦикла;
    
    
  3. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Вместо конструкции
    Код:
    Пока ТЗ.ПолучитьСтроку() = 1 Цикл        
    ТЗ.Колво = 1;    
    КонецЦикла;
    
    
    удобнее использовать метод Заполнить
  4. TopicStarter Overlay
    Necrodamus
    Offline

    Necrodamus Опытный в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    57
    Симпатии:
    0
    Баллы:
    26
    Вынужден признать, что до конца так и не разобрался...
    Вроде бы все правильно сделал, но не работает.Что здесь не так:
    Код:
    	Автор = ПолучитьПустоеЗначение();
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку() = 1 Цикл
    Если ТЗ.Автор = Автор Тогда
    Автор = ТЗ.Автор;
    Таб.ВывестиСекцию("Автор");
    КонецЕсли;
    Таб.ВывестиСекцию("День");
    КонецЦикла;
    
    
    Выводит:
    Автор
    День
    Автор
    День
    А мне нужно:
    Автор
    День
    День
    И т.д...
  5. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Попробуй поменять
    Код:
    Если ТЗ.Автор = Автор Тогда
    
    на
    Код:
    Если ТЗ.Автор <> Автор Тогда
    
    А по сути - такие ошибки легко находятся отладчиком, когда глаз уже "замыливается".
  6. TopicStarter Overlay
    Necrodamus
    Offline

    Necrodamus Опытный в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    57
    Симпатии:
    0
    Баллы:
    26
    Прошу прощения у меня так и есть - это я с ошибкой скопировал(вернее копировать отказывался, пришлось писать вручную,вот и допустил ошибку).Проблема не в этом :angry:
  7. Бухгалтерский угодник
    Offline

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

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

    Через ТЗ.ВыбратьСтроку() гляньте что у вас творится в самой ТЗ
  8. TopicStarter Overlay
    Necrodamus
    Offline

    Necrodamus Опытный в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    57
    Симпатии:
    0
    Баллы:
    26
    Так вот где собака зарыта :angry:
    Сортировку не сделал...Огромное спасибо...

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