Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
06 июл 2022, 23:24

Ошибка в КД 3.0.5.3 не корректно генерируется код для ТЧ - Решение

Автор xDD, 27 дек 2017, 17:09

0 Пользователей и 1 гость просматривают эту тему.

xDD

В КД  3.0.5.3 есть ошибка заключается в том для Табличной части Документа или Справочника код генерируется неправильный. Поэтому не рекомендую на ней писать.  Структура обрабатывается как ТЗ.
Генерируется вот такой код
Процедура ДобавитьПКО_Документ_ОприходованиеТоваров_Получение(ПравилаКонвертации)

ПравилоКонвертации = ОбменДаннымиXDTOСервер.ИнициализироватьПравилоКонвертацииОбъекта(ПравилаКонвертации);
ПравилоКонвертации.ИмяПКО                       = "Документ_ОприходованиеТоваров_Получение";
ПравилоКонвертации.ОбъектДанных                 = Метаданные.Документы.ОприходованиеИзлишковТоваров;
ПравилоКонвертации.ОбъектФормата                = "Документ.ОприходованиеТоваров";
ПравилоКонвертации.ВариантИдентификации         = "ПоУникальномуИдентификатору";

СвойстваШапки = ПравилоКонвертации.Свойства;
ДобавитьПКС(СвойстваШапки, "Дата",        "Дата");
ДобавитьПКС(СвойстваШапки, "Номер",       "Номер");
ДобавитьПКС(СвойстваШапки, "Организация", "Организация", , "Справочник_Организации_Получение");

СвойстваТЧ = [b]ДобавитьПКТЧ(ПравилоКонвертации, "Товары", "Товары")[/b];
ДобавитьПКС(СвойстваТЧ, "ВидЗапасов",   "ТипЗапасов", 1,"ТипыЗапасов_Получение");
ДобавитьПКС(СвойстваТЧ, "Количество",   "Количество", 1);
ДобавитьПКС(СвойстваТЧ, "Номенклатура", "Номенклатура", 1,"Справочник_Номенклатура_Получение");
ДобавитьПКС(СвойстваТЧ, "Сумма",        "Сумма", 1);
ДобавитьПКС(СвойстваТЧ, "Цена",         "Цена", 1);

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

Функция ДобавитьПКТЧ(ПравилоКонвертации, ИмяТЧКонфигурации, ИмяТЧФормата)
    Если ПравилоКонвертации.СвойстваТабличныхЧастей.Колонки.Количество() = 0 Тогда
        ОбменДаннымиXDTOСервер.ИнициализироватьСвойстваТабличныхЧастей(ПравилоКонвертации);
    КонецЕсли;
    КонвертацияТабличнойЧасти                = ПравилоКонвертации.СвойстваТабличныхЧастей.Добавить();
    КонвертацияТабличнойЧасти.ТЧКонфигурации = ИмяТЧКонфигурации;
    КонвертацияТабличнойЧасти.ТЧФормата      = ИмяТЧФормата;
    КонвертацияТабличнойЧасти.Свойства       = ОбменДаннымиXDTOСервер.ИнициализироватьТаблицуСвойствДляПравилаКонвертации();
    Возврат КонвертацияТабличнойЧасти.Свойства;
КонецФункции

но при этом ПравилоКонвертации.СвойстваТабличныхЧастей инициализируется как структура ранее.
В журнале регистрации была ошибка: {ОбщийМодуль.ДлительныеОперации.Модуль(376)}: Поле объекта не обнаружено (Колонки)
      ВызватьИсключение(ТекстОшибки);


Правильно сгенерированый код выглядит вот так правила сделаны на КД 3.0.2.1



Процедура ДобавитьПКО_Документ_ОприходованиеТоваров_Получение(ПравилаКонвертации)

ПравилоКонвертации = ОбменДаннымиXDTOСервер.ИнициализироватьПравилоКонвертацииОбъекта(ПравилаКонвертации);
ПравилоКонвертации.ИмяПКО = "Документ_ОприходованиеТоваров_Получение";
ПравилоКонвертации.ОбъектДанных = Метаданные.Документы.ОприходованиеИзлишковТоваров;
ПравилоКонвертации.ОбъектФормата = "Документ.ОприходованиеТоваров";
ПравилоКонвертации.ПравилоДляГруппыСправочника = Ложь;
ПравилоКонвертации.ПриКонвертацииДанныхXDTO = "ПКО_Документ_ОприходованиеТоваров_Получение_ПриКонвертацииДанныхXDTO";
ПравилоКонвертации.ВариантИдентификации = "ПоУникальномуИдентификатору";

НоваяСтрока = ПравилоКонвертации.Свойства.Добавить();
НоваяСтрока.СвойствоКонфигурации = "Дата";
НоваяСтрока.СвойствоФормата = "Дата";

НоваяСтрока = ПравилоКонвертации.Свойства.Добавить();
НоваяСтрока.СвойствоКонфигурации = "Номер";
НоваяСтрока.СвойствоФормата = "Номер";

НоваяСтрока = ПравилоКонвертации.Свойства.Добавить();
НоваяСтрока.СвойствоКонфигурации = "Организация";
НоваяСтрока.СвойствоФормата = "Организация";
НоваяСтрока.ПравилоКонвертацииСвойства = "Справочник_Организации_Получение";
ПравилоКонвертации.СвойстваТабличныхЧастей.Вставить("Товары", ОбменДаннымиXDTOСервер.ИнициализироватьТаблицуСвойствДляПравилаКонвертации());
СвойстваТЧ = ПравилоКонвертации.СвойстваТабличныхЧастей.Товары;

НоваяСтрока = СвойстваТЧ.Добавить();
НоваяСтрока.СвойствоКонфигурации = "ВидЗапасов";
НоваяСтрока.СвойствоФормата = "ТипЗапасов";
НоваяСтрока.ИспользуетсяАлгоритмКонвертации = Истина;
НоваяСтрока.ПравилоКонвертацииСвойства = "ТипыЗапасов_Получение";

НоваяСтрока = СвойстваТЧ.Добавить();
НоваяСтрока.СвойствоКонфигурации = "ЕдиницаИзмерения";
НоваяСтрока.СвойствоФормата = "ЕдиницаИзмерения";
НоваяСтрока.ИспользуетсяАлгоритмКонвертации = Истина;
НоваяСтрока.ПравилоКонвертацииСвойства = "Справочник_ЕдиницыИзмерения_Получение";

НоваяСтрока = СвойстваТЧ.Добавить();
НоваяСтрока.СвойствоКонфигурации = "Количество";
НоваяСтрока.СвойствоФормата = "Количество";
НоваяСтрока.ИспользуетсяАлгоритмКонвертации = Истина;

НоваяСтрока = СвойстваТЧ.Добавить();
НоваяСтрока.СвойствоКонфигурации = "Номенклатура";
НоваяСтрока.СвойствоФормата = "Номенклатура";
НоваяСтрока.ИспользуетсяАлгоритмКонвертации = Истина;
НоваяСтрока.ПравилоКонвертацииСвойства = "Справочник_Номенклатура_Получение";

НоваяСтрока = СвойстваТЧ.Добавить();
НоваяСтрока.СвойствоКонфигурации = "Сумма";
НоваяСтрока.СвойствоФормата = "Сумма";
НоваяСтрока.ИспользуетсяАлгоритмКонвертации = Истина;

НоваяСтрока = СвойстваТЧ.Добавить();
НоваяСтрока.СвойствоКонфигурации = "Цена";
НоваяСтрока.СвойствоФормата = "Цена";
НоваяСтрока.ИспользуетсяАлгоритмКонвертации = Истина;

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


chirva4444

Хоть и некропост, но я вот тоже столкнулся с описываемой ошибкой.
Думаю, не лишним будет прояснить причины ее появления:
В КД 3.0.5.3 при создании конвертаций требуется указать версию формата менеджера обмена: 1 или 2. В версии 2 (согласно подсказке самой КД 3.0.5.3) добавлены расширенные возможности конвертации ТЧ и составных свойств. Но использование формата 2 требует в базах обмена наличие БСП 2.4.2 и выше. У меня в базах была интегрирована БСП 2.3, а в КД был установлен формат 2. Т.е. генерировался код, неподдерживаемый самой БСП (ошибка как и у автора темы). Я указал в настройках версию формата 1, после чего код стал генерироваться как и в КД 3.0.2.1
 

Цитата: xDD от 27 дек 2017, 17:09
В КД  3.0.5.3 есть ошибка заключается в том для Табличной части Документа или Справочника код генерируется неправильный. Поэтому не рекомендую на ней писать.  Структура обрабатывается как ТЗ.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск