Имя: Пароль:
1C
 
Срез на дату по справочнику?
0 Mulber
 
27.05.26
20:48
Добрый день всем. Заказчик хочет срез данных справочника контрагентов на любую дату, но проблема в том, что дата создания контрагента в справочнике не фиксируется. Подумал может журнал регистрации смотреть, но ведь костыль? Или другие мысли есть? Может что-то подобное реализовавылось кем? Или поворот заказчику? Если бы с нуля, без проблем реквизит добавил бы, а вот существующий - мыслей нет.
1 d4rkmesa
 
27.05.26
20:50
(0) Если использовались версии, можно сделать по версиям. В журнале, скорее всего, уже ничего не осталось толком. А так, поворот.
2 Mulber
 
27.05.26
20:53
(1) да, вроде было заполнено поле ВерсияОбъекта, завтра посмотрю в эту сторону, спасибо!
3 Serg_1960
 
27.05.26
21:16
[дата создания контрагента в справочнике не фиксируется] - фиксируется. Погуглите "дата создания ссылки".
[Если бы с нуля...] - можно добавить реквизит сейчас и разовой обработкой присвоить значения задним числом.

PS: есть много различного рода ограничений, но если используется типовой/штатный метод присвоения GUID новому объекту в БД - методика вполне рабочая.
4 Mulber
 
27.05.26
21:08
(3) принято, благодарю!
5 Garykom
 
гуру
27.05.26
21:48
Спросить у заказчика он хочет отображать видеть элементы справочника на некую дату только те что были добавлены до этой даты?
Но с последними данными уже записанными после даты. - тут можно добавить отдельный РС или общий реквизит в который и писать дату создания, чтобы не добывать ее из ссылки

Или с учетом старых данных, которые были на эту дату? - тут только версии использовать платформенные или БСПшные
6 Mulber
 
27.05.26
21:53
(5) к сожалению и самые старые записи
7 Web00001
 
28.05.26
06:57
Можно открыть журнал регистрации, найти всю история создания ссылок, если журнал не резали конечно. Еще у справочника партнеров в типовых из коробки реквизит "ДатаРегистрации" в наличии. Это не контрагент, но если вы не ведете партнеров, то это одно  и тоже. Про дату в гуиде уже писали выше. Этот вариант не всегда работает. Но в большинстве случаев работает. Особенно если приехало из старых баз или загружалось пачками, там бывает прям черти что
8 Mulber
 
29.05.26
00:03
Отлично сработало с "дата создания ссылки". Всем спасибо, в особенности Serg_1960! Сверял полученные из ГУИДА данные о создании элемента с данными из ЖР за последние два года: погрешность в секунду. Если не требуется аптечная точность, - великолепный, пусть и слегка "костыльный", вариант.

Подробности
Функция UUID_Timestamp(Ссылка)
	
	ГУИД = Ссылка.УникальныйИдентификатор();
    // Например ГУИД равен: bdb62d89-cede-11e4-b12b-d4ae52b5e909
    // Дата содержится в первых символах, bdb62d89-cede-11e4 которые нужно переставить задом наперед: 11e4-cede-bdb62d89
    Строка16 = Сред(ГУИД, 15, 4) + Сред(ГУИД, 10, 4) + Сред(ГУИД, 1, 8);
    
    // Убираем "лишние" знаки "-"(тире).
    Строка16 = СтрЗаменить(Строка16, "-", "");
    
    // Убираем первый символ, так как в нем содержится версия стандарта (зашит в седьмой октет)
    Строка15 = Сред(Строка16, 2);
    
    // Получаем timestamp в 60 бит : 1E4 CEDE BDB6 2D89
    ЧислоСек = 0;
    Для Позиция = 1 По СтрДлина(Строка15) Цикл
        ЧислоСек = ЧислоСек + Найти("123456789abcdef",Сред(Строка15,Позиция,1))*Pow(16,СтрДлина(Строка15) - Позиция);
    КонецЦикла;
    ЧислоСек = ЧислоСек / 10000000;
    
    // Прибавляем к дате начала Григореанского календаря
    Возврат Дата(1582, 10, 15, 00, 00, 00) + ЧислоСек + СмещениеСтандартногоВремени() + СмещениеЛетнегоВремени();;
    
КонецФункции
9 Garykom
 
гуру
28.05.26
11:54
(6) Тогда только включать версионирование
AdBlock убивает бесплатный контент. 1Сергей