Конвертация данных, редакция 2.1 (2.1.8.2)
Переношу данные из УТ 11.1.2.29 в БП 3.0.75.37
УТ
Документ источник: СписаниеБезналичныхДенежныхСредств вид операции Перечисление налога
Реквизит источник: ПоказательПериода (строка)
БП
Документ приёмник: СписаниеСРасчётногоСчета
Реквизит приёмник: НалоговыйПериод (Дата)
Данные источника вносятся пользователем с помощью ФормаВводаПериода, которая в обратном порядке раскладывает данные строки в дату и число для вывода пользователю.
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ПоказательОснования = Параметры.ПоказательОснования;
ПозицияПериода = Найти(СокрЛП(Параметры.ПоказательПериода),".");
ПозицияГода = Найти(Сред(СокрЛП(Параметры.ПоказательПериода), ПозицияПериода + 1), ".") + ПозицияПериода;
ПериодичностьНалога = Лев(СокрЛП(Параметры.ПоказательПериода), ПозицияПериода - 1);
СтрокаНомерПериода = Сред(СокрЛП(Параметры.ПоказательПериода), ПозицияПериода + 1, ПозицияГода - ПозицияПериода - 1);
СтрокаГодПериода = Сред(СокрЛП(Параметры.ПоказательПериода), ПозицияГода + 1);
Если Найти("ТП, ЗД", ПоказательОснования) > 0 Тогда
Если СтрДлина(ПериодичностьНалога) = 2
И СтрДлина(СтрокаНомерПериода) = 2
И СтрДлина(СтрокаГодПериода) = 4
И СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(ПериодичностьНалога)
И СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(СтрокаНомерПериода)
И СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(СтрокаГодПериода) Тогда
ДатаПоказателя = Дата(Число(СтрокаГодПериода), Число(СтрокаНомерПериода), Число(ПериодичностьНалога));
КонецЕсли;
КонецЕсли;
НомерПериода = СтрокаНомерПериода;
ГодПериода = СтрокаГодПериода;
Если Параметры.ПоказательПериода = "0" Тогда
ПериодичностьНалога = "0";
ИначеЕсли Найти("МС,КВ,ПЛ,ГД", ПериодичностьНалога) = 0 Тогда
ПериодичностьНалога = "-";
КонецЕсли;
УправлениеЭлементамиФормы();
КонецПроцедуры
Вопрос. КАК перенести данные строки в дату? Строка источник выглядит МС.12.2019.
Мои предположиения: перед выгрузкой на стороне источника необходимо привести строку к началу месяца, используя механиз процедуры ПриСозданииНаСервере. Далее педать получившуюся дату в приёмник. Главная проблема как это правильно сделать.
Переношу данные из УТ 11.1.2.29 в БП 3.0.75.37
УТ
Документ источник: СписаниеБезналичныхДенежныхСредств вид операции Перечисление налога
Реквизит источник: ПоказательПериода (строка)
БП
Документ приёмник: СписаниеСРасчётногоСчета
Реквизит приёмник: НалоговыйПериод (Дата)
Данные источника вносятся пользователем с помощью ФормаВводаПериода, которая в обратном порядке раскладывает данные строки в дату и число для вывода пользователю.
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ПоказательОснования = Параметры.ПоказательОснования;
ПозицияПериода = Найти(СокрЛП(Параметры.ПоказательПериода),".");
ПозицияГода = Найти(Сред(СокрЛП(Параметры.ПоказательПериода), ПозицияПериода + 1), ".") + ПозицияПериода;
ПериодичностьНалога = Лев(СокрЛП(Параметры.ПоказательПериода), ПозицияПериода - 1);
СтрокаНомерПериода = Сред(СокрЛП(Параметры.ПоказательПериода), ПозицияПериода + 1, ПозицияГода - ПозицияПериода - 1);
СтрокаГодПериода = Сред(СокрЛП(Параметры.ПоказательПериода), ПозицияГода + 1);
Если Найти("ТП, ЗД", ПоказательОснования) > 0 Тогда
Если СтрДлина(ПериодичностьНалога) = 2
И СтрДлина(СтрокаНомерПериода) = 2
И СтрДлина(СтрокаГодПериода) = 4
И СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(ПериодичностьНалога)
И СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(СтрокаНомерПериода)
И СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(СтрокаГодПериода) Тогда
ДатаПоказателя = Дата(Число(СтрокаГодПериода), Число(СтрокаНомерПериода), Число(ПериодичностьНалога));
КонецЕсли;
КонецЕсли;
НомерПериода = СтрокаНомерПериода;
ГодПериода = СтрокаГодПериода;
Если Параметры.ПоказательПериода = "0" Тогда
ПериодичностьНалога = "0";
ИначеЕсли Найти("МС,КВ,ПЛ,ГД", ПериодичностьНалога) = 0 Тогда
ПериодичностьНалога = "-";
КонецЕсли;
УправлениеЭлементамиФормы();
КонецПроцедуры
Вопрос. КАК перенести данные строки в дату? Строка источник выглядит МС.12.2019.
Мои предположиения: перед выгрузкой на стороне источника необходимо привести строку к началу месяца, используя механиз процедуры ПриСозданииНаСервере. Далее педать получившуюся дату в приёмник. Главная проблема как это правильно сделать.
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
ПКО - выделяете документ - находите нужный реквизит - у реквизита перед выгрузкой присваиваете нужное значение даты. По сути так можно перегрузить в приемник любой реквизит, если нет такого реквизита в источнике, но известно по параметрам какое значение должно быть.
(6)
В ПКО Перед выгрузкой:
//преобразовываю строку в дату
ПоказательПериода = Источник.ПоказательПериода
ПозицияПериода = Найти(СокрЛП(ПоказательПериода),".");
ПозицияГода = Найти(Сред(СокрЛП(ПоказательПериода), ПозицияПериода + 1), ".") + ПозицияПериода;
ПериодичностьНалога = Лев(СокрЛП(ПоказательПериода), ПозицияПериода - 1);
СтрокаНомерПериода = Сред(СокрЛП(ПоказательПериода), ПозицияПериода + 1, ПозицияГода - ПозицияПериода - 1);
СтрокаГодПериода = Сред(СокрЛП(ПоказательПериода), ПозицияГода + 1);
НалоговыйПериод = Дата(Строка(СтрокаГодПериода + СтрокаНомерПериода + "01"));
В ПКС Перед выгрузкой:
//получаю преобразованную дату.
Значение = НалоговыйПериод;
В ПКО Перед выгрузкой:
//преобразовываю строку в дату
ПоказательПериода = Источник.ПоказательПериода
ПозицияПериода = Найти(СокрЛП(ПоказательПериода),".");
ПозицияГода = Найти(Сред(СокрЛП(ПоказательПериода), ПозицияПериода + 1), ".") + ПозицияПериода;
ПериодичностьНалога = Лев(СокрЛП(ПоказательПериода), ПозицияПериода - 1);
СтрокаНомерПериода = Сред(СокрЛП(ПоказательПериода), ПозицияПериода + 1, ПозицияГода - ПозицияПериода - 1);
СтрокаГодПериода = Сред(СокрЛП(ПоказательПериода), ПозицияГода + 1);
НалоговыйПериод = Дата(Строка(СтрокаГодПериода + СтрокаНомерПериода + "01"));
В ПКС Перед выгрузкой:
//получаю преобразованную дату.
Значение = НалоговыйПериод;
Прикрепленные файлы:
(9) Вариант.
Как это сделать?
В ПКО Перед выгрузкой: очищаем всё.
В ПКС Перед выгрузкой:
убрали галку Получить значение из входящих данных, выбрали источник
Источник: ПоказательПериода (строка)
Приёмник: НалоговыйПериод (дата)
//преобразовываю строку в дату
ПоказательПериода = Источник.ПоказательПериода
ПозицияПериода = Найти(СокрЛП(ПоказательПериода),".");
ПозицияГода = Найти(Сред(СокрЛП(ПоказательПериода), ПозицияПериода + 1), ".") + ПозицияПериода;
ПериодичностьНалога = Лев(СокрЛП(ПоказательПериода), ПозицияПериода - 1);
СтрокаНомерПериода = Сред(СокрЛП(ПоказательПериода), ПозицияПериода + 1, ПозицияГода - ПозицияПериода - 1);
СтрокаГодПериода = Сред(СокрЛП(ПоказательПериода), ПозицияГода + 1);
НалоговыйПериод = Дата(Строка(СтрокаГодПериода + СтрокаНомерПериода + "01"));
Значение = НалоговыйПериод;
Как это сделать?
В ПКО Перед выгрузкой: очищаем всё.
В ПКС Перед выгрузкой:
убрали галку Получить значение из входящих данных, выбрали источник
Источник: ПоказательПериода (строка)
Приёмник: НалоговыйПериод (дата)
//преобразовываю строку в дату
ПоказательПериода = Источник.ПоказательПериода
ПозицияПериода = Найти(СокрЛП(ПоказательПериода),".");
ПозицияГода = Найти(Сред(СокрЛП(ПоказательПериода), ПозицияПериода + 1), ".") + ПозицияПериода;
ПериодичностьНалога = Лев(СокрЛП(ПоказательПериода), ПозицияПериода - 1);
СтрокаНомерПериода = Сред(СокрЛП(ПоказательПериода), ПозицияПериода + 1, ПозицияГода - ПозицияПериода - 1);
СтрокаГодПериода = Сред(СокрЛП(ПоказательПериода), ПозицияГода + 1);
НалоговыйПериод = Дата(Строка(СтрокаГодПериода + СтрокаНомерПериода + "01"));
Значение = НалоговыйПериод;
Прикрепленные файлы:
Да, так. Это не принципиально, но
Получить значение из входящих данных, выбрали источник
не имеет значения. Буть это источник или входящие данные. Когда переменной "Значение" присваивается какое либо значение, дальше источник игнорируется. Детали, но вдруг в будущем пригодится.
Данные выгрузились всё ОК. В файле выгрузки увидел желаемое значение и успокоился.
<Свойство Имя="НалоговыйПериод" Тип="Дата">
<Значение>
2020-04-01T00:00:00
Проверить как загружаются данные - не судьба. Загрузка выпадает с ошибкой:
Ошибка при загрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(7176)}: Поле объекта не обнаружено
Можно как-то ошибку отладить?
<Свойство Имя="НалоговыйПериод" Тип="Дата">
<Значение>
2020-04-01T00:00:00
Проверить как загружаются данные - не судьба. Загрузка выпадает с ошибкой:
Ошибка при загрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(7176)}: Поле объекта не обнаружено
Можно как-то ошибку отладить?
(12)
Похоже не на весь текст ошибки.
В любом случае ошибка возникает на 7176 строке в модуле объекта универсального обмена. Возможно в правилах есть реквизит, которого нет в базе куда грузятся документы. Там в крайнем случае и можно отловить и посмотреть что не так.
Ошибка при загрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(7176)}: Поле объекта не обнаружено
Похоже не на весь текст ошибки.
В любом случае ошибка возникает на 7176 строке в модуле объекта универсального обмена. Возможно в правилах есть реквизит, которого нет в базе куда грузятся документы. Там в крайнем случае и можно отловить и посмотреть что не так.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот