Как увидеть дату создания нового контрагента?

1. user817897 2 26.03.19 15:29 Сейчас в теме
Делаю отчёт на СКД и хочу вытянуть в нём информацию по новым клиентам,но где может храниться информация даты создания кроме как журнала регистрации?или как-то вытянуть из журнала?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SlavaKron 26.03.19 15:33 Сейчас в теме
Можно из ГУИДа попробовать. Тут где-то было.
4. user817897 2 26.03.19 15:37 Сейчас в теме
(2)подскажите ,это как и что и с чем жуют?
3. YannikAlx 43 26.03.19 15:36 Сейчас в теме
Журнал решистрации очень ненадежная штука.... он если есть то его может сразу не стать...
Восстановил базу из архива и все - пиши что не было журнала...

А вот по ГУИД - это так
https://infostart.ru/public/164946/

ну или
Функция ДатаСозданияСсылки(Ссылка)
    ГУИД = Ссылка.УникальныйИдентификатор();
    Строка16 = Сред(ГУИД, 16, 3) + Сред(ГУИД, 10, 4) + Сред(ГУИД, 1, 8);
    Разрядность = СтрДлина(Строка16);
    ЧислоСек = 0;
    Для Позиция = 1 По Разрядность Цикл
        ЧислоСек = ЧислоСек + Найти("123456789abcdef",Сред(Строка16,Позиция,1))*Pow(16,Разрядность - Позиция);
    КонецЦикла;
    ЧислоСек = ЧислоСек / 10000000;
    Возврат Дата(1582, 10, 15, 04, 00, 00) + ЧислоСек;
КонецФункции   
Показать
Туки Туки; +1 Ответить
5. user817897 2 26.03.19 15:38 Сейчас в теме
(3)я уже понял,база у нас на sql и иногда восстанавливают,раз в пол года,может год, поэтому думаю что не нужно из журнала регистрации брать. А какой есть тогда варик?
7. YannikAlx 43 26.03.19 15:44 Сейчас в теме
(5) ну я же вставил вам код...
Его уже и повторить успели...
8. user817897 2 26.03.19 15:49 Сейчас в теме
(7)понял,спасибо ребят,сейчас попробую разобраться в смысле алгоритма
10. user817897 2 26.03.19 16:08 Сейчас в теме
(3)а может как-то из заказа покупателя его отследить? если первый заказ поступил,то значит его первый месяц и будет датой заказа?так как вариант?
11. YannikAlx 43 26.03.19 16:26 Сейчас в теме
(10) Логики нету совершенно, а если клиента создали , а заказ передумали создавать...
Точность вашего предложения -
когда создали клиента? Нуууу примерно в нашем веке... ))))
И совершенно не понятно для чего вам вообще нужна эта информация - дата создания контрагента...
12. user817897 2 26.03.19 16:34 Сейчас в теме
(11)мне нужно сделать отчёт по новым клиентам, кто и на сколько купил товара в каждом месяце,делаю на основе универсального отчёта. есть вариант правильного отбора?
18. YannikAlx 43 26.03.19 17:02 Сейчас в теме
(12)Если выреально хотите знать дату создания Контрагента проще всего добавить доп реквизит в Контрагента "ДатаСоздания"
И добавить процедуру в подписку на событие ПриУстановкеНовогоКода
ДатаСоздания=ТекущаяДата();
Вы потом можете ее взять откуда хотите.
Но ясно это для новых контрагентов
19. user817897 2 26.03.19 17:11 Сейчас в теме
(18) была такая идея,но это для новых только контрагентов только(
23. Lion_LexXx 1 27.03.19 08:29 Сейчас в теме
(19) Для новых заполнять при создании, у старых заполнить реквизит из Журнала регистрации или ГУИД
30. makfromkz 35 29.03.19 05:57 Сейчас в теме
(11)Чтобы ай-яй-яй сказать челу создавшего контрагента (с ошибкой)
6. SlavaKron 26.03.19 15:39 Сейчас в теме
На форуме видел такой код. Использовать не приходилось.
&НаСервереБезКонтекста
Функция ПолучитьДатуПоСсылке(Ссылка)
	ГУИД = Ссылка.УникальныйИдентификатор();
	Строка16 = Сред(ГУИД, 16, 3) + Сред(ГУИД, 10, 4) + Сред(ГУИД, 1, 8);
	Разрядность = СтрДлина(Строка16);
	ЧислоСек = 0;
	Для Позиция = 1 По Разрядность Цикл
		ЧислоСек = ЧислоСек + Найти("123456789abcdef",Сред(Строка16,Позиция,1)) * Pow(16, Разрядность - Позиция);
	КонецЦикла;
	ЧислоСек = ЧислоСек / 10000000;
	Возврат Дата(1582, 10, 15, 00, 00, 00) + ЧислоСек + СмещениеСтандартногоВремени() + СмещениеЛетнегоВремени();
КонецФункции
Показать
maxim4566; +1 Ответить
9. user817897 2 26.03.19 15:49 Сейчас в теме
25. maxim4566 28.03.19 11:38 Сейчас в теме
(6) Благодарю, не знал о таком способе получения даты из гуид.
13. user633533_encantado 11 26.03.19 16:41 Сейчас в теме
А просто проанализировать в запросе продажи по периодам, вычислить клиентов, которые ранее определенной даты не закупались и подсчитать по ним продажи ?
14. user817897 2 26.03.19 16:45 Сейчас в теме
17. user633533_encantado 11 26.03.19 16:52 Сейчас в теме
(14) Конечно на СКД, выбираем всех контрагентов у которых небыло продаж до определенной даты, затем тупа собираем по ним продажи. Простенький запрос, без танца с бубнами в виде получения даты из идентификатора (изначально неверный подход).
20. user817897 2 26.03.19 17:12 Сейчас в теме
(17)с запросом поможете? я малоопытный ещё((
21. user633533_encantado 11 26.03.19 17:20 Сейчас в теме
(20) Дело не в опыте, а в отсутствии знаний как таковых Не знаю какая у вас конфигурация:

Вот пример текста запроса на УТ11:

ВЫБРАТЬ
	ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаПоПартнерам КАК Ключ
ПОМЕСТИТЬ ВТ_СтарыеКлиенты
ИЗ
	РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(, &ОпределеннаяДата, , ) КАК ВыручкаИСебестоимостьПродажОбороты

ИНДЕКСИРОВАТЬ ПО
	Ключ
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
	ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиОборот КАК СуммаВыручкиОборот
ИЗ
	РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(
			,
			&ОпределеннаяДата,
			,
			НЕ АналитикаУчетаПоПартнерам В
					(ВЫБРАТЬ
						ВТ_СтарыеКлиенты.Ключ КАК Ключ
					ИЗ
						ВТ_СтарыеКлиенты КАК ВТ_СтарыеКлиенты)) КАК ВыручкаИСебестоимостьПродажОбороты
Показать
22. user817897 2 26.03.19 17:26 Сейчас в теме
(21)да,знание в некоторых моментах не хватает,спасибо,буду пробовать
15. user817897 2 26.03.19 16:48 Сейчас в теме
(13)
вариант вычисляемого поля прокатит:
Выбор когда ЗаказПокупателя.Контрагент < датанач тогда стоимость иначе 0 конец
что-то типа того писать?
16. user817897 2 26.03.19 16:50 Сейчас в теме
(15) правда тут бред написал,но всё же?
24. moc 27.03.19 22:37 Сейчас в теме
может добавить реквизит в контрагентах?
26. maxim4566 28.03.19 11:39 Сейчас в теме
(24) Ну это простое решение. Я бы сказал в лоб. Но Зачем? Если есть более технологичное и без доработки конфы.
27. oleg-x 27 28.03.19 13:10 Сейчас в теме
Если нужна конкретная дата, то добавляете дополнительный реквизит "ДатаСоздания" и просто заполняете его для новых контрагентов (как писали выше). Для старых можно вытащить из ЖР или из Гуида (тоже писали выше).
Если же сама дата не так важна, то можно просто по коду, если руками не правите. У новых контрагентов, код будет больше, чем у старых.
28. VZyryanov 28.03.19 13:49 Сейчас в теме
Обычно я добавляю в важные документы и справочники реквизиты ДатаСоздания, Создал, ДатаИзменения, Изменил.
Создаю 2 подиски на события:
КФПередЗаписьюОбъекта: источник СправочникОбъект, событие ПередЗаписью, обработчик КФСерверВызов.КФПередЗаписьюОбъекта
КФПередЗаписьюДокумента: источник ДокументОбъект, событие ПередЗаписью, обработчик КФСерверВызов.КФПередЗаписьюОбъекта

Функция ТекущийПользователь() Экспорт
	Возврат ПараметрыСеанса.ТекущийПользователь;	
КонецФункции

Процедура УстановитьДатыСозданияИзмененияОбъекта(ЭтотОбъект) Экспорт	
	ТекущийПользователь=ТекущийПользователь();
	Если ЭтотОбъект.Ссылка.Пустая() Тогда
		Если ЕстьРеквизит(ЭтотОбъект,"Создал") И ЕстьРеквизит(ЭтотОбъект,"ДатаСоздания") Тогда
			ЭтотОбъект.Создал=ТекущийПользователь;
			ЭтотОбъект.ДатаСоздания=ТекущаяДата();
		КонецЕсли;
		Если ЕстьРеквизит(ЭтотОбъект,"Изменил") И ЕстьРеквизит(ЭтотОбъект,"ДатаИзменения") Тогда
			ЭтотОбъект.Изменил=ЭтотОбъект.Создал;
			ЭтотОбъект.ДатаИзменения=ЭтотОбъект.ДатаСоздания;
		КонецЕсли;
	ИначеЕсли ЭтотОбъект.Модифицированность() Тогда
		Если ЕстьРеквизит(ЭтотОбъект,"Изменил") И ЕстьРеквизит(ЭтотОбъект,"ДатаИзменения") Тогда
			Если (Не ЭтоПрограммист(ТекущийПользователь) ИЛИ ЭтотОбъект.ДатаИзменения='00010101') Тогда
				ЭтотОбъект.Изменил=ТекущийПользователь;
				ЭтотОбъект.ДатаИзменения=ТекущаяДата();
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры	

Процедура КФПередЗаписьюОбъекта(Источник, Отказ) Экспорт
	Если Отказ ИЛИ Источник.ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;
	УстановитьДатыСозданияИзмененияОбъекта(Источник);
КонецПроцедуры
Показать


ЭтоПрограммист(ТекущийПользователь) - своя функция. Здесь используется, чтобы мои изменения не фиксировались и не портили информацию о пользователе.
31. alex.msk 34 29.03.19 10:36 Сейчас в теме
А историю изменений включить не?
Из GUIDа вытащить не всегда получится, не факт, что он сформирован по алгоритму на базе даты.
32. oleg-x 27 29.03.19 10:37 Сейчас в теме
(31) А в 1С как то формируется по другому?
Случаи, когда программного кто то формирует или меняет ГУИДы не будем рассматривать.
33. alex.msk 34 29.03.19 10:42 Сейчас в теме
(32)
А в 1С как то формируется по другому?


Почему нельзя использовать время из GUID?
Во-первых, гуид может быть случайным, а не основаным на времени.
Во-вторых, гуиды выдаются пулом по 32 штуки для каждого сеанса.
В-третьих, гуид случаен по своему стандарту и время в нем это лишь способ сгруппировать первичные ключи для уменьшения ширины дерева и ускорения операций вставки в кластерный индекс!
34. user817897 2 10.11.20 13:34 Сейчас в теме
Спасибо всем, Тема закрыта.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот