powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / Вывести на печать дерево
25 сообщений из 35, страница 1 из 2
Вывести на печать дерево
    #38370614
Титов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопрос есть дерево значений, хочу сотворить печатную форму для него типа:
1. Номенклатура; Серия
1.1 Номенклатур; Серия
1.2 Номенклатура; Серия
1.2.1 Номенклатур; Серия
2. Номенклатура; Серия
2.1 Номенклатура; Серия
2.1.1 Номенклатура; Серия
2.1.1.1 Номенклатура; Серия
2.1.2 Номенклатура; Серия
2.1.3 Номенклатура; Серия
2.2 Номенклатура; Серия


и т.д. подскажите как это можно сделать!



каждый правит свой жизнью сам, и не ной что она у тебя хуже чем у других, она всегда такой будет.!
...
Рейтинг: 0 / 0
Вывести на печать дерево
    #38370625
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Титов,
вы же как-то обходили дерево в прошлой своей теме, обходите так же и печатайте
...
Рейтинг: 0 / 0
Вывести на печать дерево
    #38370632
Титов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javapecker,

дерево то я обошел, у меня щас проблема с нумерацией, заказчик хочет что бы выглядело это именно так, а как это сотворить чет не придумаю!
...
Рейтинг: 0 / 0
Вывести на печать дерево
    #38370643
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проблема то в чем? код в пределах подчинения... и выводить полный код, меняя "/" (или что там в качестве разделителя) на ".". В СКД рисуется "за недолго".
...
Рейтинг: 0 / 0
Вывести на печать дерево
    #38370650
Титов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Последний выдох ГПЖ,

проблема в том что это не СКД
...
Рейтинг: 0 / 0
Вывести на печать дерево
    #38370651
Титов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Последний выдох ГПЖ,

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Процедура ОсновныеДействияФормыОсновныеДействияФормыВыполнить(Кнопка)
	Макет = ЭтотОбъект.ПолучитьМакет("МакетПечати");
	Шапка = Макет.ПолучитьОбласть("Шапка");
	СтрокаДокумента = Макет.ПолучитьОбласть("Строка");
	ДокументРезультат = Новый ТабличныйДокумент;
	ДокументРезультат.Вывести(Шапка);
	ТаблицаЗначеий = ВыгрузитьДеревоЗначенийВТаблицуЗначений(ДеревоСвободныхОстатков);
	Для Каждого СтрокаТЧ из ТаблицаЗначеий Цикл 
		СтрокаДокумента.Параметры.Наименование = СтрокаТЧ.Наименование; 
		СтрокаДокумента.Параметры.Серия = СтрокаТЧ.СерияНоменклатуры;
		СтрокаДокумента.Параметры.Артикул = СтрокаТЧ.Артикул;
		СтрокаДокумента.Параметры.ЕдИзм = СтрокаТЧ.ЕденицаИзм;
		СтрокаДокумента.Параметры.Количество = СтрокаТЧ.Количество;
		//СтрокаДокумента.Параметры. = СтрокаТЧ. ;
		ДокументРезультат.Вывести(СтрокаДокумента);	
	КонецЦикла;
	
	
	УниверсальныеМеханизмы.НапечататьДокумент(ДокументРезультат, , , Заголовок);
КонецПроцедуры



принцип вывода информации
...
Рейтинг: 0 / 0
Вывести на печать дерево
    #38370652
Титов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Последний выдох ГПЖ,

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Функция ВыгрузитьДеревоЗначенийВТаблицуЗначений(Дерево, Таблица = Неопределено) Экспорт
	
	Если Таблица = Неопределено Тогда
		Таблица = Новый ТаблицаЗначений;
		Для Каждого Колонка Из Дерево.Колонки Цикл
            Таблица.Колонки.Добавить(Колонка.Имя, Колонка.ТипЗначения);
        КонецЦикла;
    КонецЕсли;
    Для Каждого СтрокаДерева Из Дерево.Строки Цикл
        ЗаполнитьЗначенияСвойств(Таблица.Добавить(), СтрокаДерева);
        ВыгрузитьДеревоЗначенийВТаблицуЗначений(СтрокаДерева, Таблица);
    КонецЦикла;
    Возврат Таблица;

КонецФункции



принцип получения ее из Дерева
...
Рейтинг: 0 / 0
Вывести на печать дерево
    #38370656
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что мешает также дерево обойти в рекурсии и нарисовать?
...
Рейтинг: 0 / 0
Вывести на печать дерево
    #38370658
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
возьмите за основу универсальный отчет на построителе - там еще и раскраска уровней есть
...
Рейтинг: 0 / 0
Вывести на печать дерево
    #38370661
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Последний выдох ГПЖа что мешает также дерево обойти в рекурсии и нарисовать?

йа наверное тупой, мне не понятно покой перегружать дерево в плоскую таблицу рекурсией...

еще мне более не понять если дерево есть результат запроса - накой вообще эта городьба с деревом и таблицей
...
Рейтинг: 0 / 0
Вывести на печать дерево
    #38370667
Титов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Последний выдох ГПЖ,

рекурсия мешается тем что я не знаю сколько уровней есть в дереве, если писать по это дело грамотную рекурсию то это слишком здорово получается, по этому я поступил проще, заполнил в начале Тч с ключевыми колонками КлючСтроки и КлючУровня а потом впихнул все это в дерево процедура прошла на ура, и рекурсия нафиг не понадобилась! а вот с выводом в печатную форму у меня чет проблемки выходят, хотелось бы приме живой! спасибо
...
Рейтинг: 0 / 0
Вывести на печать дерево
    #38370685
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>рекурсия мешается тем что я не знаю сколько уровней есть в дереве

ппц

>а вот с выводом в печатную форму у меня чет проблемки выходят, хотелось бы приме живой!

возьмите любой отчет на основе универсального с построителем и не ипите мозги себе и людям...
...
Рейтинг: 0 / 0
Вывести на печать дерево
    #38370978
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне рекурсия помешала только где-то на 30 вложениии...

Аналог ИзСтрокиСРазделителями() в 8 и в той строчке было десяток мегабайт. Рухнуло.
...
Рейтинг: 0 / 0
Вывести на печать дерево
    #38371103
Титов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1с,
вот собственно у меня схожая ситуация! ну да ладно объясню как есть у нас фирма производящая авто. сами понимаете спецификаций в УПП до одури даже номенклатуры меньше, и уровней в самой маленькой спецификации 40 вот по этому рекурсия не катит для меня!
...
Рейтинг: 0 / 0
Вывести на печать дерево
    #38371296
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Титовjavapecker,

дерево то я обошел, у меня щас проблема с нумерацией, заказчик хочет что бы выглядело это именно так, а как это сотворить чет не придумаю!Ну так Вы когда добавляете строку в ТЗ, кто мешает Вам сразу и код ее делать?

Что-то типа:

а - нумерация в пределах данной ветки дерева
Строка.Код=Строка.Родитель.Код+"."+а;

Все, или еще есть проблемы?

Свою ТЗ - запихивайте в СКД и выводите дальше как и что хотите с любыми отборами.
...
Рейтинг: 0 / 0
Вывести на печать дерево
    #38371461
sWinTyz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТитовПрограммист 1с,
вот собственно у меня схожая ситуация! ну да ладно объясню как есть у нас фирма производящая авто. сами понимаете спецификаций в УПП до одури даже номенклатуры меньше, и уровней в самой маленькой спецификации 40 вот по этому рекурсия не катит для меня!

рекурсия это зло , Вы только представьте , что каждый раз когда вызывается функция
в ваше лицо летит кирпич ...
после 12-го удара Ваше лицо превратиться в тыкву

каждый раз при вызове функции создается контекст
и в каждый Ваш контекст впихивается ваше ТЗ (снова и снова)
чем больше ТЗ = тем ближе писец ...

мне еще в универе за рекурсию бал снижали
научили на всю оставшуюся жизнь
но есть отдельные товарищи ...
кстати например Митичкин сторонник рекурсии
не битый кирпичом наверное еще
хотя ... система у него падает вроде как периодически
и наверняка клавиатуры виснут ...

ну да бог с этим всем
...
Рейтинг: 0 / 0
Вывести на печать дерево
    #38371464
sWinTyz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1с
Свою ТЗ - запихивайте в СКД и выводите дальше как и что хотите с любыми отборами.

да можно в СКД
можно и без СКД и рекурсии
...
Рейтинг: 0 / 0
Вывести на печать дерево
    #38371524
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sWinTyz, если рекурсия зло - ее бы не было. И в принципе при разумном количестве вложений - это нормально, и создает более удобочитаемый код.
Но и недостатки - возможное обрушение при нехватки памяти ... и тд и тп - надо просто их учитывать при написании данных функций.
...
Рейтинг: 0 / 0
Вывести на печать дерево
    #38371557
Фотография Владимир Лазурко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот немного о деревьях: инфостарт .
...
Рейтинг: 0 / 0
Вывести на печать дерево
    #38371579
Фотография Владимир Лазурко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
Процедура ВывестиСекцию(Секция, Выборка)

    Область = Макет.ПолучитьОбласть(пСекция);
    Область.Параметры.Заполнить(пВыборка);

    // Обрати внимание на Выборка.Уровень() - это источник твоего счетчика
    ЭлементыФормы.ТабДок.Вывести(Область, Выборка.Уровень()+1);

КонецПроцедуры
...
Рейтинг: 0 / 0
Вывести на печать дерево
    #38371581
Фотография Владимир Лазурко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Упс, недокопипастил
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Процедура ВывестиСекцию(Секция, Выборка)

    Область = Макет.ПолучитьОбласть(пСекция);
    Область.Параметры.Заполнить(пВыборка);

    ЭлементыФормы.ТабДок.Вывести(Область, Выборка.Уровень()+1);

КонецПроцедуры

Процедура ПечататьДерево(СтрокиДЗ)

    // Уровни группировок:
    //    0 - Склад
    //    1 - Товар
    //    2 - Регистратор

    Для Каждого СтрокаДерева Из СтрокиДЗ Цикл

        Если СтрокаДерева.Строки.Количество() = 0 Тогда
            Если ЗначениеЗаполнено(СтрокаДерева.Номенклатура) Тогда
                ВывестиСекцию("Номенклатура", СтрокаДерева);
            КонецЕсли;
            Продолжить; // Обошли строки, возврат к группировкам, иначе будет каша
        КонецЕсли;

        ВывестиСекцию(?(СтрокаДерева.Уровень()=0, "Склад", "Номенклатура"), СтрокаДерева);
        ПечататьДерево(СтрокаДерева.Строки);

    КонецЦикла;

КонецПроцедуры // СчитатьСуммыДЗ()
...
Рейтинг: 0 / 0
Вывести на печать дерево
    #38371651
sWinTyz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1сsWinTyz, если рекурсия зло - ее бы не было. И в принципе при разумном количестве вложений - это нормально, и создает более удобочитаемый код.
Но и недостатки - возможное обрушение при нехватки памяти ... и тд и тп - надо просто их учитывать при написании данных функций.

тем не менее ... приходилось переделывать за людьми
как раз в УПП на развертке спецификаций
при более менее приличном объеме контекста отжирает все ресурсы
я вообще не понимаю зачем она?
ну да коротко, только есть ли краткость сестра таланта в этом случае?

кстати знаю способ как через палитру цветов и безобидную раскраску областей
гарантировано выключить клавиатуру
обращайтесь , за символическую плату организую геморрой админам вашим
...
Рейтинг: 0 / 0
Вывести на печать дерево
    #38372547
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sWinTyz, все имеет свои области применения. Если вывести дерево - то да это легко. А вот если у тебя нереальная фрактальная функция (И там допустим сотни разных красивых строчек...)... И как раз при выполнения данной функции - пользователь задает количество рекурсий, в зависимости от памяти и мощности своего компьютера. И на выходе получает картинку нужного ему разрешения.
...
Рейтинг: 0 / 0
Вывести на печать дерево
    #38373428
sWinTyz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну да ...
помню я намутил с запросом ...
еще только начинал с 8-кой
раньше фокс был ... никогда не мутил с большими запросами
а в 8-ке на старте на было временных таблиц ...
ну я типа ... как брейнтрейнинг в СКЛ сервере
напишу все одним мощным ...
написал ...
оказалось : если файловая перескрипит и выдаст
скл версия просто падает
вот тебе и красота ... брейнтрейниг ...
хорошо что версия с временными таблицами появилась
вовремя мы тогда платформу обновили
заодно на практике оценил
что убивает систему в запросах
позже я об этом в умных книгах читал ...

з.ы.
нет областей применения у рекурсии
простой пример :
факториал легко считается в цикле и быстрее
в универе мы на практике проверяли
(машины тогда были слабее)
что рекурсия работает безбожно долго
можно сказать на порядок
а сдыхает на два порядка раньше

это как в задаче о поиске простых чисел
можно и в лоб ... но решето Эратосфена рулит

из пустого в порожнее переливаем ...
очень вредная инфекция для не устоявшихся умов
= есть рекурсия
я при своем останусь


кстати и дерево перебирал в логистике транспортной
а рекурсия бы сдохла там где я быстро относительно считал
...
Рейтинг: 0 / 0
Вывести на печать дерево
    #38373432
sWinTyz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в наше время , каждый кто получил высшее аграрное
считает что он может работать программистом 1с
вот и влезают во всякую фигню
школы то нет
...
Рейтинг: 0 / 0
25 сообщений из 35, страница 1 из 2
Форумы / [игнор отключен] [закрыт для гостей] / Вывести на печать дерево
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]