Имя: Пароль:
1C
 
v8: Определение даты создания элемента справочника
0 Pashkaa
 
23.08.06
13:38
Есть необходимость отследить дату создания элемента справочника Контрагентов.

Как посоветуете сделать, тока не через доп реквизит типа дата
1 Terv
 
23.08.06
13:51
журнал регистрации, регистр сведений , писать во внешний файл.. и т.п. и т.д.
2 Lendy
 
23.08.06
13:52
(0) слышал, что в GUID хранится время и дата создания.
3 wPa
 
23.08.06
14:07
Ссылка.УникальныйИдентификатор()
там зашито количество милисекунд, прошедших с момента введения григорианского календаря...
4 Romkin
 
23.08.06
14:12
(3)
"Григорианский календарь был введён папой Григорием XIII 4 октября 1582 года взамен старого юлианского."

Ну дата введения календаря извесна, но вот который был час??
5 Lendy
 
23.08.06
14:17
(4) :)
6 wPa
 
23.08.06
14:30
4 часа
7 wPa
 
23.08.06
14:30
(5) (мотнулся туда - посмотреть время)
8 Pashkaa
 
23.08.06
14:43
(3) а как перевесть эту белебердятину??
Вот например: 88d88bbe-6922-11d9-905f-000fea384582
9 Lendy
 
23.08.06
14:44
(8) ищи в инете описание гуида. На форуме уже не раз давали ссылки.
10 wPa
 
23.08.06
15:36
Функция Формат16в10(знч16)
   Если знч16 = "0" Тогда
       Возврат 0;
   ИначеЕсли знч16 = "1" Тогда
       Возврат 1;
   ИначеЕсли знч16 = "2" Тогда
       Возврат 2;
   ИначеЕсли знч16 = "3" Тогда
       Возврат 3;
   ИначеЕсли знч16 = "4" Тогда
       Возврат 4;
   ИначеЕсли знч16 = "5" Тогда
       Возврат 5;
   ИначеЕсли знч16 = "6" Тогда
       Возврат 6;
   ИначеЕсли знч16 = "7" Тогда
       Возврат 7;
   ИначеЕсли знч16 = "8" Тогда
       Возврат 8;
   ИначеЕсли знч16 = "9" Тогда
       Возврат 9;
   ИначеЕсли знч16 = "A" Тогда
       Возврат 10;
   ИначеЕсли знч16 = "B" Тогда
       Возврат 11;
   ИначеЕсли знч16 = "C" Тогда
       Возврат 12;
   ИначеЕсли знч16 = "D" Тогда
       Возврат 13;
   ИначеЕсли знч16 = "E" Тогда
       Возврат 14;
   ИначеЕсли знч16 = "F" Тогда
       Возврат 15;
   Иначе
       Возврат 0;
   КонецЕсли;
КонецФункции

Функция ПолучитьДатуСоздания(GUID) Экспорт //автор - ASh
   GUID = СокрЛП(ВРег(СтрЗаменить("" + GUID, "-", "")));
   Если Не Сред(GUID, 13, 1) = "1" Тогда
       Возврат "Нет данных";
   КонецЕсли;
   Время16формат = ВРег(Сред(GUID, 14, 3) + Сред(GUID, 9, 4) + Сред(GUID, 1, 8));
   
   СекундНано10формат = 0;
   Цифр16формат = СтрДлина(Время16формат);
   Для Позиция = 1 По Цифр16формат Цикл
       СекундНано10формат = СекундНано10формат + Pow(16, Цифр16формат - Позиция) * Формат16в10(Сред(Время16формат, Позиция, 1));
   КонецЦикла;

   Секунд10формат = СекундНано10формат / 10000000;
   Возврат Дата(1582, 10, 15, 04, 00, 00) + Секунд10формат;
КонецФункции
11 Pashkaa
 
24.08.06
06:34
Ага спасибо за функцию. Впринципи дату определяет. А вот с временем чё то гонит :-) т.к. в 6-38 утра у нас ни кто не работает а контрагенты создаются :-)
12 PVasili
 
24.08.06
08:16
(11)учти смещение времени.на itland была обработка,показывающая время и дату создания любого объекта в 8.
13 Kerk
 
24.08.06
08:51
(12) C этого места пожалуйста по подробней, пожалуйста.
14 PVasili
 
24.08.06
09:04
подробнее о чем itlan.ru и его бывшем репозитарии или о смещении относительно GMT(насколько я в курсе, GUID создается с GMT временем).Поскольку ты живешь не в Гринвиче(я надеюсь) добавь смещение своего часового пояса ко времени
15 Pashkaa
 
24.08.06
09:06
(14) видимо не совсем так. Есть элементы созданные в 13-07 если еще (+7) будет 20-07, так поздно тоже ни кто не работает :-)

Короче чё спорить, буду искать на itland.ru
16 Kerk
 
24.08.06
09:09
(14) Я пробовал написанный код.
Когда создал элемент справочника и его тутже проверил все сходися до секунды.
А пробовал элемент который был создан вчера и точно не менялся, то выдает неправельное время (гораздо раньше).
17 Kerk
 
24.08.06
09:14
Да и вообще время создания можно найти только для справочника? Или можно найти врямя создания по любому GUID (будет ли оно правельным)?
18 Pashkaa
 
24.08.06
09:34
Блин проще повешаться чем найти чё нить на itland.
(17) Дак с доками можно попробовать. Ну тока приблизительно, по времени в документе ну плюс минус 10мин
19 Pashkaa
 
24.08.06
09:46
(17) проверил по докам. С датой все ок а вот время

выдала процедура          дата документа
10:15:28                  16:52:42
19:48:30                  16:28:34
5:05:29                   15:20:22
5:39:23                   15:03:16
20 Pashkaa
 
24.08.06
09:47
не вижу логики во времени первого и второго документа
разница в проведении и 30 мин а разница в GUID 10 и 19 часов
21 Kerk
 
24.08.06
09:56
Похоже, что что-то не доконца обрабатывается... как бутто не хватает цыфры смещения или позже идет перегенерация GUID.
22 Pashkaa
 
24.08.06
09:59
Надо программно сгенерить через интервалы времени элементы справочника с датай создания в наименовании и потом  прогнать процедурой определения
23 Pashkaa
 
24.08.06
10:04
И вот еще интерестно, в функции возвращается значение
Возврат Дата(1582, 10, 15, 04, 00, 00) + Секунд10формат;
А почему в качестве времени стоит смещение 04?? типа +4 для Москвы??
24 Kerk
 
24.08.06
10:15
(23) тока по этому поводу хотел написать...
Да еще и дата стоит уж больно не красивая (шифр такой что ли).

P.S. У Москвы от гринвича +3часа зимой и +4 летом. Видемо летом делали :)
25 Pashkaa
 
24.08.06
11:17
(24) а может и не москвичь делал.
А дата не красивая в (4) посте говорили почему
26 Kerk
 
24.08.06
15:04
ап
27 Pashkaa
 
25.08.06
08:30
Pvasili: Помоги найти процедуру которую встречал на itland. Если конечно она умеет корректно переводить и время создания а не тока дату
28 PVasili
 
25.08.06
09:46
(27)на итланд года полтора(или больше)на форуме обсуждали проблему.
Потом в репозитарии (был там такой) лежала обработка,показывающая время создания любого объекта.Спрашивай у админа итланд или на их форуме,может у кого осталась.Хоть репозитарий и обещали возрадить-пока тихо.
з.ы.посмотри,у них на форуме была ветка разработок репозитария,найди автора...
з.ы.з.ы GUID создается один раз для объекта и больше не изменяется :)
(24)imho в Гринвиче тоже летнее время есть :)
29 Andrey_spb
 
25.08.06
09:50
(0) Попробуй вот эту:
Функция ДатаСозданияСсылки(Ссылка) Экспорт
   Момент=Дата(1,1,1);
   Попытка
       УИ=Строка(Ссылка.УникальныйИдентификатор());
       УИ=ВРег(СтрЗаменить(УИ,"-",""));
       Если Сред(УИ,13,1)="1" Тогда
           Значение16=ВРег(Сред(УИ,14,3)+Сред(УИ,9,4)+Сред(УИ,1,8));
           Цифры16="123456789ABCDEF";
           Значение10=0;
           Длина16=СтрДлина(Значение16);
           Для Ном=1 По Длина16 Цикл
               Значение10=Значение10+Pow(16,Длина16-Ном)*Найти(Цифры16,Сред(Значение16,Ном,1));
           КонецЦикла;
           Значение10=Значение10/10000000;
           Момент=Дата(1582,10,15,3,0,0)+Значение10;
       КонецЕсли;
   Исключение
   КонецПопытки;
   Возврат Момент;
КонецФункции
30 Pashkaa
 
25.08.06
10:11
(29) эффект тот же
31 Kerk
 
25.08.06
10:23
(29) Дата(1582,10,15,3,0,0) - уже 3 часа :(
У кого есть возможность поиште на itlan.ru. Потому что штука нужная, особенно для определения момента создания элементов справочников...
32 Kerk
 
25.08.06
10:42
Да эффекст тоже.
+ мне для правельности временени нужно ставить 5 часов
Дата(1582,10,15,5,0,0)