Имя: Пароль:
1C
1C 7.7
v7: Как программно двигать КонецДня?
0 diesell
 
27.07.11
12:59
Когда документу меняешь время, и ставишь записать в конец дня.
Мне нужно этот конец дня установить самому.
1 Азат
 
27.07.11
12:59
АвтоВремяТекущее и т.д. и т.п.

СП в помощь)
2 IamAlexy
 
27.07.11
13:00
как программно сделать чтобы году было 532 дня а в сутка 45 часов?
3 zak555
 
27.07.11
13:00
открыть модуль общего журнала документов и посмотреть процедуру
4 diesell
 
27.07.11
13:05
О спасибо про модуль журнала
5 zak555
 
27.07.11
13:08
не за что
6 diesell
 
27.07.11
13:12
Но это немного не там
7 diesell
 
27.07.11
13:13
При записи нового документа появляется табличка с выбором времени записи, вот там есть конецдня
8 zak555
 
27.07.11
13:14
отключить автовРемя и назначить своё
9 Vladal
 
27.07.11
13:43
АвтоВремяКонецДня()
10 Vladal
 
27.07.11
13:53
+(9) Поспешил.
Однажды решал аналогичную задачу, чтобы ПН всегда в начало дня проводилась.

Делал так - 8-00 условное начало дня.
Выборка документов одного вида (ПриходнаяНакладная), тупой перебор (некошерно, но работает), определение самого молодого документа, т.е. это первый в выборке на указанную дату.
Далее чтение его времени и установка записываемому документу полученное время минус 10 секунд.

Аналогично и с концом дня. Получить выборку с обратным порядком.
Если документ раньше условного конца (18-00, 20-00 и т.д.), ставим начальное время (18-00, 20-00...)
Берем снова выборку и теперь к времени добавляем 10 секунд.

Задача решена.
11 diesell
 
27.07.11
14:07
Я вот так сделал:

АвтоВремяОтключить();
   Док=СоздатьОбъект("Документ");
   Док.ОбратныйПорядок(1);
   Док.ВыбратьДокументы(СформироватьПозициюДокумента(ПолучитьПозицию(),1),ДатаДок);              
   Если Док.ПолучитьДокумент()=0 Тогда
       АвтоВремяТекущее();  
   Иначе
       ч=0;
       м=0;
       с=0;
       Док.ПолучитьВремя(ч,м,с);  
       с=с+1;    
       Если с = 60 Тогда
           м=м+1;            
           с=0;
       КонецЕсли;
       Если м = 60 Тогда
           ч=ч+1;            
           м=0;
       КонецЕсли;        
       УстановитьВремя(ч,м,с);
   КонецЕсли;
12 zak555
 
27.07.11
14:13
(11) так я ж написал уже это

зы
заменить блок если на цикл
АвтоВремяТекущее(); в конце блока
13 Ёпрст
 
гуру
27.07.11
14:25
(11)

вот этот весь код лишний:

Если с = 60 Тогда
           м=м+1;            
           с=0;
       КонецЕсли;
       Если м = 60 Тогда
           ч=ч+1;            
           м=0;
       КонецЕсли;  

достаточно

       ч=0;
       м=0;
       с=0;
       Док.ПолучитьВремя(ч,м,с);  
       УстановитьВремя(ч,м,с+1);
14 diesell
 
27.07.11
14:28
(13) а проверка с на значения более 60 ?
Или платформа сама догадается и минуту добавит?
15 diesell
 
27.07.11
14:28
(12) зачем цикл?
16 Vladal
 
27.07.11
14:50
(14) Сама догадается.
17 diesell
 
27.07.11
14:52
Блин не пойму, сейчас начал проверять - не работает это.

Создаю документ, специально ставлю ему время 20:00, потом провожу. Потом распровожу, и вручную ставлю время 14:00

Создаю новый документ, в ПриЗаписи() он проходит этот код, устанавливает время на 14:01, выходит из процедуры, а в журнале все равно создается со временем 20ч
Что такое?
18 KRV
 
27.07.11
14:53
КонецДня.Прогаммно.Подвинуть() = 1
19 diesell
 
27.07.11
15:28
Почемуто после:
АвтоВремяОтключить();
УстановитьВремя(ч,м,с);


Документ все равно записывается по времени ТА, можно это как то обойти?
21 Ёпрст
 
гуру
27.07.11
15:34
(17) где код пишешь и какой он сейчас ?
+ если в коде строчка ПроводитьПослеТА(....)
22 Ёпрст
 
гуру
27.07.11
15:34
+21 есть ли ?
23 diesell
 
27.07.11
15:55
Меня тут забанили немного. По делу:

Добавил в конце кода ПроводитьПослеТА(-1) и док стал записываться и проводиться моим временем. А вот время ТА никак не двигается, так и стоит на 20:00


Как бы ее назад вернуть, а то получается что все доки проводятся задним числом.
24 ДенисЧ
 
27.07.11
15:58
(23) УстановитьТАНа() не предлагать?
25 diesell
 
27.07.11
16:01
Да можно предложить, только куда ее засунуть :)
С документа то вызвать не получается. И вообще она разве монопольный доступ не требует?
26 ДенисЧ
 
27.07.11
16:03
(25) требует...
А нефиг было заталкивать её незнамо куда :-0
27 diesell
 
27.07.11
16:07
Та проблема в том, что пользователи создают документы завтрашней датой с текущем временем. Т.е. если я сегодня в 20:00 записываю док на завтра, то завтра он будет со временем 20:00. Наступает завтра и кто-то берет и проводит такой документ, естественно ТА уезжает, остальные доки за ним, и уже к обеду у них кончается время и все встает... Начинается свистопляска с восстановлением времени, распроведением-проведением и т.д.
Ищется способ этого избежать.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший