двухПальцевый writer XML …

Данная обработка позволяет записывать отдельные документы или элементы справочников (со всеми реквизитами и табличными частями) в XML-файл, который впоследствии можно использовать для обмена данными. Всё очень просто. Прочитать полученный файл можно с помощью http://infostart.ru/projects/5460/

При небольшой доработке можно записывать группами документов или целыми справочниками.

При небольшом умении можно, используя обработку: //infostart.ru/projects/5460/ , вставлять из полученного файла в базу данных записанные документы или справочники.

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

Будет полезна как пример создания и чтения XML-файлов. Поэтому оставил кнопку «Прочитать» и некоторые комментарии в коде.

Должна работать во всех 8-рочных конфигурациях.

 … ЗА дополнения, конструктивную критику, сообщения о замеченных неточностях или ошибках — буду благодарен …

Желающих продолжить работу над данным проектом прошу присоединяться.

с Уважением Шёпот теней …

… вОт …

36 Comments

  1. anig99

    а говорил, что оформление ничто (:

    Reply
  2. Шёпот теней

    (1) … ))) .. ну я… ну, это… нууу… пытаюсь… ммм… эсперементирую … )))

    … корпоративный стиль вырабатываю … хм… хм… вЕрнее пытаюсь … начиная с «ВоркингТейбл …» …

    … спАсибо … удачи … вОт …

    Reply
  3. vde69

    а в чем смысл? привожу свою реализацию созданую за 15 минут пару лет назад… Или Вы идете тропою Фиксина? (постите каждые 3 строчки)

    Процедура ЗагрузитьСкиныНажатие(Элемент)

    ИмяФайла = СокрЛП(ЭлементыФормы.ПолеИмениФайлаЗагрузить.Значение);

    Если ИмяФайла = «» Тогда

    Предупреждение(«Не задано имя файла выгрузки»);

    Возврат;

    КонецЕсли;

    Режим = РежимДиалогаВопрос.ДаНет;

    Если Вопрос(«Выполнить ПОЛНУЮ загрузку web интерфейса?», РежимДиалогаВопрос.ДаНет, 0) = КодВозвратаДиалога.Нет Тогда

    Возврат;

    КонецЕсли;

    ЧтениеXML = Новый ЧтениеXML;

    ЧтениеXML.ОткрытьФайл(ИмяФайла);

    Если Не ЧтениеXML.Прочитать() Или

    ЧтениеXML.ТипУзла <> ТипУзлаXML.НачалоЭлемента Или

    ЧтениеXML.ЛокальноеИмя <> «Скины» Или

    ЧтениеXML.URIПространстваИмен <> «HelpDesk-1c_1.0» Тогда

    Предупреждение(«Неверный формат файла выгрузки», 10, «Ошибка загрузки!!!»);

    Возврат;

    КонецЕсли;

    Если Не ЧтениеXML.Прочитать() Тогда

    Предупреждение(«Неверный формат файла выгрузки», 10, «Ошибка загрузки!!!»);

    Возврат;

    КонецЕсли;

    НачатьТранзакцию();

    Попытка

    Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл

    ЗаписанноеЗначение = ПрочитатьXML(ЧтениеXML);

    ЗаписанноеЗначение.ОбменДанными.Загрузка = Истина;

    ЗаписанноеЗначение.Записать();

    КонецЦикла;

    Исключение

    Сообщить(«При записи произошла ошибка, обработка отмененна»);

    ОтменитьТранзакцию();

    Возврат;

    КонецПопытки;

    ЗафиксироватьТранзакцию();

    ЧтениеXML.Закрыть();

    КонецПроцедуры

    Процедура ВыгрузитьСправочник(Справочник=»», ТекФайлXML)

    Запрос = Новый Запрос(«ВЫБРАТЬ РАЗРЕШЕННЫЕ * ИЗ Справочник.»+ Справочник);

    Выборка = Запрос.Выполнить().Выбрать();

    Пока выборка.Следующий() Цикл

    Объект = выборка.Ссылка.ПолучитьОбъект();

    ЗаписатьXML(ТекФайлXML, Объект, НазначениеТипаXML.Явное);

    КонецЦикла;

    КонецПроцедуры

    Процедура СохранитьСкиныНажатие(Элемент)

    ИмяФайла = СокрЛП(ЭлементыФормы.ПолеИмениФайлаСохранить.Значение);

    Если ИмяФайла = «» Тогда

    Предупреждение(«Не задано имя файла выгрузки»);

    Возврат;

    КонецЕсли;

    ТекФайлXML = Новый ЗаписьXML;

    ТекФайлXML.ОткрытьФайл(ИмяФайла);

    ТекФайлXML.ЗаписатьОбъявлениеXML();

    ТекФайлXML.ЗаписатьНачалоЭлемента(«Скины», «HelpDesk-1c_1.0»);

    ВыгрузитьСправочник(«ШаблоныСтраниц», ТекФайлXML);

    ВыгрузитьСправочник(«Замены», ТекФайлXML);

    ВыгрузитьСправочник(«ШаблоныПисем», ТекФайлXML);

    ТекФайлXML.ЗаписатьКонецЭлемента();

    ТекФайлXML.Закрыть();

    КонецПроцедуры

    Reply
  4. Шёпот теней

    (3) обЪясните чем ваша http://infostart.ru/blogs/718/ с пятью процедурами которые везде описаны отличается от вашего высказывания: » … а в чем смысл? привожу свою реализацию созданую за 15 минут пару лет назад… Или Вы идете тропою Фиксина? (постите каждые 3 строчки) …» …

    … я вам, что жить мешаю … ?

    … вот …

    Reply
  5. Minotavrik

    Есть выгрузка, а где загрузка?

    Reply
  6. Арчибальд

    Вот захотел отплюсовать — и отплюсую. ВоТтАкВот.

    Reply
  7. vde69

    (4) да не мешает мне, просто учитывая что в 1с есть серилизация XML все тонкости реализации сводятся к 3-м строчкам (в отличие от екселя),

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

    зы

    я выкладывал не обработку а блог, то-есть пример процедур и функций… как я понимаю разработка (а имено в этом разделе сейчас лежит САБЖ) это что-то более менее полезное и значимое. На мой взгляд САБЖ явно не тянет на разработку, наверно как пример он полезен кому-то, но не более

    зызы

    я то-же раньше выкладывал некоторые мини поделки, потом мне стало стыдно и я их удалил.

    Reply
  8. Шёпот теней

    (5) … пишу же в описании: «… При небольшом умении можно используя обработку: http://infostart.ru/projects/5460/ вставлять из полученного файла в базу данных записанные документы или справочники. …» …

    … хотя «загрузку» скоро сделаю …

    … мне интересно собрать критические зАмечания, дОбрые пОжелания и умные советы …

    (6) … слов нЭт … одна блАгодарность … ))) вотТАКвот …

    Reply
  9. Шёпот теней

    (7) … я всегда благодарен тем кто не мудрствуюЛукаво пишет вещи простые и неОбходимые …

    … конечно можно делать «вЫчурные» вещи … ставить «кучу» галочек-флажочков-поляВвода … но тогда уже надо изучать сам «предметИспользования» а не результат его использования …

    … моё мнение по поводу ХМЛ вАААще, совпадает с мнением находящимся здесь: http://extrapro.ru/udxml.html

    … все о нЁм говорят в восхитетельной степени но никто им не пользуется …

    … вот я и пытаюсь его изучать сам и пытаться обсуждать его применение … к сожалению в ответ получаю в основном мнение подобное вашему без всякой конкретики и конструктивизма … это ни хорошо ни плохо … ведь вроде и просто ( как вы пишете — 3 строки ), однако нет такого распространения как Екселя ( при такой-то его сложности — как сами же Вы и пишите ) …

    … нет! … не «живой» форматец …

    … вОООт …

    Reply
  10. Шёпот теней

    (9)+ по поводу простоты написания и актуальности использования — наберите в «поиск» сначала XLS а потом XML …. думаю результат очевиден… не верите..? попробуйте …

    Reply
  11. vde69

    (9) почему, я например XML уважаю, и использую (например в моем примере это смена скинов веб интерфейса), но не надо делать из него понацею, он хорош и плох одновременно. И Ваше желание его изучать и пропагандировать безусловно дает поставить Вам ПЛЮС (но не за разработку а за коментарии).

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

    зы

    Давайте вместо 10 обработок с 1 кнопкой сделаем одну с выпадающим меню и 1 кнопкой.

    например вот http://infostart.ru/projects/2217/ достойная обработка, а ведь можно было сделать 4 разных и было-бы хуже

    Reply
  12. Шёпот теней

    (11) … мы начинаем спорить о вкусах … а это чревато …

    … каждый пишет по своему … кто всё собирает в одну обработку а кто наоборот … разные мотивы подразумевают и разное исполнение …

    … например такое мнение (мотив) : пусть лучше много простых работающих обработок чем одна, напичканная выпадающими меню со взаимными ошибками …

    … пусть будет много и разных обработок и мнений …

    … вотМоёМнение …

    Reply
  13. Шёпот теней

    (12) … + в этой обработке не столько важен формат ХМЛ сколько возможность собрать информацию об объекте, скажем так, в «автоматическом режиме», записать и далее использовать по мере надобности …

    … мне это важно для обмена между разными не только конфигурациями но и несогласованными справочниками, об этом я уже писал … а формат ХМЛ не смотря на все свои «ТРИаккорДА» вЕЕЕсьма проблематичен: см. ссылку в (7) …

    … вотВоообщем …

    Reply
  14. Minotavrik

    Было бы круто, если бы доделал такую фишку. Чтобы выгруженный объект грузился в любую базу, при том условии, если каких то реквизитов не хватает в базе приемнике, процедура загрузки бы их тупо игнорировала и грузила, то что есть (совпадающие реквизиты).

    Reply
  15. vde69

    (14) это не ново, такой режим есть почти во всех загрузчиках (например у меня в обмене справочниками).

    Reply
  16. so-quest

    врайтеров этих — как собак нерезаных… и все пишут справочники/документы…

    Для дальнейшего развития идея — структуры/ТЗ/Соответствия и прочую чешую тоже можно писать в хмл. Доделал бы эту фичу.

    Reply
  17. Шёпот теней

    (14) … нуууу… в принципе мои «рабочиеЗАгрузчики» так и делают … просто то, что хорошо в частном случае иногда проблематично в «универсальном» …

    … в целом понял и (5) и (14) …

    (15) … как всегДА … хммм… никто не говорит об открыти нового …

    … предлагаю снЯть вопрос формы и содержания, предлагаю остановитЬся на разнОООбразии …

    (16) … не совсем понял: «… идея — структуры/ТЗ/Соответствия …» поясните ..?

    … вОт …

    Reply
  18. so-quest

    Что непонятного? Дана структура — сохранить в xml и прочитать оттуда же. То есть то что делает ЗначениеВСтрокуВнутр() только не в строку, а в xml.

    Reply
  19. so-quest

    сделаешь — свистни. скачаю себе.

    Reply
  20. Шёпот теней

    (18) … ммм … структура — упорядоченные данные — это есть некий массив или группа массивов… например:

    если взять любой документ в представлении это две таблицы:

    1. Шапка: двух-колоночная таблица «Реквизит-Данные» или односторочная таблица с колонками (кому как нравится) … (частный случай втрого) …

    2. ТабличныеЧасти: много-колоночная таблица «Данных» (повторяющийся вид первого) …

    все остальные структуры в 1С это либо первое либо второе …

    … мне не понятно какую такую цель преследует : «… идея — структуры/ТЗ/Соответствия и прочую чешую тоже можно писать в хмл …»

    … поясните на каком-нибудь примере …

    Reply
  21. so-quest

    Во первых структура — ну никак не массив. Более того 1С не гарантирует что будут последовательно в памяти идти поля структуры.

    Во вторых — задача не о документах и справочниках. Задача об универсальных коллекциях.

    Пример как я это вижу

    МояСтруктура = новый Струкутура;

    МояСтруктура.Вставить(«Поле1»,1);

    МояСтруктура.Вставить(«Поле2″,»2»);

    МояСтруктура.Вставить(«Поле3»,Справочники.ОфигенныйСправочник.НайтиПоКоду(«»));

    ЗаписатьВСтроку_XML(МояСтруктура);

    должно породить что-то типа

    <XM LS>

    <Value type=»Sturcture»>

    <Field>

    <Name>Поле1</Name>

    <Value type=»Number»> 1

    </value>

    </Filed>

    <Field>

    <Name>Поле2</Name>

    <Value type=»String»> «2»

    </value>

    </Filed>

    <Field>

    <Name>Поле1</Name>

    <Value type=»СправочникСсылка.ОфигенныйСправочник»> тут результат выгрузки справочника твоей обработкой.

    </value>

    </Filed>

    </Value>

    <XM LS>

    Тут нужно не забыть что полями структуры могут быть ТЗ, соответствия, ДЗ. Которые в свою очередь также могут содержать что угодно.

    Цели которые предследуются — просто для развития твоего врайтера. Такой возможности ни у одного нет. Будет выбиваться из общего ряда. Опять же много интересного опыта при проектировании сериализатора.

    Reply
  22. Шёпот теней

    (21) … ммм … употребляя одинаковые слова — понимаем разный смысл …

    » … Различаются ПРОСТЫЕ (базовые, примитивные) структуры (типы) данных и ИНТЕГРИРОВАННЫЕ (структурированные, композитные, сложные). Простыми называются такие структуры данных, которые не могут быть расчленены на составные части, большие, чем биты. С точки зрения физической структуры важным является то обстоятельство, что в данной машинной архитектуре, в данной системе программирования мы всегда можем заранее сказать, каков будет размер данного простого типа и какова структура его размещения в памяти. С логической точки зрения простые данные являются неделимыми единицами. Интегрированными называются такие структуры данных, составными частями которых являются другие структуры данных — простые или в свою очередь интегрированные. Интегрированные структуры данных конструируются программистом с использованием средств интеграции данных, предоставляемых языками программирования.

    В зависимости от отсутствия или наличия явно заданных связей между элементами данных следует различать НЕСВЯЗНЫЕ структуры (векторы, массивы, строки, стеки, очереди) и СВЯЗНЫЕ структуры (связные списки). … » подробнее тут : http://khpi-iip.mipk.kharkiv.edu/library/datastr/book/prt01.html см. Рис. 1.1. Классификация структур данных

    … » … Цели которые предследуются — просто для развития твоего врайтера. ..» …

    — думаю, что любой «врайтер» как прАвило уже и есть «писатель» некой НЕстандартной информации … все эти xml & html как раз и несут в себе разноШёрстную информацию в одном «флаконе» по «форме»… в отличие например от файлов-таблиц в которые можно положить любые данные по «содержанию» (имеется в виду «поля» таблиц) …

    … вотЕслиЯопятьПравильноПонял …

    Reply
  23. so-quest

    не понял. но это прикольно. наверное

    Reply
  24. Шёпот теней

    … антоним … синоним … аноним … хм …

    Reply
  25. Шёпот теней

    (24) …+ да, и ещё … абстургенция …

    … ВоттеперьвсЁ ..

    Reply
  26. rasswet

    хорошо бы две кнопки в ней иметь-выгрузка загрузка.

    Reply
  27. Збянтэжаны Саўка

    (0) А почему не выгружается UID объектов, ведь сверка по нему не «последняя вещь в списке» при обмене?..

    (24) Засем ругаесся насяльника: «абстургенция», обструкция, абстрация, мастурбация … 🙂

    Reply
  28. Шёпот теней

    (27) … ага … ага … ! … )))

    … вот …

    п.с. мне был итересен сам формат и работа с ним … а когда известен «принцип» то действие возможно любое .. !

    Reply
  29. cool.vlad4

    😀 Интересно…Я делал что-то подобное, но для других целей…Надо было обезопасить пользователей от случайного несохранения документов, сначала сделал сохранение документов через значениевстроку, но затем переделал под xml. так, что наверное каждый сталкивается с чем-то подобным.

    ЗЫ Скоро войдет в историю ШепотТеней кэйсинг 😉

    Reply
  30. Збянтэжаны Саўка

    (28) Спасибо за разъяснение и за обработку.

    Блин, сменю ник, а шоб не издевалися тут все, шепотом 🙂

    Reply
  31. Збянтэжаны Саўка

    (29) хм… у меня точка зрения обратная, я бы предохранял пользователей от случайного сохранения док-ов, вреда от лишнего сохранения больше, чем от НЕсохранения 🙂

    Reply
  32. cool.vlad4

    (31) вы ничего не поняли…я про функцию автосохранения во временные папки как в офисе микрософтском, там через каждые n секунд сохраняется документ, в случае сбоя компьютера его можно восстановить, также и в 1С у мня. А что такое случайное сохранение пользователей мне невдомек. Если они что-то сохраняют это уже неслучайно.(Представилась картинка пользователей этаких мартышек, клацают по клаве, сохраняют, а администратор тешит в себе мысль — когда-нибудь они набъют накладную 😀 )

    Reply
  33. Шёпот теней

    (30) … и не надо менять … прекрасный НИК …

    п.с.:

    Ага: Ага́ — утвердительное междометие. А́га — ядовитая тропическая жаба. Ага — река в Забайкалье. А́га — посёлок при станции в Забайкальском крае, ранее село Хила. Ага — город в префектуре Ниигата (Япония) Ага́ — титул военачальников.

    п.с.2: на английском ничего интерсного … впрочем может это и не английский … )))

    Reply
  34. Збянтэжаны Саўка

    (33) Дзякуй на добрым слове! Але ж, поздно батенька — уже поменял!

    У незабвенного Мартина Гарднера была книжечка мат. головоломок такая «Aha! Insight» (1978, 1982) — «Есть идея!» в переводе.

    http://publ.lib.ru/ARCHIVES/G/GARDNER_Martin/_Gardner_M..html

    (32) «…мартышек, клацают по клаве…», во-во их то, родимых я и имел в виду, хе-хе 🙂

    Достают операторы-бухгалтеры, которые глупее меня )

    Reply
  35. tgnike

    Спасибо. Хорошая вещь. Очень помогла!

    Reply
  36. mchammer4

    Спасибо, правда мне не помагла 🙁

    Reply

Leave a Comment

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