Исправил обработку импорта банк выписок, чтобы время входящих платежек, сегодняшних) ставилось на 7 утра, а не текущее 03.05.23

 

Была ошибка:

Загрузка операций обычно после 7 часов и после проведения исходящих платежек.

Приходы проводились позже списаний, приходилось вручную переставлять время на начало дня по каждому поступлению.

 

Сделал для загрузки входящих доп проверку: если дата текущая, то для поступлений на счет ставить время 07:00.

Вот кусок кода:

// РСА Вставляю код насчет времени записи
        // Сообщить("РСА Попытка изменить время записи формируемых доков");
        
        Если ОбъектДляЗаписи.ВидОперации = Перечисления.ВидыОперацийПлатежноеПоручение.Входящее
                                ИЛИ ОбъектДляЗаписи.ВидОперации = Перечисления.ВидыОперацийПлатежноеПоручение.Инкассация 
                                ИЛИ ОбъектДляЗаписи.ВидОперации = Перечисления.ВидыОперацийПлатежноеПоручение.ПрочийПриход
                                ИЛИ ОбъектДляЗаписи.ВидОперации = Перечисления.ВидыОперацийПлатежноеПоручение.ПоступленияОтПродажПоПлатежнымКартамИБанковскимКредитам // РСА
        ТОГДА           // Задаем время для выписок поступления денег       
                                Если НачалоДня(ОбъектДляЗаписи.Дата)=НачалоДня(ТекущаяДата()) Тогда
                                        // Ставим ту дату + 7 часов утра
                                        ОбъектДляЗаписи.Дата=НачалоДня(ОбъектДляЗаписи.Дата)+25200; // 7часов *3600 секунд=25200   Иначе в текущей дате записывает текущим временем, а с 9 часов проводятся исходящие платежки
                                        // Сообщить(ОбъектДляЗаписи.Дата);
                                Иначе
                                        ОбъектДляЗаписи.УстановитьВремя(РежимАвтоВремя.ТекущееИлиПервым); // Для старых доков записывает первым
                                КонецЕсли;      
        ИНАЧЕ       // Задаем время для выписок расхода денег
 ОбъектДляЗаписи.УстановитьВремя(РежимАвтоВремя.ТекущееИлиПоследним);  
// Для старых доков и будущих доков проводит последним. 
// Для текущих пишет текущее время. Так и надо, вроде. 
// В 4 утра сегодня не получится провести временем 9 утра. А если вечером проводим - то и пусть проводит временем 19-23 часа!
        КонецЕсли;      

 

Исправил в форме платежек запись документов

В процедуре ПриИзмененииДаты

// РСА Начало вставки 
        // Сделал, чтобы для исходящих платежек при изменении времени, если время ранее 9 часов утра, ставилось бы время 9 утра.
        // Иначе при изменении даты ставится 00-00 -    очень неудобно!
        
        // ЭтотОбъект.УстановитьВремя(РежимАвтоВремя.ТекущееИлиПоследним); // РСА такое работает только для новых объектов, 
        // а мне надо по сделанным ранее платежкам спокойно переставлять дату

        // РСА Было так: Если тронуть сегодняшнюю дату во входящей выписке, 
        // тогда не дает проводить в текущем дне неоперативно, проводит только оперативно.
        // Вопрос "проводить оперативно или неперативно?" не задается. Потому что время попадало на сегодня позже текущего, тогда автоматом проводится оперативно.
                
        Если ВидОперации = Перечисления.ВидыОперацийПлатежноеПоручение.Исходящее И Дата-НачалоДня(Дата)<32400 Тогда 
                Дата=НачалоДня(Дата)+32410; // Добавляем к дате секунды, чтобы дата была в любом случае после 9 часов
        КонецЕсли;       
         
        // РСА Конец вставки

 

Справочник: "Запись и проведение документа в форме" // Установка времени документов

https://its.1c.ru/db/metod8dev/content/2744/hdoc

Установка режима оперативного проведения

При записи документа в форме, расширение формы выполняет установку режима проведения (оперативное или неоперативное проведение). Установка выполняется по следующему алгоритму.

Вначале если свойство ИспользоватьРежимПроведения имеет значение Авто выполняется первичный подбор режима проведения из вариантов Оперативный, Неоперативный и Запрашивать.

Если у пользователя нет права на неоперативное проведение – используется оперативное проведение.

Если документ не проведен – используется оперативное проведение.

Если дата документа равна текущей, а время меньше или равно текущему, то используется режим Запрашивать. Здесь и далее в этой статье сравнение даты имеется в виду без учета времени, а сравнение времени описывается отдельно.

Если дата документа меньше текущей, то используется неоперативное проведение.

Если дата документа равна текущей и время больше текущего – используется оперативное проведение.

 

Дальнейшие действия системы определяются уже исходя из трех вариантов (Оперативный, Неоперативный и Запрашивать) установленных непосредственно в свойстве ИспользоватьРежимПроведения или на основании описанного алгоритма для варианта Авто.

Если дата документа меньше текущей, используется оперативный режим и у пользователя есть права на неоперативное проведение, то пользователю предлагается использовать неоперативный режим. Если пользователь отказывается, то запись документа отменяется.

Если дата документа меньше текущей, используется оперативный режим и у пользователя нет права на неоперативное проведение, то запись документа отменяется.       

Если дата документа меньше текущей и используется режим Запрашивать, то в зависимости от наличия прав на неоперативное проведение или выбирается неоперативный режим (без запроса пользователя), или запись документа отменяется.

Если дата документа больше текущей и используется оперативный режим, то запись документа отменяется. Штатное поведение расширения формы не разрешает проведение документа завтрашней датой, даже если у пользователя есть права на неоперативное проведение. Это объясняется тем, что после появления документов проведенных завтрашней датой текущие остатки регистров используемых проводимыми оперативно документами перестают соответствовать реальным остаткам и механизм оперативного проведения для всех пользователей перестает работать адекватно.

Далее если используется режим Запрашивать, то пользователю выдается диалог с выбором режима проведения.

Полученный таким образом режим проведения (Оперативный или Неоперативный) используется при выполнении записи документа.

 

Справочник. РежимАвтоВремя

Из синтакс-помощника (СП)

РежимАвтоВремя (AutoTimeMode)

ТекущееИлиПервым (CurrentOrFirst)

Описание:

Если дата объекта (документа, бизнес-процесса, задачи) совпадает с текущей, то будет установлено текущее время.

Если дата объекта не совпадает с текущей, то устанавливается такое время, чтобы объект оказался первым за день.

 

РежимАвтоВремя: ТекущееИлиПервым, ТекущееИлиПоследним

РСА Для текущей даты пишет текущим временем; для иных дат (прошлых и будущих) пишет соответственно первым или последним.

 

Остается

Тестировать: запись старыми датами в режиме "текущее или первые" - если нет доков за день - запишет каким временем?

Это выписка за воскресенье, при загрузке в понедельник проверить!

Можно старые выписки проверить! Увидел за 230423

записывает первое поступление в 12-00, а после каждое новое на секунду раньше! Узнавать - откуда берется это время записи в 12 часов?



Хотелки



При записи задним числом каким образом сделать проведение не одним временем, а размазывать документы с интервалом 3-4 секунды?



Исправить старые документы? (при времени и желании)

По входящим платежкам, даже проведенным, надо задним числом сделать перестановку на время 07-00, если они стоят раньше.

По исходящим сделать перестановку на 09-00, если они стоят раньше.

И так, обработкой за год, мы все эти ситуации с нулевым временем операции - ликвидируем ("уконтропупим").