Каким образом происходит обновление сегментов для которых установлен способ периодически обновлять

Сегменты клиентов

Справочник предназначен для хранения списка всех сегментов клиентов, определенных в предприятии.

Сегмент – это набор элементов, удовлетворяющих правилам, определенным для сегмента. Он предоставляет информацию по элементам этого набора в виде, соответствующем цели создания сегмента. Сегменты допускают пересечения (один элемент может входить в несколько сегментов). Правила формирования и формы представления сегментов могут использовать произвольную информацию, хранимую в системе.

Доступность справочника определяется функциональной опцией Сегментов клиентов в разделе НСИ и администрирование — Настройка НСИ и разделов — CRM и маркетинг — Маркетинг.

С помощью сегмента клиентов производится дополнительная классификация клиентов, которая используется при определении правил взаимодействий и типовых условий продаж, а также при проведении маркетингового анализа.

Разделение клиентов на сегменты позволяет:

  • Регистрировать различные типовые условия продаж (цены, скидки) для каждого сегмента клиентов с помощью типовых соглашений.
  • Проводить по каждому сегменту клиентов отдельные маркетинговые акции.
  • Использовать сегмент клиента как разрез или отбор в различных аналитических отчетах.

Способы формирования сегментов

Поддерживаются следующие способы формирования сегментов:

  • Формировать динамически – набор элементов не хранится в таблицах базы данных, хранятся только правила его формирования. Состав сегмента формируется автоматически при вызове состава сегмента из карточки сегмента.
  • Периодически обновлять – набор элементов хранится в таблицах базы данных. Состав сегмента формируется при нажатии на кнопку Сформировать или при выполнении соответствующего сегменту регламентному заданию, по расписанию, определенному пользователем;
  • Формировать вручную – пользователь может добавить или удалить элементы набора сегмента (при этом предоставляется возможность предварительно сформировать набор элементов по правилам, определенным для сегмента).

Правила формирования сегмента

Правила формирования сегмента задаются непосредственно в форме сегмента в отдельном диалоговом окне, которое открывается при нажатии на кнопку Редактировать. Пользователь может использовать шаблоны настроек (Схема компоновки данных), с помощью которых формируются правила формирования сегмента.

Для сегмента клиентов предусмотрены следующие шаблоны настроек правил формирования:

  • Основная схема. С помощью этой схемы можно произвести отбор клиентов по бизнес-региону, дополнительным свойствам и т.д.
  • По взаимодействиям При использовании этой схемы к тем отборам, которые предусмотрены в основной схеме, добавляется отбор по показателям, связанными с взаимодействиями с клиентом. Используя эти показатели можно, например, сформировать сегмент по тем клиентам, с которыми давно не было взаимодействий и возобновить с ними отношения.
  • По продажам При использовании этой схемы к тем отборам, которые предусмотрены в основной схеме, добавляется отбор по показателям, связанным с продажей товаров партнерам: валовая прибыль, оборот, количество проданной номенклатуры, себестоимость и т.д. Используя эти показатели можно отслеживать выполнение условий продаж клиентами (например, сумма оборота за квартал больше 10000 рублей), автоматически исключать из сегмента клиентов, не выполняющих свои обязательства и соответственно применять к ним другие условия продаж (типовые соглашения).
  • По расчетам При использовании этой схемы к тем отборам, которые предусмотрены в основной схеме, добавляется отбор по показателям, связанным с взаиморасчетами: долг клиента и наш долг. Используя эти показатели можно отслеживать список тех клиентов, сумма долга которых превышает заданные показатели.
Читайте также:  Гоновый челночный способ движения агрегата

При формировании сегментов клиентов можно также использовать любые произвольные запросы. Для формирования запросов используется произвольная схема компоновки данных.

Использование сегментов для запрета отгрузки

Сегменты могут использоваться для формирования списка клиентов, которым запрещена отгрузка — стоп-листы (возможность доступна, если в разделе НСИ и администрирование — Продажи — Оптовые продажи — Использование заказов задействована функциональная опция Запрет отгрузки).

В таких сегментах устанавливается флаг Сегмент используется для запрета отгрузки.

Отгрузить товар клиенту, которому запрещена отгрузка, имеют возможность только те пользователи, для которых указана дополнительная роль Реализация клиентам, входящим в сегменты запрета отгрузки.

Источник

Ваш браузер устарел, пожалуйста обновите ваш браузер пройдя по ссылке www.microsoft.com/download

По российскому законодательству торговать алкоголем возможно не каждый день в году и не круглосуточно. В каждом регионе даты и время могут различаться. Для настройки ограничения продаж алкогольной продукции в ПП 1С Розница 8 предусмотрены маркетинговые акции. Если коротко, то принцип такой : необходимо создать маркетинговую акцию, указать действующую Скидку (наценку, ограничение ) с типом «Запретить розничную продажу», а в условиях прописать дни и время когда этот запрет действует.

Магазины продающие алкоголь часто просят настроить подобное ограничение. Так появилась идея создать себе ( и теперь уже другим) помощника по созданию ограничения.

Предлагаемая обработка позволяет настроить ограничение буквально в несколько щелчков мышью.

ВНИМАНИЕ. Настоятельно рекомендую перед первым запуском обработки сделать архивную копию базы данных.

При первом запуске обработка проверяет включена ли возможность «Запрета учета продаж». (Администрирование — Маркетинг: галочка «Скидки, наценки и ограничения продаж» и «Использовать запрет розничной продажи») . Если возможность отключена, обработка автоматически включить данную возможность программы. Далее обработка заполнит предполагаемые значения настройки ограничения на 2018 год ( как говорилось выше в каждом регионе эти значения отличаются), их возможно откорректировать под свои нужды. Так же необходимо указать на какой сегмент номенклатуры распространяется введенное ограничение( так как помимо алкогольной продукция есть другие товары, на которые ограничения не распростраряются. Сегмент можно выбрать из ранее созданных или создать непосредственно из обработки. После чего нажать кнопку «Создать документ запрета».

Итогом будет создан документ «Маркетинговая акция» из раздела «Маркетинг» с заданными условиями ограничений.

p.s. у пользователя 1С должно быть достаточно прав для запуска внешних обработок, Администрирования и создания маркетинговых акций.

Обработка тестировалась на версии платформы 8.3.10 и версия конфигурации 2.2.7

Инструкция по созданию сегментов номенклатуры ( для тех, кто не знает как это делается):

Выдержка из справки: «Сегмент номенклатуры

Сегмент номенклатуры используется для задания списка номенклатуры при управлении скидками.

Список сегментов открывается по ссылке Маркетинг – Сегментация – Сегменты номенклатуры. С помощью команды Ctrl+F можно отфильтровать список по любой комбинации символов. С помощью сервиса Расширенный поиск (Alt+F), который запускается из командной панели списка, Пользователь может выбрать нужные сегменты, задавая поиск по значениям различных реквизитов.

Читайте также:  Самый эффективный способ подключения радиаторов отопления

Новую запись в справочник можно добавить с помощью кнопки Создать в командной панели списка.

Формирование сегмента может быть произведено тремя способами:

При установленном способе формирования сегмента «Формировать динамически» -список номенклатуры не хранится в базе данных, а формируется автоматически при переходе к списку Состав сегмента.

При способе формирования «Периодически обновлять» список номенклатуры сегмента хранится в таблицах базы данных. Состав сегмента формируется при нажатии на кнопку Сформировать или при выполнении регламентного задания Обновить сегмент номенклатуры по расписанию, определенному пользователем. Настройка регламентных заданий производится в разделе АдминистрированиеНастройка фоновых и регламентных заданий.

Установив «Формировать вручную», пользователь может добавить или удалить элементы состава сегмента, используя механизм отбора. При этом состав сегмента не будет обновляться при выполнении регламентного задания.

Состав сегмента формируется при нажатии кнопки Сформировать или при выполнении регламентного задания Обновить сегмент номенклатуры по расписанию, определенному пользователем. Настройка регламентных заданий производится в разделе Администрирование – Поддержка и обслуживание – Регламентные и фоновые задания.

Правила формирования сегмента задаются в форме сегмента в отдельном диалоговом окне, которое открывается при нажатии на кнопку Настройки

Источник

Обновление списков при интерактивных действиях пользователя

Область применения: управляемое приложение, мобильное приложение.

1. Платформа 1С:Предприятие по умолчанию обновляет содержимое динамических списков при выполнении пользователем стандартных команд по изменению элементов этого списка ( Записать , Провести , Пометить на удаление и т.п.) и при добавлении новых элементов. Но в ряде ниже перечисленных случаев такое обновление следует предусмотреть явно в прикладном коде.

2. Команды, которые изменяют объекты и размещаются в форме списка, должны заботиться об обновлении списка объектов после своего выполнения. Например, после изменения одного объекта рекомендуется вызывать метод ОповеститьОбИзменении :

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)

ОбъектСсылка = ПараметрКоманды;
// Меняем объект
// .
ОповеститьОбИзменении(ОбъектСсылка);

При изменении нескольких объектов целесообразно обновлять список однократно, в конце операции:

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)

Для Каждого ОбъектСсылка Из ПараметрКоманды Цикл
// Меняем объект
// .
КонецЦикла;

3. Также должно быть обеспечено обновление данных в динамическом списке, у которого не назначена основная таблица. Такие динамические списки могут отображать данные из нескольких таблиц.

3.1. Если данные добавляются или изменяются командой, расположенной в форме динамического списка, то необходимо обновить список явно после выполнения команды.

3.2. Если данные изменяются в какой-либо другой форме (например, в форме объекта), то необходимо организовать обновление списка через оповещение. Для этого в каждой форме объекта, данные которого выводятся в динамическом списке, следует реализовать обработчик события ПослеЗаписи с использованием метода Оповестить :

Оповестить («Запись_ «, ПараметрыОповещения, ОбъектСсылка);

  • Запись_ — имя события, в котором — имя объекта, как оно задано в метаданных. Например, для документа «Расходная накладная» имя события будет «Запись_РасходнаяНакладная» .
  • ПараметрыОповещения – как правило, это параметр события ПослеЗаписи формы объекта. Состав свойств структуры может быть расширен исходя из потребностей прикладной логики.
  • ОбъектСсылка – ссылка на записываемый объект.

Затем в обработчике события Оповещение в форме динамического списка разместить код по обновлению динамического списка вида:

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

Если Врег(ИмяСобытия) = Врег(«Запись_РасходнаяНакладная»)
Или Врег(ИмяСобытия) = Врег(«Запись_НакладнаяНаПеремещение») Тогда
Элементы.СписокНакладных.Обновить();
КонецЕсли;

При этом имена событий следует проверять явным образом, чтобы исключить неоправданное обновление списка.

3.3. При изменении сразу нескольких объектов в параметре ОбъектСсылка метода Оповестить следует передавать значение Неопределено .

Оповестить(«Запись_РасходнаяНакладная», ПараметрыЗаписи, Неопределено);

Источник

Периодическое обновление данных

Сразу хочу оговорится, что наш код выполняется в виртуальной среде(машине) .NET Framework которая в свою очередь исполняется на операционной системе общего назначения, поэтому говорить о какой либо точности даже в пределах 1-2 мс мы не будем. Но тем не менее попытаемся сделать все от зависящие, чтобы увеличить временную точность.

Зачастую в нашей программе, возникает необходимость обновление какой-либо информации c определенным временным интервалом. В моем случаи это было обновление снапшотов (изображений) с ip камер. Зачастую бизнес логика приложения устанавливает перед нами определенные ограничения частоты обновления данных. Для это время составляет 1 секунда.
Решение в лоб — это установить Thread.Sleep(1000)/Task.Await(1000) после запроса снапшота.

Но срок выполнения нашей операции — недетерминированная величина. Поэтому имитация взятия снапшота выглядит примерно так:

Запустим наше программу и запустим вывод

Как мы видим отставания будут накапливаться и следовательно бизнес логика нашего приложения нарушатся.

Можно попробовать сделать замер среднего отставания от и уменьшить время сна, уменьшив средние отклонение, но в этом случаи мы можем получить больше запросов чем требует наша бизнес логика. Мы некогда не сможем предугадать зная что запрос выполняется до 1 секунды — сколько милисекунд нам нужно подождать, чтобы обеспечить необходимый период обновления.

Напрашивается очевидное решение. Замерить время до выполнения операции и после. И рассчитать их разницу.

Запустим нашу программу теперь. Если Вам повезет вы увидите примерно следующие.

Почему я написал если повезет? Потому что watch.Start() выполняется до DoSomethink() и watch.Stop() после DoSomethink(); Эти операции не мгновенны + сама среда выполнения не гарантирует точность времени исполнения программы (x). Поэтому будут существовать накладные расходы. Наша функция DoSomethink() выполняется от 0-1000 мс (y). Следовательно могут возникнуть ситуации когда x + y > 1000 в таких случаях

будет принимать отрицательные значения и мы получить ArgumentOutOfRangeException так как метод Thread.Sleep() не должен принимать отрицательные значения.

В таких случаях имеет смысл установить время needSleepMs в 0;
На самом деле в реальности функция DoSomethink() может выполнятся сколь угодно долго и мы можем получить переполнение переменной при приведении к int. Тогда время нашего сна
может превысить sleepMs;

Можно исправить это следующим образом:

В принципе все готово. Но использование подобного подхода даже в 1 месте вызывает дискомфорт для глаза программиста. А если таких мест в программе десятки то код превратится в нечитабельную кучу…

Чтобы исправить эту ситуацию инкапсулируем наш код в функцию. Тут можно убрать в отдельный класс либо и использовать как обычный метод к класс помойку Global и использовать как статический(мой вариант).

В нашем примере оставим для простоты оставим его в классе Program

Наша функции на входе принимает ссылку на функцию которую необходимо выполнить и наше планируемое время ожидания. А возвращает время которое следует спать нашей программе.
Для удобства использования мы можем также передавать анонимные лямбда функции в нашу функцию.

Источник

Читайте также:  Способы заготовки ивана чая
Оцените статью
Разные способы