Добрый день.
Вопрос в следующем.
В ПКО создал правило без источника, приемник - Документ.
В ПКС создал свойства с галочкой - получать из входящих данных.
В Правилах выгрузки для этого ПКО указал произвольный алгоритм. Написал код в обработчике ПередОбработкой.
В плане обмена в состав входят все необходимые объекты.
При попытке выгрузить происходит ошибка:
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(14628)}: Ошибка при вызове метода контекста (НайтиПоТипу)
СтрокаТаблицы.ОбъектВыборкиМетаданные = Метаданные.НайтиПоТипу(СтрокаТаблицы.ОбъектВыборки);
по причине:
Несоответствие типов (параметр номер '1')
Она возникает потому что алгоритм следующий: Выбирается каждый источник из каждого правила, далее происходит поиск источника объекта в метаданных.
Но в моем правиле нет источника - соответственно, ошибка будет всегда возникать.
Как правильно сделать правило без источника, чтобы обойти эту ошибку?
Вопрос в следующем.
В ПКО создал правило без источника, приемник - Документ.
В ПКС создал свойства с галочкой - получать из входящих данных.
В Правилах выгрузки для этого ПКО указал произвольный алгоритм. Написал код в обработчике ПередОбработкой.
В плане обмена в состав входят все необходимые объекты.
При попытке выгрузить происходит ошибка:
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(14628)}: Ошибка при вызове метода контекста (НайтиПоТипу)
СтрокаТаблицы.ОбъектВыборкиМетаданные = Метаданные.НайтиПоТипу(СтрокаТаблицы.ОбъектВыборки);
по причине:
Несоответствие типов (параметр номер '1')
Она возникает потому что алгоритм следующий: Выбирается каждый источник из каждого правила, далее происходит поиск источника объекта в метаданных.
Но в моем правиле нет источника - соответственно, ошибка будет всегда возникать.
Как правильно сделать правило без источника, чтобы обойти эту ошибку?
По теме из базы знаний
- Правила конвертации данных из 1С:Производство+Услуги+Бухгалтерия в конфигурацию 1С:Бухгалтерия предприятия 3.0
- Бустер Конвертации данных 3 (Infostart Toolkit)
- Групповая загрузка метаданных в Конвертации данных 2.1 (2.1.8.2)
- Заметки по Конвертации данных 2.1
- КД 2: у выгружаемого свойства объекта заполняются только поля поиска и не отрабатывают обработчики ПКО
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) luter-89, в КД в правилах выгрузки укажите (наравне со способом выборки - произвольный алгоритм) объект выборки: по существу у вас объект выборки - РегистрНакопления.ЗапасыНаСкладах (если в метаданных нет регистров накопления - выгрузите структуру метаданных вместе с регистрами накоплений). Заодно надо глянуть в демке, заполнен ли объект выборки
(4) luter-89, Смотря что в коде обработчика перед выгрузкой данных, если данные передаются через переменную "ВыборкаДанных", то насколько я помню галочки быть не должно, если через ВыгрузитьПоПравилу, то вроде как должна быть. Код бы скинули сюда что ли обработчика.
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|ЗапасыНаСкладахОстатки.Номенклатура,
|ЗапасыНаСкладахОстатки.КоличествоОстаток КАК Количество
|ИЗ
|РегистрНакопления.ЗапасыНаСкладах.Остатки КАК ЗапасыНаСкладахОстатки";
Выборка = Запрос.Выполнить().Выбрать();
ТоварыНаСкладах = Новый ТаблицаЗначений();
ТоварыНаСкладах.Колонки.Добавить("Номенклатура");
ТоварыНаСкладах.Колонки.Добавить("Количество");
ДатаВыгрузки = ТекущаяДата();
Пока Выборка.Следующий() Цикл
СтрокаТоваров = ТоварыНаСкладах.Добавить();
СтрокаТоваров.Номенклатура = Выборка.Номенклатура;
СтрокаТоваров.Количество = Выборка.Количество;
КонецЦикла;
ТаблицаИменРегистров = Новый ТаблицаЗначений();
ТаблицаИменРегистров.Колонки.Добавить("Имя");
ТаблицаИменРегистров.Колонки.Добавить("Представление");
СтрокаТаблицы = ТаблицаИменРегистров.Добавить();
СтрокаТаблицы.Имя = "ОстаткиТоваровНаСкладах";
СтрокаТаблицы.Представление = "Остатки товаров на складах";
ИсходящиеДанные = Новый Структура;
ИсходящиеДанные.Вставить("Номер", "001");
ИсходящиеДанные.Вставить("Дата", ДатаВыгрузки);
ИсходящиеДанные.Вставить("Комментарий", "Перенос остатков товаров на " + Строка(ДатаВыгрузки));
ИсходящиеДанные.Вставить("ТаблицаРегистровНакопления", ТаблицаИменРегистров);
ИсходящиеДанные.Вставить("ОстаткиТоваровНаСкладах", ТоварыНаСкладах);
ВыгрузитьПоПравилу(, , ИсходящиеДанные, , "ПереносОстатковТоваров");
Запрос.Текст = "ВЫБРАТЬ
|ЗапасыНаСкладахОстатки.Номенклатура,
|ЗапасыНаСкладахОстатки.КоличествоОстаток КАК Количество
|ИЗ
|РегистрНакопления.ЗапасыНаСкладах.Остатки КАК ЗапасыНаСкладахОстатки";
Выборка = Запрос.Выполнить().Выбрать();
ТоварыНаСкладах = Новый ТаблицаЗначений();
ТоварыНаСкладах.Колонки.Добавить("Номенклатура");
ТоварыНаСкладах.Колонки.Добавить("Количество");
ДатаВыгрузки = ТекущаяДата();
Пока Выборка.Следующий() Цикл
СтрокаТоваров = ТоварыНаСкладах.Добавить();
СтрокаТоваров.Номенклатура = Выборка.Номенклатура;
СтрокаТоваров.Количество = Выборка.Количество;
КонецЦикла;
ТаблицаИменРегистров = Новый ТаблицаЗначений();
ТаблицаИменРегистров.Колонки.Добавить("Имя");
ТаблицаИменРегистров.Колонки.Добавить("Представление");
СтрокаТаблицы = ТаблицаИменРегистров.Добавить();
СтрокаТаблицы.Имя = "ОстаткиТоваровНаСкладах";
СтрокаТаблицы.Представление = "Остатки товаров на складах";
ИсходящиеДанные = Новый Структура;
ИсходящиеДанные.Вставить("Номер", "001");
ИсходящиеДанные.Вставить("Дата", ДатаВыгрузки);
ИсходящиеДанные.Вставить("Комментарий", "Перенос остатков товаров на " + Строка(ДатаВыгрузки));
ИсходящиеДанные.Вставить("ТаблицаРегистровНакопления", ТаблицаИменРегистров);
ИсходящиеДанные.Вставить("ОстаткиТоваровНаСкладах", ТоварыНаСкладах);
ВыгрузитьПоПравилу(, , ИсходящиеДанные, , "ПереносОстатковТоваров");
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот