Имя: Пароль:
1C
 
Интересная сортировка
0 Юлианна_Н
 
01.04.24
17:22
Всем привет.
Нужен совет
Есть задача от юзеров:
"В ПФ УПД нужно выводить номенклатуру в определенной последовательности... первыми выходят номенклатуры с родителем Молочная продукция, после - мороженки и т.д, есть определенный список и там же порядок кто за кем, если кого то в списке нет, то сортировка все равно остается определенной, типа сортировка:
а, б, в, г, д... если б нетв товарах, то пропускаем и выводим а,в,г,д"

Собсна придумать реализацию пока не получается, точнее не так... не очень хочется сортировать по условиям, ну типа в цикле если - тогда и по тищи раз перемещать номенклатуры вверх-вниз, а как то поуниверсальнее...

Моя идея заключается еще на уровне запроса по выборке номенклатуры (два варианта)
первый - сразу сформировать выборку по родителям и потом к этой таблице тащить номенклатуру
второй - через выбор когда тогда, типа Выбор когда РОдитель равно а тогда 1 если б то 2 (ну или как то так) и потом можно отсортировать сразу по возрастанию и в выборке уже иметь отсортированный список....

Может кто что посоветует более элегантное или, если мои решения не такие оптимизированные, что то "по-легче" ибо говнокодить не особо хотелось бы.

Заранее спасибо
1 Garykom
 
01.04.24
17:27
(0) Задать таблицу сортировки в некоем РС с полем упорядоченным (Номенклатура - Индекс)
В запросах соединять левым (по номенклатуре) с этим РС и сортировать по полю
2 shuhard
 
01.04.24
17:26
(0) сделай доп.реквизит у номенклатуры и пиши в него фоновым заданием, делать это на "лету" не стоит
3 Юлианна_Н
 
01.04.24
17:28
(2) неееее, это ужасно будет и хз дадут ли, номенклатура вся централизована и редактировать никто не даст, тем более признак уже есть - родитель
4 Юлианна_Н
 
01.04.24
17:29
(1) да, хранить список есть где (мы сделали некий спр типа констант и функц опций и там есть возможность хранить списки и да, мое первое решение примерно о том же, что бы к списку тащить номенклатуру
5 Hmster
 
01.04.24
17:30
(0) создаешь свойство или даже не одно и сортируешь по свойству
6 Hmster
 
01.04.24
17:31
(3) родитель сегодня один - завтра другой
7 Юлианна_Н
 
01.04.24
17:32
(1) сформировали список - в запросе первое поле что то типа АВТОНОМЕРЗАПИСИ() вторым полем этот список - кладем в ВТ - и потом Номенклатуру к ВТ и у нас и номера будут в зависимости от родителя из списка и номенклатура тут же будет, да, наверное так и сделаю....
8 Юлианна_Н
 
01.04.24
17:32
(6) не, такого не будет, повторюсь номенклатура централизована и лежит в 11 базах
9 Юлианна_Н
 
01.04.24
17:33
(8) а хранится вообще в другой
10 Юлианна_Н
 
01.04.24
17:36
(1) (7) ...и тут же в запросе сортируем, и отладить (в консоле) легче и изменить порядок в котором выводить - тоже удобно
думаю это максимально универсальное решение
11 Юлианна_Н
 
01.04.24
17:40
(6) и да, если родитель поменяется, то номенклатура в конец попадет да и все, и собсна претензий не будет
12 Dmitrii
 
01.04.24
17:48
(3) >> признак уже есть - родитель

Задайте у каждого родителя код справочника таким образом, чтобы нужной сортировке соответствовал:
000001000 - Молочная продукция
000002000 - Мороженки
и т.д.
В запросе для печатной формы допишите:

СОРТИРОВАТЬ ПО Номенклатура.Родитель.Код
13 Волшебник
 
01.04.24
17:50
(12) Лучше завести новое поле Порядок
14 Dmitrii
 
01.04.24
18:00
(13) Наверное, соглашусь.
Но если коды элементов справочника можно менять, то можно обойтись и без дополнительных полей. К тому же это поле надо будет куда-то выводить или рисовать отдельную форму для его редактирования.
Есть свои полюсы и минусы у каждого решения. Нюансы только автор может знать - как в его условиях лучше будет.
15 Юлианна_Н
 
01.04.24
18:08
(12) (13) итого...

решила все таки уточнить у юзеров что да как и да, не будет какого то ограниченного списка, все касается всей номенклатуры И порядок должен быть как в иерархии самого спр Номенклатура, и, даже если номенклатуру куда то переместят, то ее отображение в УПД так же будет зависеть куда ее переместили (пример с торговым оборудованием, сперва это просто оборудование потом это холодильное оборудование, потом ХО что то там еще и по мере перемещения по родителям отображение будет отличаться) и да, теперь НЕ только в УПД а по большинству ПФ, УПД будет как начало глобальной сортировки :)

поэтому было принято решение ввести реквизит типа Порядок в которм будет лежать его порядковый номер (и тут тоже момент, у нас трехуровневая иерархия а сотритовать нужно только родителя номенклатуры, без деда и прадеда, поэтому и заполнение "Порядка" будет своеобразным, а что бы никто ничего не слома - реквизит так же централизуем и вешаем на него ТАБУ, что бы не вертели кто как хочет.
16 Юлианна_Н
 
01.04.24
18:09
а может и без Порядка, а в лоб как родители лежат в списке - так и будем отображать (с новым реквизитом, как по мне чуть больше гарантий)
17 Dmitrii
 
01.04.24
18:22
(16) >> как родители лежат в списке

Это как?

Автозачасти
  Карбюраторы
  Тормозные колодки
Молочная продукция
  Йогурты
  Кефиры
  Мороженки
  Сметана

В каком порядке будет выводиться без учета прародителя?
Йогурты
Карбюраторы
Кефиры
Мороженки
Сметана
Тормозные колодки
18 Гена
 
01.04.24
18:26
А нельзя просто сортировать по сцепке кодов Род+Эл ?
Конечно перед этим один раз коды папок поменять между собой по заданной иерархии?

Тогда не будет проблем с переносами элементов из папки в папку.
19 Гена
 
01.04.24
18:51
Хотя тогда тяжело будет сличать многостраничную реализацию ПФ и дока.

Итого окончательно как в (12), но с поправкой: не стоит новые коды папкам перебивать, портя нумерацию. Надо просто через один стековый код поменять имеющиеся коды местами в заданной иерархии. Потом стек удалить.

Действуйте.
20 Волшебник
 
01.04.24
20:29
(16) Без Порядка получится беспорядок или автоматизированный хаос
21 Asmody
 
01.04.24
20:32
Хранить группы номенклатуры в регистре сведений Порядок уже предлагали?
22 Гена
 
01.04.24
21:05
(21) А зачем? Если данная иерархия почти неизменна. До увольнения нынешнего финдира.
23 Garykom
 
01.04.24
22:25
(22) Надо быть ленивым и при решении любой задачи сразу думать на будущее
Что если будут два и более финдиров одновременно и каждый хочет свою сортировку?
24 Garykom
 
01.04.24
22:26
(23)+ А тут просто добавляем колонку - имя юзера и все
25 Юлианна_Н
 
02.04.24
09:19
(17)
Выводиться будет БЕЗ прародителей, но в порядке как в списке иерархий
  Карбюраторы
  Тормозные колодки
  Йогурты
  Кефиры
  Мороженки
  Сметана
----------------------------------------
(22) иерархия изменяема, но через тридевятьдесяток согласований (к примеру Родитель быдл равен "Какие то запчасти" а потом его пометили на удал создали новую папку "правильные запчасти" и туда переместили Номенклатуру.
но в списке номенклатур новая папка будет лежать в определенном месте, соответственно в этом же порядке и нужно будет выводить номенклатуру, и это всех устраивает

---------------------------------------
(23) директоров действительно много, т.к. у каждого ЮЛ свой шеф, своя база, но номенклатурной группой пользуются одинаковой, т.к. она транслируется из вне и у все иерархия +- одинаковая (кто то может не торговать какой то позицией) но в этом случае и в ПФ выводить нечего и сортировка остается удовлетворяемой конкретное ЮЛ.

Но да, соглашусь, что желания у каждого свои, на  сег день согласовано сделать одинаково для всех, а завтра кто то их ФД потребует иначе.
-------------------------------------

(19) думаю, что коды точно трогать не будем (ибо все элементы справочника централизованы), если и будем придумывать "половой признак" то только через новый реквизит, по примеру "Порядок", как советовали ранее, но я бы все таки попробовала без него, т.к. иерархия уже есть, в запросе вывести всех (можно и пронумеровать) и потом к этой таблице привяжем номенклатуру, если что пойдет не так - будем пробовать создавать реквизит (заводить РС для хранения некоего сопоставления папок к номеру - точно не будем, а вдруг команда программистов резко поменяется (после этой задачи ;) ) то новым будет чуть сложнее понять что куда откуда и как.
26 Юлианна_Н
 
02.04.24
09:25
(20) нам (отделу программистов) УТ-шки достались по наследству, и там уже не идеально. Сейчас у нас руководитель отдела толковый вроде как, постепенно ампутирует говнокоды, но пока только по конфе (основной) а еще куча расширений наплодили, динамические подписки на события, печатки и обработки...ужс

но мы стараемся (если чуть похвастаться)

я, собсна, поэтому и спросила как будет лучше, что бы внести капельку света в ПФ.
27 АгентБезопасной Нацио
 
02.04.24
09:56
(25) а как упорядочен "список иерархий"? Т.е. список родителей верхнего уровня? Его ведь можно как минимум упорядочить по коду, по наименованию, и по гуиду? Чем задается порядок? Чем определяется порядок номенклатуры, принадлежащей одной группе?
А вообще, задачка выводить в порядке групп первого уровня - несложная
28 Юлианна_Н
 
02.04.24
11:58
(27) самый верхний уровень:
01 Наименование
02 Наименование
...
07 наименование


В 01 подчиненные даже не по алфавиту и не по коду, скорее всего по дате создания (нет закономерности)

В 05 подчиненные так же:
- 01 Наименование подчин
- 02 --//--
- ...
- 14 Наименование подчиненного

Внутри этих так же как то рандомно, к примеру 01 подчиненных имеет еще два вхождения групп, а вот 13 и 14 - последние в иерархии, внутри уже лежат элементы

Итого Родителей, которые имеют подчиненными саму номенклатуру 132 штуки
2 + 2 = 3.9999999999999999999999999999999...