Имя: Пароль:
1C
1C 7.7
v7: Правильное расположение документа если он первый в новом дне..?
0 Злопчинский
 
21.11.12
02:34
Имеем: ТИС
ТА: 20.11.12, 17:57 (последний документ в рабочем дне)
Сейчас: 21.11.12, 02:31
.
Допустим, создаем (записываем и проводим) программно новый документ в сегодняшней дате, надо:
а) если первый док в дне - положить его текущим временем
б) если не первый док в дне - положить его после ТА текущего дня.
.
по простому для а) не получается - или падает в 06:00 или в 12:00
извращаться с принудительной установкой текущего времени через определение что это док первый в дне - как-то мне кажется "кривовато".
.
????
1 zak555
 
21.11.12
02:35
02:35 сейчас
2 zak555
 
21.11.12
02:37
если ТА переместить на сейчас и создать док -- время будет какое ?
3 Aleksey
 
21.11.12
02:39
Я так понимаю вся проблема что рабочая дата осталась вчера?
4 Злопчинский
 
21.11.12
02:40
(3) угу
5 Злопчинский
 
21.11.12
02:41
автоВремяТекущее не работает блин для программных доков...
6 zak555
 
21.11.12
02:42
РабочаяДата(<?>,)
Синтаксис:
РабочаяДата(<Дата>,<РежимСменыРабДаты>)
Назначение:
Устанавливает значение рабочей даты. Возвращает значение рабочей даты, выбранной в текущем сеансе работы программы.
Рабочая дата может изменяться при помощи главного меню Сервис-Параметры-Общие-РабочаяДата).
Параметры:
<Дата> - Необязательный параметр. Выражение типа дата.
<РежимСменыРабДаты> - Необязательный параметр. Режим автоматической смены рабочей даты в полночь: 0 - не менять; 1 - менять с предупреждением; 2 - менять автоматически без предупреждения. Если параметр не указан, то режим не меняется и действует установка, выбранная в параметрах системы.
7 КонецЦикла
 
21.11.12
02:43
См. общий журнал в ТиС
Там время устанавливается программно для существующего документа (если не получается для нового, забыл уже действительно ли это так)
8 Злопчинский
 
21.11.12
02:44
тьху, блин!
рабочая дата - все нормальноЮ, она - соответсвует текущей дате.
ТА осталось во вчера
9 КонецЦикла
 
21.11.12
02:45
Зачем вообще это нужно? ТА ведь может оказать где угодно теоретически
Все проводимое в системе должно быть текущим временем имхо
Время нужно синхронизировать на всех компах (если просто по сетке доступ)
Для "своих" важных событий брать с сервера, GetDate()
10 zak555
 
21.11.12
02:46
аплодисменты ?
11 Попытка1С
 
21.11.12
02:46
(5) Ы?

Док.АвтоВремяОтключить();
Док.ТекущееВремя(Ч,М,С);
Док.УстановитьВремя(Ч,М,С);
Док.Записать();

или я что-то не понял
12 Злопчинский
 
21.11.12
02:47
(9) именно так!
факт в том, что если
.
ТА: 20.11.12, 17:57 (последний документ в рабочем дне)
Сейчас: 21.11.12, 02:47
и выполнить
Док.Новый();
Док.Записать();
Док.Провести();
.
то док будет нифига не текущим временем.
13 Злопчинский
 
21.11.12
02:49
(11) можно и так, примерно это и имел ввиду в () когда писал "..извращаться с принудительной установкой текущего времени"
.
но как-то это блин негкошерно..
14 zak555
 
21.11.12
02:50
(12) а так :

Док.АвтоВремяОтключить();
Док.АвтоВремяТекущее();
Док.Новый();
Док.Записать();
Док.Провести();

*?
15 Попытка1С
 
21.11.12
02:50
(13) Ну фиг знает, сто лет работает, кашерно не кашерно, это уже философия.
16 КонецЦикла
 
21.11.12
02:52
Помницца начал криво работать отчет у контролеров
Оказалось, что админы поставили компы в работу, на которых было не то что неточное время, а год немного не тот :)
17 Злопчинский
 
21.11.12
02:58
(14) Прокатило!!!
.
Док.Новый();
Док.АвтоВремяОтключить();
Док.АвтоВремяТекущее();
Док.Записать();
Док.Провести();
.
встало на текущее время, ТА - на этом доке. нормуль.
.
но....
18 Злопчинский
 
21.11.12
03:00
теперь второй вопрос по варианту б)
созданный документ стоит в ТА.
создаем еще раз программно документ - хочется чтобы он упал после этого дока на текущее время со сдвижкой ТА н атекущее время...
19 zak555
 
21.11.12
03:01
(18) аналогично (17) ?
20 КонецЦикла
 
21.11.12
03:05
Может это как-то поможет:

Провести(<Режим>,<Знач>)

Читаем в СП про Режим
21 Попытка1С
 
21.11.12
03:07
(18) Так а что (17) при создании второго дока не ставит на текущее время?
22 zak555
 
21.11.12
03:07
Провести(<?>,);
Синтаксис:
Провести(<Режим>,<Знач>)
Назначение:
Выполнить проведение документа.
Возвращает: 1 - если проведение документа выполнено, 0 - иначе.
Параметры:
<Режим> - необязательный параметр. Число: 0 - проводить документ без сдвига ТА; 1 - проводить непроведенный документ реальным временем (со сдвигом ТА); 2 - перепроводить проведенный документ реальным временем (со сдвигом ТА); 3 - проводить любой (непроведенный, проведенный) документ реальным временем (со сдвигом ТА). Значение по умолчанию - 0.
<Знач> - выражение произвольного типа, которое передается при запуске предопределенной процедуры ОбработкаПроведения (необязателен, по умолчанию - пусто).
Замечание:
Метод нельзя использовать в теле предопределенной процедуры ОбработкаПроведения.
Если этот метод применяется в Модуле формы документа непосредственно к документу локального контекста, то данный метод отрабатывает те же действия, как интерактивное нажатие пользователем кнопки с формулой ''#Провести''. В этом случае, если параметр <Режим> опущен, то документ проводится в режиме, соответствующем установкам системы меню Сервис-Параметры.
23 Попытка1С
 
21.11.12
03:07
У меня все работает, как создают так и валится хронологично.
24 Попытка1С
 
21.11.12
03:08
+23 Создают обработкой.
25 zak555
 
21.11.12
03:09
(23) Режим = 3 ?
26 Попытка1С
 
21.11.12
03:12
(25) У меня провести нету, только запись )
27 Злопчинский
 
21.11.12
03:20
Итого:
.
меню-сервис-параметры системы, закладка "Оперативный учет", включены все галки.
.
ТА: 20.11.12, 17:57 (последний документ в рабочем дне)
Сейчас: 21.11.12, 03:14
.
Если Док.ДатаДок = ПолучитьДатуТА()
Тогда
 //Док.АвтоВремяПослеТА();
ИначеЕсли Док.ДатаДок > ПолучитьДатуТА()
Тогда
   Док.АвтоВремяОтключить();
   Док.АвтоВремяТекущее();
КонецЕсли;
Док.Записать();
Док.Провести(1);

.
Создаем, записываем и проводим программно новый документ в сегодняшней дате
если первый док в дне - кладется текущим временем, зашибись...
.
следующий док - нихера не правильно.. пишется с квантом 10 сек относительно предыдущего.. а хочется - чтобы в текущее время...
28 КонецЦикла
 
21.11.12
03:22
Блин, Чебур
У тебя же ТА сдвинулось, смотри свое Если первое
29 Злопчинский
 
21.11.12
03:25
(28) в первом если - ничего не выполняется, заремлено.
30 КонецЦикла
 
21.11.12
03:26
Ну так вот именно
Первый документ меняет ТА
И следующий в цикле уже попадает в первое Если
Если я правильно понял процесс...
31 Злопчинский
 
21.11.12
03:27
(30) да, правильно понял.
второй раз не в цикле выполняем, а вручную... - перед вторым выполнением прошло несколько минут от первого, выполняем - имеем документ упал первый +10 сек..
32 Злопчинский
 
21.11.12
03:28
хочу простого: при программном создании документа если ТА в текущем дне и время точки ТА - меньше текущего системного - чтобы падало в текущее системное, а не с квантом 10 сек от ТА
33 Попытка1С
 
21.11.12
03:30
(32) Попробуй убрать Провести(), сделай только Записать(), будет выстраиваться или нет.
34 Злопчинский
 
21.11.12
03:31
(33) хм...
35 КонецЦикла
 
21.11.12
03:33
(31) Ой, да ну тебя
Подскажи по МОДу и пойду я спать
36 Злопчинский
 
21.11.12
03:33
По(33) пофиг, квант 10 сек
37 Злопчинский
 
21.11.12
03:34
(35) ой блин.. МОДа мне только не хватало. нет у меня распределенки.
38 Злопчинский
 
21.11.12
03:35
в от если интерактивно документ создать и записать - то все ок...
39 Злопчинский
 
21.11.12
03:35
уродство, блин, как я все ненавижу..
40 Попытка1С
 
21.11.12
03:36
(39) Покажи весь код, у меня все нормально создается. Только у меня провести нету, только запись.
41 Злопчинский
 
21.11.12
03:37
(27) весь код в (27)
42 Злопчинский
 
21.11.12
03:39
(40) весь код в (27)
43 Злопчинский
 
21.11.12
03:40
в параметрах на ОУ - включены все галки
44 France
 
21.11.12
03:40
а что то про "Записать в форме"?? не??.. как то "Записать#" чтоли?
45 Злопчинский
 
21.11.12
03:41
(40) в принципе если есть сумнение в моей адекватности - могу показать удаленно.. через тим
46 Злопчинский
 
21.11.12
03:42
(44) не, все в обработке, программно
47 Злопчинский
 
21.11.12
03:43
ну не ужели придется код писать по анализу времени та...
48 France
 
21.11.12
03:48
(46) таки и я о том же.. вызвать процедуру "ЗаписатьВФорме" или что то такое программно...
49 France
 
21.11.12
03:48
#Записать - запись документа в форме.. может, как и при интерактивном дата нужная установится
50 Злопчинский
 
21.11.12
03:52
(48) не... нафиг...
51 France
 
21.11.12
03:53
(50) зачему?? совсем не в тему??
52 Злопчинский
 
21.11.12
03:56
Итого:
меню-сервис-параметры, ОУ = все галки включены
.
Если Док.ДатаДок = ПолучитьДатуТА()
Тогда
   
   ВремяТА = ПолучитьВремяТА();
   Если ТекущееВремя() >= ВремяТА
   Тогда
       Док.АвтоВремяТекущее();
   КонецЕсли;    
               
ИначеЕсли Док.ДатаДок > ПолучитьДатуТА()
Тогда
   Док.АвтоВремяОтключить();
   Док.АвтоВремяТекущее();
КонецЕсли;
Док.Записать();
Док.Провести(1);
.
отрабатывает вроде как надо?
- первый док в дне - ставит в текущее время, та = текущее время
- следующие доки если хронология идет нормально - ставит после ТА в текущее время со сдвижкой ТА в текущее время.
- если вдруг ТА в дне убежалось вперед - ставит +10 сек к ТА.
53 Злопчинский
 
21.11.12
03:57
"отрабатывает вроде как надо?" - вопр.занк заменить на двтч!

отрабатывает вроде как надо:
- первый док в дне - ставит в текущее время, та = текущее время
- следующие доки если хронология идет нормально - ставит после ТА в текущее время со сдвижкой ТА в текущее время.
- если вдруг ТА в дне убежалось вперед - ставит +10 сек к ТА.
54 Злопчинский
 
21.11.12
04:00
.. да, кто-то может сказать что япрограммировать не умею.. а ну и хрен с ним... не умею, значит не умею. зато в базе порядок. и заепись!
.
пойдк насиповские курсы учить. не уметь программировать на снеговике - гораздо больше возможностей! есть где развернуться...
55 Aleksey
 
21.11.12
04:06
А если датаДок < Даты ТА?
56 Злопчинский
 
21.11.12
04:15
(55) ты думаешь ты самый умный? ;-)
.
прорабатывал: если такое случится - то пофиг в какое время станет ;-) потому что если рабочая дата уйдет назад от ТА - то проведение этого дока - это вообще самое маленькое что может случится.. ;-)
57 Aleksey
 
21.11.12
04:19
(56) Ради бога, главное чтобы они толпой в 23:59:59 не собирались
58 Злопчинский
 
21.11.12
04:24
(57) не, если толпа не шибко большая - то нормуль...
мы с табой вроде как-то проверяли, сколько в одну секунду влазит доков... - дофигища получилось...
.
или это иименно критично для 59-59..?
59 Злопчинский
 
21.11.12
04:24
а в 23:58 - можно просто офигенную толпу собрать?
60 Aleksey
 
21.11.12
04:25
(58) не критично, главное чтобы не в кучи, иначе 1С-ка откажется записывать новые доки
61 Злопчинский
 
21.11.12
06:10
(600 да нифига подобного. в 1 секунду можно просто преофигенное количество доков записать. по крайней мере в разделенном режиме одному пользователю...
62 Aleksey
 
21.11.12
06:21
63 Aleksey
 
21.11.12
06:22
64 Злопчинский
 
21.11.12
16:08
(63) Епр ст там дал ценное замечание - в 21 посте. а так - в 23.59.59 можно программно запихнуть неимоверную кучу доков.
65 Злопчинский
 
21.11.12
16:10
здесь вот полезное еще чуток: АвтоВремяКонецДня() и прибавка по 10 секунд
Независимо от того, куда вы едете — это в гору и против ветра!