Загрузка данных из Гранд-Сметы через XDTO








Пример получения данных из файла Гранд-Сметы с использованием схемы xsd, обычные и управляемые формы.

Удивительно, но факт, на портале совсем не уделено внимания связке 1С и основного инструмента проектировщиков Гранд-Смета. Недано пришлось солкнуться с загрузчиком, который считывал файл построчно, само собой это очень медленно и очень плохо отлаживается. Копяться в дебрях переменных — это не наш метод, поэтому было решено переписать на более грамотный код.

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

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

Одним словом, под конкретные задачи подгонять и загонять. К чему этот опус, да к тому, что 100% универсальный загрузчик вряд ли сделаешь, все индивидуально. Самом собой встает вопрос о том, что зрузить и куда грузить.

В предлагаемом файле моя отладочная конструкция со стартером на обычных и управляемых формах, сами рабочие процедуры и функции в модуле обработки. Второй файл — использованные описания формата ГС, пример сметы для отладки и исходный xsd-файл (все это можно скачать на сайте Гранд-сметы по отдельности).

 

9 Comments

  1. vandalsvq

    (0) у нас реализован полный загрузчик + пересчет коэффициентов, индексов и прочей «лабуды». В общем на самом деле это можно сделать, но придется изрядно попотеть. И он вполне будет «универсальный». На сегодняшний день у нас кушает файлы 5, 6, 7 версии. Здесь (на ИС) алгоритм не представлен, поскольку является частью конфигурации, которая на сегодняшний день не планируется к продаже.

    Reply
  2. eskor

    (1) Меня интересует только логика применения всех этих коэффициентов. В первую очередь, на что применяется, в зависимости от того, где стоит. Если есть возможность, кинь куски кода, можно в личку.

    Reply
  3. vandalsvq

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

    Что касается кусков кода, увы не могу поделиться пока. Продукт коммерческий.

    Reply
  4. eskor

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

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

    Reply
  5. vandalsvq

    (4) не соглашусь с тем что коэффициенты применяются не как хочется, а в определенном порядке и по определенным правилам. Некоторые правила кстати существуют и прописаны в нормативной документации. Самый гемор в округлении, а именно в настройке «Интеллетуальное округление». Но и у нее есть правила, их только исследовать надо. Официальной документации верить нельзя.

    У нас на сегодняшний день 1С рассчитывает как гранд. И итоги в файле в принципе используем только для сверки что расчет = файлу. Т.е. самоконтроль программы.

    Reply
  6. vandalsvq

    (4) но я соглашусь что Гранд = Excel + справочники + немного макросов.

    Reply
  7. vandalsvq

    (4) напиши мне в скайп может я смогу тебе в чем нибудь помочь.

    Reply
  8. Alex_3189

    Добрый день! Подскажите получилось реализовать обмен Гранд-Сметы с 1С?

    Reply
  9. eskor

    (8) Само собой. Единственное, xsd ГС не поддерживал дерево разделов. Обмен работал на построчном разборе. Модуль был просто огромный.

    Для простых смет вполне хватит и текущего примера.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *