Имя: Пароль:
1C
1С v8
Как заполнить инфополе "Иные сведения" в УКД при передаче в Контур.Диадок?
0 Denosik
 
24.03.24
16:23
Может есть кто работал с Контур.Диадок на обычных формах, совсем не понимаю как заполнить инфополе. Может через плагин или подключаемый модуль можно, но я просто не знаю как. В интернете так и не нашёл ничего путного... Буду невероятно благодарен за помощь
1 Волшебник
 
24.03.24
17:04
Инфополе = Значение;


Не стоит благодарности.
2 mikecool
 
24.03.24
20:05
(0) никто с ним не работал...
смотря, что тебе нужно
можно в код лезть
можно через ПМ
возможно, событие ОбработатьСобытиеПослеЗаполненияКонтента из ПМ тебе подойдет
оно, как понимаю, отрабатывает всегда - перед отправкой или формированием печ форм
смотри переменные
    DocumentType     = Параметры.DocumentType;
    Content         = Параметры.Content;
    ДокументСсылка     = Параметры.ДокументСсылка;
и что еще есть
и - смотри описание апи диадока, Content под апи как раз подпадает
3 Denosik
 
25.03.24
08:28
(1) знать бы куда вставить. Если через плагин изменения контекста то какой шаблон взять.

Если через подключаемый модуль, то как вообще это использовать и как название инфополя, если в том же XDTO объекте "контекст" нет "иные сведения"
4 Denosik
 
25.03.24
08:32
(2) я нашел как заполнять инфороля в ПМ, но только в случае, если эти инфополя уже заполняются и мне просто надо сменить выводимые данные. Но в данном случае "иные сведения" не выводились и в Content их обозначения нет(
5 Denosik
 
25.03.24
08:33
(3) контекст - content*
6 mikecool
 
25.03.24
16:20
(4) они есть, ищи в описании апи на сайте диадока
и если нашел - то знаешь, как называется поле, уже пол дела сделано
7 Chai Nic
 
25.03.24
16:29
"Иные сведения" заполняются по хотелке контрагента в согласованном с ним формате, поэтому в 1с этого никогда не будет. Перехватывайте расширением сформированный xml перед отправкой, и дописывайте в него нужные атрибуты и значения. Как-то так.
8 Denosik
 
26.03.24
02:26
Вытащил сформированный xml, в нём нашёл узел EventContent, в котором всего 3 узла, а по документации Дидока там должно быть 5, среди которых должна быть CostChangeInfo - иные сведения.

Осталось понять как его дописать правильно
9 Chai Nic
 
26.03.24
06:36
10 АгентБезопасной Нацио
 
26.03.24
08:33
(2) ПослеЗаполненияКонтента - емнип, это в старой версии диадока ("стандарт"). Хотя он, если есть, тоже отрабатывает, как ни странно (у меня отрабатывает и старый ПМ, оставшийся от Стандарта, и новый - Универсал).

В ПослеЗаполненияКонтента инфополе ФХЖ1 заполнется примерно так:
    НомерДатаЗаказа=ПолучитьНомерДатуЗаказаИзРеализации(Реализация);
    НомерЗаказа = НомерДатаЗаказа.НомерДокумента;
    ДатаЗаказа = НомерДатаЗаказа.ДатаДокумента;
    Если НомерЗаказа <> Неопределено Тогда
        Протоконтент.AdditionalInfoId.StructedAdditionalInfos.Добавить(Новый Структура("key,value",НаименованиеПоляНомерORDER,НомерЗаказа));
    КонецЕсли;
    Если ДатаЗаказа <> Неопределено Тогда
        Протоконтент.AdditionalInfoId.StructedAdditionalInfos.Добавить(Новый Структура("key,value",НаименованиеПоляДатаORDER,ДатаЗаказа));
    КонецЕсли;
    НомерДатаАкта=ПолучитьНомерДатуАктаИзРеализации(Реализация);
    НомерАкта = НомерДатаАкта.НомерДокумента;
    ДатаАкта = НомерДатаАкта.ДатаДокумента;
    Если НомерАкта <> Неопределено Тогда
    Протоконтент.AdditionalInfoId.StructedAdditionalInfos.Добавить(Новый Структура("key,value",НаименованиеПоляНомерDESADV,НомерАкта));
    КонецЕсли;
    Если ДатаАкта <> Неопределено Тогда
        Протоконтент.AdditionalInfoId.StructedAdditionalInfos.Добавить(Новый Структура("key,value",НаименованиеПоляДатаDESADV,ДатаАкта));
    КонецЕсли;


В Универсал имхо нужно ловить в ПМ событие ПодготовитьЭлектронныйДокумент https://developer.kontur.ru/Docs/Diadoc_UM/func/pm/Podgotovit'ElektronnyyDokument.html
11 Denosik
 
26.03.24
09:05
(9) проблемка, в XML я создал элемент, для пробы заполнил его текстом и записал в XDTOобъект. Но иные сведения не заполнились. Может не так перенес в XDTO...
12 Denosik
 
26.03.24
09:09
(10) а это интересно, это совершенно иной способ.

Вы заполняете AdditionalInfoId, это и есть иные сведения? Я думал иные сведения это CostChangeInfo, а AdditionalInfoId - дополнительные свойства. Что в шапке документа
13 АгентБезопасной Нацио
 
26.03.24
09:16
(12) "иные сведения" - это StructedAdditionalInfos. А CostChangeInfo - это иные сведения об изменении стоимости.
Причем StructedAdditionalInfos у контента  - это ФХЖ1, а у item'a у table - это ФХЖ2
14 Denosik
 
27.03.24
08:31
(13) а если у меня в AdditionalInfoId нет StructedAdditionalInfos?

Перевел XML в текст, а там AdditionalInfoId представлено таким тегом : </AdditionalInfoId> без начала и дочерних узлов
15 АгентБезопасной Нацио
 
27.03.24
11:21
(14) Видимо, что-то типа AdditionalInfoId.Вставить("StructedAdditionalInfos", Новый Массив);
В каком событии смотришь?

Вообще, озвучь задачу целиком и версию модуля Контура...
16 Denosik
 
27.03.24
11:27
(15) заполнил процедурой "основноймодуль.ДобавитьИнформационноеПоле(Content.AdditionalInfoId, "тест", "тест1")

Поле появилось, но в шапке в поле доп. Сведения. А мне нужно заполнить поле "иные сведения", что после таблицы
17 Denosik
 
27.03.24
11:30
(15) в документе создал реквизит "иные сведения" тип - строка. Выводить его в инфополе "иные сведения" в УКД диадок

Диадок на обычной форме версия 4.39.3.2938
18 dchumak
 
27.03.24
11:37
(16)
1) открой обработку Диадок в конфигураторе.
2) сохрани макет печатные формы (это внешняя обработка, там можно посмотреть, откуда берутся из структуры Content данные и выводятся в макет) с расширением epf
3) далее смотришь в документации как заполнять эти данные.
4) AdditionalInfoId - это НЕ иные сведения, а доп. сведения (ИнфПолФХЖ).

По твоему примеру.
Иные сведения - это CostChangeInfo.
developer.kontur.ru/Docs/Diadoc_UM/objects/EventContent.html
19 dchumak
 
27.03.24
11:41
(17)
сначала разберись со структурой УПД/УКД Диадок, а также со структурой Content, которая потом преобразуется в XML и сразу все станет понятно, что куда выводить.
В модуле можно включить отладку и посмотреть, что куда пишется.
20 Denosik
 
27.03.24
11:48
(18) точно, с пф спасибо. Помогло реально понять что откуда заполняется
21 Denosik
 
27.03.24
11:49
(19) увы, при попытке включить отладку в системных настройках, диадок просто вылетает
22 dchumak
 
27.03.24
11:51
(21) включайте отладку и остановку по ошибке и смотрите, где вылетает
23 dchumak
 
27.03.24
11:58
(21) ну и сначала проверьте доступ к каталогу, в который обработки выгружаются
24 Denosik
 
27.03.24
12:04
(19) ты Бог.

Всем, кто мучается с заполнениями какого либо поля

Открываете нужное пф, смотрите из чего заполняется и просто заполняете этот тег. Даже если его нет, он сам создаться

Решение с иными сведениями:

Content.EventContent.CostChangeInfo = "Оно работает!";
25 dchumak
 
27.03.24
12:11
(24) вообще для этого функции есть, заполняющие либо значение свойства, либо список XDTO (я в ПМ их использую), например

УстановитьЗначениеXDTO(Контент, "CostChangeInfo",            "Иные сведения");

УстановитьЗначениеXDTO(Контент, "OperationContent",            "Уведомляю об изменении документа.");

НовЭлемент = НовыйЭлементСпискаXDTO(Контент.CorrectionBases);
Заполнить_BaseDocumentName(НовЭлемент, Документ1С);

Процедура Заполнить_BaseDocumentName(Контент, Документ1С)
    УстановитьЗначениеXDTO(Контент, "BaseDocumentDate",            Документ1С.ДатаИсходногоДокумента);
    УстановитьЗначениеXDTO(Контент, "BaseDocumentNumber",        Документ1С.НомерИсходногоДокумента);
    УстановитьЗначениеXDTO(Контент, "BaseDocumentName",            "Счет-фактура");
    УстановитьЗначениеXDTO(Контент, "AdditionalInfo",            Неопределено);
    УстановитьЗначениеXDTO(Контент, "BaseIdFile",                Неопределено);

КонецПроцедуры


Как-то так, при генерации ПМ они прописываются в структуру.
26 Denosik
 
27.03.24
13:02
(25) да но так оно ругалось, что свойства CostChangeInfo нет в Content
27 dchumak
 
27.03.24
13:26
(26) значит не инициализируется что-то при начальном заполнении.
При отладке (например, в ПМ, в структуре уже есть изначально свойства и по умолчанию они заполнены как Неопределено).