Проектирование выгрузок авто

1. triviumfan 93 14.01.19 15:12 Сейчас в теме
Доброго дня.

Имеется Альфа-авто 4.1, платформа 8.2
Необходимо провести рефакторинг всех выгрузок (auto.ru, avito.ru, autospot.ru и пр.).
Сейчас данные находятся в самом справочнике "Автомобили".

Подскажите, как удобней хранить данные для последующего чтения и формирования xml для сих сервисов? Может у кого уже были такие задачи...
Вероятно, что тут нужен регистр сведений + ПВХ + ЗначенияПВХ? Тогда ... измерения регистра: авто, сервисагрегатор, свойствоПВХ, а ресурс - значениеПВХ?
Значения могут быть не только примитивных типов.

Правда с виду читать не особо удобно будет, сейчас все выгрузки рассчитаны кортеж данных, а тут получится таблица с кучей свойств и значений... Придётся переписывать формирование xml :(

Критика приветствуется! :)
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ksnik 580 14.01.19 15:54 Сейчас в теме
(1) Мне кажется лучший вариант это реквизиты типа "СправочникСсылка" (может быть на закладках формы) с точки зрения целостности данных и удобства программирования. В пользу универсальности - табличная часть с полями "имя реквизита на сайте", "Значение реквизита (или правило преобразования значения из БД 1С)" т.к. когда проектируешь такую структуру надо думать о универсальности.
5. triviumfan 93 14.01.19 16:24 Сейчас в теме
(2) По поводу ТЧ: не понимаю, а как значения хранить? Можно поподробнее? Имхо тут справочник/ПВХ нужен.
А сейчас только в голову пришло, не будет же пользователь каждый раз добавлять и выбирать свойство, если их десяток...
8. ksnik 580 14.01.19 16:54 Сейчас в теме
(5) я предлагаю сделать в табличкой части шаблон и обрабатывать конфу по нему
По поводу ТЧ: не понимаю, а как значения хранить?

Нуесли речь о создании универсального инструмента то например делаешь табличную часть "АвтоРу" в нее делаешь запись в колонку "имя поля XML" = "MARKAAVTO"
а во вторую колонку "значение поля XML" пишешь текст - ПутьДоРеквизита = "Справочник.Автомобили.МаркаАвто"

затем во время программной обработки в простейшем случае - синтактический анализатом:
Если Найти(ПутьДоРеквизита,"Справочник.Автомобили.")>0 Тогда
    ИмяРеквизита= СтрЗаменить(ПутьДоРеквизита,"Справочник.Автомобили.","");
    ЗначениеРеквизита = ТекущийАвтомобиль[ИмяРеквизита]; //ЭтотОбъект[ИмяРеквизита] = ЭлементОтбораЗначение;
КонецЕсли;

//а если делать по уму то смотрите дальше:
ЕстьРеквизит = Метаданные.Документы[НаименованиеСправочникаТекущегоЭлемента].Реквизиты.Найти(ИмяРеквизита) <> Неопределено;
Если ЕстьРеквизит Тогда
//разбить строку ПутьДоРеквизита на части через точку например РазложитьСтрокуВМассивПодстрок() 
    ТекущийЭлементИмя=Метаданные.НайтиПоТипу(НаименованиеСправочникаТекущегоЭлемента).Имя;
    //ТекущийЭлементСсылка=Справочники[ТекущийЭлементИмя].НайтиПоКоду(Код,Ложь)
    Для Каждого ТекущийЭлементСсылка Из Справочники[ТекущийЭлементИмя] Цикл
        ЗначениеРеквизита = ТекущийЭлементСсылка[ИмяРеквизита];
        ...
    КонецЦикла;
    ...
КонецЕсли;
//см.https://www.forum.mista.ru/topic.php?id=24398

//Еще если дальше пойти то в текущей строке табличной части можно вот так перебирать элементы:
	Номенклатура = ТекСтрока[ИмяРеквизитаНоменклатура];

Показать
3. Boneman 298 14.01.19 16:00 Сейчас в теме
(1) а зачем вообще что-то хранить ?
Ведь все эти сайты, как правило, требуют просто выгрузки актуальных остатков на момент выгрузки.
мы делали просто служебный справочник, с параметрами подключений, именами каталогов...а сама xml ка уже регламентным заданием, по текущим остаткам формировалась и выкладывала файлики по нужным стандартам конкретного сайта куда надо.
А зачем сами данные хранить...что-то непонятно
4. triviumfan 93 14.01.19 16:20 Сейчас в теме
(3) Так помимо остатков есть же ещё куча обязательных реквизитов.
http://autoload.avito.ru/format/cars/
https://yandex.ru/support/autoru-legal/requirements-cars.html

Всякие марка авто, модель, комплектация, модификация, состояние, тип руля и привода, всевозможные скидки (4 вида)... в общем в альфа-авто изначально таких данных нет. Марка/модель/Комплектация/Модификация - справочники определенной структуры и значениями, которые требуют сие сервисы. Поэтому в каждой карточке авто они отдельно заполняются вручную, тем более у нас структура моделей совсем другая.
6. Boneman 298 14.01.19 16:25 Сейчас в теме
(4)
Всякие марка авто, модель, комплектация, модификация, состояние, тип руля и привода, всевозможные скидки (4 вида)... в общем в альфа-авто изначально таких данных нет. Марка/модель/Комплектация/Модификация

как нет ?
У нас конечно, альфа сильно переписанная была, но все эти параметры были в карточке автомобиля...иначе как вообще их продавать то. Клиенты же спрашивают, что за машина, какой привод, модель, комплектация и тп.
А регламентное задание, как раз всю эту информацию из базы и вытаскивала, и формировала нужного формата файл.
7. triviumfan 93 14.01.19 16:40 Сейчас в теме
(6) Ну модели и комплектации далеки от того, что требует авто.ру, например. Не приводить же мне весь справочник для того, чтобы авто.ру "поняла" сию модификацию и комплектацию.
Посмотрите справочник автору https://auto-export.s3.yandex.net/auto/price-list/catalog/cars.xml
Пример:
<mark name="Volkswagen" id="273">
 <folder name="Teramont, I" id="21020301">
            <model>TERAMONT</model>
            <generation id="21020301">21020301</generation>
            <modification name="2.0 AT (220 л.с.) 4WD" id="21213641">
                <mark_id>Volkswagen</mark_id>
                <folder_id>Teramont, I</folder_id>
                <modification_id>2.0 AT (220 л.с.) 4WD</modification_id>
                <configuration_id>21020379</configuration_id>
                <tech_param_id>21213641</tech_param_id>
                <body_type>Внедорожник 5 дв.</body_type>
                <years>2018 - по н.в.</years>
                <complectations>
                    <complectation id="21213756">Status</complectation>
                    <complectation id="21213784">Exclusive</complectation>
                    <complectation id="21213721">Origin</complectation>
                    <complectation id="21213733">Respect</complectation>
                </complectations>
            </modification>
...
Показать

Это в карточке авто нужно выбрать определенную марку, модель, модификацию и комплектацию (она тоже обязательна)!
А в авито https://autoload.avito.ru/format/Models.xml так вообще все просто:
<Model Category="Автомобили" Make="Volkswagen" Model="Teramont"/>

Т.е. только марка и модель.
Это первое что бросается в глаза, дальше там ещё всякие дополнительные свойства.
Тем более они их постоянно актуализируют. Так что у нас сейчас отдельные справочники это хранят и в карточке авто все вручную заполняют.
9. Boneman 298 14.01.19 17:08 Сейчас в теме
(7)
Тем более они их постоянно актуализируют. Так что у нас сейчас отдельные справочники это хранят и в карточке авто все вручную заполняют.

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

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

P.S.
на авто.ру, и на авито - я сам лично делал выгрузки, поэтому знаю принцип и представляю формат


P.P.S Или цель задачи, сделать альтернативу этим вашим справочникам ?
10. triviumfan 93 14.01.19 17:22 Сейчас в теме
(9) Сейчас все данные находятся в справочнике "Автомобили"!
Каждый раз добавляется новый реквизит, меняется форма, там несколько закладок на каждый сервис-агарегатор. Это уже ни в какие ворота не лезет.
Нужен рефакторинг!

Да, цель создать альтернативу, все данные перенесу, лишь бы грамотно спроектировать и переписать по-людски.
11. triviumfan 93 17.01.19 09:30 Сейчас в теме
Подскажите, пожалуйста, а если я захочу хранить опции, но в качестве формы подбора использовать html-поле, чтобы сделать все красиво как в оригинале (см скрин), то как правильно проставлять атрибуты checked и selected для чекбоксов и селектов?
Вот сверстал страничку, но как корректно искать опции?
Чекбоксы можно по id искать, но setattribute не работает.
А селекты ...они имеют формат:
<select id='' name=''>
<option>1</>
<option>2</>
...
</>

Тут тоже не ясно, как правильно "проставить" уже выбранную ранее опцию в форме подбора при открытии, option не поддерживает id.
В общем, вопрос в том, как обойти этот DOM и проставить флаги/селекты.
Прикрепленные файлы:
Оставьте свое сообщение

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