Имя: Пароль:
1C
1С v8
КД 2 Строка в дату
0 applesound
 
02.07.20
12:30
Конвертация данных, редакция 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.
Мои предположиения: перед выгрузкой на стороне источника необходимо привести строку к началу месяца, используя механиз процедуры ПриСозданииНаСервере. Далее педать получившуюся дату в приёмник. Главная проблема как это правильно сделать.
1 Злопчинский
 
02.07.20
12:44
прочитал заглавие
Строка в аду
2 Mihasya
 
02.07.20
13:20
в правилах выгрузки в ПКС ПоказательПериода пиши:
Значение = <тут преобразуешь значение из Источник.ПоказательПериода в дату>
3 applesound
 
02.07.20
15:51
ПКС Перед выгрузкой
ПоказательПериода = Источник.ПоказательПериода
ПозицияПериода = Найти(СокрЛП(ПоказательПериода),".");
ПозицияГода = Найти(Сред(СокрЛП(ПоказательПериода), ПозицияПериода + 1), ".") + ПозицияПериода;

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

Верно?
4 polosov
 
02.07.20
15:53
(3) Значение = СтроковыеФункцииКлиентСервер.СтрокаВДату(Источник.ПоказательПериода);
5 applesound
 
02.07.20
17:04
(4) не совсем понял.
Реквизит источника ПоказательПериода тип.строка Значение: МС.12.2019
Реквизит приёмник НалоговыйПериод тип.дата Формат:ДФ='ММММ гггг' Значение 12.2019
Для переноса реквизитов достаточно:
ПКС
Источник: ПоказательПериода
Приёмник: НалоговыйПериод
Перед выгрузкой  Значение = СтроковыеФункцииКлиентСервер.СтрокаВДату(Источник.ПоказательПериода);
Так?
6 Mihasya
 
02.07.20
19:18
(5) нет, выделяешь год через Сред(...), потом выделяешь месяц также, после это все переводишь функцией преобразования строки в дату
И значению присваиваешь эту дату