Конвертация из ТЧ в реквизит
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) corbenSG, в ПКО перед выгрузкой:
Создаешь ПКС для этих реквизитов с пустыми источниками, ставишь галку "Получать из входящих данных". Во входящих данных наименование ключа строго должно совпадать с наименованием реквизита приемника! Если типы реквизитов приемника не являются примитивными (строка, число и т.д.), то в ПКС указываешь правило конвертации.
Строка = Источник.<НазваниеТЧ>[0];
ВходящиеДанные = Новый Структура;
ВходящиеДанные.Вставить("НазваниеРеквизитаПриемника", Строка.<НазваниеКолонки>);
---------------------------//---------------------------------------------------
Создаешь ПКС для этих реквизитов с пустыми источниками, ставишь галку "Получать из входящих данных". Во входящих данных наименование ключа строго должно совпадать с наименованием реквизита приемника! Если типы реквизитов приемника не являются примитивными (строка, число и т.д.), то в ПКС указываешь правило конвертации.
(4) RocKeR_13,
Опять уперся... Не могу загрузить основную спецификацию для номенлактуры.
В КА это РегСв а в БП реквизит номенклатуры.
Что я сделал:
В ПКС создал правило --> ОсновнаяСпецификацияНоменклатуры (с пустым источником), поставил галку "Получать из входящих данных".
В ПКО в Перед Выгрузкой прописал
Что я сделал не так?
Опять уперся... Не могу загрузить основную спецификацию для номенлактуры.
В КА это РегСв а в БП реквизит номенклатуры.
Что я сделал:
В ПКС создал правило --> ОсновнаяСпецификацияНоменклатуры (с пустым источником), поставил галку "Получать из входящих данных".
В ПКО в Перед Выгрузкой прописал
Если не Источник.ЭтоГруппа Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОсновныеСпецификацииНоменклатурыСрезПоследних.Номенклатура,
| ОсновныеСпецификацииНоменклатурыСрезПоследних.СпецификацияНоменклатуры
|ИЗ
| РегистрСведений.ОсновныеСпецификацииНоменклатуры.СрезПоследних КАК ОсновныеСпецификацииНоменклатурыСрезПоследних
|ГДЕ
| ОсновныеСпецификацииНоменклатурыСрезПоследних.Номенклатура = &Номенклатура";
Запрос.УстановитьПараметр("Номенклатура", Источник.Ссылка);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
ВходящиеДанные = Новый Структура;
ВходящиеДанные.Вставить("ОсновнаяСпецификацияНоменклатуры", Выборка.СпецификацияНоменклатуры);
КонецЦикла;
КонецЕсли;
ПоказатьЧто я сделал не так?
Пишет ошибку
Ошибка получения свойства объекта из входящих данных
ПКО = Номенклатура (Справочник: Номенклатура)
ПКС = 18 (--> ОсновнаяСпецификацияНоменклатуры)
Объект = Прочие материалы (Номенклатура)
СвойствоПриемника = ОсновнаяСпецификацияНоменклатуры (СправочникСсылка.СпецификацииНоменклатуры)
ОписаниеОшибки = Получение элемента по индексу для значения не определено
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8283)
КодСообщения = 68
Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1694)}: Ошибка получения свойства объекта из входящих данных
ПКО = Номенклатура (Справочник: Номенклатура)
ПКС = 18 (--> ОсновнаяСпецификацияНоменклатуры)
Объект = Прочие материалы (Номенклатура)
СвойствоПриемника = ОсновнаяСпецификацияНоменклатуры (СправочникСсылка.СпецификацииНоменклатуры)
ОписаниеОшибки = Получение элемента по индексу для значения не определено
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8283)
КодСообщения = 68
Ошибка получения свойства объекта из входящих данных
ПКО = Номенклатура (Справочник: Номенклатура)
ПКС = 18 (--> ОсновнаяСпецификацияНоменклатуры)
Объект = Прочие материалы (Номенклатура)
СвойствоПриемника = ОсновнаяСпецификацияНоменклатуры (СправочникСсылка.СпецификацииНоменклатуры)
ОписаниеОшибки = Получение элемента по индексу для значения не определено
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8283)
КодСообщения = 68
Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1694)}: Ошибка получения свойства объекта из входящих данных
ПКО = Номенклатура (Справочник: Номенклатура)
ПКС = 18 (--> ОсновнаяСпецификацияНоменклатуры)
Объект = Прочие материалы (Номенклатура)
СвойствоПриемника = ОсновнаяСпецификацияНоменклатуры (СправочникСсылка.СпецификацииНоменклатуры)
ОписаниеОшибки = Получение элемента по индексу для значения не определено
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8283)
КодСообщения = 68
(8) RocKeR_13,
Спасибо получилось!
Еще В ПКО в Перед Выгрузкой дописал если в источнике по номенклатуре нет спецификации
Может кому поможет:
Спасибо получилось!
Еще В ПКО в Перед Выгрузкой дописал если в источнике по номенклатуре нет спецификации
Может кому поможет:
Если не Источник.ЭтоГруппа Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОсновныеСпецификацииНоменклатурыСрезПоследних.Номенклатура,
| ОсновныеСпецификацииНоменклатурыСрезПоследних.СпецификацияНоменклатуры
|ИЗ
| РегистрСведений.ОсновныеСпецификацииНоменклатуры.СрезПоследних КАК ОсновныеСпецификацииНоменклатурыСрезПоследних
|ГДЕ
| ОсновныеСпецификацииНоменклатурыСрезПоследних.Номенклатура = &Номенклатура";
Запрос.УстановитьПараметр("Номенклатура", Источник.Ссылка);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Количество()>0 Тогда
Пока Выборка.Следующий() Цикл
ВходящиеДанные = Новый Структура;
ВходящиеДанные.Вставить("ОсновнаяСпецификацияНоменклатуры", Выборка.СпецификацияНоменклатуры);
КонецЦикла;
Иначе
ВходящиеДанные = Новый Структура;
ВходящиеДанные.Вставить("ОсновнаяСпецификацияНоменклатуры", Справочники.СпецификацииНоменклатуры.ПустаяСсылка());
КонецЕсли;
КонецЕсли;
Показать
Теперь пытаюсь сделать обмен с самописной 1с7 и УТ 10.3. Номенклатуру выгрузил, а понять как выгрузить ед. хранения остатков не могу нашел типовые правила Бухгалтерский учет, редакция 4.5 --> КА (УПП) но разобраться не могу.
Проблема в том что в моей семерке ед изм-строка.
Базовую ед загрузил так (перед выгрузкой):
потом делаю поиск по наименованию в класификатореЕдИзм.
Как можно реализовать загрузку ед. хранения остатков из строки?
Проблема в том что в моей семерке ед изм-строка.
Базовую ед загрузил так (перед выгрузкой):
Отказ = Источник.ЭтоГруппа();
Если (СокрЛП(Источник.БазоваяЕдиница) = "л") или (СокрЛП(Источник.БазоваяЕдиница) = "л.") Тогда
Значение = "л";
ИначеЕсли (СокрЛП(Источник.БазоваяЕдиница) = "шт") или (СокрЛП(Источник.БазоваяЕдиница) = "шт.") Тогда
Значение = "шт";
ИначеЕсли (СокрЛП(Источник.БазоваяЕдиница) = "кг") или (СокрЛП(Источник.БазоваяЕдиница) = "кг.") Тогда
Значение = "кг";
ИначеЕсли Источник.ЭтоГруппа() Тогда
//ни чего не делаем
Иначе
Сообщить("Для источника " + Источник + " с ед. изм. " + Источник.БазоваяЕдиница + " не удалось найти единицу в базе приемнике");
КонецЕсли;
Показатьпотом делаю поиск по наименованию в класификатореЕдИзм.
Как можно реализовать загрузку ед. хранения остатков из строки?
Я бы так сделал:
Для базовой единицы создал ПКО "КлассификаторЕдиницИзмерения" с ПКС "Наименование" (источник в ПКО не указывать)
и в ПКС "БазоваяЕдиница" у ПКО "Номенклатура" в "ПередВыгрузкой" прописал:
Значение = СоздатьОбъект("СписокЗначений");
Значение .Установить("Наименование", Источник.БазоваяЕдиница); // здесь можно и условия выше
Для единицы хранения остатокв создал ПКО "Единицы" с ПКС "Классификатор" правило КлассификаторЕдиницИзмерения, "Владелец" правило Номенклатура (поиск по обоим);
в ПКС "ЕдиницаХранения" у ПКО "Номенклатура" в "ПередВыгрузкой" прописал:
БазоваяЕдиница = СоздатьОбъект("СписокЗначений");
БазоваяЕдиница.Установить("Наименование", Источник.БазоваяЕдиница); // здесь можно и условия выше
Значение = СоздатьОбъект("СписокЗначений");
Значение .Установить("Классификатор", БазоваяЕдиница); // здесь можно и условия выше
Значение .Установить("Классификатор", Источник);
для 7.7 не проверял, так бы сработало в 8 если вместо списка значений была структура.
галку "получить из входящих данных" у свойст при этом надо будет снять
Для базовой единицы создал ПКО "КлассификаторЕдиницИзмерения" с ПКС "Наименование" (источник в ПКО не указывать)
и в ПКС "БазоваяЕдиница" у ПКО "Номенклатура" в "ПередВыгрузкой" прописал:
Значение = СоздатьОбъект("СписокЗначений");
Значение .Установить("Наименование", Источник.БазоваяЕдиница); // здесь можно и условия выше
Для единицы хранения остатокв создал ПКО "Единицы" с ПКС "Классификатор" правило КлассификаторЕдиницИзмерения, "Владелец" правило Номенклатура (поиск по обоим);
в ПКС "ЕдиницаХранения" у ПКО "Номенклатура" в "ПередВыгрузкой" прописал:
БазоваяЕдиница = СоздатьОбъект("СписокЗначений");
БазоваяЕдиница.Установить("Наименование", Источник.БазоваяЕдиница); // здесь можно и условия выше
Значение = СоздатьОбъект("СписокЗначений");
Значение .Установить("Классификатор", БазоваяЕдиница); // здесь можно и условия выше
Значение .Установить("Классификатор", Источник);
для 7.7 не проверял, так бы сработало в 8 если вместо списка значений была структура.
галку "получить из входящих данных" у свойст при этом надо будет снять
(13) adva,
Спасибо ОГРОМНОЕ, получилось.
Конечный код в ПКС "ЕдиницаХранения" у ПКО "Номенклатура" в "ПередВыгрузкой"
Спасибо ОГРОМНОЕ, получилось.
Конечный код в ПКС "ЕдиницаХранения" у ПКО "Номенклатура" в "ПередВыгрузкой"
Отказ = Источник.ЭтоГруппа();
БазоваяЕдиница = СоздатьОбъект("СписокЗначений");
Значение = СоздатьОбъект("СписокЗначений");
Если (СокрЛП(Источник.БазоваяЕдиница) = "л") или (СокрЛП(Источник.БазоваяЕдиница) = "л.") Тогда
ЕдИзмСтрока = "л";
ИначеЕсли (СокрЛП(Источник.БазоваяЕдиница) = "шт") или (СокрЛП(Источник.БазоваяЕдиница) = "шт.") Тогда
ЕдИзмСтрока = "шт";
ИначеЕсли (СокрЛП(Источник.БазоваяЕдиница) = "кг") или (СокрЛП(Источник.БазоваяЕдиница) = "кг.") Тогда
ЕдИзмСтрока = "кг";
ИначеЕсли Источник.ЭтоГруппа() = 1 Тогда
ЕдИзмСтрока = "";
Иначе
ЕдИзмСтрока = "";
Сообщить("Для источника " + Источник + " с ед. изм. " + Источник.БазоваяЕдиница + " не удалось найти единицу в базе приемнике");
КонецЕсли;
БазоваяЕдиница.Установить("Наименование", ЕдИзмСтрока);
Значение.Установить("Наименование", ЕдИзмСтрока);
Значение.Установить("ЕдиницаПоКлассификатору", БазоваяЕдиница);
Значение.Установить("Владелец", Источник);
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот