Имя: Пароль:
1C
 
Документооборот - визуализация ЭП - вставляет абзац в начале docx?
0 RomaH
 
naïve
08.04.22
13:36
2.1.29.17
При визуализации ЭП в docx в документ вставляет в начале пустой абзац

Это типовое поведение (конфа дописана)?
1 silent person
 
08.04.22
13:51
в docx картинка вставляется в новом абзаце. в файл вставляется кусок xml схемы из общего макета "ВставкаШтрихкодаСУказаниемПоложенияDocx". в первой же строке тэг <w:p> - это новый абзац
2 RomaH
 
naïve
08.04.22
14:04
(1) а исправить как?
3 silent person
 
08.04.22
14:21
вставить штамп без добавления абзаца ? даже не знаю как :), это надо разбираться подробнее и программировать :)
собственно вот упрощенная схема документа:
https://docs.microsoft.com/ru-ru/office/open-xml/structure-of-a-wordprocessingml-document

<?xml version="1.0" encoding="utf-8"?>
    <w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
      <w:body>
        <w:p>
          <w:r>
            <w:t>Hello, Word!</w:t>
          </w:r>
        </w:p>
      </w:body>
    </w:document

вставка картинки идет в функции ВизуализацияЭПВызовСервера.ВставитьИзображениеЭПВФайлDocxСУказаниемПоложения()  там находят тег "w:body" и вставляют xml кусок
....
Если ЧтениеXML.Имя = "w:body" Тогда
                ВставитьШтамп = Истина;
            КонецЕсли;
            ЗаписьXML.ЗаписатьНачалоЭлемента(ЧтениеXML.Имя);
            Пока ЧтениеXML.ПрочитатьАтрибут() Цикл
                ЗаписьXML.ЗаписатьАтрибут(ЧтениеXML.Имя,ЧтениеXML.Значение);
            КонецЦикла;
            Если ВставитьШтамп Тогда
                ЗаписьXML.ЗаписатьБезОбработки(ТекстДляВставкиШтампа);
                ВставитьШтамп = Ложь;
            КонецЕсли;
...
4 RomaH
 
naïve
08.04.22
14:31
я правильно понимаю - сейчас просто добавляется абзац в начало документа и к нему привязывается картинка

как вариант - надо искать уже существующий абзац и привязывать к нему

или вставлять ну очень маленький абзац - но это не красиво все-равно
https://ibb.co/4RqXBGW
5 RomaH
 
naïve
08.04.22
14:51
(3) похоже надо искать <w:p и вставлять туда кусок внутри <w:p который в ТекстДляВставкиШтампа
по крайней мере руками получилось
6 RomaH
 
naïve
08.04.22
15:24
+(5) вполне
    //вставка разметки для регштампа в файл
    ВставитьШтамп = Неопределено;
    Пока ЧтениеXML.Прочитать() Цикл
        Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
            //Если ЧтениеXML.Имя = "w:body" Тогда
            Если ВставитьШтамп = Неопределено И ЧтениеXML.Имя = "w:p" Тогда
                ВставитьШтамп = Истина;
            КонецЕсли;
            ЗаписьXML.ЗаписатьНачалоЭлемента(ЧтениеXML.Имя);
            Пока ЧтениеXML.ПрочитатьАтрибут() Цикл
                ЗаписьXML.ЗаписатьАтрибут(ЧтениеXML.Имя,ЧтениеXML.Значение);
            КонецЦикла;
            Если ВставитьШтамп = Истина Тогда
                ЗаписьXML.ЗаписатьБезОбработки(ТекстДляВставкиШтампа);
                ВставитьШтамп = Ложь;
            КонецЕсли;

и из макета удалить w:p - единственное ... может быть docx без w:p вообще?
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан