Имеется Альфа-авто 4.1, платформа 8.2
Необходимо провести рефакторинг всех выгрузок (auto.ru, avito.ru, autospot.ru и пр.).
Сейчас данные находятся в самом справочнике "Автомобили".
Подскажите, как удобней хранить данные для последующего чтения и формирования xml для сих сервисов? Может у кого уже были такие задачи...
Вероятно, что тут нужен регистр сведений + ПВХ + ЗначенияПВХ? Тогда ... измерения регистра: авто, сервисагрегатор, свойствоПВХ, а ресурс - значениеПВХ?
Значения могут быть не только примитивных типов.
Правда с виду читать не особо удобно будет, сейчас все выгрузки рассчитаны кортеж данных, а тут получится таблица с кучей свойств и значений... Придётся переписывать формирование xml :(
(1) Мне кажется лучший вариант это реквизиты типа "СправочникСсылка" (может быть на закладках формы) с точки зрения целостности данных и удобства программирования. В пользу универсальности - табличная часть с полями "имя реквизита на сайте", "Значение реквизита (или правило преобразования значения из БД 1С)" т.к. когда проектируешь такую структуру надо думать о универсальности.
(2) По поводу ТЧ: не понимаю, а как значения хранить? Можно поподробнее? Имхо тут справочник/ПВХ нужен.
А сейчас только в голову пришло, не будет же пользователь каждый раз добавлять и выбирать свойство, если их десяток...
(5) я предлагаю сделать в табличкой части шаблон и обрабатывать конфу по нему
По поводу ТЧ: не понимаю, а как значения хранить?
Нуесли речь о создании универсального инструмента то например делаешь табличную часть "АвтоРу" в нее делаешь запись в колонку "имя поля XML" = "MARKAAVTO"
а во вторую колонку "значение поля XML" пишешь текст - ПутьДоРеквизита = "Справочник.Автомобили.МаркаАвто"
затем во время программной обработки в простейшем случае - синтактический анализатом:
Если Найти(ПутьДоРеквизита,"Справочник.Автомобили.")>0 Тогда
ИмяРеквизита= СтрЗаменить(ПутьДоРеквизита,"Справочник.Автомобили.","");
ЗначениеРеквизита = ТекущийАвтомобиль[ИмяРеквизита]; //ЭтотОбъект[ИмяРеквизита] = ЭлементОтбораЗначение;
КонецЕсли;
//а если делать по уму то смотрите дальше:
ЕстьРеквизит = Метаданные.Документы[НаименованиеСправочникаТекущегоЭлемента].Реквизиты.Найти(ИмяРеквизита) <> Неопределено;
Если ЕстьРеквизит Тогда
//разбить строку ПутьДоРеквизита на части через точку например РазложитьСтрокуВМассивПодстрок()
ТекущийЭлементИмя=Метаданные.НайтиПоТипу(НаименованиеСправочникаТекущегоЭлемента).Имя;
//ТекущийЭлементСсылка=Справочники[ТекущийЭлементИмя].НайтиПоКоду(Код,Ложь)
Для Каждого ТекущийЭлементСсылка Из Справочники[ТекущийЭлементИмя] Цикл
ЗначениеРеквизита = ТекущийЭлементСсылка[ИмяРеквизита];
...
КонецЦикла;
...
КонецЕсли;
//см.https://www.forum.mista.ru/topic.php?id=24398
//Еще если дальше пойти то в текущей строке табличной части можно вот так перебирать элементы:
Номенклатура = ТекСтрока[ИмяРеквизитаНоменклатура];
(1) а зачем вообще что-то хранить ?
Ведь все эти сайты, как правило, требуют просто выгрузки актуальных остатков на момент выгрузки.
мы делали просто служебный справочник, с параметрами подключений, именами каталогов...а сама xml ка уже регламентным заданием, по текущим остаткам формировалась и выкладывала файлики по нужным стандартам конкретного сайта куда надо.
А зачем сами данные хранить...что-то непонятно
Всякие марка авто, модель, комплектация, модификация, состояние, тип руля и привода, всевозможные скидки (4 вида)... в общем в альфа-авто изначально таких данных нет. Марка/модель/Комплектация/Модификация - справочники определенной структуры и значениями, которые требуют сие сервисы. Поэтому в каждой карточке авто они отдельно заполняются вручную, тем более у нас структура моделей совсем другая.
Всякие марка авто, модель, комплектация, модификация, состояние, тип руля и привода, всевозможные скидки (4 вида)... в общем в альфа-авто изначально таких данных нет. Марка/модель/Комплектация/Модификация
как нет ?
У нас конечно, альфа сильно переписанная была, но все эти параметры были в карточке автомобиля...иначе как вообще их продавать то. Клиенты же спрашивают, что за машина, какой привод, модель, комплектация и тп.
А регламентное задание, как раз всю эту информацию из базы и вытаскивала, и формировала нужного формата файл.
(6) Ну модели и комплектации далеки от того, что требует авто.ру, например. Не приводить же мне весь справочник для того, чтобы авто.ру "поняла" сию модификацию и комплектацию.
Посмотрите справочник автору https://auto-export.s3.yandex.net/auto/price-list/catalog/cars.xml Пример:
Это в карточке авто нужно выбрать определенную марку, модель, модификацию и комплектацию (она тоже обязательна)!
А в авито https://autoload.avito.ru/format/Models.xml так вообще все просто:
Т.е. только марка и модель.
Это первое что бросается в глаза, дальше там ещё всякие дополнительные свойства.
Тем более они их постоянно актуализируют. Так что у нас сейчас отдельные справочники это хранят и в карточке авто все вручную заполняют.
Тем более они их постоянно актуализируют. Так что у нас сейчас отдельные справочники это хранят и в карточке авто все вручную заполняют.
ну,
так данные в базе получается есть ?
зачем тогда регистр ? Чтобы эти данные дублировать ? Так это придется еще и в регистре контролировать их корректность и актуализацию...
или я чего-то не понимаю.
Нужно всего лишь написать алгоритмы, подготовки и преобразования этих данных, в данные пригодные для конкретного сайта. Вот и все.
P.S.
на авто.ру, и на авито - я сам лично делал выгрузки, поэтому знаю принцип и представляю формат
P.P.S Или цель задачи, сделать альтернативу этим вашим справочникам ?
(9) Сейчас все данные находятся в справочнике "Автомобили"!
Каждый раз добавляется новый реквизит, меняется форма, там несколько закладок на каждый сервис-агарегатор. Это уже ни в какие ворота не лезет.
Нужен рефакторинг!
Да, цель создать альтернативу, все данные перенесу, лишь бы грамотно спроектировать и переписать по-людски.
Подскажите, пожалуйста, а если я захочу хранить опции, но в качестве формы подбора использовать html-поле, чтобы сделать все красиво как в оригинале (см скрин), то как правильно проставлять атрибуты checked и selected для чекбоксов и селектов?
Вот сверстал страничку, но как корректно искать опции?
Чекбоксы можно по id искать, но setattribute не работает.
А селекты ...они имеют формат:
Тут тоже не ясно, как правильно "проставить" уже выбранную ранее опцию в форме подбора при открытии, option не поддерживает id.
В общем, вопрос в том, как обойти этот DOM и проставить флаги/селекты.