|
EnterpriseData новый пакет в расширении | ☑ | ||
---|---|---|---|---|
0
Ирина1
16.12.24
✎
12:45
|
Здравствуйте. Добавила свой пакет в расширение. В этом пакете добавила для заказапоставщика два реквизита ТЧ. Реквизиты это справочники новые. Дописала код в процедурах соответствующих в МенеждереУниверсальногоОбмена. Но эти мои реквизиты не оявляются в xml файле. Что я делаю не так?
&ИзменениеИКонтроль("ДобавитьПКО_Документ_ЗаказПоставщику_Отправка") Процедура адмДобавитьПКО_Документ_ЗаказПоставщику_Отправка(ПравилаКонвертации) ПравилоКонвертации = ОбменДаннымиXDTOСервер.ИнициализироватьПравилоКонвертацииОбъекта(ПравилаКонвертации); ПравилоКонвертации.ИмяПКО = "Документ_ЗаказПоставщику_Отправка"; ПравилоКонвертации.ОбъектДанных = Метаданные.Документы.ЗаказПоставщику; #Удаление ПравилоКонвертации.ОбъектФормата = "Документ.ЗаказПоставщику"; //@NON-NLS-1 #КонецУдаления #Вставка ПравилоКонвертации.ПространствоИмен = "http://admaurl/EnterpriseData/11.17.3"; ОбменДаннымиXDTOСервер.ИнициализироватьРасширениеПравилаКонвертацииОбъекта(ПравилоКонвертации, ПравилоКонвертации.ПространствоИмен); ПравилоКонвертации.ОбъектФормата = "адмДокумент.ЗаказПоставщику"; //@NON-NLS-1 #КонецВставки ПравилоКонвертации.ПриОтправкеДанных = "ПКО_Документ_ЗаказПоставщику_Отправка_ПриОтправкеДанных"; СвойстваШапки = ПравилоКонвертации.Свойства; ............. ДобавитьПКС(СвойстваТЧ, "", "ЦенаЗаУпаковку", 1); ДобавитьПКС(СвойстваТЧ, "", "Штрихкод", 1); #Вставка ДобавитьПКС(СвойстваТЧ, "", "Участок", 1, "Справочник_адмУчастокОбъектовЗаказчиков_Отправка", "http://admaurl/EnterpriseData/11.17.3"); ДобавитьПКС(СвойстваТЧ, "", "Объект", 1, "Справочник_адмОбъектыЗаказчиков_Отправка","http://admaurl/EnterpriseData/11.17.3"); #КонецВставки |
|||
1
Волшебник
16.12.24
✎
12:59
|
Ирина, лучше идите варить борщ.
|
|||
2
Ирина1
16.12.24
✎
13:02
|
Волшебник, разве настолько все плохо
|
|||
3
Мультук
16.12.24
✎
13:51
|
(0)
Что может пойти не так ? а) Новичок (хотя, раз не повелась на Волшебника, может и нет) б) Расширения (в двух базах) в) Пакеты XDTO (в двух базах) г) Конвертация (в двух базах) Когда 1С поменяет (повысит) версию обмена нужно будет поправить всё еще раз ? google:ИнициализироватьРасширениеПравилаКонвертацииОбъекта https://infostart.ru/1c/articles/1798722/ Статью не читал, но комменты там радуют P.S. Я бы засунул AdditionalInfo таблицу значений P.P.S. Тут недавно товарищ тоже хотел (была такая тема) ИнициализироватьРасширениеПравилаКонвертацииОбъекта Поищите, может всё же расширил |
|||
4
Ирина1
16.12.24
✎
14:27
|
Спасибо. если смотреть файл xml пока только базы отправителя, то неважно, что там прописано в базе приемнике. А у меня в xml отправителе не прописываются мои поля
|
|||
5
lexushka
16.12.24
✎
22:37
|
из (3)
Важно: чтобы объект выгрузился, нужно, чтобы узел-приёмник поддерживал получение такого типа. То есть, пока на стороне приемника не добавлены ПОД и ПКО, выгрузка самого объекта не произойдёт! |
|||
6
Ненавижу 1С
17.12.24
✎
08:36
|
(0) а вы в обеих базах у необходимых узлов указали новую версию формата обмена?
|
|||
7
Ирина1
17.12.24
✎
12:38
|
Я сначала посмотрела версию формата в обоих базах. 17.1
потом уже заимствовала этот пакет в расширения в базах. И работала со своим добавленным Версию формата обмена в узлах не трогала |
|||
8
Ирина1
17.12.24
✎
12:44
|
у меня программа не заходит в процедуру "ПКО_Справочник_адмОбъектыЗаказчиков_ПриОтправкеДанных", в базе отправителе. Это нетиповой справочник.
Процедура ДобавитьПКО_Справочник_адмОбъектыЗаказчиков_Отправка(ПравилаКонвертации) ПравилоКонвертации = ОбменДаннымиXDTOСервер.ИнициализироватьПравилоКонвертацииОбъекта(ПравилаКонвертации); ПравилоКонвертации.ПространствоИмен = "http://admaurl/EnterpriseData/11.17.3"; ОбменДаннымиXDTOСервер.ИнициализироватьРасширениеПравилаКонвертацииОбъекта(ПравилоКонвертации, ПравилоКонвертации.ПространствоИмен); ПравилоКонвертации.ИмяПКО = "Справочник_адмОбъектыЗаказчиков_Отправка"; ПравилоКонвертации.ОбъектДанных = Метаданные.Справочники.адмОбъектыЗаказчиков; ПравилоКонвертации.ОбъектФормата = "Справочник.адмОбъектыЗаказчиков"; ПравилоКонвертации.ПриОтправкеДанных = "ПКО_Справочник_адмОбъектыЗаказчиков_ПриОтправкеДанных"; ПравилоКонвертации.ВариантИдентификации = "СначалаПоУникальномуИдентификаторуПотомПоПолямПоиска"; СвойстваШапки = ПравилоКонвертации.Свойства; ДобавитьПКС(СвойстваШапки, "Наименование", "Наименование"); ДобавитьПКС(СвойстваШапки, "Код", "Код"); ДобавитьПКС(СвойстваШапки, "Родитель", "Родитель", 1, "Справочник_адмОбъектыЗаказчиков_Отправка", "http://admaurl/EnterpriseData/11.17.3"); ДобавитьПКС(СвойстваШапки, "ПометкаУдаления", "ПометкаУдаления"); ДобавитьПКС(СвойстваШапки, "ЭтоГруппа", "ЭтоГруппа"); ПравилоКонвертации.ПоляПоиска.Добавить("Наименование,ЭтоГруппа"); КонецПроцедуры Процедура ПКО_Справочник_адмОбъектыЗаказчиков_ПриОтправкеДанных(ДанныеИБ, ДанныеXDTO, КомпонентыОбмена, СтекВыгрузки) ДанныеXDTO.КлючевыеСвойства.Вставить("Ссылка", ДанныеИБ.Ссылка); ДанныеXDTO.КлючевыеСвойства.Вставить("Код", ДанныеИБ.Код); ДанныеXDTO.КлючевыеСвойства.Вставить("Наименование", ДанныеИБ.Наименование); ДанныеXDTO.Родитель.Вставить("Родитель", ДанныеИБ.Родитель); ДанныеXDTO.ЭтоГруппа.Вставить("ЭтоГруппа", ДанныеИБ.ЭтоГруппа); ДанныеXDTO.ПометкаУдаления.Вставить("ПометкаУдаления", ДанныеИБ.ПометкаУдаления); КонецПроцедуры |
|||
9
Ирина1
17.12.24
✎
12:45
|
в "адмВыполнитьПроцедуруМодуляМенеджера" свои процедуры описала
|
|||
10
Мультук
17.12.24
✎
13:45
|
(9)
Я вижу три пути решения проблемы: 1) Сжать зубы и копать самой Статью из (3) вы прочитали ? Можно (наверное) задать вопросы там 2) Ждать гуру, который собаку съел на "ИнициализироватьРасширениеПравилаКонвертацииОбъекта" 3) Сделать через AdditionalInfo |
|||
11
Ирина1
17.12.24
✎
15:24
|
По этой статье и делала изначально.
Гуру подождем - интересно было бы прийти к успеху. Зубы больше сжимать не буду, сделаю через AdditionalInfo Через AdditionalInfo не нравится то, что в базе приемнике нужно будет программно создавать нетиповые объекты. Получается в процедуре "ПКО_Документ_СчетПоставщика_Получение_ПередЗаписьюПолученныхДанных" Некрасиво. Я так уже делала. Почему то у меня при записи нетипового объекта (в процедуре переноса типового объекта) иногда выходило сообщение , что Объект заблокирован. Его нельзя записать. |
|||
12
Ненавижу 1С
17.12.24
✎
16:52
|
(8) оно туда вообще заходит? ПОД есть?
|
|||
13
Ирина1
17.12.24
✎
17:07
|
да, под есть. и в эту процедуру заходит
ДобавитьПКО_Справочник_адмОбъектыЗаказчиков_Отправка(ПравилаКонвертации) а в эту не заходит Процедура ПКО_Справочник_адмОбъектыЗаказчиков_ПриОтправкеДанных(ДанныеИБ, ДанныеXDTO, КомпонентыОбмена, СтекВыгрузки) |
|||
14
Волшебник
17.12.24
✎
19:57
|
(13) а почему?
|
|||
15
Волшебник
17.12.24
✎
20:00
|
Подождём гуру, который умеет пользоваться отладчиком на расстоянии...
|
|||
16
Ненавижу 1С
17.12.24
✎
20:47
|
(13) ну ок. А ты ее добавила в эту безумную процедуру? Там должно быть что-то типа:
Если ИмяМетода="ПКО_Справочник_адмОбъектыЗаказчиков_ПриОтправкеДанных" Тогда ПКО_Справочник_адмОбъектыЗаказчиков_ПриОтправкеДанных(...) |
|||
17
Ирина1
17.12.24
✎
21:36
|
да, добавила я ее в процедуру "ВыполнитьПроцедуруМодуляМенеджера"
Сжала зубы и пошла опять в отладчик. у меня сейчас вылетает в процедуре &ИзменениеИКонтроль("ДобавитьПКО_Документ_ЗаказПоставщику_Отправка") Процедура адмДобавитьПКО_Документ_ЗаказПоставщику_Отправка(ПравилаКонвертации) ПравилоКонвертации = ОбменДаннымиXDTOСервер.ИнициализироватьПравилоКонвертацииОбъекта(ПравилаКонвертации); ПравилоКонвертации.ИмяПКО = Документ_ЗаказПоставщику_Отправка"; ПравилоКонвертации.ОбъектДанных = Метаданные.Документы.ЗаказПоставщику; #Удаление ПравилоКонвертации.ОбъектФормата = "Документ.ЗаказПоставщику"; //@NON-NLS-1 #КонецУдаления #Вставка ПравилоКонвертации.ПространствоИмен = "http://admaurl/EnterpriseData/11.17.3"; ОбменДаннымиXDTOСервер.ИнициализироватьРасширениеПравилаКонвертацииОбъекта(ПравилоКонвертации, ПравилоКонвертации.ПространствоИмен); ПравилоКонвертации.ОбъектФормата = "адмДокумент.ЗаказПоставщику"; #КонецВставки ПравилоКонвертации.ПриОтправкеДанных = "ПКО_Документ_ЗаказПоставщику_Отправка_ПриОтправкеДанных"; СвойстваШапки = ПравилоКонвертации.Свойства; ДобавитьПКС(СвойстваШапки, "АдресДоставки", "АдресДоставки"); ............................................... вот на том месте, где я добавляю свой реквизит "Объект" ДобавитьПКС(СвойстваТЧ, "", "Штрихкод", 1); #Вставка ДобавитьПКС(СвойстваТЧ, "", "Объект", 1, "Справочник_адмОбъектыЗаказчиков_Отправка","http://admaurl/EnterpriseData/11.17.3"); ДобавитьПКС(СвойстваТЧ, "", "Участок", 1, "Справочник_адмУчастокОбъектовЗаказчиков_Отправка", "http://admaurl/EnterpriseData/11.17.3"); #КонецВставки |
|||
18
Ирина1
17.12.24
✎
21:45
|
в объектеФормата тип нового реквизит "Объект" = КлючевыеСвойстваЗаказчика
В Ключевыхсвойствах три поля: Ссылка, код, наименование |
|||
19
Волшебник
17.12.24
✎
21:52
|
У нас что тут, отладка дистанционно?
Иришка, дай фотку. |
|||
20
Garykom
17.12.24
✎
22:01
|
Есть замечательный метод допиливания любого обмена с готовым форматом
Берем любой неограниченный строковый реквизит И засовываем в него json с чем надо В случае новых реквизитов в ТЧ засовываем всю ТЧ целиком с новыми реквизитами, типовые для ТЧ оставляем пустыми или без новых реквизитов Главное при загрузке использовать ТЧ не из типового а из своего |
|||
21
Волшебник
17.12.24
✎
22:05
|
(20) валидность где проверяется?
|
|||
22
lEvGl
17.12.24
✎
22:10
|
(20) правильно понял, что в источнике может быть 5 реквизитов, а в приемнике 7 и СериализаторXDTO это съест, оставив отсутствующее в источнике пустым в приемнике?
|
|||
23
Garykom
17.12.24
✎
22:09
|
(21) Где надо там и будет проверяться
|
|||
24
Garykom
17.12.24
✎
22:10
|
(22) А причем тут СериализаторXDTO ?
Мы его тупо обходим, чтобы не ползти в изменение схем |
|||
25
Garykom
17.12.24
✎
22:12
|
Суть что типовая может продолжать легко обновляться, пакеты не трогаем
И легко добавляем/изменяем новые доработки, не трогая типовое кроме кода в источнике и приемнике |
|||
26
lEvGl
17.12.24
✎
22:14
|
(24) как универсальный писатель и читатель xml
Чтобы Источник Сериализатор.Записать(Ссылка) Приемник Сериализатор.Прочитать(XML) при том что состав (валидность(21)) разный т к в схемы ползать совсем не хочется |
|||
27
Garykom
17.12.24
✎
22:14
|
(25)+ Если есть AdditionlInfo можно использовать его, но не обязательно
Достаточно любого неограниченного строкового реквизита в схеме у нужного объекта Там остается и само значение этого реквизита (в json) и все наше новое |
|||
28
Garykom
17.12.24
✎
22:16
|
(26) Начнем с того что XML на данный момент уже устарел
Он слишком тормозной в отличие от JSON Да у него куча ненужных (на практике) возможностей со схемами и валидацией Но в реальности даже если значение удовлетворяет схеме - оно часто неправильное и один хрен нужна дополнительная проверка кодом |
|||
29
Волшебник
17.12.24
✎
22:17
|
(28) когда я слышу "XML устарел", то я не понимаю вселенную...
|
|||
30
lEvGl
17.12.24
✎
22:19
|
жалдь
) |
|||
31
Garykom
17.12.24
✎
22:30
|
(29) Ну это реальность
Когда надо перегнать много данных через текстовую сериализацию на данный момент есть выбор: 1. CSV ( или прочие из wiki:DSV ) 2. XML 3. JSON И лично я выбор делаю от типа данных Если они сильно одинаковые по сути табличные то CSV или TSV Если более сложные, объектно-иерархические то JSON И никогда не выберу XML для нового проекта, без тяжкого груза legacy |
|||
32
Волшебник
17.12.24
✎
23:04
|
(31) Ваша реальность слегка заглючила
|
|||
33
Valdis2007
18.12.24
✎
07:45
|
(20) +1
Берем любой неограниченный строковый реквизит И засовываем в него json с чем надо Читал, что так появилась МоногоДБ в фейсбуке |
|||
34
Ирина1
18.12.24
✎
08:03
|
Простите, но вы засорили мне ветку
Понятно, что можно сделать через AdditionalInfo |
|||
35
Ненавижу 1С
18.12.24
✎
08:19
|
(17) что значит "вылетает"? Журнал регистрации, что говорит? параметры у ДобавитьПКС соблюдены?
|
|||
36
Ирина1
19.12.24
✎
22:35
|
Здравствуйте. Переношу нетиповые реквизиты ТЧ через AdditionalInfo
Если документ уже был в базе приемнике, то все хорошо. Если документа нет в базе приемнике, то в процедуре ПКО_Документ_СчетПоставщика_Получение_ПередЗаписьюПолученныхДанных(...) есть код, который выкидывает из нее вот он Если ДанныеИБ = Неопределено Тогда Возврат; КонецЕсли; и у меня мои реквизиты в тч не заполняются обошла так #Вставка Если ДанныеИБ = Неопределено Тогда ДанныеИБ = Документы.СчетНаОплатуПоставщика.СоздатьДокумент(); КонецЕсли; #КонецВставки дальше заполняю тч из AdditionalInfo Вопрос: Я таким созданием документа не повлеку какие то проблемы в нем? |
|||
37
Ирина1
19.12.24
✎
22:36
|
зачем это сделано
Если ДанныеИБ = Неопределено Тогда Возврат; КонецЕсли; |
|||
38
DrShad
19.12.24
✎
22:39
|
(37) ну так чтобы дальше не возникло критической ошибки
|
|||
39
Волшебник
модератор
19.12.24
✎
23:56
|
Ирина, идите варить борщ!
|
|||
40
Ирина1
20.12.24
✎
04:28
|
Волшебник, завтра сварю
|
|||
41
Волшебник
20.12.24
✎
06:34
|
Прикольно...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |