УТ 10. Характеристики в ТЗ

1. MAXXL 13 14.10.17 15:58 Сейчас в теме
Нужно вывести Характеристики группы номенклатуры в ТЗ. Не могу сообразить - как лучше сформировать такую ТЗ? Получается в каждой строке будет Номенклатура, Характеристика, и далее пары Свойство-Значения свойств, причем количество колонок от товара к товару может меняться... Как лучше сделать такую ТЗ? В чем собственно задача-вывести характеристики группы товаров в таблицу, подправить и сохранить.
"Группа"- в смысле какой-то список товаров, у которого нужно проставить свойства в характеристике. Ну например список - Ботинки А, Ботинки Б, Ботинки С. И нужно у них выставить свойства "Материал - Кожа, Размер - 43, Цвет - Черный"
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. DenisCh 14.10.17 16:21 Сейчас в теме
А почему для этого не использовать дерево?
номенклатура
характеристика
свойство
свойство
....
+
3. MAXXL 13 14.10.17 17:32 Сейчас в теме
а вывод на экранную форму как делать? свойства пользователь будет ручками выставлять
+
4. forev8 14.10.17 18:23 Сейчас в теме
а если 2 элемента на форму повесить? сверху дерево с пометкой. внизу тз. если сверху поставили флаг поменять у группы копируем в тз вводим значения и записываем
+
5. MAXXL 13 14.10.17 18:42 Сейчас в теме
так опять приходим к вопросу - как в тз создать колонки для свойств-значений? этих пар для каждого товара может быть до 10... А что будет именем колонки? Название свойства или значения? А там могут быть пробелы, символы и прочий мусор,из за которых нельзя их использовать в качестве имени. Если их удалять, то получаются неоднозначные названия ( получаются одинаковые имена)
+
6. progr-2008 118 14.10.17 18:59 Сейчас в теме
(5)
могут быть пробелы, символы

Символы и пробелы можно преобразовать.
+
8. MAXXL 13 14.10.17 19:04 Сейчас в теме
(6) если убрать символы и прочее мешающее - будут неоднозначные названия.Более того - есть такие что изначально называются одинаково, но для разных товаров . Например "Размер" для ботинка и для рубашки одно название, но свойства и значения свойств у них разные
+
9. progr-2008 118 14.10.17 20:06 Сейчас в теме
(8)Не просто убрать, а заменить.
+
10. progr-2008 118 14.10.17 20:09 Сейчас в теме
Напишите ваше сообщение
(8)
"Размер" для ботинка и для рубашки одно название, но свойства и значения свойств у них разные

В ПВХ одинаковое название разных Свойств с одинаковым типом?
Назначения свойства разные?
Не типовая конфигурация?
+
11. progr-2008 118 14.10.17 20:56 Сейчас в теме
(8)Я о том, что если конфигурация типовая, то при разных назначениях свойств в справочнике характеристик (например, по группам номенклатуры), даже если названия этих свойств одинаковые - это разные объекты.
Да и всегда можно названия сделать в чем-то разные.
Кроме этого, если это одно свойство, даже при одинаковых наборах характеристик, не обязательно их использовать все для разных групп номенклатуры.
+
7. progr-2008 118 14.10.17 19:00 Сейчас в теме
Напишите ваше сообщение
(5)Вообще-то, даже для корректного формирования отчетов, некорректные символы надо преобразовывать, чтобы не было неоднозначных.
+
12. MAXXL 13 14.10.17 21:11 Сейчас в теме
Не типовая. Сделать нельзя, они нужны именно такими как названы - выгружаются потом на сайт.
Объекты то они разные, но получатся две колонки с одинаковым названием?
+
13. stvorl 1041 14.10.17 21:25 Сейчас в теме
(12) Так вам нужно подготовить набор данных для выгрузки на сайт, или сделать табличный интерфейс пользователя, чтобы он как-то хитро просматривал номенклатуру с характеристиками и свойствами?

Просто это задачи, которые могут быть по разному решены.
+
14. MAXXL 13 14.10.17 21:49 Сейчас в теме
(13) просматривать характеристики-свойства номенклатуры. так чтоб загрузил в ТЗ разом все ботинки например и смотришь ошибки/правишь/назначаешь нужное.
+
16. progr-2008 118 14.10.17 21:54 Сейчас в теме
(14)Так не обязательно все сразу тогда в одну ТЗ выгружать - назначения свойств все-таки разные, вот и программно формировать разное значение колонок в зависимости от группы номенклатуры.
+
15. progr-2008 118 14.10.17 21:51 Сейчас в теме
(12)Одинаковые названия не проблема - можно программно сделать в чем-то разными при выводе.
+
17. MAXXL 13 14.10.17 21:59 Сейчас в теме
(15) сделать то можно - как это обрабатывать? если б колонку нужно было просто создать - задал название рандомом. а нужно обработать действия пользователя и загрузить результат обратно в номенклатуру. также вариант действия - в обработке нужно создать свойство, присвоить значение и присвоить номенклатуре
+
18. stvorl 1041 14.10.17 22:24 Сейчас в теме
(17)
Сделайте форму как в справочнике - с деревом слева, но справа будет ТаблицаЗначений вместо СправочникСписок.
Отслеживайте перемещение текущей папки в дереве, перезаполняйте таблицу. Отслеживайте также щелчки в таблице значений на папки, и меняйте текущую папку с перезаполнением таблицы.

Теперь колонки со значениями свойств. Их или заранее сделайте 10-20 штук, и включайте им видимость-невидимость, или при каждом перезаполнении таблицы удаляйте-добавляйте динамически. Предпочтительнее первое. Допустим они будут называться ЗначениеСвойства1, ЗначениеСвойства2 и т.д.

При перезаполнении таблицы:
С использованием информации о текущей папке нужно запросом выбрать в массив все свойства, которые применимы к текущей папке и любой номенклатуре, находящейся непосредственно внутри (но не во вложенных папках).

Я как понял, у вас для разных папок свои назначения свойств, поэтому при открытии каждой папки вам не нужны все колонки свойств, а нужны только применимые к этой папке.

Далее динамически (сложением и подстановкой строк) соберите текст запроса по номенклатуре и характеристикам с левым соединением по значению каждого возможного из ранее полученных свойств, чтобы их значения падали в колонки (ЗначениеСвойства1, ЗначениеСвойства2...) в том же порядке, как свойства положены в массив. Номенклатуру отберите по текущей папке.

Загрузите результат на экранную таблицу. Пройдитесь по колонкам ее свойств и задайте из массива доступный тип (чтобы пользователь мог перевыбрать значения в ячейках только по соответствующему типу свойства), заголовок (наименование свойства), настройте видимость колонок, чтобы спрятались неиспользованные.
Здесь также можно СохранитьЗначения/ВосстановитьЗначения по ширинам каждого возможного свойства, потому как они будут каждый раз, в зависимости от текущей папки, в разных колонках, и вас задерет перенастраивать размеры.

Тогда у вас на каждую перерисовку будут всего два запроса, это будет достаточно быстро работать.

Изменения ячеек колонок ЗначенияСвойстваX отслеживаете событием, по номеру получаете свойство из массива, менеджером значений РС перезадаете значение свойства. Все.

Делать, разумеется, сложнее, чем писать, советовать всегда легче. Удачи. :-)
+
19. MAXXL 13 14.10.17 22:37 Сейчас в теме
(18) если б все так было просто :)
1. Нужно видеть в строках все товары отобранные по условию одновременно, а не "поштучно"
2. Номенклатура растет, свойства добавляются, переписывать каждый раз обработку?
да вообще, если оторваться от конкретной этой задачи - как решить такую проблему? Загрузить в ТЗ неизвестное количество колонок с неизвестными названиями. И как-то с ними работать... У меня кроме варианта кол_1, кол_2, ... и работать по смещению - ничего не придумалось
+
20. stvorl 1041 14.10.17 23:24 Сейчас в теме
(19)
Или Вы не совсем меня поняли, или я Вас. Но пояснить за 5 минут, как написать обработку, которую делать часа 2-3, крайне тяжело, поэтому наши разногласия понятны.

Мое решение все функции предоставит, переписывать ничего никогда не потребуется. Разве что, если вы заранее понимаете, что 10 свойств вам может не хватить, предусмотрите 30 скрытых колонок, или вообще - добавляйте их динамически при обновлении таблицы.

Если оторваться от задачи, то именно так и делать, как Вы сказали - КолонкаЗначений0, КолонкаЗначений1, задавать им программно синоним (видимый заголовок), и иметь альбом соответствий номера колонки каким-то данным (как у меня в примере - массив задействованных свойств).
Тогда вы всегда можете сколхозить типа-лямбду СтрокаТаблицы["КолонкаЗначений"+Формат(ИндексНашейКолонки, "ЧГ=")] = НовоеЗначение;, если непонятен именно этот момент.
Вернусь к первоначальной задаче, если вам не нравятся индексы, можно динамически заводить колонки типа КолонкаСвойства_{Тут код или GUID свойства, для которого в этой колонке лежат значения}.

Если не нравятся таблицы значений и хочется типового иерархического/сплошного просмотра и отбора, то можно еще завести форму справочника свою, в список добавить колонки1,2,3... (в список, НЕ в реквизиты справочника) и наполнять их по событию ПриПолученииДанных() - это если нужно, чтобы работал отбор по штатному реквизиту справочников (по этим колонкам все равно не будет).
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот