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

Тема в разделе "1C и всё что с ней связано", создана пользователем ech, 4 фев 2009.

  1. ech

    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

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

    gorlanovmax Well-Known Member
    1C Team

    Регистрация:
    19 июн 2008
    Сообщения:
    286
    Симпатии:
    0
    а можно попонятнее объяснить? тебе нужно просто отсортировать ТЗ?
     
  3. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    ech
    "Будь любезен, сформулируй вопрос..." (с) "Выдающийся ум".
     
  4. ech

    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",СокрЛП(спр.СуммаДД));

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

    puh14 Well-Known Member
    1C Team

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

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    А так ли необходимо заморачиваться с XML? Задача навскидку не выглядит сложной, если решать ее непосредственно через ТЗ или простой внешний файл обмена
     
  7. ech

    ech Гость

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

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    а ты не сказал откуда должно браться второе значение zone ;-)
    для примера попробуй так

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

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

    ech Гость

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

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

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    а вот как в тз это все сформировать?? Вопрос..
    Покажи на примере 4-5 элементов то, что есть и то, что должно получиться после обработки
     
  11. ech

    ech Гость

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

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

    Вложения:

    • 123.JPG
      123.JPG
      Размер файла:
      111,9 КБ
      Просмотров:
      11
    • 123.JPG
      123.JPG
      Размер файла:
      111,9 КБ
      Просмотров:
      9
    • 123.JPG
      123.JPG
      Размер файла:
      111,9 КБ
      Просмотров:
      13
  12. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    то есть, если я правильно понял, должна поменяться структура справочника ?
    И из элементов с кодами, например, 11 и 29 должен родиться новый элемент - с начвес = 250 конвес = 300, зона1 = 1, сумма1 = 250, зона2 = 2, сумма2 = 300 ?
     
  13. ech

    ech Гость

    Чувствую долго рассказывать:), решил сделать через Запрос, тз не использовал, все отлично получилось, всем спасибо!!! :)
     
Загрузка...
Похожие Темы - Сортировка спаравочника
  1. vera2014
    Ответов:
    0
    Просмотров:
    1.069
  2. Liori
    Ответов:
    2
    Просмотров:
    1.003
  3. FCDK
    Ответов:
    0
    Просмотров:
    1.261
  4. ленарано
    Ответов:
    1
    Просмотров:
    1.102
  5. Creder
    Ответов:
    0
    Просмотров:
    1.344

Поделиться этой страницей