Что такое мэппинг в финансах. ​словарный запас: мэппинг

Рассмотрим некоторые типичные сценарии обработки вызовов, задействующих р есурсы «всемирной паутины». В этом случае клиент (реальный или потенциальный), как правило, приходит в компанию «со стороны» корпоративного web - сайта, откуда он и получает, скажем так, первичную информацию. Когда клиенту необходима дополнительная информация по конкретному продукту или услуге, он просто активирует иконку, вместо того, чтобы звонить оператору центра традиционным образом.

В этом случае имеется целый ряд комбинаций обслуживания:

Использование технологии VoIP. Голосовй диалог с клиентом может проводиться в виде сеанса VoIP с задействованием имеющегося соединения корпоративного web - сайта с Интернетом. При этом и клиент и сотрудник call-центра могут вести диалог и просматривать web - страницы, которые они могут увидеть на своих мониторах.

Доступ абонентов к двум линиям (например, абоненты ISDN). В этом случае одна линия может быть использована для голосового трафика, а другая - для трафика данных.

Автоматический ответный звонок. Соответствующий сотрудник операторского центра связывается с клиентом в удобное для него время.

Режим текстового чата. Это обмен текстовой информацией в реальном времени между клиентом и оператором центра. Такой режим особенно актуален в случае неудовлетворительного качества речи VoIP или когда надо безошибочно передать цифры, точное написание фамилий и т.д.

Обобщенный алгоритм обслуживания абонента Web Call-центра изображен на рисунке 4.3.

Рис. 4.3.

При вызове из Интернета пользователь вызывает операторский центр компании, щёлкая мышью на кнопке вызова (“call”), находящейся на её Web-странице. Это фактически гипертекстовая ссылка в знакомом формате HTML, которая активизирует программу Интернет-телефонии, зарегистрированную у Web-браузера. Эта программа может быть интегрированным приложением Web-браузера или отдельным приложением, которое вызывается браузером из какого-либо места на рабочем столе пользователя.

При нажатии на кнопку начинается процедура вызова через Интернет к шлюзу Интернет-телефонии, используя уже существующее соединение с Интернет-провайдером. Шлюз Интернет-телефонии загружает Java-приложение обработки вызова в компьютер клиента для запуска приложения Интернет-телефонии. Java-приложение обеспечивает интерфейс, через который пользователь может также получать сообщения о состоянии вызова, участвовать в обмене текстовыми сообщениями, сотрудничать с оператором центра путём посылки ему Web-страницы, или разъединить вызов.

После нажатия кнопки вызова и открытия приложения Интернет-телефонии, устанавливается соединение с Web-сервером компании. Для некоторых продуктов и услуг Интернетовского операторского центра соединение с ближайшим незанятым оператором устанавливается немедленно, в то время как другие могут только уведомить оператора о необходимости перезвонить пользователю. Поскольку оператор знает, из какого Web-сайта пользователь инициировал связь, то он уже к началу разговора будет иметь представление о том, какого рода вопросы имеются у пользователя.

Целесообразно также наличие кнопки бесплатного междугороднего вызова (в тех странах, где подобная услуга предоставляется), или возможность заказать мгновенный обратный вызов от оператора. Скажем, услуга interactiveAnswers, предоставляемая AT&T, устанавливает соединение между посетителями Web-сайта и “живым” оператором, который может немедленно ответить на вопросы, касающиеся товаров и услуг. Когда пользователь щёлкает на кнопке «Call Me Toll-Free», через Web посылается уведомление, информирующее оператора о том, что был запрошен обратный вызов. При этом пользователь вводит номер телефона, по которому с ним можно будет связаться. Если у пользователя есть две телефонные линии, то его телефон тотчас начинает звонить. В противном случае возможны варианты: в самом простом случае пользователь должен сначала выйти из Интернета, чтобы получить вызов по той же линии, либо воспользоваться в качестве альтернативы преимуществами технологии VoIP, приняв вызов с помощью одного из приложений, поддерживающих эту технологию (например, Microsoft NetMeeting). При снятии трубки абоненту передаётся записанное сообщение, в котором содержится просьба подтвердить, что он желает говорить с оператором. После этого происходит подключение оператора, и, спустя короткое время, пользователь может разговаривать с оператором.

При этом выбор способа связи с абонентом может производится операторским центром автоматически, например, с помощью набирающей сегодня популярность услуги Internet Call Waiting.

В некоторых случаях Web-сервер использует функцию «отложенный обратный вызов», или «call back». Определяется оператор, который должен будет обслужить данный вызов. Ответ возвращается на Web-сервер с указанием расчётного времени обратного вызова, а Web-сервер пересылает эту информацию вызывающему абоненту.

Если вызывающие абоненты ждут в очереди освобождения занятого оператора, они могут слушать музыку или рекламные объявления и периодически получать уведомления о продвижении очереди на обслуживание. Находясь в очереди, вызывающие абоненты могут продолжать просматривать информацию на Web. Если вызов не может быть поставлен в очередь вследствие задействия всех имеющихся ресурсов Интернетовского операторского центра, приложение выдаёт на экран клиента Web-страницу с извинениями за задержку в обслуживании и с просьбой к клиенту повторить вызов позже. Операторский центр может даже выдать пользователю Web-страницу с указанием, в какое время ему ожидать ответный звонок от оператора. Если, к примеру, звонок должен быть через 5 минут, графический индикатор может показывать часы, отсчитывающие время согласно действительному состоянию очереди. Индикатор может даже предоставить вызывающему абоненту возможность запланировать ответный вызов на более позднее время или отменить вызов.

При обслуживании конкретного вызова оператор одновременно может выполнять несколько действий. В простейшем сценарии оператор отвечает на конкретные вопросы абонента и вводит всю соответствующую информацию в базу данных компьютера. Кроме того, данная информация может использоваться для многих других целей, включая вызов эксплуатационного персонала, создание транспортных ярлыков для заказанных товаров, отслеживание продаж, рассылку рекламных материалов по почте и обзоры потребителей.

В более сложном сценарии, оператор может фактически просматривать ту же Web-страницу, что и вызывающий абонент, а также любое связанное с ней встроенное приложение, которое использует посетитель Web-сайта. Это позволяет представителю компании оказывать оперативное содействие клиенту, отвечая на вопросы, направляя посетителя к соответствующей информации на Web-сайте или принимая заказ в реальном времени. Для реализации возможности совместного просмотра информации, обычно в компьютер клиента загружается Java-приложение, которое «считывает» битовое изображение экрана примерно раз в секунду. Таким образом, приложение Web-сервера, которое обеспечивает функцию совместного использование браузера, “считывает” изображение на экране клиента и затем рисует его на экране оператора. Данный процесс также работает в обратном направлении, так что клиент может видеть то, что видит оператор. Данная возможность особенно полезна при наличии возможности внесения отметок в Web-страницу, которая позволяет оператору делать отметки на Web-странице с помощью мыши для подчёркивания пунктов, на которые следует обратить внимание клиенту. Находясь на одной и той же странице, клиент и оператор могут общаться друг с другом либо голосом, либо обмениваясь текстовыми сообщениями, а также реализуется совместная работа с Web-страницами. Оператор может направить пользователя на соответствующие страницы для предоставления дополнительноё информации, показать фото требуемого изделия или руководить процессом продажи. При этом оператор может одновременно отвечать на вопросы клиента. При заполнение бланка заказа оператор может консультировать клиента во избежании ошибок.

Данные возможности совместной работы предоставляются как пользователю (клиенту), так и оператору при использовании программно-аппаратных средств, соответствующих, например, стандартам МСЭ H.323 и T.120. В их числе - уже упоминавшийся Microsoft NetMeeting; при этом требования к машине клиента минимальны: необходим только браузер Microsoft Internet Explorer 5.0 или выше и ОС Windows. Следует отметить целесообразность поддержки таким оборудованием именно стандарта H.323, в связи с тем, что он обеспечивает эффективную передачу потоков информации, как непосредственно между равноправными узлами, так и через центральный сервер на базе единого стека стандартных протоколов, позволяя осуществлять передачу аудиоинформации, а, в некоторых случаях, и видеоинформации и/или данных, по сети Интернет.

Коллективный обмен данными включает коллективное редактирование растровых изображений (электронная “доска объявлений”), передачу файлов, обмен текстовыми сообщениями (“текстовая беседа”) и дистанционное управление приложениями. Некоторые из этих возможностей переходят на услуги справочного стола. Например, возможность дистанционного управления приложениями позволяет оператору справочного стола выполнять определённые действия на компьютере пользователя, например инициировать диагностическую программу для программного драйвера. Либо, посредством передачи файлов, можно загрузить и инсталлировать на ПК пользователя программную вставку. Пользователь должен согласовать данные действия, но он может легко остановить их выполнение, нажав на аварийную кнопку.

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

При использовании электронной почты для получения необходимой информации абонент посылает сообщение электронной почты в операторский центр обслуживания вызовов либо по обычному каналу электронной почты, либо путём заполнения формы на Web-сайте. Сообщение воспринимается как обычный телефонный вызов и ставится в очередь и маршрутизируется в соответствии с набором средств, определённых приложением.

Когда оператор освобождается, “вызов” электронной почты поступает на речевой терминал оператора и он получает уведомление о его присутствии на экране браузера. На компьютер оператора также поступает интерфейс пользователя, который включает в себя несколько инструментальных средств обработки сообщений. С помощью этих средств оператор имеет возможность создать ответ по электронной почте, поставить сообщение на удержание для наведения справки у других операторов центра или переадресовать/перевести сообщение другому оператору, считающемуся специалистом в данной конкретной области.

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

Для обслуживания вызовов современные операторские центры могут также использовать факс. Соответствующее ПО может направлять факсы от пользователей на электронный почтовый ящик Интернетовского операторского центра через интерфейс факсимильной связи почтового сервера, где факсимильные сообщения можно найти и маршрутизировать подобно Интернет-вызовам или электронной почте.

Благодаря добавлению в ближайшей перспективе к вариантам связи возможности видеоконференц-связи предприятия получают ещё одно средство, позволяющее им обеспечить немедленное, оперативное и «персонализированное» обслуживание клиентов. Кроме того, операторские центры с возможностью доступа через Internet смогут направлять вызовы от пользователей на наиболее подходящего оператора (или на автоинформационный сервер), находящегося в любой точке глобальной сети операторского центра предприятия, обеспечивая тем самым круглосуточное обслуживание абонентов. Вне зависимости от выбранного способа связи, все вызовы направляются на Интернетовский операторский центр для обслуживания ближайшим незанятым оператором или оператором, который может наиболее квалифицированно ответить на запрос клиента. В ходе разговора в реальном времени с посетителем Web-сайта оператор операторского центра может “проталкивать” на компьютер клиента Web-страницы с соответствующим текстом и изображениями, что помогает ответить на сложные вопросы или проиллюстрировать ключевые положения.

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

Обеспечение безопасности в общем случае сводится к решению двух основных задач:

  • · сохранение конфиденциальности информации, передаваемой между клиентом и операторским центром по сети Internet;
  • · обеспечение защиты операторского центра от несанкционированного доступа со стороны сети Internet.

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

Телефон – это инструмент, и от умения им пользоваться зависит построит ли менеджер эффективный диалог с потенциальным клиентом или нет. Никто не любит когда ему звонят и навязывают что-то, что ему совершенно не нужно.

Однако холодные звонки – это не пустая трата времени. Их можно и нужно делать эффективными путем найма правильных менеджеров, которые не превратят весь процесс в банальный обзвон. В этой статье мы рассмотрим что такое холодные звонки и правила их выполнения.

Что такое холодные звонки по телефону в продажах

Все звонки можно условно разделить на две большие категории: холодные и теплые. Теплые звонки – это контакт с клиентом, который уже имеет представление о вашей компании. Например, он ранее приобретал товар, либо просто интересовался услугами. Целью теплых звонков является напоминание о себе для того чтобы восстановить сотрудничество. Теплые звонки подразумевают, что оператор уже знает кто его покупатель, а также как его можно заинтересовать. Что же тогда холодные звонки?

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

Согласно статистики только 1 клиент из 100 «попадает» на крючок оператора и совершает нужное ему действие, например, приобретает какой-либо продукт.

В каких случаях используются

Сфера B2B не обходится без холодных звонков. Так, эта техника продаж только начала набирать обороты. Для чего же она нужна?

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

Видео — как составить скрипты продаж для B2B:

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

Плюсы и минусы

При кажущейся неэффективности у такого метода телемаркетинга есть несколько преимуществ. Рассмотрим основные из них.

  • Такой телемаркетинг намного эффективнее раздачи листовок и прочих печатных материалов . Более того, именно посредством телефонного разговора можно напроситься на личную встречу с ответственным лицом.
  • Клиент автоматически настраивается на деловой лад при общении по телефону, а это также помогает продаже товара или услуги.
  • Телемаркетинг – это эффективный способ провести исследования . Так, даже если оператору не удалось уговорить клиента на покупку товара или услуги, то его собеседник наверняка ответил на некоторые вопросы, на основе которых можно составить более точную карту целевой аудитории.
  • Эффективность холодных звонков напрямую зависит от менеджера , который их осуществляет. Так, повысить ее можно наймом правильных компетентных специалистов.

Видео — примеры холодных звонков для менеджера:

Варианты организации продаж в виде обзвона клиентов по базе

Для того чтобы организовать холодные звонки можно задействовать либо менеджеров своей организации, либо отдать проведение данного процесса на аутсорсинг, например, в Call-центр. Оба варианта имеют и плюсы и минусы.

Свои менеджеры

Чем хороши свои менеджеры? Они знаю все о своем продукте. Так, вам не нужно будет передавать им информацию о том, что вы собираетесь продать по телефону. Также организация обзвона базы собственным персоналом – это минимизация расходов, ведь вам не нужно платить сторонней организации. Кроме этого, существуют следующие нюансы при организации телемаркетинга силами своих сотрудников:

  • Человеческий фактор . При совершении примерно трети холодных звонков оператор сталкивается с негативом: люди на том конце трубки грубят и просто кладут трубку в самый неподходящий момент. Если вы не хотите, чтобы ваши сотрудники следующие несколько недель испытывали негативное влияние нервных секретарей и нерадивых директоров, то тогда лучше отдать холодные звонки на аутсорсинг.
  • Вам придется самостоятельно составить скрипт разговора , согласно которого и будет производиться обзвон.
  • Обычные менеджеры скорее всего не знакомы с техниками активных продаж и поэтому эффективность холодного обзвона, выполненного обычными сотрудниками, будет несколько меньше, чем если бы вы поручили это профессионалам.

Холодные звонки через обычных сотрудников эффективны тогда, когда клиентская база небольшая и вы настроены на хорошую отдачу от телемаркетинга.

Договор со сторонним CALL-центром

Передача задания на аутсорсинг имеет несколько очевидных преимуществ, главным из которых является эффективность в проведении обзвона. Операторы Call-центра наработали себе технику продаж и им проще, чем менеджерам компании, достучаться до лица, принимающего решения. Услугами сторонней компании следует воспользоваться в том случае, если клиентская база для обзвона очень большая и процесс займет длительный промежуток времени.

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

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

Холодные звонки как техника продаж по телефону

Холодные звонки в маркетинге – это целая наука, у которой есть несколько разделов. Так, одним из них является схема разговора. Если вы позвонили в компанию, то чаще всего попадете на секретаря или оператора. Но как добраться до нужного вам контактного лица?

Универсальная схема разговора

Практически каждый холодный разговор состоит из несколько этапов. Так, когда вы звоните в компанию, то попадаете на секретаря. Как правило, больше половины холодных звонков здесь и заканчиваются, ведь грамотный секретарь никогда не подпустит «продажника» к руководителю. Если менеджер успешно обходит этот этап, то перед ним стоят следующие задачи:

  1. Познакомиться с ЛПР и постараться установить контакт.
  2. Понять что необходимо потенциальному потребителю. Рассказать о продукте или услугах компании. Ответить на все «возражения».
  3. Назначить встречу с целью завершить её продажей.

ЛПР — что это такое в продажах

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

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

Видео — как вызвать любопытство у клиента в первые секунды холодного звонка:

Для того чтобы вычислить ЛПР в компании необходимо быть «разведчиком». От ваших вопросов к секретарю иди доверенному лицу зависит поймете ли вы к кому следует обратиться для того чтобы покупку вашего продукта одобрили.

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

Оператор, который пытается донести важность приобретения продукта, должен быть и маркетологом для того чтобы его уникальное торговое предложение было действительно «уникальным», а не слизанным у конкурентов.

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

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

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

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

Сценариев обхода секретарского барьера множество. Так, задача менеджера по продажам определить какой подход будет более эффективным в общении с конкретным секретарем. Что же можно сделать чтобы секретарь соединил с ЛПР?

Обворожить

Для того чтобы обойти секретаря можно использовать лесть. Следует бросить в его сторону пару комплиментов относительно его профессионализма в работе. В большинстве случаев этого сразу повышает лояльность секретаря к оператору, и он будет готов связать его с ЛПР.

Завербовать

Можно сделать вид, что директор/менеджер по продажам/заместитель начальника сам просил вас ему перезвонить. Сухим и настойчивым тоном необходимо представиться секретарю и сказать, что ЛПР очень ждет звонка от него. Этот прием часто работает.

Видео — 11 приёмов прохождения секретаря при холодном звонке:

Однако «завербовать» не получиться секретаря, который уже немолод и опытен. Как правило, на крупных предприятиях директора «охраняет» женщина бальзаковского возраста, которая сразу же раскусывает попытку вербовки. Если оператор чувствует, что такой метод здесь не поможет, то тогда остается один вариант – быть вежливым и учтивым и попросить секретаря о помощи.

Схитрить

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

Оказать сопротивление

Оказывать давление получается далеко не у каждого, но вот силовые приемы прекрасно работают. Главным компонентом такого приема является «постановка» секретаря на его место. Так, после того как он откажет вам в соединении с ЛПР стоит спросить кто именно занимается решениями, а также уточнить, что эта информация будет донесена руководству компании. Секретарь вернется в должность и можно будет продолжить обычное живое общение.

Узнавать контакты можно и не только у секретаря, но и у других сотрудников фирмы. Как правило, им меньше приходится контактировать с «продажниками» и именно по этой причине найти к ним подход намного легче.

Использование скриптов

Скрипт – это заранее спланированная последовательность действия, которая выполняется по мере хода звонка. Скриптом можно назвать некий сценарий, где выбор того или иного действия зависит от действия «оппонента» (ЛПР или секретаря).

Скрипты помогают вести беседу максимально плодотворно: так, практика показала, что работа по скриптам увеличивает вероятность продажи до 30%.

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

Гибкие скрипты применятся в том случае, когда продвигаемый товар «сложен». Для того чтоб продать его требуются творческие и креативные менеджеры. Вариантов развития событий множество и именно поэтому гибкие скрипты многовариантны.

Работа с возражениями

ЛПР будет всячески сопротивляться тому, чтобы принять положительное решение. Так, скрипты помогают ответить на все его возражения. Например, ЛПР может сказать, что у компании трудные времена и лишними денежными средствами она сейчас не располагает, либо же ответить просто и ясно «Я подумаю», что равносильно «Я отказываю вам».

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

  • Да, но наряду с этим

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

  • Именно поэтому ….

Потенциальный клиент хочет подумать и предлагает связаться с вами чуть позже? Стоит ответить такому ЛПР, что именно поэтому вы и хотите с ним встретиться. ЛПР говорит, что продукт стоит дорого? Вы именно поэтому и предлагаете ему ознакомительную версию или огромную скидку.

  • Заставьте клиента вспомнить о прошлом неудачном опыте .

Например, он также утверждает, что ваши услуги будут стоить ему приличных денег. Спросите у него, случалось ли ему приобретать дешевый товар, а затем все равно идти за дорогим. Наверняка он подтвердит вашу догадку и закрыть ЛПР на продажу будет еще проще.

Выводы

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

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

Видео — советы по холодным звонкам:

Замеппленые классы должны декларировать столбец первичного ключа в таблице базы данных. Большинство классов также должны описывать собственные свойства в стиле JavaBeans, включая уникальный идентификатор сущности. Элемент в mapping-файле определят отображение этого уникального поля на столбец таблицы, выступающий в роли основного ключа (primary key).

(5)

(1)

name (необязательный): Наименование свойства идентификатора.

(2)

type (необязательный): Имя определяющее Hibernate-тип свойства.

(3)

column (необязательно - по умолчанию имя свойства): Название колонки основного ключа.

(4)

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

(5)

access (необязательный - по умолчанию property): Эту стратегию Hibernate будет использовать для доступа к данному свойству объекта.

Если атрибут name не указан, предполагается, что класс не имеет свойства идентификатора.

Атрибут unsaved-value важен! Если свойство идентификатор вашего класса по умолчанию не null, вы должны установить атрибут "unsaved-value" в соответствующее значение.

Существует альтернативное объявление для доступа к унаследованным (legacy) данным c композитными ключами. Мы настойчиво не рекомендуем использовать композитные ключи в других случаях.

5.1.4.1. generator

Обязательный дочерний элемент "а определяет Java класс используемый для генерации уникальных идентификаторов экземпляров песистентных классов. При необходимости используется элемент Для передачи параметров инициализации или конфигурирации экземпляра генератора.

uid_table next_hi_value_column

Все генераторы реализуют интерфейс net.sf.hibernate.id.IdentifierGenerator. Это очень простой интерфейс; многие приложения могут использовать свою специальную реализацию генератора. Несмотря на это, Hibernate включает в себя множество встроенных генераторов. Ниже идут краткие наименования (ярлыки) для встроенных генераторов:

Increment

генерирует идентификаторы типа long, short или int, уникальные только когда другие процессы не добавляют данные в ту же таблицу. Не использовать в кластере.

identity

Поддерживает identity колонки в in DB2, MySQL, MS SQL Server, Sybase и HypersonicSQL. Тип возвращаемого идентификатора long, short или int.

sequence

Использует последовательность (sequence) в DB2, PostgreSQL, Oracle, SAP DB, McKoi или generator в Interbase. Тип возвращаемого идентификатора long, short или int.

hilo

Использует hi/lo алгоритм для эффективной генерации идентификаторов которые имеют тип long, short или int, требуют наименования таблицы и столбца (по умолчанию hibernate_unique_key и next_hi соответсвенно), как источник значений hi. Алгоритм hi/lo генерирует идентификаторы которые кникальный только для отдельный баз данных. Не используйте этот генератор для соединений через JTA или пользовательских соединений.

seqhilo

использует алгоритм hi/lo для генерации идентификаторов типа long, short или int, с использованием последовательности (sequence) базы данных.

uuid.hex

Использует 128-битный UUID алгоритм для генерации строковых идентификаторов, уникальных в пределах сети (изспользуется IP-адрес). UUID - строка длинной в 32 символа, содержащая шеснадцатеричное представление числа.

uuid.string

использует тот же UUID алгоритм, однако строка при использовании этого генератора состоит из 16 (каких-то) ANSII символов. Не использовать с PostgreSQL.

native

выбирает identity, sequence или hilo, в зависимости от возможностей используемой базы данных.

assigned

предоставляет приложению возможность самостоятельно задать идентификатор объекта перед вызовом метода save().

foreign

используется идентификатор другого, ассоциированного объекта. Обычно используется в крньюкции с оассоциацией по первичному ключу.

5.1.4.2. Алгоритм Hi/Lo

Генераторы hilo и seqhilo предоставляют две альтернативные реализации алгортма hi/lo, наиболее предпочтительного подхода для генерации идентификаторов. Первая реализация требует "специальной" таблицы в базе данных, для хранения следующего "hi" значения. Вторая реализация использует последовательность (Oracle-style), в базах данных, которые их поддерживают.

hi_value next_value 100 hi_value 100

К сожалению вы не можете использовать hilo в случае поставки своего соединения (Connection) в Hibernate, так же невозможно его использование в конфигурации, когда Hiberante использует источник данных сервера приложений, управляемый JTA. Hiberante должен иметь возможность получать "hi" значение в новой тразакции. Стандартным подходом в EJB, является использование session stateless bean для реализации алгоритма hi/lo.

5.1.4.3. Алгоритм UUID

Не пробуйте использовать uuid.string в PostgreSQL.

5.1.4.4. Последовательности и identity колонки

Вы можете использовать генератор ключей identity для баз данных с поддержкой indentity столбцов (DB2, MySQL, Sybase, MS SQL). Для баз данных поддерживающих последовательности можно использовать sequence стиль для генерации ключей. Обе эти стратегии требуют двух SQL запросов для вставки нового объекта в базу данных.

uid_sequence

Для разработки кроссплатформеннох приложений используйте стратегию native. Она будет использвать identity, sequence и hilo стратегии в зависимости от возможностей той базы данных с которой в данный момент времени работает Hibernate.

5.1.4.5. Задаваемые идентификаторы

Если вы хотите чтобы приложение само назначало идетнификаторы, вы можете использовать генератор assigned. Этот специальный генератор использует идетнификаторы которые устанавливаются приложением. Для этого приложение устанавливает идентификатор в соответсвующее свойство объекта. Будте очень внимательны при использовании этой возможности для установки ключей (в большинстве случаев это решение сигнализирует о плохом дизайне приложения).

Вследствие свойственной ему природы, сущности которые используют этот генератор, не могут быть сохранены через метод Session.saveOrUpdate(). Вместо этого вы должны явно указывать Hibernate, должен ли объект быть создан или обновлен вызовами соотвествующих методов объекта Session: save() или update().

5.1.5. composite-id

......

Для таблиц с композитными ключами вы можете отображать несколько свойств класса как свойства идентификации объекта. Элемент принимает отображения свойств при помощи дочерних элементов и .

Ваш персистентный класс должен переопределять методы equals() и hashCode() для реализации эквивалентности композитных идентификаторов. Он так же должен реализовывать интерфейс Serializable.

К сожалению, возможность задавать составные идентификаторы подразумевает то, что персистентный объект и есть идентификатор. Нет возможности для удобной обработки, чем посредством самого объекта. Вы должны создать сущность персистентного класса самостоятельно и установить его идентифицирующее свойство перед тем как выполнить загрузку load() персистентного состояния ассоциированного с данным составным идентификатором. Мы опишем более подходящий способ, где составные идентификаторы реализованы отдельным классом в разделе Раздел 7.4, «Компоненты как составные идентификаторы» . Атрибуты, которые описываются ниже, применимы только для альтернативного метода:

    name (необязательно): свойство типа копонента, которое содержит составной идентификатор (см. следующий раздел).

    class (опционально, по умолчанию тип свойства определяет через рефлексию): компонент данного класса используется как составной идентификатор (см. следующий раздел).

    unsaved-value (опционально, по умолчанию none): если установлен в any, то это указывает на то, что транзитные сущности рассматриваются как новые.

5.1.6. discriminator

Элемент необходим для полиморфной персистентности, использующей стратегию отображения table-per-class-hierarchy. Данный элемент объявляет колонку-дискриминатор, по которой определяется соответствие записи в таблице конкретному классу в иерархии. Дискриминатор может иметь один из следующих типов: string, character, integer, byte, short, boolean, yes_no, true_false.

Соответствующие значения колонки дискриминатора для каждого класса задаются в атрибуте discriminator-value для элементов и .

Атрибут force полезен только в случае, если таблица содержит записи с дополнительными значениями дискриминатора, которые не отображаются в персистентном классе. Обычно данный атрибут не используется.

5.1.7. version (необязательно)

Элемент отражает то, что таблица содержит записи с пометкой о версии. Это особенно полезно, если вы планируете использовать длинные транзакции (см. ниже).

(1)

column (необязательно, по умолчанию берется имя свойства): имя колонки, которая хранит номера версий.

(2)

name: Имя свойства персистентного класса.

(3)

type (необязательно, по умолчанию integer): тип свойства версии.

(4)
(5)

unsaved-value (необязательно, по умолчанию undefined): Значение свойства версии, которое указывает на то, что сущность еще не сохранена (unsaved). Не путайте несохраненные сущности от транзитных, которые были сохранены или загружены в предыдущей сессии. (undefined указывает на то, что будет использовано значение идентификатора.)

Номера версий могут быть типа long, integer, short, timestamp либо calendar.

5.1.8. timestamp (необязательно)

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

(1)

column (необязательно, по умолчанию используется имя свойства): имя колонки, которая содержит временную метку.

(2)

name: Имя в стиле JavaBeans типа Date или Timestamp свойства персистентного класса.

(3)

access (необязательно, по умолчанию property): стратегия, которую должен использовать Hibernate для доступа к значению свойства.

(4)

unsaved-value (необязательно, - по умолчанию null): Значение свойства времени, которое указывает на то, что сущность еще не сохранена (unsaved). Не путайте несохраненные сущности от транзитных, которые были сохранены или загружены в предыдущей сессии. (undefined указывает на то, что будет использовано значение идентификатора.)

Примечание: элемент эквивалентен элементу .

5.1.9. property

Элемент Объявляет персистентное, в стиле JavaBeans, свойство класса.

(1)

name: Имя свойства, начинается с буквы в нижнем регистре.

(2)

column (необязательно, по умолчанию подставляется название свойства): имя соответствующей колонки в таблице базы данных.

(3)

type (необязательно): название Hibernate-типа.

(4)

update, insert (необязательно, по умолчанию true) : указывает на то, что соответствующая колонка должна включаться в SQL-выражения UPDATE и/или INSERT. Установка обоих свойств в false позволяет задавать значение этого свойства либо из другого свойства, которое отображено в той же колонке/колонках, либо посредством триггера, либо другим приложением.

(5)

formula (необязательно): SQL-выражение, которое вычисляет значение свойства. Вычисляемые поля не должны отображаться в колонку таблиц базы данных.

(6)

access (необязательно, по умолчанию property): стратегия, которую Hibernate должен использовать для доступа к значению свойства.

значение свойства type может быть одним из следующих:

    Имя базового типа Hibernate (например, integer, string, character, date, timestamp, float, binary, serializable, object, blob).

    Имя Java-класса (например, int, float, char, java.lang.String, java.util.Date, java.lang.Integer, java.sql.Clob).

    Имя производного от PersistentEnum класса (например, eg.Color).

    Имя сериализуемого Java-класса.

    Имя пользовательского класса (например, com.illflow.type.MyCustomType).

Если вы не указываете значение свойства type, Hibernate будет использовать рефлексию для указанного свойства для подбора соответствующего Hibernate типа. Hibernate попытается определить имя класса возвращаемого свойства методом get() используя правила 2, 3, 4 в этом порядке. Тем не менее, этого не всегда бывает достаточно. В некоторых случаях вам все же необходимо указать атрибут type. (Например для различия между Hibernate.DATE и Hibernate.TIMESTAMP, либо для указания пользовательского типа.)

Атрибут access позволяет управлять задавать Hibernate метод доступа к полю во время исполнения. По умолчанию Hibernate вызывает методы get/set для доступа к полю. Если вы задаете access="field", то Hibernate будет обходить методы get/set и обращаться к полю напрямую, используя рефлексию. Вы можете указать вашу собственную стратегию для доступа указав класс, который реализует интерфейс net.sf.hibernate.property.PropertyAccessor.

5.1.10. many-to-one

Обычная связь с другим персистентным классов объявляется используя элемент many-to-one. В реляционных терминах это ассоциация многих к одному. В действительности это просто ссылка на объект.

(1)

name: Имя свойства.

(2)

column (необязательно): Имя колонки.

(3)

class (необязательно - по умолчанию тип поля определяется через рефлексию): Имя ассоциированного класса.

(4)

cascade (необязательно): Определяет, какая операция будет выполняться каскадом от родительского объекта к ассоциированному.

(5)
(6)

update, insert (необязательно - по умолчанию true) определяет то, что отображаемые колонки будут включены в SQL-запросы UPDATE и/или INSERT. Установка обоих свойств в false позволяет задавать значение этого свойства либо из другого свойства, которое отображено в той же колонке/колонках, либо посредством триггера, либо другим приложением.

(7)

property-ref: (необязательно) Имя ключевого свойства ассоциированного класса. По этому свойству будет происходить связывание (join). Если не указано, то используется первичный ключ ассоциированного класса.

(8)

access (необязательно - по умолчанию property): Стратегия, которую использует Hibernate для доступа к значению данного поля.

Атрибут cascade может принимать следующие значения: all, save-update, delete, none. Установка значения отличного от none повлечет определенные операции над ассоциированным (дочерним) объектом. См ниже "Жизненный цикл объектов".

Атрибут outer-join может принимать три следующих значения:

    auto (по умолчанию) извлекает ассоциированные объекты используя outer join если ассоциированный класс не имеет прокси.

    true Всегда извлекать ассоциированные объекты используя outer join.

    false Никогда не извлекать ассоциированные объекты используя outer join.

Типичное объявление ассоциации many-to-one выглядит так

Атрибут property-ref использоваться только для связи c унаследованными данными, когда внешний ключ ссылается на уникальное значение ассоциированной таблицы отличной от первичного ключа. Это опасное реляционное решение. Например, возможно, что класс Product имеет уникальный последовательный номер, который не является первичным ключем. (Атрибут unique конролирует герерацию DDL Hibernate"ом. Генерация производится при помощи утилиты SchemaExport.)

Отображение для OrderItem может использовать:

В действительности, так делать крайне не рекомендуется.

5.1.11. one-to-one

Ассоциация "один к одному" с другим персистентным классом можно объявить, используя элемент one-to-one.

(1)

name: Имя свойства.

(2)

class (необязательно - по умолчанию определяется рефлексией исходя из типа поля): Имя ассоциированного класса.

(3)

cascade (необязательно) определяет какая операция будет выполняться каскадом от родительского объекта к ассоциированному.

(4)

constrained (необязательно) определяет то, что внешний ключ, ссылающийся на таблицу ассоциированного класса, ограничен первичным ключом этой таблицы. Эта опция влияет на порядок, в котором выполняются каскадные операции save() и delete() (а так же используется утилитой экспортирующей схему - schema export tool).

(5)

outer-join (необязательно - по умолчанию auto): Задействует извлечение ассоциированных объектов, используя объединения outer-join если опция hibernate.use_outer_join конфигурационного файла включена.

(6)

property-ref: (необязательно) Имя свойства ассоциированного класса, которое входит в первичный ключ данного класса. Если не указано, то используется первичный ключ ассоциированного класса.

(7)

access (необязательно, по умолчанию property): Стратегия, которую должен использовать Hibernate для доступа к данному полю.

Существует два вида ассоциаций "один к одному":

    связь по первичному ключу

    связь по уникальному внешнему ключу

Для организации ассоциации по первичному ключу нет надобности в дополнительных столбцах; если две записи связаны такой ассоциацией, то это значит, что две записи в двух таблицах имеют одно и то же значение первичного ключа. Следовательно, если вы хотите ассоциировать два объекта, чтобы они были связаны по первичному ключу, то вы должны убедиться в том, что их идентификаторам присвоены одинаковые значения!

Для ассоциации по первичному ключу добавьте следующее отображение для классов Employee и Person соответственно.

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

employee ...

Сохраняемому экземпляру класса Person присваивается тоже значение первичного ключа, которое присвоено экземпляру класса Employee на который ссылается свойство employee класса Person.

Как альтернативный вариант описания связи "один к одному" от Employee к Person, через уникальный внешний ключ можно использовать следующую запись:

Эта ассоциация может быть двунаправленной после добавления следующего выражения к маппингу класса Person:

5.1.12. component, dynamic-component

Элемент отображает поля вложенного объекта на колонки таблицы родительского класса. Компоненты могут в свою очередь определять свои собственные свойства, компоненты или коллекции. Смотрите "Компоненты" ниже.

(5) ........

(1)

name: Наименование свойства (ссылающегося на компонентный объект).

(2)

class (необязательно - по умолчанию тип компонента определяется используя рефлексию): Наименование класса компонента.

(3)

insert: Если установлен в true, то отображаемые поля компонента участвуют в SQL-запросах INSERT.

(4)

update: Если установлен в true, то отображаемые поля компонента участвуют в SQL-запросах UPDATE.

(5)

access (необязательно - по умолчанию property): Стратегия, которую должен использовать Hibernate при доступе к этому компоненту через родительский объект.

Вложенные тэги Отображают поля компонента в колонки таблицы.

Элемент допускает вложенный элемент Который отображает свойство компонента как обратную ссылку на родительский объект.

Элемент позволяет использовать Map как компонент, в котором имена полей соответствуют ключам Map"а.

5.1.13. subclass

И наконец, полиморфная персистентность требует объявления каждого подкласса базового класса. Для (рекомендованной) стратегии отображения table-per-class-hierarchy используется элемент .

.....

Каждый подкласс должен объявлять свои собственные персистентные поля и подклассы. Допускается наследование свойств и от базового класса. Каждый подкласс в иерархии должен определять уникальное значение discriminator-value. Если это значение не указано, то в качестве дискриминатора используется полное имя класса.

5.1.14. joined-subclass

В качестве альтернативы, подкласс, объекты которого хранятся в отдельной таблице (стратегия отображения table-per-subclass), объявляется используя элемент .

.....

Для данной стратегии отображения не требуется указывать колонку discriminator. Однако, каждый подкласс должен объявлять колонку таблицы, которая содержит идентификатор отображаемый элементом . Маппинг приведенный в начале раздела может быть переписан следующим образом:

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

Все типы в Hibernate, за исключением коллекций, поддерживают семантику null-указателей.

До этого момента мы использовали термин "персистентный класс" для ссылки на сущности. Мы будем продолжать делать это. Строго говоря, не все определенные пользователем классы с персистентным состоянием являются сущностями. Например, компонент - это определенный пользователем класс с семантикой типа-значения (коспоненты, являются частью сущностей их содержащих, и считаются полями этих сущностей).

5.2.2. Базовые типы-значения

Базовые типы могут быть грубо разделены следующим образом

integer, long, short, float, double, character, byte, boolean, yes_no, true_false

Мапинги примитивных Java-типов либо классов оберток на соответсвующие (зависимые от поставщика) SQL-типы колонок таблиц. boolean, yes_no и true_false являются альтернативными обозначениями для Java-типов boolean или java.lang.Boolean.

string

Отображение типа java.lang.String в VARCHAR (либо Oracle VARCHAR2).

date, time, timestamp

Отображение типа java.util.Date и его подклассов в в SQL-типы DATE, TIME и TIMESTAMP (либо эквивалентные).

calendar, calendar_date

Отображение типа java.util.Calendar в SQL-типы TIMESTAMP и DATE (либо эквивалентные).

big_decimal

Отображение типа java.math.BigDecimal в NUMERIC (или Oracle NUMBER).

locale, timezone, currency

Отображение типа java.util.Locale, java.util.TimeZone и java.util.Currency в VARCHAR (или Oracle VARCHAR2). Экземпляры Locale и Currency отображаются в их ISO коды. Экземпляры TimeZone отображаются в их идентификаторы (ID).

class

Отображение типа java.lang.Class в VARCHAR (или Oracle VARCHAR2). Class отображается как его полное имя.

binary

Отображает массивы байтов в соответствующий бинарный SQL-тип.

text

Отображает длинные строки Java в SQL CLOB либо TEXT.

serializable

Отображает сериализуемые Java-типы в соответствующие бинарные SQL-типы. Вы так же можете обозначить Hibernate-типом serializable имя сериализуемого Java-класса либо интерфейса, который не является базовым типом и не реализует интерфейс PersistentEnum.

clob, blob

Отображение типа JDBC классов java.sql.Clob и java.sql.Blob. Эти типы могут быть неудобными для некоторых приложений, так как объекты типов blob и clob не могут использоваться вне транзакций. (К тому же, драйвера поддерживают эти типы не полностью и неодинаково.)

Уникальные идентификаторы сущностей и коллекций могут быть любого базового типа за исключением binary, blob и clob. (Составные идентификаторы так же допускаются, смотри ниже.)

Базовые типы-значения описываются константами объявленными в net.sf.hibernate.Hibernate. Например, Hibernate.STRING представляет тип string.

5.2.3. Персистентные перечисляемые типы (enum)

Перечисляемый тип является базовой идиомой Java когда класс имеет константное (небольшое) количество неизменяемых экземляров (прим. переводчика в Java 5 это введено на уровне языка, в более ранних версиях для этого применялся специальных паттерн). Вы можете создавать персистентные перечисляемые типы реализуя интерфейс net.sf.hibernate.PersistentEnum, и определяя операции toInt() и fromInt():

Package eg; import net.sf.hibernate.PersistentEnum; public class Color implements PersistentEnum { private final int code; private Color(int code) { this.code = code; } public static final Color TABBY = new Color(0); public static final Color GINGER = new Color(1); public static final Color BLACK = new Color(2); public int toInt() { return code; } public static Color fromInt(int code) { switch (code) { case 0: return TABBY; case 1: return GINGER; case 2: return BLACK; default: throw new RuntimeException("Unknown color code"); } } }

Имя Hibernate-типа - это просто имя перечисляемого класса, в данном случае eg.Color.

5.2.4. Пользовательские типы-значения

Для разработчиков относительно просто создать свои типы-значения. Например, вы можете захотеть сохранять свойства типа java.lang.BigInteger в колонки типа VARCHAR. Hibernate не предоставляет встроенного типа для этого. Но определение пользовательских типов не огранивается отображением свойств (либо элементов коллекций) в единичный столбец таблицы. Таким образом, например, вы можете иметь свойство getName()/setName() типа java.lang.String которое хранится в колонках FIRST_NAME, INITIAL, SURNAME.

Для реализации пользовательского типа, реализуйте один из интерфесов net.sf.hibernate.UserType либо net.sf.hibernate.CompositeUserType и объявите свойство, используя полное имя класса вашей реализации типа. Просмотрите net.sf.hibernate.test.DoubleStringType для уточнения доступных возможностей.

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

Хотя богатство встроенных Hibernate-типов и поддержка компонентов подразумевает то, что нужда в использовании пользовательских типов возникает достаточно редко, все же считается хорошей практикой использование последних в качестве (не сущностных) классов для типов, часто используемых в вашем приложении. Например, класс MonetoryAmount хороший кандидат для CompositeUserType, хотя он может отображаться как компонент. Главная мотивация это абстракция. С пользователскими типами, ваш документ маппинга будет более усточивым к возможным изменениям в будущем в случае если вы измените представление денежного типа.

5.2.5. Отображение Any типа

Есть еще один тип для отображения свойств. Элемент отображения объявляет полиморфную ассоциацию для классов из нескольких таблиц. Этот тип отображения всегда требует более одной колонки. Первая колонка содержит тип ассоциированной сущности. Остальные колонки содержат идентификатор. Невозможно пределить внешний ключ для данного типа ассоциации, таким образом, это отображение обычно не используется для полиморфных ассоциаций. Вы должны использовать подобное отображение только в особых случаях (например, запись разнотипных данных, обращение к данным пользовательской сессии).

Атрибут meta-type позволяет приложению задать пользовательский тип, который отображает значения колонок базы данных в персистентные классы, свойства-идентификаторы которых имеют тип, определеный в id-type. Если мета-тип (meta-type) возвращает сущности java.lang.Class, то больше ничего не требуется. В остальных случаях, когда это базовый тип, такой как string или character вы должны определить соответствие значений классам.

..... .....

(1)

name: Имя свойства.

(2)

id-type: Тип идентификатора.

(3)

meta-type (необязательно - по умолчанию class): тип, который отображает java.lang.Class в одну колонку базы данных либо, в качестве альтернативы, тип, который разрешен для отображения дискриминатора.

(4)

cascade (необязательно - по умолчанию none): тип каскадной операции.

(5)

access (необязательно - по умолчанию property): Стратегия, которую должен использовать Hibernate для доступа к значению свойства.

Старое свойство object, которое занимает отдельное место в Hibernate 1.2, все еще поддерживается, но объявлено полу-устаревшим.

5.3. SQL-идентификаторы в кавычках

Вы можете принудить Hibernate заключать идентификаторы в кавычки в SQL выражениях. Hibernate будет следовать правилам заключения в кавычки согласно установленного диалекта SQL (обычно двойные кавычки, но скобки для SQL Server и обратные кавычки для MySQL).

...

5.4. Отдельные файлы отображения

Можно объявлять отображения subclass и joined-subclass в отдельных документах, прямо внутри элемента hibernate-mapping. Это позволяет расширять иерархию классов добавлением нового файла отображения. При таком подходе вы должны указать атрибут extends в отображении подкласса, содержащий имя предварительно замапленного суперкласса. Использование данной возможности делает важным порядок перечисления документов отображений.

Компании, применяющие Excel для целей трансформации отчетности, получают ощутимую экономию при подготовке отчетности по МСФО. Если объемы транзакций позволяют обрабатывать учетные данные в электронных таблицах, целесообразно использовать Excel

12.01.2016

Таблицы Excel помимо арифметической точности и наглядности процедур трансформации позволяют формировать данные для экономического анализа финансовой деятельности на основании результатов по МСФО, что превращает модель отчетности в инструмент управления.

Подготовительный этап трансформации отчетности

На подготовительном этапе осуществляется анализ конкретных различий между МСФО, применимых к данной компании, и учетной практикой по РСБУ. Следует отметить, что нецелесообразно отталкиваться от правил российского учета, поскольку в данном случае сложно будет уйти от «приоритета формы над содержанием», - начинать следует с анализа компании в целом и ее деятельности с точки зрения МСФО.

Международные стандарты, имеющие отношение к каждому конкретному бизнесу, должны быть включены в состав учетной политики по МСФО. Например, торговое предприятие вряд ли будет использовать сложные финансовые инструменты или положения МСФО (IAS) 41 «Сельское хозяйство», а частная компания не должна раскрывать прибыль на акцию в соответствии с МСФО (IAS) 33 «Прибыль на акцию». Процедура формирования учетной политики должна быть нацелена не только на создание правил и меморандумов учета в соответствии с МСФО, но и на подготовку блока примечаний непосредственно отчетности по МСФО, содержащего основные аспекты учетной политики, обязательные к раскрытию в соответствии с МСФО (IAS) 1 «Представление финансовой отчетности».

Основываясь на полученной учетной политике по МСФО, следует выявить расхождения в оценках и принципах, применяемых в РСБУ, и сформировать список и правила расчета основных трансформационных корректировок, а также перечень дополнительной информации, необходимой для целей МСФО, но не учитываемой в соответствии с требованиями российского законодательства.

При первом применении международных стандартов в соответствии с МСФО (IFRS) 1 следует помнить об исключениях и упрощениях, разрешенных стандартом, и о том, что в дальнейшем данные послабления перестают действовать.

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

Мэппинг плана счетов для трансформации отчетности

Мэппинг - от английского mapping (соответствие, а также преобразование) - это процедура разноски данных в нескольких системах координат, в нашем случае конвертация остатков и оборотов, сформированных в соответствии с планом счетов РСБУ, в структуру плана счетов по МСФО (таблица 1).

Таблица 1. Пример мэппинга плана счетов

Несколько слов о составлении собственно плана счетов по МСФО.

  • Каждый показатель МСФО должен обладать уникальным цифровым кодом, в крайнем случае буквенно-цифровым, строго определенного формата. Суммирование показателей в современных версиях Excel возможно даже по текстовым признакам, однако в таком случае возрастает риск искажения данных в случае простой опечатки. Для сведения ошибок к минимуму применяются справочники и выпадающие списки с кодами и наименованиями счетов и аналитик, а также формулы «СУММЕСЛИ» и «ВПР», суммирующие данные с заданными признаками, а именно уникальными кодами.
  • Иерархия плана счетов должна позволять группировать данные не только по элементам, но также по строкам отчетной формы и примечаниям. Допустим, статья «Здания и сооружения - Первоначальная стоимость» помимо собственного кода должна также содержать среди аналитик код строки отчета о финансовом положении (далее по тексту - баланс) и код таблицы примечаний, что позволит заполнять формы и табличные примечания отчетности с помощью формул Excel.
  • Каждый раздел форм отчетности в плане счетов должен содержать запасные пустые строки - это дает возможность гибко корректировать план счетов без перенастройки формул, а также позволяет не нарушить принцип сопоставимости данных. Целесообразно предусмотреть место и для новых разделов, например, если компания ранее не имела инвестиционной собственности, но руководство планирует создание или приобретение недвижимого имущества для сдачи в аренду. В таком случае просто заполняются свободные строки и проставляются коды отчетности, а Excel автоматически агрегирует показатели.
  • Необходимо сохранять историю внесения изменений в мэппинг (как правило, на основании меморандума или иного распорядительного методологического документа) с указанием причины, ответственного лица, сроков вступления изменений в силу. Это важно как для формирования сопоставимых данных из периода в период, так и для прохождения аудита.

Следует отметить, что чем больше аналитик содержит российский план счетов, тем проще осуществлять мэппинг и реклассификационные корректировки, необходимые в связи с различными принципами агрегации данных в РСБУ и МСФО. Поэтому по возможности следует максимально приблизить план счетов РСБУ и его аналитику к нуждам МСФО, чтобы повысить эффективность процесса трансформации и снизить издержки.

Сбор информации, необходимой для заполнения трансформационной модели. На данном этапе собираются данные по остаткам балансовых счетов и оборотам доходно-расходных счетов за отчетный период, заполняется исходный баланс и отчет о прибылях и убытках.

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

Перечень, представленный в таблице 2, может быть как сокращен, если у компании отсутствуют те или иные операции, так и существенно расширен. Как правило, в деятельности компании изменения, влекущие дополнительные корректировки по МСФО, возникают редко. Поэтому наиболее тщательный анализ делается во время первичного ознакомления с бизнесом, а уже затем отслеживаются существенные изменения. Таким образом, в большинстве случаев компании должны составлять порядка десяти-двадцати трансформационных корректировок, которые могут быть регламентированы соответствующими методическими указаниями и закреплены в документе «Порядок учета трансформационных корректировок».

Таблица 2. Примерный перечень дополнительной информации

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

Этап формирования входящих корректировок . Входящие корректировки формируются при первом применении МСФО, а также при сделках по приобретению новых компаний, которые должны оцениваться по справедливой стоимости.

Для начала осуществляется перегруппировка статей баланса и отчета о прибылях и убытках. Это так называемые реклассификационные корректировки. К основным реклассификационным корректировкам относятся разворачивание или сворачивание дебиторской и кредиторской задолженности и авансов, рекласс расходов будущих периодов, разделение краткосрочных и долгосрочных активов и обязательств, перенос депозитов со сроком погашения менее 90 дней в денежные средства, а также более детальная разноска доходов и расходов на соответствующие счета, если подобная работа не была сделана на этапе мэппинга (таблица 3).

Таблица 3. Пример реклассификационной таблицы

Следующий блок корректировок - это исправления, влияющие на величину статей баланса, а также доходов и расходов. Следует не смешивать их с реклассификационными корректировками, поскольку только расчетные корректировки влияют на величину отложенных налогов по МСФО.

На практике наиболее существенные суммы корректировок связаны с оценкой активов по справедливой стоимости - основных средств (особенно в случаях, когда компания владеет старыми фондами) и нематериальных активов. Своими силами рассчитать подобные корректировки невозможно, поскольку для этого необходимы данные отчета об экспертизе, проведенной квалифицированным оценщиком. Например, без специальных знаний и опыта невозможно определить стоимость клиентской базы, которая при покупке компании должна признаваться в качестве нематериального актива по МСФО. Только после получения данных оценки о справедливой сумме первоначальной стоимости, степени износа, оставшегося полезного срока использования формируются реестры основных средств и нематериальных активов по МСФО. Учет основных средств и нематериальных активов может осуществляться как в отдельной программе, так и в электронных таблицах, когда в Excel ведется реестр основных средств, отражаются поступления, модернизации, выбытия объектов, рассчитывается амортизация по стоимости, признанной в соответствии с МСФО.

Наиболее простой способ расчета корректировок заключается в сопоставлении данных РСБУ и МСФО и определении расхождения между ними. Данные суммы и формируют поправку (таблица 4).

Таблица 4. Расчет корректировки по дооценке основных средств по справедливой стоимости

Помимо отражения переоценки, по основным средствам и нематериальным активам бывает необходимо пересчитывать сумму капитализированных процентов, поскольку РСБУ и МСФО содержат разные подходы при определении суммы капитализации.

Положения стандарта МСФО (IAS) 36 «Обесценение активов» также в большей степени направлены на тестирование основных средств и нематериальных активов, чья стоимость должна корректироваться при наличии признаков обесценения.

Если компания использует инструменты финансовой аренды в своей деятельности (в том аспекте, как ее интерпретируют МСФО), поправки также могут затрагивать сумму основных средств и расходов по амортизации, в корреспонденции с обязательствами по финансовой аренде и задолженности по процентам за пользование кредитными средствами.

Особое внимание стоит уделять корректировкам, связанным с дисконтированием (как, например, в случае с долгосрочной финансовой арендой, когда на основе дисконтирования оценивается и стоимость основных средств, и задолженность по договорам финансовой аренды). В МСФО требуется дисконтировать любые долгосрочные активы и обязательства:

  • суммы выручки, когда оплата отсрочена во времени;
  • величина долгосрочного резерва или оценочного обязательства в соответствии с МСФО (IAS) 37 «Резервы, условные обязательства и условные активы»;
  • стоимость инвестиции в дочернюю компанию, когда предусмотрена отложенная оплата за акции;
  • долговой компонент долгосрочных конвертируемых облигаций;
  • возмещаемая стоимость финансового актива, учитываемого по амортизированной стоимости, при тестировании его на обесценение и т.д.

Среди наиболее часто встречающихся корректировок можно также отметить:

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

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

Конечно же, перечислены далеко не все возможные корректировки, поскольку задача состоит в том, чтобы продемонстрировать, каким образом формируется пул входящих корректировок и как корректировки должны переноситься из года в год (таблица 5).

Таблица 5. Формирование списка входящих корректировок

Далее с учетом входящих корректировок осуществляется подготовка баланса, отчета о прибылях и убытках, отчета об изменении капитала, отчета о движении денежных средств в формате МСФО, а также выполняется подготовка пояснений к отчетности.

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

  • учитываются корректировки балансовых счетов в корреспонденции со счетом нераспределенной прибыли;
  • сторнируются корректировки доходно/расходных счетов в корреспонденции со счетом нераспределенной прибыли.

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

Этап формирования корректировок для последующих отчетных периодов . Типовые корректировки в следующих отчетных периодах необходимо составлять с учетом входящих корректировок. Механизм формирования данных МСФО заключается в следующем - в таблицах Excel заполняются постранично:

  • мэппинг остатков и оборотов по РСБУ в остатки и обороты по МСФО;
  • реклассификационные корректировки;
  • входящие корректировки (без учета реклассов предыдущего периода);
  • корректировки текущего периода (рассчитываются в отдельных рабочих документах с учетом накопленных входящих корректировок).

Затем с помощью формул «СУММЕСЛИ» подтягиваются данные на сводный лист (см. таблицу 6).

Таблица 6. Формирование данных МСФО в трансформационной модели

Данные МСФО (столбец 8) получаются путем суммирования исходных данных РСБУ, реклассифицирующих, входящих и текущих корректировок. На следующем этапе также с помощью формулы «СУММЕСЛИ» готовые показатели МСФО агрегируются на страницах отчетов (баланса, отчета о прибылях и убытках) по кодам строк форм отчетности в соответствии с присвоенным кодом формы отчетности (таблица 7). Аналогичным образом заполняются табличные формы примечаний, прописываются контрольные и сверочные формулы между трансформационной таблицей, формами отчетности и примечаниями, сопоставляется изменение нераспределенной прибыли за период с начальным и конечным сальдо по показателю (возможны расхождения на сумму начисленных дивидендов).

Таблица 7. Пример использования функции Excel «СУММЕСЛИ»

Как мы видим, Excel позволяет достаточно просто и наглядно формировать данные МСФО путем трансформации. На практике применяются и другие подходы к заполнению трансформационных таблиц, например, наподобие классической шахматки. Однако если корректировок много, получаются громоздкие файлы и возрастает риск технических ошибок, более того, становится сложно анализировать накопленные за несколько периодов поправки. Какая бы ни применялась модель трансформации, существуют универсальные рекомендации по работе с Excel: должно быть организовано хранение данных на надежных и защищенных от постороннего доступа серверах, автоматическое создание резервных копий основных рабочих файлов и автосохранение в процессе работы, регулярное архивирование как первичных данных, так и финальных моделей, отслеживание внесения изменений в файлы и ведение сводного файла-статуса (контрольного листа), содержащего информацию о необходимых этапах выполнения трансформации и степени выполнения установленных процедур.

Дорогие друзья!

Сегодня мы рады сообщить вам о том, что наши разработчики реализовали возможность транспортировки данных по URL (mapping, мэппинг) за “пределы” целевой страницы.

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

Теперь нет необходимости в экспорте данных из системы обработки лидов! Вы можете отправлять и обрабатывать их сразу в собственной базе!

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

Как работает мэппинг (mapping)?

Суть мэппинга в том, что при отправке данных с полей формы, в ссылку, по которой происходит переадресация, добавляются их содержимое. URL приобретает вид: //my_site.com/?name=ИМЯ&email=АДРЕС_ЭЛЕКТРОННОЙ _ПОЧТЫ&phone=НОМЕР_ТЕЛЕФОНА&lead_id=225298.

Важно! В дополнение ко всем данным полей, всегда передается ID лида в параметре lead_id.

На странице же, на которую осуществоляется переход, данную информацию “принимает” специальный скрипт, который, в свою очередь, распределяет данные по соответствующим “ячейкам”.

Обращаем ваше внимание! Мэппинг работает только в том случае, если “Результат формы” - “Переход по URL”!

Как настроить “транспортировку” лида по URL (mapping) на моей целевой странице?

1. Войдите в .
2. Выберите страницу с формой лида, с которой вы собираетесь “транслировать” данные.

3. В редакторе сделайте двойной щелчок по форме.

4. В появившемся окне заполните графу “Mapping” соответствующими названиями полей на английском языке. Например,name - имя, phone - телефон и т. п.

5. Сохраните изменения.

6. В свойствах формы настройте редирект на нужную страницу - это может быть или страница вашего сайта, в которую встроен JavaScript, который и будет обрабатывать данные с полей, поступившие с URL.

Установите флажок в чекбоксе “Передать поля формы”.

7. Сохраните изменения в основном меню редактора.

Вот и все! :-)

Теперь данные с полей вашей формы будут передаваться на страницу, на которую вы переадресовываете пользователя. Вам не придется экспортировать лиды из CRM LPgenerator - они могут “транспортироваться” в вашу CRM прямо по URL. Возможности мэппинга (mapping) по транспортировке данных воистину безграничны.