Имя: Пароль:
1C
1С v8
Документы не хотят записываться в начало дня.
, , ,
0 lukinskiy
 
02.06.19
16:31
Как программно сохранить новый документ в начало дня, если уже есть документы за этот день с нулевым временем?
Тогда перестают помогать эти строки
    Док.Дата = НачалоДня(ТекДата);
    Док.УстановитьВремя(РежимАвтоВремя.Первым, Истина);
И документ сохраняется после документов этого вида с нулевым временем.
1 Aleksey
 
02.06.19
16:42
Отключи время

Док.АвтоВремяОтключить()


Синтаксис:
АвтоВремяОтключить()
Назначение:
Отключить режим автоматической установки времени для новых документов, при этом новые документы заносятся с временем, устанавливаемым при помощи метода УстановитьВремя.
2 lukinskiy
 
02.06.19
16:43
Так если там уже есть документ данного вида с нулевым временем, как быть?
И нужно создать второй документ того же вида, чтобы он был раньше.
3 Aleksey
 
02.06.19
16:46
(2) Сто, это 8-ка?
Тогда что мешает програмно в дате задать время?

к примеру
1 Час = 60*60 = 3600 сек

Док.Дата = НачалоДня(ТекДата)+3600;
4 Aleksey
 
02.06.19
16:48
(2) ты же понимаешь что в рамках одной секунды количество документов ограничено. и может быть ситуация когда оно просто не сможет записаться?
5 lukinskiy
 
02.06.19
16:50
Не понимаю. Что это за ограничение такое? Его, вроде, даже в 7.7 не было.
Да, это восьмерка.
Так что, никак не поставить в начало дня что ли?
6 Aleksey
 
02.06.19
16:50
(5) Ограничения были в 7-ке
7 Aleksey
 
02.06.19
16:52
И да насколько я помню позиция в 8-ка, в отличие от 7-ки это дата-время + guid. Т.е. два одинаковых документа нельзя в одной секунды разместить как хочешь. Только разнесение по времени
8 Aleksey
 
02.06.19
16:52
Что за задача странная?
9 lukinskiy
 
02.06.19
16:54
Ничего странного. Создаются выпуски продукции, которые должны быть раньше других документов за этот день.
Странно, что количество документов в один день таким образом ограничено.
10 lukinskiy
 
02.06.19
16:56
В общем понял, без передвижения других документов не сделать. Хотя это бред, конечно :(
11 shuhard
 
02.06.19
17:37
(4) нет в 8-ке такого ограничения
(10) не используй   Док.УстановитьВремя и не будет проблем
12 shuhard
 
02.06.19
17:42
(11) +1
ДокОбъект=Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
    ДокОбъект.Дата=НачалоДня(ТекущаяДата());
    ДокОбъект.Записать();
    ДокОбъект=Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
    ДокОбъект.Дата=НачалоДня(ТекущаяДата());
    ДокОбъект.Записать();
    ДокОбъект=Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
    ДокОбъект.Дата=НачалоДня(ТекущаяДата());
    ДокОбъект.Записать();
    ДокОбъект=Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
    ДокОбъект.Дата=НачалоДня(ТекущаяДата());
    ДокОбъект.Записать();
    ДокОбъект=Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
    ДокОбъект.Дата=НачалоДня(ТекущаяДата());
    ДокОбъект.Записать();
    ДокОбъект=Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
    ДокОбъект.Дата=НачалоДня(ТекущаяДата());
    ДокОбъект.Записать();
    ДокОбъект=Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
    ДокОбъект.Дата=НачалоДня(ТекущаяДата());
    ДокОбъект.Записать();



Дата    Номер
02.06.2019 0:00:00    00000000001
02.06.2019 0:00:00    00000000002
02.06.2019 0:00:00    00000000003
02.06.2019 0:00:00    00000000004
02.06.2019 0:00:00    00000000005
02.06.2019 0:00:00    00000000006
02.06.2019 0:00:00    00000000007
13 Aleksey
 
02.06.19
17:51
(12)
А теперь установи новый документ между 4 и 5
14 shuhard
 
02.06.19
18:08
(13) в 8-ке между через момент, а не через время
Дата    Номер
19.05.2008 19:27:13    00000000001
30.06.2009 12:00:00    00000000001
30.06.2009 12:00:01    00000000002
02.06.2019 0:00:00    00000000001
02.06.2019 0:00:00    00000000002
02.06.2019 0:00:00    00000000003
02.06.2019 0:00:00    00000000004
02.06.2019 0:00:00    00000000005
02.06.2019 0:00:00    00000000006
02.06.2019 0:00:00    00000000007
02.06.2019 0:00:00    00000000008
02.06.2019 0:00:00    00000000009
02.06.2019 0:00:00    00000000010
02.06.2019 0:00:00    00000000011
02.06.2019 0:00:00    00000000012
02.06.2019 0:00:00    00000000013
02.06.2019 0:00:00    00000000014
15 lukinskiy
 
02.06.19
18:20
И с и без "УстановитьВремя", если уже есть документы данного вида с нулевым временем, доки создаются по порядку, а мне нужно каждый новый ставить в начало дня.
16 shuhard
 
02.06.19
18:49
(15) время к этому отношения не имеет, у тебя ошибочная логика
17 lukinskiy
 
02.06.19
18:58
Как это не имеет, когда в противном случае все расставляется, как надо. 1С просто уменьшает у каждого нового документа время на секунду. А тут уменьшать некуда. Так что с логикой у вас что-то не то, а не у меня.
18 RomanYS
 
02.06.19
19:00
(15) Если "начало дня" это перед другими документами с таким же временем, то единственный вариант играться с УИДами. Но лучше понять, что тебе это не надо.

(17) Ещё один глупый вариант: сдвинь все документы на секунду.
19 lukinskiy
 
02.06.19
19:05
С уидами уже попробовал, фигня какая-то получается. Если их генерить обычным образом с помощью УникальныйИдентификатор(), они идут вразнабой. И вразнабой, соответственно, выстраиваются тогда и документы. (хотел нагенерить заранее и потом присваивать в обратном порядке).
А документы с нулевым временем, тем не менее, почему-то выстраиваются по порядку введения.
Так что забил и занялся именно что дурацкими сдвигами на секунду.
20 RomanYS
 
02.06.19
19:20
(19) >>  почему-то выстраиваются по порядку введения
А как ты это проверяешь?

Ещё интересна прикладная задача, для которой ты это делаешь.
21 Dmitry1c
 
02.06.19
19:28
(7) нет, это только гуид. т.н. кластерный индекс, если выключены все сортировки.

другое дело, что сам гуид формируется таким образом, что в рамках сессии одного пользователя гуиды идут в итерационном порядке с минимальной сменой строкового представления гуида
22 Dmitry1c
 
02.06.19
19:29
(20) судя по всему надо в списке для пользователя в самом вверху отображать последний введенный документ

но ТС не догадался, как это можно сделать другими способами.
23 RomanYS
 
02.06.19
19:32
(22) сортировка "Дата, Номер Убыв" должна решать
24 Dmitry1c
 
03.06.19
07:17
(23) нет, в его случае не решит, т.к. все даты у него оканчиваются на "00:00:00"
Независимо от того, куда вы едете — это в гору и против ветра!