|
Срез на дату по справочнику? | ☑ | ||
|---|---|---|---|---|
|
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) Тогда только включать версионирование
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |