Вывод на печать таблицы значений "в горизонтальном виде"

Тема в разделе "1C и всё что с ней связано", создана пользователем number23, 7 дек 2010.

  1. number23

    number23 Гость

    Доброго дня!

    1С 7.7 Конфигурация собственная.

    Просьба помочь разобраться в следующем:
    В документе, задавая в каждой строке реквизиты определяем периоды выполнения тех или иных работ, в разрезе 30-минутных отрезков.

    _________.JPG

    Сформированная таблица значений получается примерно такая
    ____1.JPG

    Использованный код (на который хватало мозгов) следующий:
    Код ( (Unknown Language)):
    Процедура Печать()
    Таб=СоздатьОбъект("Таблица");
    Если Табл1=1 Тогда
    Таб.ИсходнаяТаблица("ПутевойЖурнал1");
    ИначеЕсли Табл1=0 Тогда
    Таб.ИсходнаяТаблица("ПутевойЖурнал2");
    КонецЕсли;
    Таб.ВывестиСекцию("Отчет");
    ТЗ=СоздатьОбъект("ТаблицаЗначений");
    ТЗ.НоваяКолонка("Дата");
    ТЗ.НоваяКолонка("Час");
    ТЗ.НоваяКолонка("Мин");
    ТЗ.НоваяКолонка("ВР");  
    ВыбратьСтроки();
    Пока ПолучитьСтроку()=1 Цикл
    Начало = (ПриходЧасов*2+ПриходМинут/30);
    Для Сч = 0 по ((ОтходДата-ПриходДата)*24+ОтходЧасов-ПриходЧасов+(ОтходМинут-ПриходМинут)/60)*2 Цикл
    ТЗ.НоваяСтрока();
    ТЗ.Дата = ПриходДата+ЦЕЛ((Сч+Начало)/48);
    ТЗ.Час = ЦЕЛ((Сч+Начало)/2-24*ЦЕЛ((Сч+Начало)/48));
    ТЗ.Мин = ((Сч+Начало)-2*ЦЕЛ((Сч+Начало)/2))*30;
    ТЗ.ВР = ВидРабот;
    КонецЦикла;
    КонецЦикла;
    ТЗ.Свернуть("Дата,ВР,Час,Мин","");
    ТЗ.ВыбратьСтроки(); 
    Пока ТЗ.ПолучитьСтроку()=1 Цикл
    Таб.ВывестиСекцию("Строка");
    КонецЦикла;          
    Таб.ТолькоПросмотр(1);
    Таб.Показать("ПутевойЖурнал");
    КонецПроцедуры
    Как сделать чтобы получилось выводить на печать таблицу следующего вида?
    ____2.JPG

    Спасибо заранее всем откликнувшимся!
     
  2. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Обходим таблицу и выводим, используя методы "ВывестиСекцию", "ПрисоединитьСекцию".
    Если день пошел новый, то "Вывести...", если другие полчаса, то "Присоединить..."
     
  3. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    делаем цикл, в нем не выводим секции, а присоединяем.
     
  4. TimeDontWait

    TimeDontWait Well-Known Member

    Регистрация:
    4 янв 2010
    Сообщения:
    383
    Симпатии:
    0
    Рисуеш секции:
    1 - 2 клетки, в первой - "д", во во-второй - "д"\;
    2 - 2 клетки, "п", "п";
    3 - 2 клетки, "н\д","н\д";
    В зависимости от условия присоединяеш нужную секцию.
    Делаем переменную для хранения даты, при выборке записываем ее, и проверяем :
    сходится, тогда присоединяем секцию(см.выше), в зависимости от условия,
    не сходится - новая строка, перезаписываем переменную текущим значением дальше присоединяем строки с каждым шагом сверяя значения переменной и даты
     
  5. number23

    number23 Гость

    Дак "п", "д", "н/д" и т.д. это ведь элементы справочника...
    Как заранее знать какие будут создаваться элементы пользователем?
     
  6. TimeDontWait

    TimeDontWait Well-Known Member

    Регистрация:
    4 янв 2010
    Сообщения:
    383
    Симпатии:
    0
    Может что-то не понял, но этих элементов то пару, вот и сделай присоединение секций в зависимости от условия, задано "н" - секция такая-то.
    Ну тебе же легче понять, я не до конца разобрался что тут и куда
     
  7. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Можно сделать так :
    1. Создать таблицу значений из 63 колонок (1 -дата, остальное - получасовые интервалы на месяц, если я правильно понял).
    Например, они называются "Дата, Период1...Период62)
    2. обходим табличную часть документа
    и в цикле заполняем ТЗ данными :
    ТЗ.НоваяСтрока();
    ТЗ.Дата =
    По времени определяем номер колонки N (Например, 23.00 - 47 колонка, N = 47)
    Номер колонки = "Период"+СОКРЛ(Строка(N))
    ТЗ.УстановитьЗначение(<Номер строки в документе>,Номер колонки,<Данные>);
    Сложность с переходом на новую дату придется решить самостоятельно
    Получится обычная прямоугольная таблица, в которой заполнены и пустые клетки.
    Далее выводим ее на печать линейно
     
  8. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Т.е. будут другие виды работ.
    Тогда заводите в спр-ке реквизит для хранения сокращения, и выводите его в ячейку.

    Добавлено:
    И рисуем таблицу с 63-мя колонками... Не нравится мне такое решение.
     
  9. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    А где рисование ?
    Внутри формируем цикл и "рисуем"(создаем ТЗ) с помощью метода "УстановитьПараметрыКолонки" - всего-то три строчки.
    Зато получим прямоугольную пустографку с отдельными заполненными позициями, при выводе которой на печать
    думать вообще не надо
     
  10. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    По поводу ТЗ я так и понял.
    А как будет выглядеть таблица печати? Ну та, которая вызывается методом "ИсходнаяТаблица".
     
  11. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Заголовок - как хотел автор. Строки - 63 колонки каждой строки ТЗ.
    Ну, разумеется, и заголовок, и строки делаются одинаково, типа
    Т.ВывестиСекцию("Дата"), а затем в цикле 62 раза (или меньше, по числу дней месяца)
    Т.ПрисоединитьСекцию("Данные").
    Впрочем, что я грамотному человеку объясняю, скорее, это для задавшего вопрос :rolleyes:
    Я по такому образцу делаю шахматки, анализ динамики продаж (по горизонтали периоды, по вертикали - товары, к примеру) и прочие прямоугольные шалости.
    Проще, мне кажется, при заполнении ТЗ проявить некую гибкость ума, нежели при выводе на печать соображать, вывести или присоединить секцию (или присоединять пустую !)
     
  12. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    А, понял, "переворачивание" просто в другой момент. Против этого ничего не имею :rolleyes:
    Ну, дело вкуса, я бы не стал лишнюю таблицу создавать.

    Добавлено: PS.Опять мы не спим глубокой ночью)
    Сижу к специалисту по 8.2 готовлюсь (после завтра идти проваливаться)... суровый спец - надо решение знать заранее, и печатать с нехилой скоростью. :ph34r:
     
  13. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Желаю удачи!!!

    Сори за :rolleyes:
     
  14. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    И чем закончилось ? Переживаю за продвинутого коллегу
     
  15. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Так же ж "послезавтра", на данный момент, только завтра. Правда, как я его написал раздельно, так это уже не "послезавтра", а "завтра", а точнее то, что после него... и это может все спутать)
    По результатом отпишусь :)
     
  16. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Ни фига не понял изначально, но каламбуры приветствую по жизни.
    Great success to you
     
  17. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Не вышло)
    Запнулся на регистре расчета, который упорно не хотел видеть свою базу. Хотя можно было и пропустить это, т.к. смотрят обычно только код. Еще и с демоническим списком не разобрался.
    Впрочем, если бы все получалось, по времени вполне успевал. Так что еще поготовиться, и буду настроен на успех)
    Экзамен, пожалуй, самый сложный из всех, которые сдавал. Требует обширных знаний, правда, не нужно знать предметную область. Зато, и самый полезный - много узнал при подготовке, и почти нет задач с непонятными условиями.

    ;) Где же автор темы со своими ячейками?)
     
  18. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Я понимаю, что корочка - это солидно, но что она дает в финансовом плане ?
     
  19. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Я его регистрирую на один франч - он мне заплатит)
    Плюс - когда работал во франче, получал с корочек неплохие бонусы. Добавляет солидности к резюме.
    И в процессе подготовки набираешься некоторых знаний.
     
  20. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Вот это кажется наиболее существенным.
    Ну, для молодых, видимо важно.
    Я-то бросил эту затею с получением сертификата со времен разросшегося потока клиентов - 10-й год уже во фрилансерах,
    а заказчику результат нужен, а не наличие корочек. К тому же у нас для получения сертификата нужны были солидные вложения - порядка $1.5-2K,
    а деньги всегда жалко на ветер бросать, вот бездипломным и хожу с тех пор
    А это просто (видимо, по скудоумию) не понял
     
Загрузка...

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