При небольшой доработке можно записывать группами документов или целыми справочниками.
При небольшом умении можно, используя обработку: //infostart.ru/projects/5460/ , вставлять из полученного файла в базу данных записанные документы или справочники.
Обработка не сверкает интеллектуальными мыслями и действиями. Всё очень просто. При необходимости добавляете сами, что нужно для обмена… Я использую её для обмена документами между филиалами, справочники которых ну никак не согласованы …
Будет полезна как пример создания и чтения XML-файлов. Поэтому оставил кнопку «Прочитать» и некоторые комментарии в коде.
Должна работать во всех 8-рочных конфигурациях.
… ЗА дополнения, конструктивную критику, сообщения о замеченных неточностях или ошибках — буду благодарен …
Желающих продолжить работу над данным проектом прошу присоединяться.
с Уважением Шёпот теней …
… вОт …
а говорил, что оформление ничто (:
(1) … ))) .. ну я… ну, это… нууу… пытаюсь… ммм… эсперементирую … )))
… корпоративный стиль вырабатываю … хм… хм… вЕрнее пытаюсь … начиная с «ВоркингТейбл …» …
… спАсибо … удачи … вОт …
а в чем смысл? привожу свою реализацию созданую за 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.Закрыть();
КонецПроцедуры
(3) обЪясните чем вашаhttp://infostart.ru/blogs/718/ с пятью процедурами которые везде описаны отличается от вашего высказывания: » … а в чем смысл? привожу свою реализацию созданую за 15 минут пару лет назад… Или Вы идете тропою Фиксина? (постите каждые 3 строчки) …» …
… я вам, что жить мешаю … ?
… вот …
Есть выгрузка, а где загрузка?
Вот захотел отплюсовать — и отплюсую. ВоТтАкВот.
(4) да не мешает мне, просто учитывая что в 1с есть серилизация XML все тонкости реализации сводятся к 3-м строчкам (в отличие от екселя),
я именно против количества! лучше-бы обьеденил все свои наработки по XML в единую и запостил, наверно получился-бы какой полезный инструмент, и его не стыдно было-бы выкладывать.
зы
я выкладывал не обработку а блог, то-есть пример процедур и функций… как я понимаю разработка (а имено в этом разделе сейчас лежит САБЖ) это что-то более менее полезное и значимое. На мой взгляд САБЖ явно не тянет на разработку, наверно как пример он полезен кому-то, но не более
зызы
я то-же раньше выкладывал некоторые мини поделки, потом мне стало стыдно и я их удалил.
(5) … пишу же в описании: «… При небольшом умении можно используя обработку:http://infostart.ru/projects/5460/ вставлять из полученного файла в базу данных записанные документы или справочники. …» …
… хотя «загрузку» скоро сделаю …
… мне интересно собрать критические зАмечания, дОбрые пОжелания и умные советы …
(6) … слов нЭт … одна блАгодарность … ))) вотТАКвот …
(7) … я всегда благодарен тем кто не мудрствуюЛукаво пишет вещи простые и неОбходимые …
… конечно можно делать «вЫчурные» вещи … ставить «кучу» галочек-флажочков-поляВвода … но тогда уже надо изучать сам «предметИспользования» а не результат его использования …
… моё мнение по поводу ХМЛ вАААще, совпадает с мнением находящимся здесь:http://extrapro.ru/udxml.html
… все о нЁм говорят в восхитетельной степени но никто им не пользуется …
… вот я и пытаюсь его изучать сам и пытаться обсуждать его применение … к сожалению в ответ получаю в основном мнение подобное вашему без всякой конкретики и конструктивизма … это ни хорошо ни плохо … ведь вроде и просто ( как вы пишете — 3 строки ), однако нет такого распространения как Екселя ( при такой-то его сложности — как сами же Вы и пишите ) …
… нет! … не «живой» форматец …
… вОООт …
(9)+ по поводу простоты написания и актуальности использования — наберите в «поиск» сначала XLS а потом XML …. думаю результат очевиден… не верите..? попробуйте …
(9) почему, я например XML уважаю, и использую (например в моем примере это смена скинов веб интерфейса), но не надо делать из него понацею, он хорош и плох одновременно. И Ваше желание его изучать и пропагандировать безусловно дает поставить Вам ПЛЮС (но не за разработку а за коментарии).
Я именно против совершенно запредельного количества мелких поделок! а по поводу интерфейса, я тоже минималист (посмотрите мои разработки, там минимум интерфейса), но при минимальном интерфейсе надо давать более менее приличный функционал!
зы
Давайте вместо 10 обработок с 1 кнопкой сделаем одну с выпадающим меню и 1 кнопкой.
например вотhttp://infostart.ru/projects/2217/ достойная обработка, а ведь можно было сделать 4 разных и было-бы хуже
(11) … мы начинаем спорить о вкусах … а это чревато …
… каждый пишет по своему … кто всё собирает в одну обработку а кто наоборот … разные мотивы подразумевают и разное исполнение …
… например такое мнение (мотив) : пусть лучше много простых работающих обработок чем одна, напичканная выпадающими меню со взаимными ошибками …
… пусть будет много и разных обработок и мнений …
… вотМоёМнение …
(12) … + в этой обработке не столько важен формат ХМЛ сколько возможность собрать информацию об объекте, скажем так, в «автоматическом режиме», записать и далее использовать по мере надобности …
… мне это важно для обмена между разными не только конфигурациями но и несогласованными справочниками, об этом я уже писал … а формат ХМЛ не смотря на все свои «ТРИаккорДА» вЕЕЕсьма проблематичен: см. ссылку в (7) …
… вотВоообщем …
Было бы круто, если бы доделал такую фишку. Чтобы выгруженный объект грузился в любую базу, при том условии, если каких то реквизитов не хватает в базе приемнике, процедура загрузки бы их тупо игнорировала и грузила, то что есть (совпадающие реквизиты).
(14) это не ново, такой режим есть почти во всех загрузчиках (например у меня в обмене справочниками).
врайтеров этих — как собак нерезаных… и все пишут справочники/документы…
Для дальнейшего развития идея — структуры/ТЗ/Соответствия и прочую чешую тоже можно писать в хмл. Доделал бы эту фичу.
(14) … нуууу… в принципе мои «рабочиеЗАгрузчики» так и делают … просто то, что хорошо в частном случае иногда проблематично в «универсальном» …
… в целом понял и (5) и (14) …
(15) … как всегДА … хммм… никто не говорит об открыти нового …
… предлагаю снЯть вопрос формы и содержания, предлагаю остановитЬся на разнОООбразии …
(16) … не совсем понял: «… идея — структуры/ТЗ/Соответствия …» поясните ..?
… вОт …
Что непонятного? Дана структура — сохранить в xml и прочитать оттуда же. То есть то что делает ЗначениеВСтрокуВнутр() только не в строку, а в xml.
сделаешь — свистни. скачаю себе.
(18) … ммм … структура — упорядоченные данные — это есть некий массив или группа массивов… например:
если взять любой документ в представлении это две таблицы:
1. Шапка: двух-колоночная таблица «Реквизит-Данные» или односторочная таблица с колонками (кому как нравится) … (частный случай втрого) …
2. ТабличныеЧасти: много-колоночная таблица «Данных» (повторяющийся вид первого) …
все остальные структуры в 1С это либо первое либо второе …
… мне не понятно какую такую цель преследует : «… идея — структуры/ТЗ/Соответствия и прочую чешую тоже можно писать в хмл …»
… поясните на каком-нибудь примере …
Во первых структура — ну никак не массив. Более того 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>
Тут нужно не забыть что полями структуры могут быть ТЗ, соответствия, ДЗ. Которые в свою очередь также могут содержать что угодно.
Цели которые предследуются — просто для развития твоего врайтера. Такой возможности ни у одного нет. Будет выбиваться из общего ряда. Опять же много интересного опыта при проектировании сериализатора.
(21) … ммм … употребляя одинаковые слова — понимаем разный смысл …
» … Различаются ПРОСТЫЕ (базовые, примитивные) структуры (типы) данных и ИНТЕГРИРОВАННЫЕ (структурированные, композитные, сложные). Простыми называются такие структуры данных, которые не могут быть расчленены на составные части, большие, чем биты. С точки зрения физической структуры важным является то обстоятельство, что в данной машинной архитектуре, в данной системе программирования мы всегда можем заранее сказать, каков будет размер данного простого типа и какова структура его размещения в памяти. С логической точки зрения простые данные являются неделимыми единицами. Интегрированными называются такие структуры данных, составными частями которых являются другие структуры данных — простые или в свою очередь интегрированные. Интегрированные структуры данных конструируются программистом с использованием средств интеграции данных, предоставляемых языками программирования.
В зависимости от отсутствия или наличия явно заданных связей между элементами данных следует различать НЕСВЯЗНЫЕ структуры (векторы, массивы, строки, стеки, очереди) и СВЯЗНЫЕ структуры (связные списки). … » подробнее тут :http://khpi-iip.mipk.kharkiv.edu/library/datastr/book/prt01.html см. Рис. 1.1. Классификация структур данных
… » … Цели которые предследуются — просто для развития твоего врайтера. ..» …
— думаю, что любой «врайтер» как прАвило уже и есть «писатель» некой НЕстандартной информации … все эти xml & html как раз и несут в себе разноШёрстную информацию в одном «флаконе» по «форме»… в отличие например от файлов-таблиц в которые можно положить любые данные по «содержанию» (имеется в виду «поля» таблиц) …
… вотЕслиЯопятьПравильноПонял …
не понял. но это прикольно. наверное
… антоним … синоним … аноним … хм …
(24) …+ да, и ещё … абстургенция …
… ВоттеперьвсЁ ..
хорошо бы две кнопки в ней иметь-выгрузка загрузка.
(0) А почему не выгружается UID объектов, ведь сверка по нему не «последняя вещь в списке» при обмене?..
(24) Засем ругаесся насяльника: «абстургенция», обструкция, абстрация, мастурбация … 🙂
(27) … ага … ага … ! … )))
… вот …
п.с. мне был итересен сам формат и работа с ним … а когда известен «принцип» то действие возможно любое .. !
😀 Интересно…Я делал что-то подобное, но для других целей…Надо было обезопасить пользователей от случайного несохранения документов, сначала сделал сохранение документов через значениевстроку, но затем переделал под xml. так, что наверное каждый сталкивается с чем-то подобным.
ЗЫ Скоро войдет в историю ШепотТеней кэйсинг 😉
(28) Спасибо за разъяснение и за обработку.
Блин, сменю ник, а шоб не издевалися тут все, шепотом 🙂
(29) хм… у меня точка зрения обратная, я бы предохранял пользователей от случайного сохранения док-ов, вреда от лишнего сохранения больше, чем от НЕсохранения 🙂
(31) вы ничего не поняли…я про функцию автосохранения во временные папки как в офисе микрософтском, там через каждые n секунд сохраняется документ, в случае сбоя компьютера его можно восстановить, также и в 1С у мня. А что такое случайное сохранение пользователей мне невдомек. Если они что-то сохраняют это уже неслучайно.(Представилась картинка пользователей этаких мартышек, клацают по клаве, сохраняют, а администратор тешит в себе мысль — когда-нибудь они набъют накладную 😀 )
(30) … и не надо менять … прекрасный НИК …
п.с.:
Ага: Ага́ — утвердительное междометие. А́га — ядовитая тропическая жаба. Ага — река в Забайкалье. А́га — посёлок при станции в Забайкальском крае, ранее село Хила. Ага — город в префектуре Ниигата (Япония) Ага́ — титул военачальников.
п.с.2: на английском ничего интерсного … впрочем может это и не английский … )))
(33) Дзякуй на добрым слове! Але ж, поздно батенька — уже поменял!
http://publ.lib.ru/ARCHIVES/G/GARDNER_Martin/_Gardner_M..html
У незабвенного Мартина Гарднера была книжечка мат. головоломок такая «Aha! Insight» (1978, 1982) — «Есть идея!» в переводе.
(32) «…мартышек, клацают по клаве…», во-во их то, родимых я и имел в виду, хе-хе 🙂
Достают операторы-бухгалтеры, которые глупее меня )
Спасибо. Хорошая вещь. Очень помогла!
Спасибо, правда мне не помагла 🙁