• 🚨 29 мая стартует курс «Пентест Active Directory: от теории к практике» от Академии Кодебай

    🔍 Изучите реальные техники атак на инфраструктуру Active Directory: от первоначального доступа до полной компрометации.
    🛠️ Освойте инструменты, такие как BloodHound, Mimikatz, CrackMapExec и другие.
    🧪 Пройдите практические лабораторные работы, имитирующие реальные сценарии атак.
    🧠 Получите знания, которые помогут вам стать востребованным специалистом в области информационной безопасности.

    После старта курса запись открыта еще 10 дней Подробнее о курсе ...

  • Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

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

  • Автор темы Автор темы number23
  • Дата начала Дата начала
N

number23

Доброго дня!

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

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

_________.JPG

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

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

Как сделать чтобы получилось выводить на печать таблицу следующего вида?
____2.JPG

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

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

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

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

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

;) Где же автор темы со своими ячейками?)
 
Я понимаю, что корочка - это солидно, но что она дает в финансовом плане ?
 
Я его регистрирую на один франч - он мне заплатит)
Плюс - когда работал во франче, получал с корочек неплохие бонусы. Добавляет солидности к резюме.
И в процессе подготовки набираешься некоторых знаний.
 
И в процессе подготовки набираешься некоторых знаний.
Вот это кажется наиболее существенным.
Добавляет солидности к резюме.
Ну, для молодых, видимо важно.
Я-то бросил эту затею с получением сертификата со времен разросшегося потока клиентов - 10-й год уже во фрилансерах,
а заказчику результат нужен, а не наличие корочек. К тому же у нас для получения сертификата нужны были солидные вложения - порядка $1.5-2K,
а деньги всегда жалко на ветер бросать, вот бездипломным и хожу с тех пор
Я его регистрирую на один франч - он мне заплатит)
А это просто (видимо, по скудоумию) не понял
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!

Курс AD