|
|
| ||
Skipper 06.03.20 - 17:40 | Всем привет.
Создаю XML через метод ЗаписьXML. Надо записать объявление, но не типовое, а свое, и свое закрытие тега. Получается XML надо как строку формировать, да? С объектом ЗаписьXML не получится поработать? | ||
NorthWind 1 - 06.03.20 - 17:55 | Думаю, нет. Я вообще практически отказался от записихмл, гораздо удобнее создать шаблон и сделать замены значений тегов на нужные, а потом писнуть это в простой текст... | ||
Skipper 2 - 06.03.20 - 17:59 | Ясно, спасибо.
А через схему XML тоже фиговая идея? | ||
NorthWind 3 - 06.03.20 - 18:02 | Можно попробовать, но черт его знает, оно же нестандарт... Просто ругнется что плохая схема скорее всего. | ||
Skipper 4 - 06.03.20 - 18:03 | Ясно, ладно, буду делать через простой текст, который героически, подчеркиваю, героически пихну в xml | ||
Skipper 5 - 06.03.20 - 18:03 | Всем спасибо! | ||
Сияющий в темноте 6 - 06.03.20 - 18:08 | файловый поток вам в помощь. | ||
Сияющий в темноте 7 - 06.03.20 - 18:10 | можно сначала свой заголовок,а потом уже готовый xml из запись xml засунуть. | ||
Skipper 8 - 06.03.20 - 18:11 | (7) Не понял, это как? | ||
NorthWind 9 - 06.03.20 - 18:12 | а что тут героического? Создаете шаблон примерно вот такого вида <?xml version="1.0" encoding="windows-1251"?> <Файл ИдФайл="%FILEID" ВерсФорм="5.01" ВерсПрог="1C"> <СвУчДокОбор ИдОтпр="%SENDERID" ИдПол="%RECEIVERID"> <СвОЭДОтпр НаимОрг="%SENDEROPERNAME" ИННЮЛ="%SENDEROPERINN" ИдЭДО="%SENDEROPERID" /> </СвУчДокОбор> <Документ КНД="1115131" Функция="СЧФДОП" ПоФактХЖ="Документ об отгрузке товаров (выполнении работ), передаче имущественных прав (документ об оказании услуг)" НаимДокОпр="Счет-фактура и документ об отгрузке товаров (выполнении работ), передаче имущественных прав (документ об оказании услуг)" ДатаИнфПр="%FORMDATE" ВремИнфПр="%FORMTIME" НаимЭконСубСост="%FIRMNAME"> <СвСчФакт НомерСчФ="%DOCNUM" ДатаСчФ="%DOCDATE" КодОКВ="643"> %CORRECTIONDATA <СвПрод> <ИдСв> <СвЮЛУч НаимОрг="%FIRMNAME" ИННЮЛ="%FIRMINN" КПП="%FIRMKPP" /> </ИдСв> <Адрес> <АдрРФ %FIRMADDR /> </Адрес> </СвПрод> <ГрузОт> <ОнЖе>он же</ОнЖе> </ГрузОт> <ГрузПолуч> <ИдСв> <СвЮЛУч НаимОрг="%CONSNAME" ИННЮЛ="%CONSINN" КПП="%CONSKPP" /> Затем просто через СтрЗаменить меняете все %XXXX на нужные значения. На самом деле там чуть сложнее, пару-тройку сервисных фунок надо написать, но в общем ерунда. Могу код показать | ||
NorthWind 10 - 06.03.20 - 18:14 | всяко в разы проще чем через записьхмл записывать простыню | ||
pechkin 11 - 06.03.20 - 18:16 | кстати в 1 есть нативная поддержка текстовых шаблонов. а ля печатные формы | ||
pechkin 12 - 06.03.20 - 18:17 | см. ТекстовыйДокумент.Параметры | ||
pechkin 13 - 06.03.20 - 18:18 | |||
NorthWind 14 - 06.03.20 - 18:25 | (13) пробовал, применительно к xml получается какашка, потому как там какие-то символы не экранируются из тех что в литералах используются | ||
NorthWind 15 - 06.03.20 - 18:26 | вообще механизм рабочий, но вот конкретно для данной цели не годится | ||
Skipper 16 - 06.03.20 - 18:33 | (9) Можете на ЯД выложить обработку пример? Я чет не понимаю, как Товары будут выгружаться.
Типы выгрузка товары в отдельну строку, и блоком вставлять в первоначальную строку? | ||
NorthWind 17 - 06.03.20 - 18:43 | (16) совершенно верно.
... </ИнфПолФХЖ1>
</СвСчФакт>
<ТаблСчФакт>
%GOODSTABLE
<ВсегоОпл СтТовБезНДСВсего="%TOTALWOVAT" СтТовУчНалВсего="%TOTALWITHVAT">
<СумНалВсего>
<СумНал>%TOTALVAT</СумНал>
</СумНалВсего>
...
а в секцию %GOODSTABLE выгружается уже сформированная многострочная часть, каждая строка которой делается по другому шаблону <СведТов НомСтр="%POSITIONNUMBER" НаимТов="%DESCRIPTION" ОКЕИ_Тов="%OKEI" КолТов="%QTY" ЦенаТов="%PRICE" СтТовБезНДС="%SUMWOVAT" СтТовУчНал="%SUMWITHVAT" НалСт="%VATPERCENT"> <Акциз> <БезАкциз>без акциза</БезАкциз> </Акциз> <СумНал> <СумНал>%SUMVAT</СумНал> </СумНал> <СвТД ДефКодПроисх="-"/> <ДопСведТов НаимЕдИзм="%RUSSIANUNIT" /> <ИнфПолФХЖ2 Идентиф="код_материала" Значен="%PRODUCTIDBUYER" /> <ИнфПолФХЖ2 Идентиф="штрихкод" Значен="%BARCODE" /> </СведТов> | ||
NorthWind 18 - 06.03.20 - 18:43 | всего 4 шаблончика на документ | ||
Skipper 19 - 06.03.20 - 18:44 | Прикольно. Спасибо за опыт. Удачных выходных | ||
NorthWind 20 - 06.03.20 - 18:49 | Функция СтрокаHTML (ВхСтрока) Результат = ВхСтрока; МассивИзменений = Новый Массив; МассивИзменений.Добавить (Новый Структура ("Что,НаЧто", "&", "&")); МассивИзменений.Добавить (Новый Структура ("Что,НаЧто", "<", "<")); МассивИзменений.Добавить (Новый Структура ("Что,НаЧто", ">", ">")); МассивИзменений.Добавить (Новый Структура ("Что,НаЧто", """", """)); МассивИзменений.Добавить (Новый Структура ("Что,НаЧто", "'", "'")); Для Каждого Элем из МассивИзменений Цикл Результат = СтрЗаменить (Результат, Элем.Что, Элем.НаЧто); КонецЦикла; Возврат Результат; КонецФункции Функция ЗаполнитьСтрокуЗаменамиИзПараметров (ВхСтрока, Параметры); Результат = ВхСтрока; Для Каждого Элем из Параметры Цикл Результат = СтрЗаменить (Результат, "%" + Элем.Ключ, XMLСтрока (Элем.Значение)); КонецЦикла; Возврат Результат; КонецФункции ... ЭУПДТело = ПолучитьМакет ("УПД_Тело_" + СуффиксФормата).ПолучитьТекст(); ЭУПДПозиция = ПолучитьМакет ("УПД_Позиция_" + СуффиксФормата).ПолучитьТекст(); ЭУПДОригинал = ПолучитьМакет ("УПД_Оригинал_" + СуффиксФормата).ПолучитьТекст(); ЭУПДКорректировка = ПолучитьМакет ("УПД_Корректировка_" + СуффиксФормата).ПолучитьТекст(); Параметры = Новый Структура (); Параметры.Вставить("FILEID", ИдентификаторФайла); Параметры.Вставить("SENDERID", ИдентификаторОтправителя); Параметры.Вставить("RECEIVERID", ИдентификаторПолучателя); Параметры.Вставить("SENDEROPERNAME", СтрокаHTML (мИдентификаторыСторонОбмена.ОператорЭДО [Реализация.Организация].НаименованиеПолное)); Параметры.Вставить("SENDEROPERINN", СокрЛП (мИдентификаторыСторонОбмена.ОператорЭДО [Реализация.Организация].ИНН)); Параметры.Вставить("SENDEROPERID", СокрЛП (мИдентификаторыСторонОбмена.IDОператораЭДО [Реализация.Организация])); Параметры.Вставить("FORMDATE", Формат (ТекущаяДата (), "ДФ=дд.ММ.гггг")); Параметры.Вставить("FORMTIME", Формат (ТекущаяДата (), "ДФ=ЧЧ.мм.сс")); Параметры.Вставить("DOCNUM", БезЛидирующихНулей (СчФактура.Номер)); Параметры.Вставить("DOCDATE", Формат (СчФактура.Дата,"ДФ=дд.ММ.гггг")); Параметры.Вставить("BILLDATE", Формат (Реализация.Дата,"ДФ=дд.ММ.гггг")); ... ЭУПДТело = ЗаполнитьСтрокуЗаменамиИзПараметров (ЭУПДТело, Параметры); Текст = Новый ЗаписьТекста (ИмяФайла, КодировкаТекста.ANSI); Текст.Записать(ЭУПДТело); Текст.Закрыть (); | ||
NorthWind 21 - 06.03.20 - 18:54 | (8) скорее всего он имеет в виду, что если не делать ЗаписатьОбъявлениеXML(), то ЗаписьXML запишет просто теги без стандартного обрамления.
А нестандартное обрамление можно будет вкрячить уже средствами текстового файла. Что ж, тоже вариант. | ||
NorthWind 22 - 06.03.20 - 18:56 | мне не нравится сам код вставки тегов в ЗаписьXML, он чрезвычайно непрозрачный и громоздкий, понять через месяц по нему что и зачем делалось - нереально. А шаблоны читаются отлично. | ||
Skipper 23 - 06.03.20 - 19:37 | (20) Черт тебя дери!!! Ты в макет запихал XML!!! Ты реально монстр! В Макет! И работаешь с ним, как с табличным документом???????? | ||
Skipper 24 - 06.03.20 - 19:38 | Браво! БРАВО!!! Я тебе стоя аплодирую! | ||
Skipper 25 - 06.03.20 - 19:38 | С табуретки и в носках! | ||
Skipper 26 - 06.03.20 - 19:38 | Блин, это гениально! Ты просто запихал все в макет! Это так просто! | ||
NorthWind 27 - 06.03.20 - 19:58 | (23) ну да... А чебынет? Очень удобно, практически полноценная альтернатива Win32-ресурсам в EXE и DLL. Любые данные можно подцеплять. | ||
Skipper 28 - 06.03.20 - 20:02 | (27) Класс! Надо будет на макете замутить, удивлю систему ) | ||
NorthWind 29 - 06.03.20 - 21:31 | (28) ну, сильно не удивите, в типовых XSD-схемы часто в текстовых макетах хранят. Там вообще много чего в макетах хранят, включая бинарники дров торгового оборудования. Просто откройте и посмотрите общие макеты любой типовой... | ||
NorthWind 30 - 06.03.20 - 21:32 | Это, кстати, одна из причин, почему ныне типовые такие увесистые стали Рекламное место пустует | ||
NorthWind 31 - 06.03.20 - 21:38 | казалось бы, cf-ник загрузил, данных считай никаких... а уже полгига или больше... это оно. | ||
Fragster 32 - 06.03.20 - 22:00 | Проще не шаблон, а пакет или схему сделать, и с объектом XDTO работать, чуть сложнее, чем с массивом и структурой. | ||
NorthWind 33 - 06.03.20 - 22:34 | (32) я долго пытался накопать - как, используя xsd, сделать нечто похожее. Я так и не понял как с их помощью создать новый валидный файл по шаблону, просто вставив куда-то значения тегов. Есть пример? |
|
Список тем форума
|