|
Тип XDTO | ☑ | ||
---|---|---|---|---|
0
first_may
10.03.23
✎
11:06
|
Добрый день.
Есть объект типа ОбъектXDTO Ссылка https://disk.yandex.ru/i/FRa2vLLF0eXAVQ Подскажите пож, можно ли - удалить АдрРФ (1) - на его место добавить АдрИнф (2) Или это нельзя сделать через ОбъектXDTO, а надо делать через что то другое? |
|||
1
Asmody
10.03.23
✎
11:15
|
Зависит от того, откуда этот объект взялся.
Напрямую поменять структуру объекта XDTO нельзя. Но можно повозиться с пакетами, фабриками, выгрузкой-загрузкой в XML. Но если вы сами его соорудили и пакет XDTO тоже ваш, то меняйте пакет, тогда и объекты от этого пакета поменяются. Если вы чётко понимаете что делаете и зачем это надо. |
|||
2
first_may
10.03.23
✎
11:18
|
"если вы сами его соорудили и пакет XDTO тоже ваш, то меняйте пакет" - как?
Это? ОбъектXDTO (XDTODataObject) Сбросить (Unset) Вариант синтаксиса: По выражению XPath Синтаксис: Сбросить(<Выражение>) Параметры: <Выражение> (обязательный) |
|||
3
first_may
10.03.23
✎
11:22
|
Удалить получилось вот так
ОбъектXDTO.Документ.СвСчФакт.ГрузПолуч.Адрес.Сбросить(ОбъектXDTO.Документ.СвСчФакт.ГрузПолуч.Адрес.Свойства().Получить("АдрРФ")) А теперь бы добавить внутрь АдрИнф. Это каким методом? |
|||
4
vicof
10.03.23
✎
11:33
|
ОбъектXDTO.Документ.СвСчФакт.ГрузПолуч.Адрес.Сбросить(ОбъектXDTO.Документ.СвСчФакт.ГрузПолуч.Адрес.Свойства().Добавить("АдрИнф")) не?)
|
|||
5
vicof
10.03.23
✎
11:33
|
не
|
|||
6
vicof
10.03.23
✎
11:33
|
ОбъектXDTO.Документ.СвСчФакт.ГрузПолуч.Адрес.Свойства().Добавить("АдрИнф")) не?)
|
|||
7
first_may
10.03.23
✎
11:41
|
(6) ОбъектXDTO.Документ.СвСчФакт.ГрузПолуч.Адрес.Свойства().Добавить("АдрИнф")
Метод объекта не обнаружен (Добавить) |
|||
8
vicof
10.03.23
✎
11:43
|
Ну тогда не) Тогда xml-ку как DOM открывать и добавлять в нужное место нужные свойства.
|
|||
9
first_may
10.03.23
✎
11:54
|
(8) что то таком направлении
ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл(ИмяВременногоФайла); ПостроительДОМ = Новый ПостроительDOM; ДокументДОМ = ПостроительДОМ.Прочитать(ЧтениеXML); ЧтениеXML.Закрыть(); и работать с ДокументДОМ? |
|||
10
vicof
10.03.23
✎
12:01
|
||||
11
first_may
10.03.23
✎
12:20
|
(10) а как можно из имеющегося ОбъектXDTO
все перенести в новый? перебор свойств какой нибудь есть? |
|||
12
vicof
10.03.23
✎
12:25
|
ОбъектXDTO (XDTODataObject)
Свойства: <Имя свойства> (<Property name>) Методы: Владелец (Owner) ВладеющееСвойство (OwningProperty) Добавить (Add) Получить (Get) ПолучитьXDTO (GetXDTO) ПолучитьСписок (GetList) Последовательность (Sequence) Проверить (Validate) Сбросить (Unset) Свойства (Properties) Тип (Type) Установить (Set) Установлено (IsSet) Описание: Объект данных модели XDTO. Доступность: Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер. См. также: СвойствоXDTO, свойство ОбъектВладелец СписокXDTO, свойство Владелец ПоследовательностьXDTO, свойство Владелец ОбъектXDTO, метод Владелец ТипОбъектаXDTO, метод Проверить ФабрикаXDTO, метод ЭкспортМоделиXDTO Глобальный контекст, метод ИмпортМоделиXDTO ФабрикаXDTO, конструктор На основе модели типов СериализаторXDTO, метод ЗаписатьXDTO СериализаторXDTO, метод ПрочитатьXDTO Использование в версии: Доступен, начиная с версии 8.1. Методическая информация |
|||
13
first_may
10.03.23
✎
12:37
|
а вот же есть что то
Добавить (Add) |
|||
14
first_may
11.03.23
✎
09:35
|
вообщем у меня есть
СтрокаXML = ПолучитьСтрокуИзДвоичныхДанных(Документ.Документооборот.ХранилищеКонтента.Данные, "windows-1251"); потом я получил объект ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(СтрокаXML); ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML); ЧтениеXML.Закрыть(); у меня есть пакет XDTO с содержимым <xs:schema xmlns:tns="ON_NSCHFDOPPR" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="ON_NSCHFDOPPR" attributeFormDefault="unqualified" elementFormDefault="qualified"> <xs:element name="Файл" type="tns:Файл"/> <xs:simpleType name="CCРФТип"> <xs:restriction base="xs:string"> <xs:length value="2"/> <xs:pattern value="[0-9]{2}"/> </xs:restriction> </xs:simpleType> ... Как то можно сделав новый объект на основании этого пакета заполнить его, пробежавшись по СтрокаXML? |
|||
15
АгентБезопасной Нацио
11.03.23
✎
12:21
|
Чойто вы не то делаете...
Ибо: 1. схема - она утвержденная ФНСом, и ваши приключения могут привести к тому, что полученный док не пройдет валидацию. 2. Тип АдресТип (это адрес контрагента)- он вот такой: <xs:complexType name="АдресТип"> <xs:choice> <xs:element name="АдрРФ" type="tns:АдрРФТип" minOccurs="0"/> <xs:element name="АдрИнф" type="tns:АдрИнфТип" minOccurs="0"/> <xs:element name="КодГАР" type="tns:string-36" minOccurs="0"/> </xs:choice> </xs:complexType> т.е. когда заполняли - туда и засунули объект нужного типа засунули чем-то типа такого: Функция XML_ЗаполнитьАдрес(ИмяПакетаXDTO, ОбъектXDTO, Address) Если ЗначениеЗаполнено(Address.AddressCode) Тогда УстановитьЗначениеXDTO(ОбъектXDTO, "КодГАР", Address.AddressCode); ИначеЕсли Address.IsForeign = Ложь Тогда АдрРФ = XML_ПолучитьПустойОбъектXDTO("АдрРФТип", ИмяПакетаXDTO); УстановитьЗначениеXDTO(АдрРФ, "Индекс", Address.ZipCode); ... УстановитьЗначениеXDTO(ОбъектXDTO, "АдрРФ", АдрРФ); ИначеЕсли ЗначениеЗаполнено(Address.CountryCode) Или ЗначениеЗаполнено(Address.AddressText) Тогда АдрИнф = XML_ПолучитьПустойОбъектXDTO("АдрИнфТип", ИмяПакетаXDTO); .... УстановитьЗначениеXDTO(ОбъектXDTO, "АдрИнф", АдрИнф); 3. Если уж так нужно менять - удаляйте, получайте пустой пакет типа "АдрИнфТип", заполняйте и втуды его... 4. Чего вообще делаете? ошибку в диадоке исправляете, чтоль? так это вам не тут делать надо |
|||
16
first_may
11.03.23
✎
14:19
|
(15) мне надо подготовленный документ диадоке немного подправить перед отправкой..
Если уж так нужно менять - удаляйте, получайте пустой пакет типа "АдрИнфТип", заполняйте и втуды его... - это как раз не понятно, как сделать |
|||
17
АгентБезопасной Нацио
11.03.23
✎
18:16
|
(16) // Адрес
Адрес = XML_ПолучитьПустойОбъектXDTO("АдресТип", ИмяПакетаXDTO); Если XML_ЗаполнитьАдрес(ИмяПакетаXDTO, Адрес, ПротоКонтент.Address) Тогда УстановитьЗначениеXDTO(ОбъектXDTO, "Адрес", Адрес); КонецЕсли; смотри ГенерацияXML в обработке Диадока |
|||
18
АгентБезопасной Нацио
11.03.23
✎
18:17
|
(16) Но может все-таки поправить при формировании?
|
|||
19
first_may
11.03.23
✎
18:36
|
(18) хорошо бы.. но я не могу понять в какой момент формируется :(..
|
|||
20
first_may
11.03.23
✎
18:37
|
(18) вернее, если знакома обработка, то в форме списка двойной клик что бы увидеть саму печатную форму..
|
|||
21
Сергиус
12.03.23
✎
00:26
|
(20)Для диадока лучше делать правки в подключаемом модуле.
|
|||
22
АгентБезопасной Нацио
12.03.23
✎
04:47
|
(20) ага, я про эту ошибку в (15) и говорил...
в ПМ, если ДД-Стандарт, то в ОбработатьСобытиеПослеЗаполненияКонтента делаешь что-то типа Адреса=Протоконтент.Consignees[0].Address; Адреса.IsForeign = Истина; Адреса.AddressText = АдресПредставление; Адреса.CountryCode = "643"; И у тебя соответсвующий адрес вместо Типа АдресРФТип заполнится адресом типа АдресИнфТип Если ДД- Универсал, то событие точно не знаю, но можно установить ПМ от Стандарта, он "подхватится" Универсалом - события будут сначала обрабатываться в ПМ от стандарта, потом в ПМ от Универсала |
|||
23
first_may
12.03.23
✎
08:16
|
(22) (21) в обработке нажал "Генерировать шаблон" и получил такое..
что тут выбрать для изменения упд? https://disk.yandex.ru/i/wdm35yvYCfrVsw о модуле Техническая информация: Версия модуля: 4.29.1.2238 Версия плагина: 1.5.0.308 Модуль типовой: Нет Модуль интеграции: ПМ_УТ_11 Подключаемый модуль : отсутствует Тип платформы: Windows x86-64 Настройки модуля: Режим прокси: использовать системные настройки Загружать исходящие документы: Да Загружать входящие документы: Да Загружать документы только по сопоставленным контрагентам: Нет Использовать сопоставление подразделений в документах на отправку: Нет Разрешить фоновые операции: Нет Сценарий сохранения документов: весь документооборот Хранить документы на диске: Нет Загружать документооборот целиком: Нет Режим логирования: Нет Режим отладки: Нет Автообновление модуля: Да Отключить контроль дублирования: Нет Разворачивать пакеты на отправку по документам: Да Удалять при переотправке предыдущий документ: Нет Создавать счета-фактуры: Да Создавать передаточные документы: Нет Отключить анализ для входящих документов: Нет Указывать отсутствие основания УПД: Нет Отправлять непроведенные документы: Нет Записывать комментарий при отправке: Да Записывать комментарий при создании/сопоставлении: Да Использовать сервис "Контур.Маркировка": Нет Настройки Стандарта: Подключаемый модуль : отсутствует Режим совместимости форматов 155 и 820: Нет BoxId: @diadoc.ru Отпечаток сертификата: Сертификат: КЭП Login для обмена: не заполнен UserId: Подключенные библиотеки: - ТиповойМодуль вер. 5.57.08.1218 (Макет) - ИМ вер. 4 (Макет) - ЭмуляторТабДокумента вер. 0.1.0.2 (Макет) - УведомленияПользователей вер. 1.0.2.1 (Макет) - Плагин вер. 1.1.21 (Макет) - ХранениеДанных вер. 1.0.0.34 (Макет) - ПечатныеФормы вер. 1.5.5.100 (Макет) - ГенерацияXML вер. 4.11.3.144 (Макет) - ВызовыПМ вер. 0.4.2.19 (Макет) - ВнешниеСервисы вер. 0.4.2.4 (Макет) - МенеджерИнтеграции вер. 1.0.0 (Макет) - ПарсерJSON вер. 1.0.1.2 (Макет) - ОсновнойМодуль вер. 4.29.1 (Макет) - МетодыAPI вер. 0.1.1.10 (Макет) - Ядро вер. 1.1.3.1 (Макет) |
|||
24
first_may
12.03.23
✎
08:20
|
||||
25
Мимохожий Однако
12.03.23
✎
09:02
|
(7) А так?
ОбъектXDTO.Документ.СвСчФакт.ГрузПолуч.Адрес.Добавить("АдрИнф") |
|||
26
АгентБезопасной Нацио
12.03.23
✎
09:32
|
(23) ну я ж сказал, что для Универсала точно не знаю.
попробуй ПослеПодготовкиПакета. Судя по доке, это примерный аналог. |
|||
27
first_may
12.03.23
✎
11:02
|
(26) спс.. получается через Подключаемый Модуль..
там есть Функция ПодготовитьЭлектронныйДокумент(Параметры) |
|||
28
АгентБезопасной Нацио
12.03.23
✎
11:14
|
(27) насколько я понял, подготовитьЭлектронныйДокумент - это первичное заполнение. Если его перекрывать полностью - по сути придется заполнять документ самостоятельно. Если только обрабатывать результат - может и его попробовать применить.
|
|||
29
first_may
12.03.23
✎
11:42
|
(28) там есть Параметры.Результат.Content..
вот я его и правлю.. пока получается то, что надо.. адрес поменял по алгоритму, как в УПД в базе для документа 1с.. добавил Основание передачи (TransferBases) и Данные о транспортировке и грузе (TransferTextInfo).. <ОснПер ДатаОсн="18.08.2021" НомОсн="МР/18/08/21" НаимОсн="Договор"/> <ОснПер ДатаОсн="16.01.2023" НомОсн="126" НаимОсн="Спецификация"/> <ТранГруз СвТранГруз="Масса нетто 221,34, масса брутто 244,59, количество мест 93"/> это все видно на предварительном просмотре, а также при сохранении в XML.. еще раз спс, оказалось гораздо проще, чем я пытался сделать.. остался один момент, а именно шапка https://disk.yandex.ru/i/W4MXJXecHHBhWA в 1с изменен макет, а тут такое можно сделать? |
|||
30
АгентБезопасной Нацио
12.03.23
✎
13:09
|
(29) а зачем? в отправляемом документе все равно этого не будет.
|
|||
31
first_may
12.03.23
✎
18:47
|
(30) в отправляемом документе все равно этого не будет - сам диадок не приспособлен для этого?
у них зашита типовая форма, не подлежащая изменению? |
|||
32
АгентБезопасной Нацио
12.03.23
✎
18:49
|
(31) он не отправляет никакую форму. Он отправляет xml утвержденной схемы.
|
|||
33
first_may
13.03.23
✎
09:50
|
(32) ну да, я это и имел ввиду..
по структуре https://www.diadoc.ru/docs/forms/upd/structure/8#on_nschfdoppr просто нет тэга, куда писать эту информацию.. |
|||
34
АгентБезопасной Нацио
13.03.23
✎
11:39
|
(33) В ИнфПолФХЖ1,2,3 можно писать что угодно. просто согласовывай с получателем поле и ключ ("наименование")
|
|||
35
first_may
13.03.23
✎
12:53
|
(34) ага, вижу
ИнфПолФХЖ1 Информационное поле факта хозяйственной жизни 1. Может быть не более 1 такого элемента. нууу.. наверное можно закрывать тогда.. спасибо всем за подсказки :).. |
|||
36
АгентБезопасной Нацио
13.03.23
✎
13:31
|
(35) это элемент. а его тип - список пар ключ-значение
|
|||
37
first_may
13.03.23
✎
18:41
|
спс
|
|||
38
first_may
16.03.23
✎
13:22
|
(36) добрый..
подскажите пож, а можно как то прикрепить к пакету документов еще и xml протокола? дополнительно имеется ввиду.. https://www.diadoc.ru/docs/forms/protokol_soglasovaniya_cen |
|||
39
first_may
17.03.23
✎
09:52
|
А можно это сделать программно?
Например через ПодключаемыйМодульДиадок.. Например я знаю где лежит файл, то есть полный путь к нему известен.. Тогда на каком событии можно это сделать? https://disk.yandex.ru/i/ftopsWw4LRs1sw |
|||
40
АгентБезопасной Нацио
17.03.23
✎
10:07
|
ну попробуй пакет... правда, мне показалось сильно геморно
|
|||
41
АгентБезопасной Нацио
17.03.23
✎
10:11
|
может, я ошибаюсь, и кто-нибудь разберется, подскажет...
|
|||
42
first_may
17.03.23
✎
10:19
|
(40) ПодготовитьПакет - это событие?
|
|||
43
АгентБезопасной Нацио
17.03.23
✎
10:40
|
(42) ну что-то типа https://infostart.ru/public/1737685/
|
|||
44
first_may
17.03.23
✎
10:53
|
(43) почитал.. там внешняя печатная форма..
такое я уже сделал.. мне надо именно файл xml <?xml version="1.0" encoding="WINDOWS-1251"?> <Файл Формат="ПротЦен" Имя="ON_PROTCEN_9612437724961201000_9679387467967901000_20191231_57064764" ВерсияФормата="3.04"> <Документ Название="Протокол согласования цен поставки лекарственных препаратов" МаксКолОптовиков="9" Дата="19.01.2023"> <Стороны> <Поставщик Название="..."> <СвЮЛ Название="..."/> </Поставщик> <Покупатель Название="..."> <СвЮЛ Название=".."/> </Покупатель> </Стороны> <СписокОснование> <Основание Дата="19.01.2023" Тип="ТОРГ12" Номер="8-19-01-2023"/> </СписокОснование> <СписокСтрТабл> <СтрТабл Название="..."> <СписокЦенаОпт> <ЦенаОпт ПорНомер="" ЦенаБезНДС="" НадбавкаСумма="" НадбавкаПроцент=""/> </СписокЦенаОпт> ... |
|||
45
АгентБезопасной Нацио
17.03.23
✎
11:27
|
(44) ну у тебя же неформализованный док? а раз неформализованный, то никакой разницы
|
|||
46
АгентБезопасной Нацио
17.03.23
✎
11:28
|
||||
47
first_may
19.03.23
✎
09:12
|
может не совсем по теме..
а можно файл XML как то прочитать в ТабличныйДокумент? тогда вообще будет все просто через впф :).. |
|||
48
Мимохожий Однако
19.03.23
✎
09:23
|
(47) Попробуй в Текстовый документ раз пошла такая пьянка
|
|||
49
Garykom
гуру
19.03.23
✎
09:23
|
(47) как ты это себе представляешь?
|
|||
50
Garykom
гуру
19.03.23
✎
09:24
|
напиши уже пару своих функций
XMLВСтруктура() и СтруктураВXML |
|||
51
first_may
19.03.23
✎
09:45
|
(48) ну да..
вариант что-то типа https://infostart.ru/public/1737685/ получился, но по нему получилось, что создается новый пакет, таким образом для одной с/ф в обработке диадока две строки - упд - новая форма как в ссылке поэтому пошел с другой стороны.. от обратного.. к упд можно подключить свои внешние впф https://disk.yandex.ru/i/Beomg4G_0H2jZA вот протокол формируется по всем правилам как надо и она работает и в документе и в этой обработке (формируется как неформализованный документ в pdf) Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "Протокол"); Если ПечатнаяФорма <> Неопределено Тогда ПечатнаяФорма.ТабличныйДокумент = Сформировать_Протокол(МассивОбъектов, ОбъектыПечати); КонецЕсли; КонецПроцедуры вызгрузка в диадок протокол делает реальный XML, еоторый проходит проверку на их сайте.. осталось его также каким то образом "запихнуть" в ТабличныйДокумент и тогда наверное получиться передать в пакете и XML файл.. я так думаю :).. |
|||
52
first_may
23.03.23
✎
11:07
|
получилось..
кому интересно.. использовал ПодготовитьЭлектронныйДокумент ПолучитьТаблицуИспользуемыхВидовДокументов ПодготовитьПакет |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |