Делаю отчёт на СКД и хочу вытянуть в нём информацию по новым клиентам,но где может храниться информация даты создания кроме как журнала регистрации?или как-то вытянуть из журнала?
Журнал решистрации очень ненадежная штука.... он если есть то его может сразу не стать...
Восстановил базу из архива и все - пиши что не было журнала...
(3)я уже понял,база у нас на sql и иногда восстанавливают,раз в пол года,может год, поэтому думаю что не нужно из журнала регистрации брать. А какой есть тогда варик?
(10) Логики нету совершенно, а если клиента создали , а заказ передумали создавать...
Точность вашего предложения -
когда создали клиента? Нуууу примерно в нашем веке... ))))
И совершенно не понятно для чего вам вообще нужна эта информация - дата создания контрагента...
(11)мне нужно сделать отчёт по новым клиентам, кто и на сколько купил товара в каждом месяце,делаю на основе универсального отчёта. есть вариант правильного отбора?
(12)Если выреально хотите знать дату создания Контрагента проще всего добавить доп реквизит в Контрагента "ДатаСоздания"
И добавить процедуру в подписку на событие ПриУстановкеНовогоКода
ДатаСоздания=ТекущаяДата();
Вы потом можете ее взять откуда хотите.
Но ясно это для новых контрагентов
13.
user633533_encantado
1126.03.19 16:41 Сейчас в теме
А просто проанализировать в запросе продажи по периодам, вычислить клиентов, которые ранее определенной даты не закупались и подсчитать по ним продажи ?
17.
user633533_encantado
1126.03.19 16:52 Сейчас в теме
(14) Конечно на СКД, выбираем всех контрагентов у которых небыло продаж до определенной даты, затем тупа собираем по ним продажи. Простенький запрос, без танца с бубнами в виде получения даты из идентификатора (изначально неверный подход).
21.
user633533_encantado
1126.03.19 17:20 Сейчас в теме
(20) Дело не в опыте, а в отсутствии знаний как таковых Не знаю какая у вас конфигурация:
Вот пример текста запроса на УТ11:
ВЫБРАТЬ
ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаПоПартнерам КАК Ключ
ПОМЕСТИТЬ ВТ_СтарыеКлиенты
ИЗ
РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(, &ОпределеннаяДата, , ) КАК ВыручкаИСебестоимостьПродажОбороты
ИНДЕКСИРОВАТЬ ПО
Ключ
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиОборот КАК СуммаВыручкиОборот
ИЗ
РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(
,
&ОпределеннаяДата,
,
НЕ АналитикаУчетаПоПартнерам В
(ВЫБРАТЬ
ВТ_СтарыеКлиенты.Ключ КАК Ключ
ИЗ
ВТ_СтарыеКлиенты КАК ВТ_СтарыеКлиенты)) КАК ВыручкаИСебестоимостьПродажОбороты
Если нужна конкретная дата, то добавляете дополнительный реквизит "ДатаСоздания" и просто заполняете его для новых контрагентов (как писали выше). Для старых можно вытащить из ЖР или из Гуида (тоже писали выше).
Если же сама дата не так важна, то можно просто по коду, если руками не правите. У новых контрагентов, код будет больше, чем у старых.
Обычно я добавляю в важные документы и справочники реквизиты ДатаСоздания, Создал, ДатаИзменения, Изменил.
Создаю 2 подиски на события:
КФПередЗаписьюОбъекта: источник СправочникОбъект, событие ПередЗаписью, обработчик КФСерверВызов.КФПередЗаписьюОбъекта
КФПередЗаписьюДокумента: источник ДокументОбъект, событие ПередЗаписью, обработчик КФСерверВызов.КФПередЗаписьюОбъекта
Функция ТекущийПользователь() Экспорт
Возврат ПараметрыСеанса.ТекущийПользователь;
КонецФункции
Процедура УстановитьДатыСозданияИзмененияОбъекта(ЭтотОбъект) Экспорт
ТекущийПользователь=ТекущийПользователь();
Если ЭтотОбъект.Ссылка.Пустая() Тогда
Если ЕстьРеквизит(ЭтотОбъект,"Создал") И ЕстьРеквизит(ЭтотОбъект,"ДатаСоздания") Тогда
ЭтотОбъект.Создал=ТекущийПользователь;
ЭтотОбъект.ДатаСоздания=ТекущаяДата();
КонецЕсли;
Если ЕстьРеквизит(ЭтотОбъект,"Изменил") И ЕстьРеквизит(ЭтотОбъект,"ДатаИзменения") Тогда
ЭтотОбъект.Изменил=ЭтотОбъект.Создал;
ЭтотОбъект.ДатаИзменения=ЭтотОбъект.ДатаСоздания;
КонецЕсли;
ИначеЕсли ЭтотОбъект.Модифицированность() Тогда
Если ЕстьРеквизит(ЭтотОбъект,"Изменил") И ЕстьРеквизит(ЭтотОбъект,"ДатаИзменения") Тогда
Если (Не ЭтоПрограммист(ТекущийПользователь) ИЛИ ЭтотОбъект.ДатаИзменения='00010101') Тогда
ЭтотОбъект.Изменил=ТекущийПользователь;
ЭтотОбъект.ДатаИзменения=ТекущаяДата();
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура КФПередЗаписьюОбъекта(Источник, Отказ) Экспорт
Если Отказ ИЛИ Источник.ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
УстановитьДатыСозданияИзмененияОбъекта(Источник);
КонецПроцедуры
Показать
ЭтоПрограммист(ТекущийПользователь) - своя функция. Здесь используется, чтобы мои изменения не фиксировались и не портили информацию о пользователе.
Почему нельзя использовать время из GUID?
Во-первых, гуид может быть случайным, а не основаным на времени.
Во-вторых, гуиды выдаются пулом по 32 штуки для каждого сеанса.
В-третьих, гуид случаен по своему стандарту и время в нем это лишь способ сгруппировать первичные ключи для уменьшения ширины дерева и ускорения операций вставки в кластерный индекс!