Вывод ТЗ, соблюдая иерархию справочника ... #19834


#0 by Bzzzzz
V77.Есть ТЗ, которая содержит столбец "Номенклатура" и ряд числовых.Нужно вывести содержимое ТЗ, соблюдая иерархию справочника и подсчитывая итоги по группам.Добавить столбец "Владелец", перебирать справочник, искать по владельцу, выводить строку и потом удалять её из тз?Подскажите пожалуйста как эффективнее это реализовать.
#1 by 19x0
Добавь колонку "ПолныйКод", в которую ложишь полный код элемента справочника, и сортируешь по ней - получается иерархия справочника, а вот суммировать по группам - сложнее начинаются извраты. Неужели нельзя из запроса выудить суммы по группам?
#2 by Bzzzzz
В тз сливается инфо из 3-х запросов.Если юзать "ПолныйКод", тогда сортировка будет по коду, а в спр по Наименованию :(
#3 by pit
Не нашел? А ведь в том примере и итоги по группам считались...
#4 by Mikki
Возможно Вам поможет 'прямое позиционирование в запросе'.
#5 by Salex
По иерархии:Как сказал ПолныйКод или ПолноеНаименованиеПро итоги. Для удобства добавить колонку со значением уровня элемента.А далее обходишь табличку снизу вверх и складываешь итоги по уровню в переменную. Доходишь до вышестоящего уровня, сумму записываешь в тз и обнуляешь переменную.
#6 by 19x0
Если бы это было проблемой ... :)) Из полного кода удаляешь код элемента, а вместо него пишешь наименование.
#7 by Человек дождя
Добавь в конфу служебный справочник аналогичный по структуре справочнику номенклатура. Сливай содержимое твоих запросов не в ТЗ а в этот справочник.Т.е. вытащили запись, записали такой элемент в справочник, попутно записав все вышестоящие группы. При добавлении каждого элемента прибавляй сумму к сумме каждой вышестоящей группы. В конечном итоге получишь заполненный служебный справочник с итогами по группам. Потом очищаем справочник и ждем след запуска
#8 by Муму после всплытия
сильно...............
#9 by Человек дождя
Забыл добавить - такой справочник легко обойти запросом и вывести в отчет в нужном тебе виде
#10 by Salex
сильный совет.....Да чего там! Копию конфы сделаем и будем в нее по оле итоги по справочникам сливать.....
#11 by Человек дождя
? Совсем не оптимально, согласен. Но исключительно удобно работать
#12 by Bzzzzz
ищу :-)там же дофигаты ж можешь быть и 321 и 427 и ... :-))
#13 by KAO
Есть хороший класс 1С++. Называется ТаблицаГруппировок. Есть на проклубе. Но я на него сейчас попасть не могу - не отвечает. Там всевозможное суммирование реализовано. Когда я стал этот класс использовать - ошалел насколько стало проще писать отчеты.
#14 by Человек дождя
Не забывай дружище, не все то, что дико звучит неправильно. Если требуется вывести данные в соответствии с некой иерархией, которую не удается скомпоновать запросом (и еще нужно получить итоги по группам этой иерархии) - это единственный нормальный способ. Проверь
#15 by KAO
По поводу ТаблицыГруппировок. Обход ТЗ осуществляется анологично обходу запроса.
#16 by Муму после всплытия
вы видимо совсем не умеете работать с ТЗ............... иначе б так не рассуждали................... тут делов то - "на копейку"............. правильно говорят - полное наименование
#17 by Bzzzzz
Спасибо за ответы. Вечером буду пробывать. Ща башка текущими делами забита :(Пит, это не оно? :)
#18 by Salex
Единственный нормальный способ привести тз к нужному виду это крутить и вертеть эту тз до полного ее просветления. Проверено.P.S. А где в постановке задачи вы видите запрос?
#19 by Человек дождя
Насчет умения работать с ТЗ просто не буду отвечать, думай что хочешь.* * *Насчет прочего. Если в табличке есть и группы и элементы с суммами то мой способ применять не стоит. Я понял задачу так: "соблюдая иерархию справочника и подсчитывая итоги по группам" - т.е. имеем заданную иерархию. Имеем набор групп по которым нужны итоги (т.е. пркатически наш справочник в котором только группы). В этом случае в табличке нет информации о группах по которым нужно суммировать. Поэтому самое быстрое решение (с точки зрения реализации, не скорости выполнения), то которое изложил
#20 by Bzzzzz
Хм.мм, пожалуй ПолноеНаименование может зарулить :)Я совсем забыл про такой метод, считая ПолноеНаименование реквизитом типовых конф.Тока вот если будет 2 группы с одинаковым наименованием ... :)Надо видимо еще код заюзать
#21 by Человек дождя
Salex: чудак человек - то что ты знаешь один способ это не значит что нет других -))
#22 by Муму после всплытия
я думаю..................... в вашей местности давно дождя не было..........
#23 by Bzzzzz
Мума, :) как быть с одинаковыми группами?
#24 by Человек дождя
Ну поскольку мы отлично поняли друг друга то порядок ;-)) Успехов, может когда нибудь с моей задачей столкнешься.
#25 by Умка
По поводу имхо полный бред. Все можно сделать в ТЗ, а заполнять/удалять служебный справочник это не есть хорошее программирование. Это только способ достижения цели первым попавшимся способом. Неужели ты все примерно так делаешь?
#26 by Муму после всплытия
у вас в группе могут быть подгруппы с одинаковыми наименованиями??? в этом есть какой то смысл??
#27 by Человек дождя
Давай адрес, я тебе скину задание, сделаешь через ТЗ оптимальнее, я извинюсь
#28 by Человек дождя
можно и при людях на форуме. Выкладывать задание?
#29 by Bzzzzz
В теории нет, но на практике :)Хотя за это убиффффать надо.
#30 by Муму после всплытия
для формирования полного наименования можно свою процедурку написать, а уж там делать что угодно................... к примеру: СокрЛП(Спр.Наименование) + СокрЛП(Спр.Код)................. да, и стандартный разделитель "/" лучше заменить на Симв
#31 by Maxx
Месяц назад я тут такую тему поднимал. До сих пор благодарен доброй душе, прямо в форум поместившей текст обработки которая ТЗ с элементами превращает в ТЗ с группами и итогами по ним. Это я в том смысле что многие задачи, встающие перед нами, уже решены.
#32 by Uno
2Есть но они тормозят или транзакция надо юзать. А по нормальному делаеться все в 10-20 строк. Добавляешь 2 колонки Юзаешь полное наименование отрезав наименование и записуешь уровень. выгрузил в несколько тз по количеству уровней и сжимаешь по добавленной колонке потом в зависимости от уровня группы поиск в нужной таблице и вытаскиваешь итоговую сумму.
#33 by pit
задрал уже... второй день...Кидай пустышку на karkarde(сабака)pisem.net/зы но у меня обработка для бухии!!!!!
#34 by Maxx
Ветку ту найти не смог, жаль там был автор, а у меня осталась только сама обработка и теперь ей суждено превратиться в фольклёр. 0, давай мыло вышлю.
#35 by Bzzzzz
Побудь теперь ты доброй душой :)
#36 by Человек дождя
Я по-моему понятно описал задачу которая решается моим способом. Блин, читать что-ли не умеем? Не решишь её оптимально используя ТЗ!
#41 by Bzzzzz
Всем огромное спасибо.Теперь у меня есть несколько вариантов решения задачи.
#42 by 19x0
Отчитаешься какие больше понравились?
#43 by Bzzzzz
Пока получилось посмотреть только то, что Пит прислал и Maxx.Есть еще вариант ТОА. Вечером гляну.
#44 by android
на / почти готовое решение, только ТЗ правильно заполнить надо
#45 by Builder
Ловите, кому надо....Подправите вывод в таблицу и колонки.
#46 by Builder
Кто-нибудь чего-нибудь скажет? Интересно услышать мнения....
#47 by OlegKZ
Всегда хотел узнать, что означает Таб.Опции(0,0,0,0). Читал "конфигурирование и администрирование" - не въехал. И почему всегда 0.
#48 by OlegKZ
Забыл добавить: процедурка интересная.
#49 by Builder
Я ее делал для одной цели - распечатать непроведенный и несохраненный документ с учетом иерархии без использования запроса. У меня работает.
#50 by android
Интеренсная вещь, только стоит строку ТЗ.УстановитьЗначение(ТЗ.ТекущаяСтрока,"Уровень1",Статья);заменить на ТЗ.УстановитьЗначение(ТЗ.НомерСтроки,"Уровень1",Статья);иначе иногда ошибка вываливается
#51 by Builder
2 Угу, писал быстро, заработало - и ладно :)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С