Время документа при записи в последний день месяца устанавливается в 23:59:59

1. AnryMc 849 25.10.21 15:45 Сейчас в теме
Конфигурации BAS

Все документы записываемые в последний день месяца устанавливают (При записи) время - 23:59:59
Если это не последний день месяца - то текущее время

Куча подписок и проверок ...
Убил уже 2 часа не могу найти где это происходит...

Может кто подскажет...
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. spacecraft 25.10.21 15:51 Сейчас в теме
(1) именно все, или все последние? Может там уже диапазон времени документов заполнился (прибавление 1 сек к предыдущему) и последующие все устанавливаются на последнюю секунду месяца.
3. AnryMc 849 25.10.21 16:01 Сейчас в теме
Все документы в дате "конец месяца".

Я уже когда то "воевал" с этим, но было это лет 10 назад и платформа была другой, но помню что это связано с оперативным проведением... Но не помню... И не могу понять куда копать...

При записи документа существует 2-ва времени:
- у объекта 0:00:00
- у формы - текущее
Прошел по всем модулям вроде нигде явно не устанавливается.
Подписки проверок Номера документа и даты - тоже не нашел

А когда документ уже записан: 23:59:59

Прямо наваждение...
4. spacecraft 25.10.21 16:06 Сейчас в теме
(3) поставить точку остановки в самом начале обработчика объекта ПриЗаписи , запустить замер производительности и записать новый документ. Смотреть что выполняется. В ПриЗаписи должно уже поступать с установленной датой.
7. AnryMc 849 25.10.21 16:27 Сейчас в теме
(4)
поставить точку остановки в самом начале обработчика объекта ПриЗаписи , запустить замер производительности и записать новый документ. Смотреть что выполняется.


Всего то 943 перехода по процедурам и модулям...
9. spacecraft 25.10.21 16:53 Сейчас в теме
(7) можно сократить поиск. ПередЗаписью дата уже установлена? Если нет, то замер начинать с этой процедуры. И т.д.
10. AnryMc 849 25.10.21 17:31 Сейчас в теме
(9)
сократить поиск. ПередЗаписью дата уже установлена?


Форма ПередЗаписьюНаСервере Объект.Дата 0:00:00
Модуль ПередЗаписью Дата 59:59
Форма ПриЗаписиНаСервере Объект.Дата 0:00:00
Форма ПослеЗаписиНаСервере Объект.Дата 59:59

Это что то связанное с неоперативным проведением...
13. spacecraft 25.10.21 17:55 Сейчас в теме +0.1 $m
(10) возможно. Свойство формы АвтоВремя установлено по умолчанию установлено "ТекущимИлиПоследним".
Т.е. если кто-то сохранил документ на конец месяца в конце дня, то последующие документы (на конец месяца) будут так же на конец дня сохраняться.
Но все равно должно было произойти событие по принудительной установке даты в конец дня на конец месяца.
Это или сделано вручную, или программно.
14. AnryMc 849 26.10.21 10:06 Сейчас в теме
(13)
Свойство формы АвтоВремя установлено по умолчанию установлено "ТекущимИлиПоследним"

Да.
15. AnryMc 849 26.10.21 11:06 Сейчас в теме
(13)
Т.е. если кто-то сохранил документ на конец месяца в конце дня, то последующие документы (на конец месяца) будут так же на конец дня сохраняться.
Но все равно должно было произойти событие по принудительной установке даты в конец дня на конец месяца.


Имеем:
- Документ объект - Оперативное проведение - Запретить
- Документ форма - АтвоВремя - Текущее или последним

ГБ или ФинДир периодически формирует Финрез (и прочие документы - "закрытия месяца") - чтобы посмотреть "картинку"
Запретить это делать нельзя
Фиксируется время документа 23:59:59
!!! Даже если они удалены из программы - всё равно новые создаются на 23:59:59
Если теперь перепровести ФинРез он "не видит" документы введенные после него со временем 23:59:59
16. spacecraft 26.10.21 11:24 Сейчас в теме
(15) тогда можно проверять дату на соответствие конец месяца и устанавливать свое время.
17. AnryMc 849 26.10.21 12:13 Сейчас в теме
(16)
тогда можно проверять дату на соответствие конец месяца и устанавливать свое время


Сделал подписку "ПриЗаиписи" - в ней исправил - всё равно "23:59:59"...
18. AnryMc 849 26.10.21 12:37 Сейчас в теме
(17) Событие "ПередЗаписью"

+

			
           Источник.ОбменДанными.Загрузка = Истина;
           Источник.ПринадлежностьПоследовательностям[0].ОбменДанными.Загрузка = Истина;


Так заработало...........
19. AnryMc 849 26.10.21 12:39 Сейчас в теме
(18) Правда через подписку нельзя спросить пользователя - вдруг этот нужно в 23 59 59?
22. spacecraft 26.10.21 13:09 Сейчас в теме +0.1 $m
(19) Нужно изменять время в обработчике формы ПередЗаписью. Или ПередЗаписьюНаСервере, но там уже время будет установлено для ТекущийОбъект, Но время можно изменить.
Пример:
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	Если КонецДня(Объект.Дата) = КонецМесяца(Объект.Дата) Тогда
		Если Объект.Дата = НачалоДня(Объект.Дата) Тогда
			ТекДата = ТекущаяДата();
			ТекущийОбъект.Дата = Объект.Дата + (ТекДата - НачалоДня(ТекДата));
		ИначеЕсли Объект.Дата = КонецДня(Объект.Дата) Тогда
			//Пропускаем
		Иначе
			ТекущийОбъект.Дата = Объект.Дата;
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры
Показать


Только еще нужно продумать алгоритм, когда время может уже быть такое у другого документа.
24. spacecraft 26.10.21 13:24 Сейчас в теме +0.1 $m
(22) (19)
Можно и проще:
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
	Если КонецДня(Объект.Дата) = КонецМесяца(Объект.Дата) Тогда
		Если Объект.Дата = НачалоДня(Объект.Дата) Тогда
			ТекДата = ТекущаяДата();
			Объект.Дата = Объект.Дата + (ТекДата - НачалоДня(ТекДата));
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры
Показать
25. AnryMc 849 26.10.21 13:33 Сейчас в теме
(24) Документов много и все под замком...

Подписка проще...
20. spacecraft 26.10.21 12:49 Сейчас в теме +0.2 $m
(17)
Сделал подписку "ПриЗаиписи"

ПриЗаписи такие действия делать "нельзя" (крайне не желательно). Данные уже записаны в базу, хоть и в транзакции.
21. AnryMc 849 26.10.21 12:59 Сейчас в теме
См (18)
Событие "ПередЗаписью"
23. spacecraft 26.10.21 13:14 Сейчас в теме
(21) видел, только не понял, зачем там ОбменДанными используется?
Поменять дату позволит и без них, а вот в итоге может отсечь нужный блок кода.
6. dctvghbdtn 25.10.21 16:15 Сейчас в теме
Смотрите лучше в сторону модуля менеджера документа, решает многие вопросы с учетом. Администрирование - Проведение документов - Время документов устанавливать автоматически.

Код из БУХ КОРП:

Функция ВремяДокументаПоУмолчанию() Экспорт

Возврат Новый Структура("Часы, Минуты", 10, 0);

КонецФункции
8. AnryMc 849 25.10.21 16:52 Сейчас в теме
(6)
модуля менеджера документа


Это я сделал первым - но ничего не нашел...
11. zelenii 25.10.21 17:38 Сейчас в теме
12. AnryMc 849 25.10.21 17:53 Сейчас в теме
(11)
Например моя:
Отчет по Глобальным командам и Подпискам на события в конфигурации с возможностью отбора по Документам и Справочникам
т.к. уже не первый раз мучаюсь с "доделанными" и "переделанными" + "дополненными" и "модернизированными" конфигурациями...
А там: "чёрт ногу сломит"...

Придётся пройтись повсем подпискам и вызываемым из них процедурам и функциям, надеюсь что их будет меньше 1000...
Оставьте свое сообщение

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