|
v7: Время документа | ☑ | ||
---|---|---|---|---|
0
Eeakie
09.07.14
✎
12:57
|
Добрый день.
Есть документ, в котором установлено АвтоВремяТекущее(). Если документ сохранен сегодняшним числом в 6 утра например, то при перезаписи в 12 дня время не меняется, так и остается 6 утра. Если перезапись происходит в другой день, то время изменяется нормально. Что за беда такая? |
|||
1
DCKiller
09.07.14
✎
13:00
|
Правой кнопкой - "Изменить время документа" спасет отца русской демократии...
|
|||
2
Eeakie
09.07.14
✎
13:03
|
(1) Понимаю, что это вариант, но нельзя ли это как-то программно замутить?
|
|||
3
DCKiller
09.07.14
✎
13:06
|
(2) Ну "УстановитьВремя" в модуле формы пропиши...
|
|||
4
Масянька
09.07.14
✎
13:06
|
(2) Я делала для доп. расходов по поступлению:
//****************************************************************************** Функция ПолучитьВремяДокументаЧислом(Док) Перем Ч, М, С; Док.ПолучитьВремя(Ч, М, С); Возврат 3600 * Ч + 60 * М + С; КонецФункции // ПолучитьВремяДокументаЧислом() //****************************************************************************** Процедура УстановитьВремяДокументаЧислом(Сек) Перем Ч, М, С; Ч = Цел(Сек / 3600); Сек = Сек - Ч * 3600; М = Цел(Сек / 60); С = Сек - М * 60; УстановитьВремя(Ч, М, С); КонецПроцедуры // УстановитьВремяДокументаЧислом() |
|||
5
Ёпрст
09.07.14
✎
13:12
|
(0) автовремя действует только на НОвый, НЕзаписанный документ.
|
|||
6
Eeakie
09.07.14
✎
13:13
|
(4) УстановитьВремя() только через "СоздатьОбъект", нет разве?
(5) Уже прочитал в СП. |
|||
7
Масянька
09.07.14
✎
13:14
|
(6) Нет. Я тебе привела код из модуля док-та.
|
|||
8
DCKiller
09.07.14
✎
13:14
|
(6) нет
|
|||
9
NS
09.07.14
✎
13:19
|
Установитьвремя(1,1,1);
{Документ.ЗаявкаПокупателя.Форма.Модуль(3612)}: Недопустимая операция |
|||
10
Eeakie
09.07.14
✎
13:23
|
(9) Та же фигня.
|
|||
11
Масянька
09.07.14
✎
13:24
|
(9) (10)
Функция ЗаполнениеПоДокументуОснованию() ................ мВремя = ПолучитьВремяДокументаЧислом(ДокОснование); УстановитьВремяДокументаЧислом(мВремя + 1); Иначе ВидОперации = Перечисление.КодыОпераций.ДополнительныеРасходы; КонецЕсли; .................. |
|||
12
Eeakie
09.07.14
✎
13:24
|
+(9) {Документ.Заявка.Форма.Модуль(3189)}: Недопустимая операция
Поделись 423 строками кода. У меня не хватает :) |
|||
13
Масянька
09.07.14
✎
13:25
|
+(11) У меня: доп. расходы вводятся на основании поступления, время док-та доп. расходов автоматом ставится ВремяПоступления+1 секунда.
|
|||
14
Eeakie
09.07.14
✎
13:27
|
(13) Ну, у меня нет параллельного документа, поэтому беру ТекущееВремя(Ч,М,С) и преобразовываю.
|
|||
15
Масянька
09.07.14
✎
13:28
|
(14) Где устанавливаешь новое время?
|
|||
16
Eeakie
09.07.14
✎
13:30
|
+(14) В ПриЗаписи().
|
|||
17
Масянька
09.07.14
✎
13:31
|
(16) Покажи весь код (преобразование времени и записи).
|
|||
18
Eeakie
09.07.14
✎
13:34
|
(17)
Процедура ПриЗаписи() ................. Если ДатаДок <> ДатаОплаты Тогда АвтоВремяТекущее(); Иначе УстановитьВремяДокумента(); КонецЕсли; ................. КонецПроцедуры Процедура УстановитьВремяДокумента() _Ч = 0; _М = 0; _С = 0; ТекущееВремя(_Ч, _М, _С); Сек = 3600 * _Ч + 60 * _М + _С; Ч = Цел(Сек / 3600); Сек = Сек - Ч * 3600; М = Цел(Сек / 60); С = Сек - М * 60; УстановитьВремя(Ч, М, С); КонецПроцедуры |
|||
19
NS
09.07.14
✎
13:34
|
(17) Вроде вопрос был про уже записанный документ. Или мне показалось?
|
|||
20
Eeakie
09.07.14
✎
13:35
|
(19) Всё верно.
|
|||
21
DCKiller
09.07.14
✎
13:36
|
(20) ну тады
Док = СОздатьОбъект("Документ"); Док.НайтиДокумент(ТекущийДокумент()); Док.УстановитьВремя(ЧЧ, ММ, СС); |
|||
22
NS
09.07.14
✎
13:37
|
(21) Из формы документа? :)
|
|||
23
NS
09.07.14
✎
13:37
|
Через форма.Закрыть() можно, или просто в призакрытии(), а иначе штатно не выйдет.
|
|||
24
Масянька
09.07.14
✎
13:39
|
(18) А попробуй - после записи.
|
|||
25
NS
09.07.14
✎
13:41
|
(24) В семерке после записи? Это как?
|
|||
26
Eeakie
09.07.14
✎
13:43
|
(25) Только хотел спросить...
ПриЗакрытии() тоже не канает, ибо если срабатывает условие в ПриЗаписи() то документ проводится, а проведенный править уже нельзя. |
|||
27
Eeakie
09.07.14
✎
13:46
|
Вот в этом месте надо каким-то образом сделать запись времени.
Если (ПустоеЗначение(ДатаОплаты) = 0) и (Проведен() = 0) Тогда АвтоВремяТекущее(); ДатаДок = ДатаОплаты; Если Провести() = 0 Тогда ДатаОплаты = Дата(0); КонецЕсли; КонецЕсли; |
|||
28
Eeakie
09.07.14
✎
13:47
|
+(27) это процедура ПриЗаписи()
|
|||
29
NS
09.07.14
✎
13:48
|
(28) Я же написал - штатно это не сделать. Только через извраты.
|
|||
30
Eeakie
09.07.14
✎
13:49
|
(29) Делать надо в любом случае. Через Форма.Закрыть() что имели в виду?
|
|||
31
NS
09.07.14
✎
13:57
|
(30) Переменная модуля формы "НеЗакрывать".
В приЗакрытии(), если НеЗакрывать равно единице, то вызываешь обработку через открытьформу, которой передаешь документ, и нужное время. Обработка находит документ, меняет время, и опять открывает форму документа. Всё сработает, так как открытьформу() выполнится после закрытия формы документа. |
|||
32
Eeakie
09.07.14
✎
14:06
|
(31) Действительно изврат :) Спасибо.
|
|||
33
Ёпрст
09.07.14
✎
14:07
|
(6)
>>>УстановитьВремя() только через "СоздатьОбъект", нет разве? Не совсем так. Для НОвого, НЕзаписанного документа можно просто использовать в форме : Процедура ПриЗаписи() Если Выбран()=0 Тогда АвтоВремяОтключить(); УстановитьВремя(8,0,0); КонецЕсли; КонецПроцедуры |
|||
34
Ёпрст
09.07.14
✎
14:08
|
Если хочешь с формы менять время, то красивое решение - на синьере
|
|||
35
Ёпрст
09.07.14
✎
14:08
|
||||
36
Ёпрст
09.07.14
✎
14:08
|
Это лучше, чем мелькание формы обработки
|
|||
37
Eeakie
09.07.14
✎
14:18
|
(35) Охохо, вот это способ. Спасибо :)
|
|||
38
Eeakie
09.07.14
✎
14:38
|
Почему автовремя отрабатывает, если перезаписывать с даты на дату? То есть было 8 утра 01.01, а если переписать с автовременем на 02.01, то время проставится текущее.
|
|||
39
Eeakie
09.07.14
✎
15:40
|
Решил проблему кардинально. В заявке создал процедуру "ДляЗаписиЗаявки()", куда воткнул просто Записать(). При Записи() просто тупо отматывал дату на 1 день назад с АвтоТекущееВремя() и записывал через "ДляЗаписиЗаявки()". Дальше обратно перемещал дату на текущую и перезаписывал - всё заработало.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |