День добрый.
Подскажите, как решается задача, например, вывода остатков товара, с группировкой по свойствам товара (не только по "ОсновномуСвойству"). Платформа (пусть будет) ТиС 9.
Так же как и любой более-менее сложный отчет на 7.7 - сваливаем данные в таблицу значений, делаем по ней свертку, сортировку и расчет нужных итогов, потом выводим ее. Для вывода таблицы значений в отчет с группировками на проклабе есть обработка. Здесь тоже, кажется, лежала.
vcv Написал:
-------------------------------------------------------
> Так же как и любой более-менее сложный отчет на
> 7.7 - сваливаем данные в таблицу значений, делаем
> по ней свертку, сортировку и расчет нужных итогов,
> потом выводим ее.
А через запрос это точно невозможно? (Ведь ,в принципе, между позицией номенклатуры и ее свойствами установлена привязка, хоть и не прямая)
>Для вывода таблицы значений в
> отчет с группировками на проклабе есть обработка.
> Здесь тоже, кажется, лежала.
Можно и запросом извернутся. Но очень советую обратить ясный взор на
http://infostart.ru/projects/67/?ref=440 1C: Новейший отчет 7.7
Эта вещь решает практически все проблемы с отчетами.
VasilyKushnir Написал:
-------------------------------------------------------
> 1C: Новейший отчет 7.7
> Эта вещь решает практически все проблемы с
> отчетами.
Этот отчет я приобрел (и в нем нельзя реализовать такие группировки. Как мне ответил автор - возможно это будет в следующей версии)
Но задача другая. Задача состоит в том, чтобы менеджер мог формировать прайсы по свойствам, в зависимости от конкретной задачи. Например:
"Вид - производитель - категория - литраж".
И поскольку ими уже освоены отчеты ТиС и способы задания в них группировок, хотелось бы эту задачу реализовать подобно.
Насколько мне известно нельзя группировать только по детализации типов НеОпределенный. Например, если значение может принимать тип Склад или Контрагент - в регистре тип НеОпределенный, то детализация группировки не проходит (и авторы действительно обещали это подправить), а если Товар и явная ссылка на справочник Товары, то в группировки можно добавлять любое свойство товара.
VasilyKushnir Написал:
-------------------------------------------------------
> Насколько мне известно нельзя группировать только
> по детализации типов НеОпределенный. Например,
> если значение может принимать тип Склад или
> Контрагент - в регистре тип НеОпределенный, то
> детализация группировки не проходит (и авторы
> действительно обещали это подправить)
Хорошо. Предположим я хочу сделать отчет остатков товаров с группировкой по разным свойствам товара. Как добавить эти группировки в "Новейшем"?
Становишься на группировке Товар, далее кнопка "Добавить реквизит текущей группировки" (следующая от жирной кнопки вправо) и добавляешь в группировку любой реквизит товара.
VasilyKushnir Написал:
-------------------------------------------------------
> Становишься на группировке Товар, далее кнопка
> "Добавить реквизит текущей группировки" (следующая
> от жирной кнопки вправо) и добавляешь в
> группировку любой реквизит товара.
И в этом случае можно добавить только реквизит "ОсновноеСвойство". А у товара может быть (и бывает) не одно свойство.
Niko Написал:
-------------------------------------------------------
> И в этом случае можно добавить только реквизит
> "ОсновноеСвойство". А у товара может быть (и
> бывает) не одно свойство.
ИМХО в этом вся и фишка. Обрати внимание, что во всех отчетах можно фильтровать по свойствам, но группировать только по основному свойству.
Особенность состоит в том, что связь элемента справочника "Номенклатура" и "Основным свойством" - один ко многим, но между "Номенклатура" и другими свойствами - многие ко многим.
Попробуй преобразовать связи от "многие-ко-мноим" к "многие-к-одному". Может получится. Но у меня уверенности нет.
Все очень просто.
на примере: надо сделать прайс такой:
- в прайс должны попасть те позиции где значение свойства "Цвет" не равно "красный".
Запрос =
|Товар = Справочник.СвойстваНоменклатуры.Владелец;
|Свойство = Справочник.СвойстваНоменклатуры.Свойство;
|Значение = Справочник.СвойстваНоменклатуры.Значение;
|Условие (Найти(ВРег(Свойство),"ЦВЕТ")<>0);
|Условие (Найти(ВРег(Значение),"КРАСН")<>0);
..типа все
недостатки
- будет работать медленно
- требуется жесткаф формализация работы со свойствами
(а то какай-нить кекса вместо красного РУЧКАМИ умудрится вбить цвет "ГЛАМУРНЕНЬТКИЙ" и не попадет такая позиция в прайс хотя имелся в виду красный)
если нормально подумать - то можнно и для данной позиции реализовать МФ (но это будет бяка, так как МФ - это подзапросы)
Сhe Burashka Написал:
-------------------------------------------------------
> Все очень просто.
> на примере: надо сделать прайс такой:
> - в прайс должны попасть те позиции где значение
> свойства "Цвет" не равно "красный".
Задача не втом чтобы отобрать определенные позиции (это как раз выполнимо), а в том, чтобы в прайсе (или остатках) группировка происходила по свойствам. Например:
Вино красное
-- Провинция
-- Выдержка
-- Номенклатура
где "вино красное", "Провинция", "выдержка" - беруться из справочника "СвойстваНоменклатуры", владельцем которго является справочник "Номенклатура"
poppy Написал:
-------------------------------------------------------
> У тебя таких свойств счетное и конечное количество
> или такие свойства могут добавляться в процессе
> работы?
Niko Написал:
-------------------------------------------------------
> А через запрос это точно невозможно? (Ведь ,в
> принципе, между позицией номенклатуры и ее
> свойствами установлена привязка, хоть и не
> прямая)
В том виде, как стоит задача - да, невозможно.
Что-бы в запросе получить группировку (и итоги) нужно иметь доступ к значению через точки, например,
Свойство = Регистр.ОстаткиТМЦ.Номенклатура.ОсновноеСвойство.Свойство;
Можно предположить такое решение. В номенклатуру добавляем несколько реквизитов типа Справочник.СвойстваНоменклатуры. Перед тем как формироварь запрос, заполняем эти реквизиты нужными нам значениями.
Не уверена, что из этого что-то может получиться.
З.Ы. ИМХО лучше повозиться с таблицей значений, как это преложил vcv.
poppy Написал:
-------------------------------------------------------
>
> В том виде, как стоит задача - да, невозможно.
> Что-бы в запросе получить группировку (и итоги)
> нужно иметь доступ к значению через точки,
> например,
> Свойство =
> Регистр.ОстаткиТМЦ.Номенклатура.ОсновноеСвойство.С
> войство;
>
> Можно предположить такое решение. В номенклатуру
> добавляем несколько реквизитов типа
> Справочник.СвойстваНоменклатуры. Перед тем как
> формироварь запрос, заполняем эти реквизиты
> нужными нам значениями.
>
> Не уверена, что из этого что-то может получиться.
>
> З.Ы. ИМХО лучше повозиться с таблицей значений,
> как это преложил vcv.
Совершенно верно. Я пошел несколько другим путем. С помощью "Новейшего" создал запрос не к регистрам, а вывел печать справочников (в данном случае "Свойства номенклатуры"). Все получилось с одним "Но". Если у товаров есть несколько свойств и нужно вывести группировки вида:
-- Свойство1
-----Свойство2
---------Свойство3
-------------Номенклатура
Выводится следующее:
--Свойство1
----Номенклатура
--Свойство2
----Номенклатура
и т.д.
И это понятно, поскольку свойства привязаны к номенклатуре и не имеют подчинения между собой.
Поэтому, видимо через ТЗ - наиболее оптимально + в диалоге указывать порядок группировки свойств.
Огромное спасибо всем, кто откликнулся и попытался как-то помочь.
В принципе, если указать в диалоге порядок группировки свойств, тогда при выводе группировок будет достаточно вставить условие:
Пока Запрос.Группировка("Свойство") = 1 Цикл
Таб.ВывестиСекцию("СвойствоN");
Если Запрос.Свойство = КонечноеСвойство Тогда
Пока Запрос.Группировка("Номенклатура") = 1 Цикл
Таб.ВывестиСекцию("Номенклатура");