|
Временной интервал между документами в 1С | ☑ | ||
---|---|---|---|---|
0
serezhka
28.08.09
✎
12:40
|
Добрый день. Есть конфигурация Расчет кварплаты и бух учёт (по сути таже упрощёнка, но немного доделаная). Так вот в этой конфигурции есть обработка "Начисление кварплаты", с помощью этой обработки создаётся большое количество документов последним числом каждого месяца. А проблема в том, что у этих документов интервал записи 10 секунд (ну к примеру документ №192 был записан в 13:00:10, а следующий за ним документ №193 уже в 13:00:20), а так как документов очень при очень много, то последнии документы записываются с временем 23:59:59. Возможно ли как-то по умолчанию этот интервал уменьшить?
P.S.: Сори, если что-то не внятно написал, просто незнал как подругому сформулировать. |
|||
1
АЛьФ
28.08.09
✎
12:49
|
2(0) По умолчанию нельзя. Переделай обработку, чтобы на каждую секунду несколько документов создавала и шаг был в одну секунду. С помощью УстановитьВремя().
|
|||
2
Torquader
29.08.09
✎
22:58
|
Можно ещё поработать с позицией документа, так как целью обработки, насколько я понимаю, является не распределение документов по временной оси, а строгая их упорядоченность.
|
|||
3
Злопчинский
29.08.09
✎
23:11
|
можно в одну секунду напихать много (но не mtcrjytxyj) колво документов.
|
|||
4
IamAlexy
29.08.09
✎
23:12
|
65000 с копейками в одну секунду если все время установитьвремя одно и тоже ставить.
|
|||
5
Злопчинский
29.08.09
✎
23:14
|
(4) а чем определяется? имхо если посмотреть внутренний ИД дока - то там в конце две букавки....
|
|||
6
Стрелок
29.08.09
✎
23:15
|
(4) разве? а не 999 в секунду?
|
|||
7
Стрелок
29.08.09
✎
23:15
|
(+6) спорить сильно не буду. но как то надо было плотно поработать с позициями документа и эксперементы ставил
|
|||
8
IamAlexy
29.08.09
✎
23:18
|
(6) вроде что то про 65 тысяч и ограничения на винду/язык на котором писалась платформа когда то на курсах габец рассказывал в УЦ№3
|
|||
9
IamAlexy
29.08.09
✎
23:19
|
+(8) это было рассказано в контексте "1с можно использовать практически везде, кроме биллинга"
|
|||
10
Злопчинский
29.08.09
✎
23:19
|
я так думаю, что в районе 600 - но это так, в порядке дежурного бреда.. ща поставлю опыт
|
|||
11
Стрелок
29.08.09
✎
23:22
|
(9) а почему в биллинге нельзя?
|
|||
12
IamAlexy
29.08.09
✎
23:25
|
уже больше пяти тысяч :)
|
|||
13
Стрелок
29.08.09
✎
23:26
|
(12) ты лупишь документы одним временем?
|
|||
14
IamAlexy
29.08.09
✎
23:26
|
(11) как раз из за того что количество документов в одной секунде - ограничено...
то есть серьезные билинговые системы (там где миллионы записей/транзакций) экономически более целесообразно делать НЕ на 1с... |
|||
15
IamAlexy
29.08.09
✎
23:26
|
(13) одной секундой..
уже 19 тысяч :) |
|||
16
Злопчинский
29.08.09
✎
23:27
|
я немного отстаю...
|
|||
17
IamAlexy
29.08.09
✎
23:27
|
сферический документ в вакууме:
пустая база, пустой документ без реквизитов. записываются документы до отказа... уже 36 тысяч |
|||
18
Злопчинский
29.08.09
✎
23:28
|
20 тыс - полет нормальный...
(17) аналогично. . все определяется колвом позиций и разрешенных символов в этих позициях в Иде дока... |
|||
19
IamAlexy
29.08.09
✎
23:28
|
58тысяч
|
|||
20
IamAlexy
29.08.09
✎
23:29
|
гыыыыы 68 тысяч
|
|||
21
IamAlexy
29.08.09
✎
23:29
|
идем на рекорд
|
|||
22
IamAlexy
29.08.09
✎
23:30
|
хм.. 85 тысяч.. и время у всех - совпадает с точностью до секунды
|
|||
23
IamAlexy
29.08.09
✎
23:30
|
видимо 65000 это про 7ку было.. хотя хз
|
|||
24
Злопчинский
29.08.09
✎
23:31
|
(21) а у тя какой комп? и скока в транзакцию доков суешь?
я на 7.7 тестю... |
|||
25
Стрелок
29.08.09
✎
23:31
|
ааааа речь про 8-ку? тогда я пас.. я про 7.7 говорил ;)
|
|||
26
Стрелок
29.08.09
✎
23:31
|
во ключ - пустая база и пустой документ без реквизитов
|
|||
27
IamAlexy
29.08.09
✎
23:32
|
(24) я без транзакций.
втупую ТекДата = ТекущаяДата(); сч=1; Пока сч>0 Цикл Док = Документы.Документ1.СоздатьДокумент(); Док.Дата = ТекДата; Попытка Док.записать(); Состояние(сч); сч=сч+1; Исключение Сообщить("Записано " + сч); Прервать; КонецПопытки; КонецЦикла; |
|||
28
IamAlexy
29.08.09
✎
23:33
|
127 тысяч... процесс идет :)
|
|||
29
IamAlexy
29.08.09
✎
23:34
|
комп - делл востро 1700
т7500 4гига оперативы + вин7 |
|||
30
Злопчинский
29.08.09
✎
23:34
|
Док.Дата = ТекДата; - тупой оператор... гунявая какакая-то восьмерка... ;-) в 7 - ке рабдата автоматом ставится... ;-)
|
|||
31
IamAlexy
29.08.09
✎
23:35
|
(30) в 8ке время в дате.
чтобы не перешагивало время - постоянно принудительно ставится одно и тоже из текдата. |
|||
32
Злопчинский
29.08.09
✎
23:35
|
у мну пока 42 тыс.. в транзакции по 500 штук, пустой док в пустой базе.
комп атлон 2200+ 3 гига оперативы |
|||
33
Злопчинский
29.08.09
✎
23:36
|
(31) А! понятно.. а у меня приходится 2 раза записать делат.. поэтому медленнее получается...
|
|||
34
IamAlexy
29.08.09
✎
23:36
|
170 тысяч документов
база 70 мегов уже :) думаю может ее на ночь оставить - пусть молотит себе :) |
|||
35
IamAlexy
29.08.09
✎
23:38
|
200 тысяч.. ух...
|
|||
36
Злопчинский
29.08.09
✎
23:39
|
52 тыс
|
|||
37
Стрелок
29.08.09
✎
23:41
|
представить себе 200 тыс операторов которые по команде жмут "записать" и 1С .... валится нахрен потому как транзакции завалят систему
зы опыт возможен например в Китае |
|||
38
IamAlexy
29.08.09
✎
23:41
|
250тысяч..
что то в инете не нашел максимального придела.. |
|||
39
IamAlexy
29.08.09
✎
23:41
|
(37) и все конечно же документы сделали одной секундой и все проводятся неоперативной.... :)
|
|||
40
IamAlexy
29.08.09
✎
23:42
|
(37) это кстати нужно например в билинговой системе...
когда одной секундой миллионы событий :) |
|||
41
Злопчинский
29.08.09
✎
23:44
|
(37) епрст! мы так в 80-ых годах Еску валили когда после запуска машины все сразу логинились... потом поумнели.. один за другим стали.. а потом еще лучше - в качестве терминалов поставили ЕС7970 (кстати, если кто найдет фото и подробное описание - просьба написть) - микрокомп типа был, текстовый редактор на 250 строк, Форт можно было загрузить и прочее - после жтого Еска стала меньше грузиться.. у нас висело регулярно около 80 юзверей по всей организации (может и поменьше - ща уже и не помню..)
|
|||
42
Злопчинский
29.08.09
✎
23:44
|
(40) это года ддосят!!!
|
|||
43
Злопчинский
29.08.09
✎
23:44
|
60 тыс.. трибуны застыли в ожиданиии
|
|||
44
Стрелок
29.08.09
✎
23:44
|
(40) откуда даже при наличии лимона абонентов в биллинге фиксируется лимон событий? ну чо за бред ;)
|
|||
45
Злопчинский
29.08.09
✎
23:45
|
не, ну 8-ка типа ж для крупных контор позорилась...
|
|||
46
IamAlexy
29.08.09
✎
23:46
|
(44) 1с считает траффик и ведет статистику посещений интернета :)
|
|||
47
Злопчинский
29.08.09
✎
23:46
|
херня какая.. в одной немелкой телекомункац.компании (оказываю услуги) биллинг на самостийной разработке вертелся.. решили сделать получше - заказали типа спецам - хрен там.. не смогли в нормативы РРВ уложиться.. специалисты суко...
|
|||
48
IamAlexy
29.08.09
✎
23:47
|
между делом уже 335 тысяч
|
|||
49
Злопчинский
29.08.09
✎
23:47
|
64300 - пошел зырить в экран
|
|||
50
Стрелок
29.08.09
✎
23:47
|
(44) чем занимается биллинг я в курсе (клиент - провайдер) но вопрос - зачем считать каждую секунду? если есть циска которая это считает по штату и потом тупо передаёт данные раз в несколько секунд в биллинг систему?
|
|||
51
IamAlexy
29.08.09
✎
23:47
|
(49) должно быть что то типа 65535 или около того - есть какое то магическое число в винде примерно этого значения
|
|||
52
IamAlexy
29.08.09
✎
23:48
|
(50) была бы возможность.. а как по извращеннее ее пользовать - это тут специалистов каждый второй...
вон, тут придумывали как дать одному документу одновременно пять операторов.. да чтобы каждый свои данные в документе менял и проводил но работали с одной табличной частью.... |
|||
53
Стрелок
29.08.09
✎
23:48
|
(51) число билли? (по аналогии с числом дьявола)
|
|||
54
Злопчинский
29.08.09
✎
23:49
|
фиг там.. перевалило за 70 тыс.. в иде пять позиций отведено под инкремент, значит нае... в районе 99999 - только если в 10чной системе...
|
|||
55
Стрелок
29.08.09
✎
23:49
|
(52) одномоментно? секта?
|
|||
56
IamAlexy
29.08.09
✎
23:49
|
(53) по ходу на курсах скиздели...
видимо зная что некому будет проверять :) |
|||
57
IamAlexy
29.08.09
✎
23:50
|
||||
58
Злопчинский
29.08.09
✎
23:50
|
(50) я не в курске
|
|||
59
Стрелок
29.08.09
✎
23:50
|
(57) решение на поврехности (ветку не читал но уже прикинул как сделать).
|
|||
60
Стрелок
29.08.09
✎
23:51
|
(58) мне теперь тебя поздравить?
|
|||
61
IamAlexy
29.08.09
✎
23:52
|
(59) иди научи там всех..
хотя нормальный человек сделал бы как в типовых придерживаясь правила "одно событие/сущность - один объект в базе" |
|||
62
Злопчинский
29.08.09
✎
23:53
|
(6) поздравлять было бы надо если бы я был в курске, а я не в курске, т.е. не в теме сетевых технологий...
|
|||
63
Стрелок
29.08.09
✎
23:54
|
(62) ааа а я не мог догнать при чём тут курс? я уже и про лодку грешным делом подумал - мало ли может какой местный афоризм пропустил....
(61) я не спец по 8-ке. а в 7.7 я бы сделал.... и кошки были бы целы и собаки - здоровы |
|||
64
IamAlexy
29.08.09
✎
23:54
|
450 тысяч документов...
|
|||
65
IamAlexy
29.08.09
✎
23:54
|
(63) это же правило и в 7ке действует..
|
|||
66
Стрелок
29.08.09
✎
23:55
|
(65) правило действует - реализация может быть разной
|
|||
67
Злопчинский
30.08.09
✎
00:04
|
подбираемся к 90 тыс
|
|||
68
IamAlexy
30.08.09
✎
00:06
|
650 тысяч
|
|||
69
Злопчинский
30.08.09
✎
00:33
|
перевалило за 100 тыс, прервал...
|
|||
70
IamAlexy
30.08.09
✎
01:24
|
1 700 000 - создание документов продожается
|
|||
71
IamAlexy
30.08.09
✎
01:32
|
гы.. база 770 мегов уже
|
|||
72
Злопчинский
30.08.09
✎
02:55
|
71 ну не знаю.. у меня на 100 тыщ доках 1сджорнал 7 мегов - ивсе....
|
|||
73
IamAlexy
30.08.09
✎
03:00
|
перевалил за 3 ляма :)
продолжает считать... очень похоже что досчитает до файлового коллапса - 4гига на таблицу |
|||
74
IamAlexy
30.08.09
✎
10:17
|
итак.
наступило утро. размер тестовой базы 918 мегов. количество записанных в одну секунду документов уже 10 338 794 подозреваю что добавление документов стопорнется только при достижении ограничении размера файла базы. |
|||
75
IamAlexy
30.08.09
✎
11:46
|
11 614 254 документов...
процесс идет... |
|||
76
IamAlexy
30.08.09
✎
14:46
|
13 миллионов.
на диске где была база кончилось место (4 гига) пришлось прерваться и перенести базу на другой диск. запустил дальше процесс... пока все идет хорошо :) |
|||
77
Torquader
30.08.09
✎
15:33
|
А время у документов проверяешь ?
Хотя, на самом деле, документы хранятся в таблице. Просто порядок, видимо, определяется тем, что один документ следует после другого в файле - поэтому - вопрос не в том, сколько документов мы можем затолкать в одно время, а какое количество документов нам позволит перемещать два документа в одном времени. Например, у 1С версии 7 есть функция, которая позволяет получать следующую или предыдущую позицию документа (СформироватьПозициюДокумента). Соотвественно, вопрос в том, когда эта функция ничего не сможет сделать. |
|||
78
Cthulhu
30.08.09
✎
15:52
|
(77): там индекс (по времени - причем до лампады как там индексное поле строится и в каких единицах) явно неуникальный, поэтому доступ строится по индексу плюс номеру записи (естественному порядку записи).. и даже если на уровне движка при указании времени с точностью до секунды автоматом производится инкремент во внутреннем счетчике времени от последнего записанного в этой секунде (но - разумеется - не более чем последнее возможное значение счетчика в этой секунде) - все равно по логике и по результатам опыта IamAlexy получается, что начиная с некоторого момента все документы тупо прописываются на самый конец секунды и при этом в порядке выборки по хроно-индексу (визуально - в журнале) начнут следовать друг за другом в порядке создания (записей).
а вот всунуть документ внутри секунды между двумя уже созданными уже хренасдва получится.. хотя можно попробовать - интересно что получится.. если конечно функционала хватит... )) |
|||
79
Torquader
30.08.09
✎
16:13
|
В семёрке позиция документа выглядит как:
#20090830 432000000 5 (для одного) #20090830 432100000 6 (для следующего) Соответственно, есть подозрение, что для позиции отведено 6 знаков (то есть 999999 элементов). Запустил такой код: h=12; m=0; s=0; d=CurDate(); for i=1 to 1000000 do Doc=CreateObject("Document.Времянка"); Doc.New(); Doc.DocDate=d; Doc.SetTime(h,m,s); Doc.Write(); if(i%1000)=0 then Message("i="+String(i)+" : Pos="+String(Doc.GetPosition()));endif; enddo; Message(Doc.GetPosition()); буду смотреть. |
|||
80
Torquader
30.08.09
✎
16:20
|
И, как выяснилось, этот код создаёт документы с интервалом в 10 секунд, как и говорилось - вся засада в 1С в действии "Сохранить", после этого действия "умная" система почему-то распределяет документы по 10 секунд.
Но, стоит ещё раз выполнить "УстановитьВремя" и повторную запись, то время получается правильным. Видимо, у автора такая же проблема. |
|||
81
IamAlexy
30.08.09
✎
16:35
|
13 с половиной миллионов.
естественно проверяю что в туже секунду. думаю что будет создавать пока файловая система не крякнетца. пока еще пыхтит |
|||
82
Torquader
30.08.09
✎
16:40
|
Я просто понял, что 2Гб в DBF-файле произойдёт раньше, чем кончится позиция.
Но, вопрос не столько в том, что мы можем всунуть "неограниченное" число документов в один момент времени, а в том, как всунуть ещё один документ между ними - тогда придётся позиции всех следующих документов сдвигать - а это "ну очень быстро и удобно". |
|||
83
Cthulhu
30.08.09
✎
17:31
|
(81): позиции сравни выбрав доки с учетом (79) и (78) - с инкрементами и достижением предела в нумерации позиции..
|
|||
84
IamAlexy
30.08.09
✎
17:43
|
(83) угу.. правда еще создаются документы...
14 с половиной лямов уже :) |
|||
85
Torquader
30.08.09
✎
17:45
|
(84) на самом деле у всех документов позиции одинаковые (только часть, которая является ID документа разная) и идти документы будут в порядке ID - то есть их местами не переставить.
В общем так: Создать можно, а работать неудобно. |
|||
86
Torquader
30.08.09
✎
17:48
|
P.S. для позиции предусмотрено 9999 различных значений в рамках одной временной позиции.
|
|||
87
serezhka
01.09.09
✎
11:08
|
0_о, сколько всего написали. Я так понял, что если документов меньше 65 тыщ, то их можно и в одну секунду записать?
|
|||
88
Злопчинский
01.09.09
✎
16:09
|
(87) читай (69) и (79)
|
|||
89
Triruki
01.09.09
✎
17:57
|
во извращенцы :)
|
|||
90
TeddySlaf
01.09.09
✎
19:10
|
(27) для точности, я полагаю, надо вставить
Док.Дата = ТекДата; Док.УстановитьВремя(10,10,10); Попытка |
|||
91
IamAlexy
01.09.09
✎
21:19
|
(90) у меня 8ка :)
|
|||
92
Torquader
01.09.09
✎
23:54
|
(91) Ну и сколько же там документов в итоге получилось ?
|
|||
93
IamAlexy
02.09.09
✎
00:00
|
Результат:
Размер базы 27 гигов. Из них размер файла данных 7250М, размер лога 16 гигов, размер папки “1Cv8FTxt” 3916М В одну секунду вместилось более 50 миллионов документов. затем файловый коллапс. Сейчас уже четыре часа идет тестирование и исправление ИБ. |
|||
94
Torquader
02.09.09
✎
00:02
|
(93) то есть она, всё-таки, умерла ?
|
|||
95
IamAlexy
02.09.09
✎
00:06
|
(94) угу.. файловая. фигли не умереть то...
|
|||
96
Дядя Васька
02.09.09
✎
00:21
|
(95) А ты ее в скуль загони :)
|
|||
97
Cthulhu
02.09.09
✎
00:25
|
(85): а где чем тут ID-ы?
|
|||
98
Дядя Васька
02.09.09
✎
00:31
|
(97) Иды тут при том что позиция документа формируется из даты, времени с точностью до 10000 долей секунды и иддок - 9 символов в 36-ричной, значит в одну секунду можно записать 10000*9^36=2,2528399544939174411840147874773e+38 документов. Так что экспериментируйте ребят, экспериментируйте... Правнуки расскажут что там получилось :)
|
|||
99
Дядя Васька
02.09.09
✎
00:36
|
+(98) Хотя не приврал немного, ид уникален не на момент времени, а для всей базы, так что всего лишь 9^36=2,2528399544939174411840147874773e+34 :)
|
|||
100
jarett
02.09.09
✎
00:36
|
нахну 100
|
|||
101
Дядя Васька
02.09.09
✎
00:40
|
+(99) оно же максимальное число документов в базе, но все их можно записать в один момент времени, при этом индекс будет уникален. Причем местами поменять будет можно, подправив иды...
|
|||
102
Cthulhu
02.09.09
✎
00:49
|
(98): а какой ид в позиции, которую формирует "СформироватьПозициюДокумента(<Дата>, <Час>, <Мин>, <Сек>, <ФлагКонцаСекунды>)"???
(не нашёл ИД в позиции, кроме того ИД не 9 символов а 12, ті про код ИБ позабыл.. ладно, завтра в ида поковыряюсь) |
|||
103
Дядя Васька
02.09.09
✎
01:07
|
(102) Есть и 13 и 23, я про те 9 в которых порядковый номер дока. Всякие ид вида и типа и прочего уже вещи вспомогательные...
|
|||
104
IamAlexy
04.09.09
✎
16:44
|
домучилась база:
http://pic.ipicture.ru/uploads/090904/1731/d1X7pSznXQ.png 55 485 932 документа в одной секунде в файловой базе. |
|||
105
Злопчинский
04.09.09
✎
16:57
|
так что, не обманули..!!!???? Годится Снеговик для автоматизации мегакорпораций????
|
|||
106
Torquader
04.09.09
✎
17:00
|
(105) Для Мега - годится, а для МегаМегаМега - нет! ^_^
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |