Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Установка конкретного времени документа при неоперативном проведении
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
mister-x
Задача: для некоторых доков, которые вводятся задним числом, нужно при проведении установить конкретное время на эту дату.
Если документы проводятся оперативно - проблем нет.
Пробовал так:

// ===============================
Процедура ОбработкаПроведения()
если ДатаДок <> ТекущаяДата() тогда
        док = создатьОбъект("Документ");
        если док.найтиДокумент(ТекущийДокумент())=1 тогда        
            док.УстановитьВремя(05,55,0);
            
        конецесли;
    конецесли;
....


не работает - устанавливается время на минуту больше после последнего док-та в этот день (стандартное поведение платформы). Можно ли изменить такое поведение платформы?

[додано пізніше]
Цитата(mister-x @ 10.10.12, 12:57) необходимо зарегистрироваться для просмотра ссылки
стандартное поведение платформы

або ні, може я туплю smile.gif
alex040269
т.е. вопрос закрыт?
mister-x
вже вирішив сам

// ===============================
Процедура ПриЗаписи()
    
    АвтоВремяОтключить();
    УстановитьВремя(05,55,0);
...

працює як для оперативного працює так і неоперативного проведення
Cthulhu
1) пере-позиционирование (изменение даты и/или времени) проведенного документа - невозможно (и это - правильно).
2) в обработке проведения ТекущийДокумент() всегда(!!!!) Выбран()=1 (и всегда .НайтиДокумент(ТекущийДокумент())=1).
3) манипуляции со временм/датой документа нужно выполнять до записи документа - сиречь, как правило, в предопределенной процедуре ПриЗаписи() модуля формы документа.
4) если документ новый, в модуле формы возможно манипулирование его временем с помощью методов "АвтоВремяХхххх"
5) кроме того, некоторые параметры позиционирования при записи/проведении документов регулируются с помощью настроек в режиме предприятия.
mister-x
Цитата(Cthulhu @ 10.10.12, 14:43) необходимо зарегистрироваться для просмотра ссылки
3) манипуляции со временм/датой документа нужно выполнять до записи документа - сиречь, как правило, в предопределенной процедуре ПриЗаписи() модуля формы документа.

вже взнав, задача вирішена
Vofka
Цитата(mister-x @ 10.10.12, 14:52) необходимо зарегистрироваться для просмотра ссылки
вже взнав

Это замечательно. Вот только ответ Cthulhu, в отличии от вашего ответа, доносит эту информацию до всех, кто будет читать эту тему.
Cthulhu
.
mister-x
Цитата(Cthulhu @ 10.10.12, 15:05) необходимо зарегистрироваться для просмотра ссылки
2) я до сего момента наивно предполагал, что правила хорошего тона на ресурсах, посвященных любым проблемам и способам их решения, предполагают неявное обязательство автора вопроса (выделяемого в топик или даже ветвь обсуждения) опубликовать способ решения проблемы

Цитата(Vofka @ 10.10.12, 14:56) необходимо зарегистрироваться для просмотра ссылки
Вот только ответ Cthulhu, в отличии от вашего ответа, доносит эту информацию до всех, кто будет читать эту тему.

я рішення опублікував всім
ЗІ. окреме дякую Cthulhu за детальну відповідь для всіх
mister-x
Цитата(Cthulhu @ 10.10.12, 15:05) необходимо зарегистрироваться для просмотра ссылки
.

по правилах хорошого тону так надалі не робимо wink.gif - ваш топік вже процитовано
Vofka
А что это за пост с "точкой"?
Cthulhu
Цитата(Vofka @ 10.10.12, 17:55) необходимо зарегистрироваться для просмотра ссылки
А что это за пост с "точкой"?

убрано лишнее. оставлено уместное.
igmig65
Цитата(Cthulhu @ 10.10.12, 14:43) необходимо зарегистрироваться для просмотра ссылки
1) пере-позиционирование (изменение даты и/или времени) проведенного документа - невозможно (и это - правильно).

Смотря в каком контексте это рассматривать. Если имеется ввиду просто перетаскивание документов на оси времени, перезапись атрибутов времени, тогда это однозначно правильно. А если это рассматривать, как непросто перепозиционирование, а оперативное перемещение, тоесть перепроведение(Отмена проведения + Проведение) с новыми атрибутами времени. Это можно использовать, в обработке, напрмер по переносу ПН в начало дня, а РН в конец. Что некоторые из моих клиентов уже давно постоянно используют, и именно из-за невозможности оперативно вносить информацию.
mister-x
поправив для випадку, коли відміняємо проведення документу, змінюємо щось в ньому і проводимо ще раз
// ===============================
Процедура ПриЗаписи()
    попытка
    АвтоВремяОтключить();
    УстановитьВремя(05,55,0);
    исключение
    конецпопытки;
...
Cthulhu
Цитата(mister-x @ 11.10.12, 11:49) необходимо зарегистрироваться для просмотра ссылки
поправив для випадку, коли відміняємо проведення документу, змінюємо щось в ньому і проводимо ще раз

Вместо включения в попытку (которое само по себе тормозное, и скорее предназначено для "аварийно-устойчивости" в не отлаженном коде) - можно проверять на "Выбран()". Навскидку и например (а может и с синтаксическими ошибками):
Процедура ПриЗаписи()
    Если Выбран()<>1 Тогда
        АвтоВремяОтключить(); УстановитьВремя(05,55,0);
    ИначеЕсли ПолучитьВремя()<>"05:55:00" Тогда
        тТхт="Время документа """+ТекущийДокумент()+""" = "+ПолучитьВремя()+" >>> АВТО-УСТАНОВка времени на 05:55:00 НЕ ВЫПОЛНена!..";
        Сообщить(тТхт,"!!"); Предупреждение(тТхт,12);
    КонецЕсли;
...
mister-x
можна так як і ви вказали
Цитата(Cthulhu @ 11.10.12, 13:50) необходимо зарегистрироваться для просмотра ссылки
Вместо включения в попытку (которое само по себе тормозное, и скорее предназначено для "аварийно-устойчивости" в не отлаженном коде)

обгрунтуйте
Цитата
которое само по себе тормозное
в якому плані - в плані раціональності програмування чи по замірах часу метод Выбран() працює швидше ніж Попытка?
Cthulhu
Цитата(mister-x @ 11.10.12, 12:58) необходимо зарегистрироваться для просмотра ссылки
обгрунтуйте

вместо этого требования - вполне могли бы и самостоятельно протестировать скорость выполнения одного и того же кода в попытке и без неё (и с .Выбран() для полноты эксперимента, например). неужто не знаете функции _GetPerformanceCounter() или не знаете, как в конфигураторе замер производительности делать???

Цитата(mister-x @ 11.10.12, 12:58) необходимо зарегистрироваться для просмотра ссылки
в якому плані - в плані раціональності програмування чи по замірах часу метод Выбран() працює швидше ніж Попытка?

в обох
mister-x
Цитата(Cthulhu @ 11.10.12, 16:53) необходимо зарегистрироваться для просмотра ссылки
вполне могли бы и самостоятельно протестировать скорость выполнения одного и того же кода в попытке и без неё (и с .Выбран() для полноты эксперимента, например). неужто не знаете функции _GetPerformanceCounter() или не знаете, как в конфигураторе замер производительности делать???

ось ви це робили, можна і одразу сказати
Цитата(Cthulhu @ 11.10.12, 16:53) необходимо зарегистрироваться для просмотра ссылки
в обох

і добавити
Цитата
щоб переконатися, можете, протестувати самі

а не починати тут філософію, протестуйте-зробіть

ЗІ. для моєї задачі і мій варіант підходить; в 7.7 я вже не хочу глибоко копатись, так як перехожу на 8.х
Vofka
Цитата(mister-x @ 11.10.12, 17:43) необходимо зарегистрироваться для просмотра ссылки
ось ви це робили, можна і одразу сказати
а не починати тут філософію, протестуйте-зробіть

Я выступлю на стороне Ктулху: я с ним полностью согласен, что можно было самому померять за 5 минут, а не ждать несколько часов, пока это кто-то другой сделает, тем более там много ума не надо. Если не знаете (не знали) как сделать - так и скажите.

Цитата(mister-x @ 11.10.12, 17:43) необходимо зарегистрироваться для просмотра ссылки
для моєї задачі і мій варіант підходить; в 7.7 я вже не хочу глибоко копатись, так як перехожу на 8.х

Так зачем тогда требуете обосновывать?
mister-x
Цитата(Vofka @ 11.10.12, 17:54) необходимо зарегистрироваться для просмотра ссылки
Я выступлю на стороне Ктулху: я с ним полностью согласен, что можно было самому померять за 5 минут, а не ждать несколько часов, пока это кто-то другой сделает, тем более там много ума не надо. Если не знаете (не знали) как сделать - так и скажите.

мені достатньо було відповіді
Цитата(Cthulhu @ 11.10.12, 16:53) необходимо зарегистрироваться для просмотра ссылки
в обох

всім дякую, тема закрита
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.