• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Сортировка спаравочника 7.7

  • Автор темы ech
  • Дата начала
E

ech

Есть такой справочник, в 1С имеет вид:

ВесНач ВесКон Зона Сумма
2 5 1 40
2 5 2 45
6 10 1 50
2 5 3 50
20 100 4 150


Нужно выгрузить в ТЗ и привести к такому виду:

ВесНач ВесКон Зона Сумма
2 5
1 40
2 45
3 50
6 10
1 50
20 100
4 150

т.е. все зоны и суммы этих зон должны принадлежать одному весу..
 
G

gorlanovmax

а можно попонятнее объяснить? тебе нужно просто отсортировать ТЗ?
 
V

vitfil

ech
"Будь любезен, сформулируй вопрос..." (с) "Выдающийся ум".
 
E

ech

что то табличку мою форум испоганил:(...сейчас попробую доступнее объяснить:

нужно выгрузить справочник в файл хмл. Структуру файла прописал, но вот выборку по справочнику не получается сделать!!

хмл файл должен иметь вид:

<?xml version="1.0" encoding="windows-1251" ?>
- <Set>
- <price>
- <ves Begin="0" End="100">
<zone Num="1" Cost="55" />
<zone Num="2" Cost="155" />
</ves>
- <ves Begin="100" End="200">
<zone Num="1" Cost="11" />
<zone Num="2" Cost="111" />
</ves>
- <ves Begin="200" End="300">
<zone Num="1" Cost="22" />
<zone Num="2" Cost="2222" />
</ves>
</price>

У меня получатеться только так:

<?xml version="1.0" encoding="windows-1251" ?>
- <Set>
- <price>
- <ves Begin="0" End="100">
<zone Num="1" Cost="55" />
</ves>
- <ves Begin="0" End="100">
<zone Num="2" Cost="155" />
</ves>
- <ves Begin="100" End="200">
<zone Num="1" Cost="11" />
</ves>
- <ves Begin="100" End="200">
<zone Num="2" Cost="111" />
</ves>
- <ves Begin="200" End="300">
<zone Num="1" Cost="22" />
</ves>
- <ves Begin="200" End="300">
<zone Num="2" Cost="2222" />
</ves>
</price>


из структуры видно что мне надо и что у меня в итоге выходит

Вот код

Процедура Выполнить()

Анализатор = СоздатьОбъект("AddIn.XMLParser");
спр = СоздатьОбъект("Справочник.Доставка");

Корень = Анализатор.СоздатьДокумент();
Данные = Корень.СоздатьПодчиненныйЭлемент("Set");
price = Данные.СоздатьПодчиненныйЭлемент("price");

спр.ВыбратьЭлементы();
Пока спр.ПолучитьЭлемент()=1 Цикл

ves = price.СоздатьПодчиненныйЭлемент("ves");
ves.УстановитьАтрибут("Begin",СокрЛП(спр.ВесНач));
ves.УстановитьАтрибут("End",СокрЛП(спр.ВесКон));
zone = ves.СоздатьПодчиненныйЭлемент("zone");
zone.УстановитьАтрибут("Num",СокрЛП(спр.Зона));
zone.УстановитьАтрибут("Cost",СокрЛП(спр.СуммаДД));

КонецЦикла;
Корень.Записать(ИмяФайла);
КонецПроцедуры
 
P

puh14

zone = ves.СоздатьПодчиненныйЭлемент("zone");
zone.УстановитьАтрибут("Num",СокрЛП(спр.Зона));
zone.УстановитьАтрибут("Cost",СокрЛП(спр.СуммаДД));
А откуда он второе значение зоны возьмет? тыж его из одного элемента спр вытаскиваешь. Если периодические - выбери историю и в переборе истории
zone = ves.СоздатьПодчиненныйЭлемент("zone");
zone.УстановитьАтрибут("Num",СокрЛП(спр.Зона));
zone.УстановитьАтрибут("Cost",СокрЛП(спр.СуммаДД));
 
V

vbs

А так ли необходимо заморачиваться с XML? Задача навскидку не выглядит сложной, если решать ее непосредственно через ТЗ или простой внешний файл обмена
 
E

ech

А откуда он второе значение зоны возьмет? тыж его из одного элемента спр вытаскиваешь. Если периодические - выбери историю и в переборе истории
zone.УстановитьАтрибут("Num",СокрЛП(спр.Зона));
zone.УстановитьАтрибут("Cost",СокрЛП(спр.СуммаДД));

Эл ты не периодические, это раз, а во вторых...так и не подсказал как сделать :)
 
P

puh14

а ты не сказал откуда должно браться второе значение zone ;-)
для примера попробуй так

zone = ves.СоздатьПодчиненныйЭлемент("zone");
zone.УстановитьАтрибут("Num",СокрЛП(спр.Зона));
zone.УстановитьАтрибут("Cost",СокрЛП(спр.СуммаДД));
zone1 = ves.СоздатьПодчиненныйЭлемент("zone");
zone1.УстановитьАтрибут("Num",СокрЛП(спр.Зона));
zone1.УстановитьАтрибут("Cost",СокрЛП(спр.СуммаДД));

должно получиться два поля zone(хотя по хорошему лучше их по разному обозвать)
 
E

ech

А так ли необходимо заморачиваться с XML? Задача навскидку не выглядит сложной, если решать ее непосредственно через ТЗ или простой внешний файл обмена

В итоге все равно нужен XML с данными! А вот через про тз уже думал, потом ее результаты и выгружать, а вот как в тз это все сформировать?? Вопрос..

а ты не сказал откуда должно браться второе значение zone ;-)
для примера попробуй так

zone = ves.СоздатьПодчиненныйЭлемент("zone");
zone.УстановитьАтрибут("Num",СокрЛП(спр.Зона));
zone.УстановитьАтрибут("Cost",СокрЛП(спр.СуммаДД));
zone1 = ves.СоздатьПодчиненныйЭлемент("zone");
zone1.УстановитьАтрибут("Num",СокрЛП(спр.Зона));
zone1.УстановитьАтрибут("Cost",СокрЛП(спр.СуммаДД));

должно получиться два поля zone(хотя по хорошему лучше их по разному обозвать)

Не, нужно только одно поле zone. Второе значение и следующие беруться из справочника. В первом посте написан его вид и данные (вкратеце)
 
V

vbs

а вот как в тз это все сформировать?? Вопрос..
Покажи на примере 4-5 элементов то, что есть и то, что должно получиться после обработки
 
E

ech

вот справочник, на выходе в тз должно быть так:

Все Зоны и все СуммыДД , у которых ВесНач и ВесКон одинаковый, должны стоять под своим весом
 

Вложения

  • 123.JPG
    123.JPG
    85,1 КБ · Просмотры: 215
  • 123.JPG
    123.JPG
    85,1 КБ · Просмотры: 226
  • 123.JPG
    123.JPG
    85,1 КБ · Просмотры: 390
V

vbs

то есть, если я правильно понял, должна поменяться структура справочника ?
И из элементов с кодами, например, 11 и 29 должен родиться новый элемент - с начвес = 250 конвес = 300, зона1 = 1, сумма1 = 250, зона2 = 2, сумма2 = 300 ?
 
E

ech

то есть, если я правильно понял, должна поменяться структура справочника ?
И из элементов с кодами, например, 11 и 29 должен родиться новый элемент - с начвес = 250 конвес = 300, зона1 = 1, сумма1 = 250, зона2 = 2, сумма2 = 300 ?

Чувствую долго рассказывать:), решил сделать через Запрос, тз не использовал, все отлично получилось, всем спасибо!!! :)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!