Строка в дату

1. applesound 1 02.07.20 12:24 Сейчас в теме
Конвертация данных, редакция 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. oleg-x 26 03.07.20 09:27 Сейчас в теме
Да, так. Это не принципиально, но
Получить значение из входящих данных, выбрали источник
не имеет значения. Буть это источник или входящие данные. Когда переменной "Значение" присваивается какое либо значение, дальше источник игнорируется. Детали, но вдруг в будущем пригодится.
applesound; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. lmnlmn 69 02.07.20 12:38 Сейчас в теме
(1) Периодичность у вас известна
"МС,КВ,ПЛ,ГД"
, год и месяц (либо квартал, полугодие) тоже. В синтакс-помощнике есть раздел "Функции работы со значениями типа Дата".
8. pavl_vs 02.07.20 14:16 Сейчас в теме
(1), просто замечание: программные коды следует размещать в тегах CODE/CODE.
2. oleg-x 26 02.07.20 12:31 Сейчас в теме
В правилах КД перед выгрузкой значения реквизита пропишите преобразование даты и запишите его в значение.
Значение = ПреобразованнаяДата;
4. applesound 1 02.07.20 12:47 Сейчас в теме
В ПВД у меня нет документов.
Прикрепленные файлы:
5. applesound 1 02.07.20 12:53 Сейчас в теме
в ПКО ПередВыгрузкой?
6. oleg-x 26 02.07.20 12:56 Сейчас в теме
ПКО - выделяете документ - находите нужный реквизит - у реквизита перед выгрузкой присваиваете нужное значение даты. По сути так можно перегрузить в приемник любой реквизит, если нет такого реквизита в источнике, но известно по параметрам какое значение должно быть.
7. applesound 1 02.07.20 14:00 Сейчас в теме
(6)
В ПКО Перед выгрузкой:
//преобразовываю строку в дату
ПоказательПериода = Источник.ПоказательПериода
ПозицияПериода = Найти(СокрЛП(ПоказательПериода),".");
ПозицияГода = Найти(Сред(СокрЛП(ПоказательПериода), ПозицияПериода + 1), ".") + ПозицияПериода;

ПериодичностьНалога = Лев(СокрЛП(ПоказательПериода), ПозицияПериода - 1);
СтрокаНомерПериода = Сред(СокрЛП(ПоказательПериода), ПозицияПериода + 1, ПозицияГода - ПозицияПериода - 1);
СтрокаГодПериода = Сред(СокрЛП(ПоказательПериода), ПозицияГода + 1);
НалоговыйПериод = Дата(Строка(СтрокаГодПериода + СтрокаНомерПериода + "01"));

В ПКС Перед выгрузкой:
//получаю преобразованную дату.
Значение = НалоговыйПериод;
Прикрепленные файлы:
9. oleg-x 26 02.07.20 14:39 Сейчас в теме
(7) Да так, только код получения даты из первого скрина, можно поместить во второй. Не нужен этот код перед выгрузкой документа, только путать будет в будущем.
10. applesound 1 02.07.20 15:45 Сейчас в теме
(9) Вариант.
Как это сделать?
В ПКО Перед выгрузкой: очищаем всё.
В ПКС Перед выгрузкой:
убрали галку Получить значение из входящих данных, выбрали источник
Источник: ПоказательПериода (строка)
Приёмник: НалоговыйПериод (дата)

//преобразовываю строку в дату
ПоказательПериода = Источник.ПоказательПериода
ПозицияПериода = Найти(СокрЛП(ПоказательПериода),".");
ПозицияГода = Найти(Сред(СокрЛП(ПоказательПериода), ПозицияПериода + 1), ".") + ПозицияПериода;

ПериодичностьНалога = Лев(СокрЛП(ПоказательПериода), ПозицияПериода - 1);
СтрокаНомерПериода = Сред(СокрЛП(ПоказательПериода), ПозицияПериода + 1, ПозицияГода - ПозицияПериода - 1);
СтрокаГодПериода = Сред(СокрЛП(ПоказательПериода), ПозицияГода + 1);
НалоговыйПериод = Дата(Строка(СтрокаГодПериода + СтрокаНомерПериода + "01"));
Значение = НалоговыйПериод;
Прикрепленные файлы:
11. oleg-x 26 03.07.20 09:27 Сейчас в теме
Да, так. Это не принципиально, но
Получить значение из входящих данных, выбрали источник
не имеет значения. Буть это источник или входящие данные. Когда переменной "Значение" присваивается какое либо значение, дальше источник игнорируется. Детали, но вдруг в будущем пригодится.
applesound; +1 Ответить
12. applesound 1 15.07.20 17:27 Сейчас в теме
Данные выгрузились всё ОК. В файле выгрузки увидел желаемое значение и успокоился.
<Свойство Имя="НалоговыйПериод" Тип="Дата">
<Значение>
2020-04-01T00:00:00
Проверить как загружаются данные - не судьба. Загрузка выпадает с ошибкой:

Ошибка при загрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(7176)}: Поле объекта не обнаружено

Можно как-то ошибку отладить?
13. oleg-x 26 16.07.20 09:39 Сейчас в теме
(12)
Ошибка при загрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(7176)}: Поле объекта не обнаружено

Похоже не на весь текст ошибки.
В любом случае ошибка возникает на 7176 строке в модуле объекта универсального обмена. Возможно в правилах есть реквизит, которого нет в базе куда грузятся документы. Там в крайнем случае и можно отловить и посмотреть что не так.
applesound; +1 Ответить
14. applesound 1 16.07.20 10:23 Сейчас в теме
(13) Действительно. Нашёл реквизит без имени.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот