Имя: Пароль:
1C
 
Временной интервал между документами в 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) Для Мега - годится, а для МегаМегаМега - нет! ^_^
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой