Имя: Пароль:
1C
1С v8
КД3: Перенос доп информации через костыль
0 Гений 1С
 
гуру
02.09.22
14:03
Короче, нужно было передать дополнительные данные для документа отчет комитенту с обменом из УТ в БП.

Выгрузил их в ТЗ. Дальше сериализовал через ЗначениеВстрокуВнутр (смотрим код) и выгрузил как доп.реквизит объекта.


Процедура Синхр_ПКО_Документ_ОтчетКомитенту_Отправка_ПриОтправкеДанных(ДанныеИБ, ДанныеXDTO, КомпонентыОбмена, СтекВыгрузки)
    //+++Осипов 2022-08-30 добавил дополнительные реквизиты
    ДопРеквизиты = ДатьДополнительныеРеквизитыXDTO(ДанныеXDTO);

    СтрокаДопРеквизитов = ДопРеквизиты.Добавить();
    Свойство = ДатьДопРеквизитНаСервере(Неопределено, "доп_ТаблицаОтчетаКомитентуОЗакупках", "Служебный: Таблица отчета комитенту о закупках", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(0, ДопустимаяДлина.Переменная)));
    СтрокаДопРеквизитов.Свойство = Свойство;
    СтрокаДопРеквизитов.ЗначениеСвойства = ЗначениеВСтрокуВнутр(ТЗ);  

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


Функция ДатьДополнительныеРеквизитыXDTO(ДанныеXDTO) Экспорт
    Если ДанныеXDTO.Свойство("ДополнительныеРеквизиты") Тогда
        ДопРеквизиты = ДанныеXDTO.ДополнительныеРеквизиты;
    Иначе    
        ДопРеквизиты = Новый ТаблицаЗначений;
        ДопРеквизиты.Колонки.Добавить("Свойство");
        ДопРеквизиты.Колонки.Добавить("ЗначениеСвойства");  
        ДанныеXDTO.Вставить("ДополнительныеРеквизиты", ДопРеквизиты);
    КонецЕсли;
    Возврат ДанныеXDTO.ДополнительныеРеквизиты;
КонецФункции


Функция ДатьДопРеквизитНаСервере(НаборСвойствСтрокой, ИдентификаторРеквизита, НаименованиеРеквизита, ТипЗначения = Неопределено, Многострочный = 0) Экспорт
    УстановитьПривилегированныйРежим(Истина);
    
    //попробуем найти реквизит по наименованию
    //ДопРеквизитСсылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(ИмяРеквизита);
    ДопРеквизитСсылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", ИдентификаторРеквизита);
    Если НЕ ЗначениеЗаполнено(ДопРеквизитСсылка) Тогда
        //если не нашли реквизит - будем его создавать
        ДопРеквизитОбъект = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.СоздатьЭлемент();
        ДопРеквизитОбъект.Заголовок = НаименованиеРеквизита;
        Если НаборСвойствСтрокой <> Неопределено Тогда
        ДопРеквизитОбъект.НаборСвойств = Справочники.НаборыДополнительныхРеквизитовИСведений[НаборСвойствСтрокой]; //.Справочник_Контрагенты;
        Если ТипЗначения = Неопределено Тогда
            ТипЗначения = Новый ОписаниеТипов("Строка",,,,Новый КвалификаторыСтроки(250));
        КонецЕсли;                                    
        КонецЕсли;
        ДопРеквизитОбъект.ТипЗначения = ТипЗначения; //
        ДопРеквизитОбъект.Наименование = ДопРеквизитОбъект.Заголовок + " ("+ДопРеквизитОбъект.НаборСвойств+")";
        ДопРеквизитОбъект.Виден = Истина;
        ДопРеквизитОбъект.Доступен = Истина;
        ДопРеквизитОбъект.МногострочноеПолеВвода = Многострочный;
        ДопРеквизитОбъект.ДополнительныеЗначенияИспользуются = Истина;
        //зададим имя нового реквизита
        ДопРеквизитОбъект.Имя = ИдентификаторРеквизита;
        ДопРеквизитОбъект.Записать();
        ДопРеквизитСсылка = ДопРеквизитОбъект.Ссылка;        
    КонецЕсли;
    
    Возврат  ДопРеквизитСсылка;
КонецФункции



А как-нибудь штатно можно доп параметры через обмен гонять?
1 НафНаф
 
02.09.22
14:12
кури AdditionalInfo и гоняй что угодно
2 Гений 1С
 
гуру
02.09.22
14:13
(1) гм, надо попробовать.
3 Злопчинский
 
02.09.22
15:28
(2) надо читать протоколы обмена, тогда не придется костыли изобретать
4 Конструктор1С
 
02.09.22
15:33
(3) читать мануалы и разбираться вообще не Генин случай
5 Гений 1С
 
гуру
02.09.22
15:34
(3) вы еще предложите КД3 изучить. в сад
6 НафНаф
 
02.09.22
15:56
(5) ну правильно, вместо этого будем костыли и велосипеды с квадратными колесами делать
7 mikecool
 
02.09.22
16:00
всегда открываю новую ветку Сергея как книгу о Гарри Поттере )
8 Конструктор1С
 
03.09.22
05:21
(6) все знают, насколько в 1с низкий порог входа. А Г1С ещё и постоянно демонстрирует это
9 Конструктор1С
 
03.09.22
05:23