4. Конфигурирование комплекса
При разработке программного комплекса INFOPOLIS особое внимание было уделено созданию эффективного инструмента для конфигурирования параметров системы. Возможность быстрого изменения параметров системы позволяет настроить комплекс для работы на предприятиях широкого спектра деятельности.
Все инструменты для настройки системы вынесены в модуль "Конфигуратор", который, в некоторых реализациях, доступен системному администратору в виде одноименной страницы, в основном интерфейсе "INFOPOLIS".
Настройки, в зависимости от функционального назначения, разделены на группы.
Большая часть настроек устанавливается единожды, в самом начале внедрения системы. В процессе эксплуатации системы изменяются только настройки связанные с изменившимися внешними и внутренними факторами: изменение прав доступа, добавление новых объектов учета - складов, р/с и др., добавление параметров - виды аналитики, дополнительные поля, параметры фильтра и пр.

4.1. Инструкция по установке

4.1.1. Установка серверной части
 
1. Установить Microsoft SQL Server 2008R2 требуемой заказчику редакции.
 
2. Установить на SQL Server все доступные Service Pack.
 
3. Восстановить базу данных из файла sg.bak, входящего в дистрибутив (рабочая БД). Имя рабочей БД по умолчанию - "sg". Если есть необходимость установить несколько баз данных на один сервер (например, кроме основной, еще и тестовую БД) - их следует именовать, начиная с префикса "sg_".
 
4. Запустить процедуру IP_SETUP в рабочей БД.
 
5. Запустить процедуру IP_PREPARE_PRODUCTION в рабочей БД. Параметры процедуры см. в комментариях на процедуру.
Внимание!!! Данный пункт относится только к установке системы для промышленной либо тестовой эксплуатации. Если установка системы производится в целях разработки, данный пункт выполнять не следует.
 

4.1.2. Установка клиентской части
 
1. Требования к операционной системе:
Windows XP SP2/Windows Vista/Windows 7/Windows 8.
Версия Internet Explorer не ниже 6.0
   В настройках Internet Explorer должно быть включено:
   - Обзор -> Включение стилей отображения для кнопок и иных элементов отображения
   - Печать -> Печатать цвета и рисунки фона

2. Скачать программу по ссылке http://infopolis.com.ua/FileDownloadHandler.ashx?filename=setup.exe и запустить её. Папка, вкоторую устанавливается модуль клиентской части, должна быть открыта для записи для пользователей программы, иначе автоматическое обновление будет невозможно.

3. В созданном инсталлятором на рабочем столе ярлыке (Свойства-Ярлык-Объект) можно прописать параметры подключения. Если указаны все параметры (в т.ч. и пароль), окно логина не будет выводиться, а сразу произойдет загрузка интерфейса. Пример командной строки для запуска интерфейсного модуля:
"C:\Program Files\Infopolis\SmartBricks.exe" sg a db=sg s=XX.XX.XX.XX,PPPP u=login p=password
где:
sg - имя приложения;
a - инструкция для автоматического обновления интерфейсного модуля из БД;
db=sg - база данных;
s=XX.XX.XX.XX,PPPP - адрес сервера (IP-адрес, port);
u=login - логин;
p=password - пароль.
Если параметры не прописаны, они будут запрошены при первом старте программы. Далее они будут запомнены (все, кроме пароля) и при следующем запуске запрошены не будут.

4. Для работы может потребоваться установка некоторых дополнительных библиотек:
- Компонент для отображения OLAP-отчетов
- Компонент для печати штрих-кодов

5. В некоторых версиях Windows для выполнения автоматического обновления исполнимого модуля клиентской части неоходимо запускать его от имени Администратора или прописать данную опцию в ярлыке программы.
 

4.2. Настройка базовых параметров.
Рассмотрим перечень базовых настроек, необходимых для начала работы системы.
  • Валюты.
  •  Находится в группе "Установка валют". Определяет виды валют, которые будут использоваться в программе. Здесь администратор может отредактировать такие параметры
    1. Название валюты - указывает название валюты в единственном числе.
    2. Знак - указывает символом знак валюты.
    3. Десятичный знак - как правило, валюта имеет и десятичное измерение. В этой колонке вводится его сокращенное название.
    4. Род - позволяет выбрать из списка род валюты. Это нужно для правильного склонения названия валюты при написании суммы словами в некоторых документах.
    5. Код - международный банковский код валюты. Используется для однозначного определения валюты. Например, при импорте банковской выписки.
    Внимание! Редактировать параметры валюты(изменять, удалять) после начала работы системы крайне не рекомендуется. Разработчик не несет ответственности за некорректный учет операций, проводок, платежей или сбои в механизме мультивалютного учета, связанные с некомпетентным изменением параметров валют, установленных при внедрении системы.
  • Курсы валют.
  •  Находится в группе "Установка валют". Определяет типы курсов валют, используемых в учете. Существует два базовых типа курса , изменять которые настоятельно не рекомендуется, - это наличный и безналичный. Администратор может добавить свои типы курсов перед началом эксплуатации системы. Следует помнить, что в мультивалютном учете мы работаем с декартовым произведением множества валют на множество курсов. Например, если у нас одна валюта - гривна и два типа курса - наличный и безналичный, то при создании операции в перечне валют можем выбрать: Гривна Наличный, Гривна Безналичный. Для функционирования мультивалютного учета нужно будет заполнять матрицу курсов. Не следует без осознанной необходимости вводить большое кол-во валют или типов курсов. Как показывает практика, большое кол-во валют усложняет учет, добавляя необходимость бдительного контроля за матрицей курсов и разбора возникших курсовых разниц.
  • Балансовые единицы.
  •   Внимание! Запрещается изменять название и количество БЕ без согласования с разработчиком.
     
      Для того чтобы работать с группой "Балансовые единицы", необходимо предварительно заполнить на закладке "Контрагенты" информацию о подразделениях фирмы.
      Группа описывающая подразделение организации (дочерние предприятия, крупные отделы и т. д.). Допускает многоуровневое вложение.
      На закладке "Балансовая единица" администратор может занести информацию о подразделении:
     
     
    Здесь администратор может отредактировать такие параметры
    1. Название - указывает название подразделения.
    2. Контрагент - позволяет выбрать из списка организацию, к которой принадлежит подразделение.
    3. Флажки По складу и По книге - позволяют задать работает ли подразделение в фактическом и/или в бухгалтерском учете (соответсвенно).
    4. Флажок Плательщик НДС - позволяют определить является ли подразделение плательщиком НДС.
    5. Флажок Штатное расписание - позволяют определить ведет ли подразделение штатное расписание. (Влияет на поле Свойства).
    6. Флажок Прайс-Лист - позволяют определить имеет ли подразделение доступ к прайс-листу. (Влияет на поле Свойства).
    7. Флажок Учёт экземпляров - позволяют определить может ли подразделение вести учёт экземпляров. (Влияет на поле Свойства).
    8. Свойства - позволяет задать дополнительные параметры для подразделения.
    9. Файл логотипа - позволяет задать файл логотипа, который в дальнейшем будет использоваться в документах.
    10. Входит в - позволяет выбрать из списка балансовую единицу (подразделение), которой подчиняется данное подразделение.
      Примечание: Если подразделение необходимо переподчинить другому подразделению, достаточно выбрать необходимое подразделение в поле "Входит в".
      На закладке "Доступ" администратор может задать права доступа ролей и пользователей к данной балансовой единице.
  • Единицы измерения.
  •  Определяет виды единиц измерения, которые будут использоваться в программе. Здесь администратор может задать единственный параметр
    1. Флажок Делимая - указывает является ли дробной данная единица измерения.
     

    4.2.1. Структура предприятия
     
    В данном модуле описывается иерархическая структура предприятия. Каждому подразделению/филиалу/отделу соответствует понятие "Балансовая единица" (БЕ). Балансовые единицы могут включаться в другие БЕ, образуя иерархию. Кроме того, одной балансовой единице могут быть сопоставлены одно или несколько юридических лиц.
    Перед тем, как приступить к настройке модуля "Балансовые единицы", необходимо предварительно внести на закладке "Контрагенты" информацию обо всех юридических и физических лицах компании.
     
    Рассмотрим подробнее параметры БЕ:
    • Название - название балансовой единицы, которое будет отображаться в интерфейсе системы. Как правило, данное название не попадает в официальные отчеты и служит для внутреннего использования.
    • Контрагент - позволяет сопоставить подразделение определенному контрагенту. Контрагент должен быть создан заранее в соответствующей закладке (см. Контрагенты).
    • Флажки По складу и По книге - позволяют задать, работает ли подразделение в фактическом и/или в бухгалтерском учете соответственно. Возможно одновременное указание этих флажков.
    • Флажок Плательщик НДС - позволяют определить является ли БЕ плательщиком НДС. Проставляется только в том случае, если БЕ является юридическим лицом.
    • Флажок Штатное расписание - позволяют определить, ведет ли подразделение штатное расписание.
    • Флажок Прайс-Лист - позволяют определить, ведет ли подразделение собственный прайс-лист.
    • Флажок Учёт экземпляров - позволяют определить, может ли подразделение вести учёт экземпляров.
    • Файл логотипа - позволяет задать графический файл, который в дальнейшем может выводиться в документах. В данном поле указывается только имя файла (с расширением), сам же файл находится в ресурсах системы.
    • Входит в - позволяет выбрать из списка балансовую единицу (подразделение), которой подчиняется данное подразделение.
      Примечание: Если подразделение необходимо переподчинить другому подразделению, достаточно выбрать необходимое подразделение в поле "Входит в".
    • Задолженность - указывает, ведет ли данная БЕ дебиторскую и кредиторскую задолженность.
    • Производство - определяет наличие производственных единиц для данной БЕ.
    • Складской учет - позволяет задавать, ведется ли на данном подразделении складской учет.
    • Свойства - поле только для чтения, предназначено для разработчика.
    Иерархическое наследование параметров.
     
    В системе для иерархии БЕ предусмотрено иерархическое определение параметров. Рассмотрим на примере - допустим есть корпорация со следующей структурой:
     
    Головной офис
      Киевский филиал
        Фабрика Заря
          Отдел продаж
          Бухгалтерия
          Производственный цех
      Одесский филиал
     
    В данном примере БЕ "Отдел продаж" не ведет собственной хозяйственной деятельности, поэтому признак Прайс-Лист для данной БЕ не проставляется. Он будут проставлен для БЕ "Фабрика Заря". При этом, во время работы с комплексом, везде, где это необходимо, будет выполняться подстановка - там, где указана БЕ "Производственный цех", система будет брать прайс-лист "Фабрики Заря". То же касается и признаков Штатное расписание, Учёт экземпляров, Задолженность, Производство, Складской учет.
     
     
    Закладка "Доступ".
      На закладке "Доступ" администратор может задать права доступа ролей и пользователей к данной балансовой единице.

    4.2.2. Настройка типов операций
     
    Тип операций - ключевое понятие в системе Инфополис. Тип операций объединяет операции (документы) с похожими признаками. При внедрении системы все этапы производственного и бизнес-процессов разбиваются на типичные операции, которые описываются в системе через сущность Тип операций. Примеры типов операций:
    • Коммерческие предложения
    • Заказы
    • Отгрузки
    • Формирование себестоимости
    и т.д.
     
    Для удобства использования и администрирования типы операций разделены по группам. Группа операций - это набор типов операций, причем один тип операций может входить в несколько групп.
    При необходимости добавления нового типа операций рекомендуется использовать действие "Копировать", которое нужно запустить на наиболее похожем типе операций.

    4.2.2.1. Основные параметры
     
      Правила именования типов операций.
     
    Имя типа операций должно отражать суть операций, в нем содержащихся.
    Оно состоит из двух частей, разделенных точкой и пробелом:
     - префикса вида учета:
       Б. - для бухгалтерского
       У. - для управленческого
       П. - для планового.
     - собственно имени типа операций (во множественном числе, за редким исключением).
     
    Примеры типов операций:
     
    У. Коммерческие предложения
    Б. Счета
    П. Продажи
     

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

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

    4.2.2.1.4. Цвет
     
    Поле Цвет определяет, в каком виде учета (управленческом, бухгалтерском или в обоих сразу) будет участвовать данный тип операций.
    Возможные значения:
     
    Синий - управленческий тип операций, операции данного цвета отображаются пиктограммами преимущественно синего цвета.
    Белый - бухгалтерские операции, операции данного цвета отображаются пиктограммами преимущественно белого цвета.
    Серый - операция отображается одновременно и в бухгалтерском и в управленческом учетах. В базовой конфигурации комплекса "Инфополис" данное значение не используется.
    Всякий - для операций данного цвета принадлежность каждой операции определенному виду учета задается при создании операции путем выбора двух птичек - Склад и Книга. В базовой конфигурации комплекса "Инфополис" данное значение не используется.
    Никакой - Данный тип операций не попадает ни в один вид учета.

    4.2.2.1.5. Тип платежей
     
    Задает тип платежа - приход или расход - по-умолчанию, для данного типа операций. Сама возможность внесения платежей определяется наличием доступных расчетных счетов - задается на закладке Расчетные счета.

    4.2.2.1.6. Коэфф. товарных позиций
     
    Коэфф. товарных позиций - задает допустимость и значение по-умолчанию для коэффициента приход/расход в товарных позициях.
     
    Возможные значения:
    Без товаров - в данном типе операций товарные позиции не предусмотрены.
    Приход - в данном типе операций допускаются только приходные товарные позиции.
    Расход - в данном типе операций допускаются только расходные товарные позиции.
    Приход+Расход, приход по-умолчанию - в данном типе операций допускаются и приходные, и расходные товарные позиции, при этом если коэффициент не указан - создается приходная товарная позиция.
    Расход+Приход, расход по-умолчанию - в данном типе операций допускаются и приходные, и расходные товарные позиции, при этом если коэффициент не указан - создается расходная товарная позиция.

    4.2.2.1.7. Прочие свойства

    4.2.7. Настройка прав пользователей

    4.2.7.1.1. Базовые роли
    Страница в разработке
    4.2.12. Расписания
     
    Данный классификатор предназначен для задания наиболее часто используемых расписаний. Не рекомендуется изменять уже существующие расписания, поскольку на них могут ссылаться другие объекты.
     
    Расписания используются в производстве для задания режима работы производственных единиц, системе оповещений и репликации.

    4.2.13. Расчетные счета и кассы
     
    В данном классификаторе задаются места хранения денежных средств - либо рассчетные счета (РС) в банке, либо кассы для наличных денег, либо электронные контрольно-кассовые аппараты (ЭККА) для розничных торговых точек.
     
    Атрибуты:
     
    Наименование - внутреннее наименование РС или кассы, как данная сущность будет отображаться в интерфейсе программы.
    № счета или зав. номер КА - для РС задается соответствующий номер, для КА - задается его заводской номер (для идентификации при синхронизации с кассовым сервером).
    Банк - задается только для рассчетных счетов - в каком банке находится.
    МФО - только для чтения, выводится МФО банка для РС.
    Валюта - валюта, денежные средства в которой будут учитываться по данному РС или кассе.
    Примечание - произвольная строка комментария.
    Забыть - проставляется для РС, которые уже не используются. При этом данный РС или касса не будет отображаться при выборе в интерфейсе.
    Свойства - строка с внутренними признаками, разделенными слешом (/). Служит для идентификации различных счетов. Признаки, реализованные на данный момент:
        RTPKASSA - данная касса соответствует одному из ЭККА кассового сервера RTP.
     
    Форма оплаты - ссылка на форму оплаты, в этот список попадают только те формы оплаты, у которых не задан атрибут "Родительская форма оплаты".
     
     
     
     

    4.2.14. Настройка складов
     
    Рассмотрим атрибуты сущности Склад:
     
    Название склада - название, под которым склад фигурирует в системе, отображается в отчетах и интерфейсе.
    Адрес - физический адреc местонахождения склада, не обязателен к заполнению.
    Свойства - строка системных свойств, разделённых разделителем "/". Служит для сторонних разработчиков, для маркировки складов.
    Номер - Номер склада, не обязательно.
    Товар - Заполняется, если место хранения подразумевает движение по нему только одного товара. Актуально для резервуаров на АЗС, используеміх в модуле "Нефтепродукты", в этом случае проставляется тип топлива.
     
     
    Таблица "Применение"
     
    Здесь проставляется допустимость использования складов по типам операций, балансовым единицам и организациям.
     
    Закладка "Доступ"
     
    Здесь назначаются права доступа - кто может видеть данный склад и остатки на нём.

    4.2.15. Контактная информация
     
    Данный справочник служит для хранения типов контактной информация - например - моб. телефон, рабочий email и пр.
    Атрибутами типа контактов являются:
     
    Наименование - отображаемое имя при внесении контакта.
     
    Код - Машинное имя, служит для синхронизации с внешними системами. Настоятельно рекомендуется использовать в качестве кода код из стандарта vCard.
     

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

    4.3. Опции
     
    Опции в системе Инфополис - это набор произвольных параметров, определяющий работу программы, наподобие реестра в Windows.
    Опции распределены по группам для удобства поиска, а также снабжены фильтром.
     
    Работа опции определяется своим именем и не зависит от того, в какой папке она находится.
    Описание каждой опции содержится в её атрибуте "Описание".
     
    У каждой опции может быть произвольное количество значений. Значение - это комбинация из четырёх объектов аналитики и четырёх строковых полей.

    4.4. Создание справки

    4.4.2. Создание контекстной справки
     
    Принцип реализации.
    Контекстно-зависимая справка реализована через пункт главного меню "Справка-> Контекстная справка", присутствующий на каждой форме. Клавишей быстрого доступа к ней является клавиша F1. При нажатии F1 либо при клике на данном пункте меню открывается закладка Справка и фокус переходит на главу, соответствующую текущему положению курсора в приложении.
     
    Реализация
    Для реализации данного механизма нужно, выбрав необходимый топик на закладке Справка и перейдя на закладку Редактор HTML ввести в поле "Код" имя элемента, к которому относится данный топик, и через символ "=" идентификатор данного элемента (значение элемента id), если элемент является родительским. Идентификатор элемента можно опускать, если данная глава не зависит от идентификатора.
     
    Пример значения поля код: 
      SgNode1=10
    Данные значения отображаются в строке состояния главного окна приложения (при включенной опции "Показывать параметры" в главном меню пункта "Настройка").
    Если необходимо одну главу привязать к нескольким элементам интерфейса, можно создать в ней несколько топиков.
     
    Для создания контекстной справки для тех элементов, которые не получают фокус ввода (пункты меню, кнопки), контекстная справка может задаваться для формы ввода параметров через макрос Input, путем задания параметра HelpCode. Для действий в качестве кода рекомендуется использовать имя процедуры, для кнопок - имя элемента.

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

    4.6. Контроль

    4.6.1. Служебные процедуры

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

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

    4.6.1.3. IP_SYNCHRO_USERS

    4.6.1.4. IP_KILL_ALL
    Позволяет отключить все сеансы пользователей, кроме текущего, которые используют текущую базу данных.
    4.6.1.5. IP_WHO
    Показывает сеансы, которые в данный момент загружают сервер.
    4.6.1.6. IP_CHECK_OBJECT_OWNER
    Проверяет наличие объектов в базе данных со схемой, отличной от dbo. Полезно при коллективной разработке для контроля разработчиков.
    4.6.1.7. IP_CHECK_TABLE_SIZE
    Показывает размер таблиц (индексов, данных и пр.) в порядке убывания
    4.7. Настройка репликации
    Внимание!
    Данный раздел предназначен для внутреннего использования, фирма-разработчик не берет никаких обязательств за работу модулей и функций, описанных в данной главе.
     
     

    4.7.1. Настройка публикации
    В системе INFOPOLIS используется механизм репликации Microsoft Sql Server с индивидуальными надстройками. Ниже описан процесс настройки репликации для уже установленной базы данных согласно инструкции по установке
     
     Перед настройкой репликации слиянием под программный комплекс INFOPOLIS нужно в главной базе данных, в конфигураторе, в разделе Сервера и базы данных, зарегистрировать все сервера, которые участвуют в репликации. Указать каждому серверу диапазон значений уникальных идентификаторов, выделить одну главную базу. Если создается распределённая структура баз данных, то на каждой базе, кроме главной, указывается какие балансовые единицы и какие склады реплицировать. На главной базе, на закладке репликация, устанавливают признаки - реплицировать все балансовые, реплицировать все склады.
     
    Перед созданием публикации можно, если требуется, настроить дистрибьютор средствами MS SSMS. Если не требуется каких-то особенных настроек дистрибьютора, в процессе создания публикации дистрибьютор будет настроен автоматически.
     
    Создание публикации выполняется действием "Создать публикацию". Действие запускается при помощи всплывающего меню на главной базе данных в разделе Конфигуратора Сервера и базы данных. Рассмотрим параметры данного действия:
     Имя публикации - задает имя публикации.
     Использовать фильтрацию данных - Задается, если создается публикация с динамическим фильтром, т.е. подписчики получают только свои данные. Если создается полная публикация, данный флажок выбирать не следует.
     Описание публикации - необязательное примечание к публикации.
     
     Таблицы для публикации, через запятую - данный параметр применяется при создании нестандартных публикаций для выборочной публикации таблиц.
     
    После запуска данного действия в текущей базе данных будет создана публикация.
    Также для создания публикации могут использоваться хранимые процедуры, входящие в состав INFOPOLIS, начинающиеся на IP_REPL... . Пример вызова процедуры для создания публикации с динамической фильтрацией данных для подписчиков:
    use имя главной базы
    exec IP_REPL_CREATE
     
     После создания публикации нужно сгенерировать моментальный снимок (snapshot). Для этого в среде MS SSMS на главном сервере в ветке Replication -->Local Publication , открываем нашу публикацию и в всплывающем меню - выбираем пункт - View SnapShot Agent Status. Как показано на рисунке

    В появившемся окне - будет написано, что агент ещё никогда не стартовал. Жмем кнопку Start - в левом нижнем углу. На этом подготовка издателя закончена. Если вдруг потребуется пересоздать публикацию, её нужно удалить средствами MS, а затем создать вновь. Пока генерируется снапшот, можно приступать к созданию подписок.

    4.7.2. Настройка подписки
     
    Перед созданием подписки в главной базе данных уже должна быть создана публикация.
     
    Перед созданием подписки база данных подписчика должна быть зарегистрирована в Конфигураторе (Раздел Сервера и базы данных).
     
    Подписка создается в главной базе с помощью действия "Создать подписку", которое запускается по правой кнопке мыши стоя на ветке, соответствующей базе данных подписчика в Конфигураторе в разделе Сервера и базы данных.
     
    Рассмотрим параметры этого действия:
     Имя публикации - Имя публикации, для которой создается подписка.
     Логин сервера подписчика - Логин, под которым агент репликации будет подключаться к подписчику. Если данный параметр не задан, тогда для подключения к подписчику будет использоваться аутентификация Windows.
     Расписание - Расписание для синхронизации. Расписания настраиваются в Конфигураторе в разделе Расписания.
     Пароль и Подтверждение пароля - пароль для подключения к подписчику. Задается только в том случае, когда задан параметр Логин сервера подписчика.
     
      После первой синхронизации нужно в базе данных подписчика запустить процедуры IP_SET_IDENTITY_SEED и IP_SYNCHRO_TOV_OST.
     
     
     
    Также для создания подписки можно использовать хранимую процедуру IP_REPL_SUBSCRIBE.
    Данную процедуру следует запускать в главной базе данных.
     
    Пример типичного вызова процедуры:

    exec dbo.IP_REPL_SUBSCRIBE 
       @REPL_NM=Публикация
      ,
    @SG_DB_ID=Id базы данных
      ,@SUBSCRIBER_LOGIN=Логин
      ,@SUBSCRIBER_PASSWORD=Пароль
      ,@SHED_ID=Id расписания

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

     Id базы данных - Идентификатор базы данных подписчика, для которой настраивается репликация. Данное значение можно получить став на базу данных в Конфигураторе (Раздел Сервера и базы данных).
     Логин - логин для подключения к серверу подписчика, если равен NULL - тогда для подключения к подписчику будет использоваться аутентификация Windows.
     Пароль - пароль для
    подключения к серверу подписчика. Задается только если задан Логин.
     Id расписания - Идентификатор расписания для синхронизации. Расписание настраивается заранее в Конфигураторе. Если данный параметр не указан, будет использовано расписание по-умолчанию для репликации (с кодом REPL).

    Результатом вызова данной процедуры является:
    1. Создание PUSH-подписки
    2. Создание Linked-сервера на подписчика, если такой еще не создан.


    4.8. Настройка импорта товаров и прайс-листов
     
     
    Принцип импорта прайс-листов поставщиков:
      Пользователь c помощью специальной утилиты выбирает файл и формат файла(см. ниже), далее интерфейсный модуль отправляет выбранный файл на сервер. Сервер сохраняет этот файл во временном каталоге (должен быть задан в конфигураторе в разделе Сервера и базы данных для каждого сервера). Затем специальная хранимая процедура с помощью доступа через OLEDB-провайдера сбрасывает данные, находящиеся в этом файле в буферную таблицу. Какие данные куда сбрасываются определяется выбранным форматом. Затем данные отображаются пользователю для редактирования либо подтверждения. После этого можно уже окончательно импортировать данные из буферной таблицы в таблицы базы данных.
     
      Формат - сущность в базе данных, описывающая параметры импортируемого прайс-листа.
    Настройка форматов производится с помощью опции IMPORT_PLIST_FORMAT.
     Ниже подробно описаны параметры этой опции.
     
    Поле1 - Поставщик по-умолчанию
    Знач.1 - Заголовок, предъявляется пользователю при выборе формата
    Знач.2 - формат файла, расширение имени (пока поддерживаются: xls)
    Знач.3 - процедура для импорта файла
    Знач.4 - имя файла настроек в формате XML. Сам файл должен быть добавлен в папку Конфигуратор в базе данных.
     
    Формат XML-описания свойств формата Excel:
     
    <format pn="Имя провайдера для доступа к файлу" cs="Строка соединения">
      <list name="Имя Листа" tov="Поле наименования товара" art="Поле артикула" cmnt="Поле примечания" pr="Поле цены" code="Поле кода поставщика" barcode="Поле штрихкод" qty="Поле количества" wh="Условие фильтрации" curr="Валюта" k="Ключевое поле" vt="Поле вида товаров"
    usl="Поле признака Услуга" izm="Поле единицы измерения" vendor="Поле торговой марки"
    />
      <list ...>
      ...
    </format>
     
    Аттрибут cs содержит строку соединения для провайдера, определенного в аттрибуте pn. Строка соединения может содержать метку ~FN~, которая будет заменена на имя обрабатываемого файла.
    Аттрибут curr содержит код валюты, в которой указаны цены. Справочник кодов валют содержится в опции CURR_ALIAS.
    Аттрибут k указывает на ключевое поле, по которому будет проводиться сопоставление товаров с товарами в базе. Значение данного аттрибута должно быть равно одному из значений аттрибутов tov,art,code.
    Аттрибут wh содержит условие фильтрации строк (аналог условия where в sql-запросах). В значении этого аттрибута можно использовать поля f1, f2, f..., каждое из которых соответствует колонке в документе листа Excell.
    Аттрибут vt содержит полный путь иерархии видов товаров, куда должны попадать новые товары. Виды в пути разделяются символом "|". Пример пути: "Товары|Бытовая техника|Телевизоры".
     
    Для формата xls поля/столбцы представляются как f1,f2,f3 и т.д.
     
    Пример формата для файлов Excell:
    <format pn="Microsoft.Jet.OLEDB.4.0" cs="Data Source=~FN~;Extended Properties=&quot;Excel 8.0;HDR=No;IMEX=1&quot;">
      <list name="Лист1" tov="f2" art="f4" cmnt="f5" pr="f6" code="f3" wh="f1 is NULL" k="f2"/>
      <list name="Лист2" tov="f2" art="f4" cmnt="f5" pr="f6" code="f3" k="f2"/>
    </format>

    4.9. Управление интерфейсом пользователей
    Данный модуль вызывается с помощью одноименной кнопки на панели инструментов главного окна приложения. Служит он для оперативного управления интерфейсом пользователя - например, для того, чтобы принудительно перезагрузить интерфейс либо спозиционировать фокус приложения определенного пользователя на текущем месторасположении в вашей программе. Управление интерфейсом производится с помощью макросов.
    Данный механизм работает через модуль Задачи. Для этого в типах задач задается специальный тип "Макросы" с кодом MACROS.
     
    Поле Важность используется для выполнения макроса в момент запуска программы.
    Низкая - выполнить при старте один раз.
    Высокая - выполнять при старте каждый раз.
     
     
     
     
    При вызове данного модуля появляется окно диалога с запросом параметров:
     
    Только подключенные - позволяет отфильтровать только тех пользователей, которые подключены в данный момент к базе данных. Если пользователь не подключен к базе данных, макрос будет выполнен при следующем подключении. Доступ к подключенным пользователям имеют только члены роли системных администраторов.
     
    Пользователи - Позволяет выбрать пользователей, которым будет направлен макрос. Можно выбирать как отдельных пользователей, так и роли, в которые они входят.
     
    Послать сообщение - Сообщение, которое будет выведено пользователю. Сначала выводится сообщение, затем выполняется макрос.
     
    Действие - данный параметр содержит список заранее предопределенных действий.
     
    Произвольный макрос - макрос в текстовом виде. Если одновременно выбран какой-либо пункт в параметре Действие, будут выполнены оба макроса - введенный в данном параметре и выбранный в списке.
     
    Выполнять при запуске - значения: Один раз - макрос будет выполнен один раз при следующем старте программы. Постоянно - макрос будет выполняться при каждом старте программы.
     
    Дата начала - дата и время выполнения макроса. Если не задана - немедленно (Если не выбран пункт "Выполнять при запуске".
     
    Дата актуальности - дата и время, после которой выполнение макроса будет не актуальным. Если пользователь не открывал программу до этой даты, макрос ему послан не будет.
     
     

    4.10. Настройка АРМ "Розница"
     
    В этой главе описывается настройка формы "Розница".
    Запуск этой формы осуществляется с помощью кнопки "Розница" на панели инструментов.
    Также данную форму можно запускать отдельным приложением, для чего в свойствах ярлыка вместо параметра sg нужно указать параметр SgRozn. Пример командной строки для ярлыка:
      "F:\Program Files\SmartGoods\SmartBricks.exe" object=sgrozn a
     
    Для настройки данной формы служат три опции:
    Настройка ценовой политики для дисконтных карт производится с помощью опции ROZN_CENPOL.
    Подробное описание каждой опции см. в конфигураторе.
     
    Поле1 для каждой из опций содержит ссылку на пользователя, для которого будет применена опция. Если используются одинаковые настройки для всех пользователей, поле содержит NULL.
    Поле1 должно быть уникально для каждой опции.
     
    Для настройки списка контрагентов, используемых в рознице (которые выпадают при нажатии кнопки Новый чек) служит опция ROZN_KCAT.
    Для настройки фискальных принтеров служит опция RS_CASH_REGISTER.
     
    В зависимости от настроек, розничные продажи могут проводиться в двух режимах:
     
    1. Продажи осуществляются в буферном типе операций "У.Розница: Чеки". Буферный тип операций не влияет на складские остатки. При этом программа позволяет выписывать товар без ограничений (даже если в фактических остатках торгового зала его не числится). Позднее (автоматически по расписанию или вручную нажатием кнопки "Подытожить продажи за день" в панели инструментов основного интерфейса программы) будет запущена процедура, которая перенесет операции продаж в тип "У.Розница: Итоги за день", сгруппировав операции по их куратору (кассиру), контрагенту, БЕ и дате. При этом будет произведено списание проданного товара из остатков магазина (отдела). Если была зафиксирована продажа товара, не числившегося в остатках (как результат пересортицы и т.п.), он не будет списан (программа не позволяет списывать товар "в минус"), а уполномоченному пользователю будет отправлено соответствующее уведомление. Этот пользователь должен списать такую операцию вручную, предварительно оприходовав нечислившийся товар операцией пересортицы или т.п. Автоматический перенос чеков настраивается в расписании задач для автоматического мониторинга: задача переноса данных процедурой IP_JOB_NIGHT_STANDART, где указывается время запуска(как правило, ночью) и уполномоченный пользователь, которому будут направлены отчеты об ошибках списания.
     
    2. Операции продажи (чеки) осуществляются сразу в типе операций "У.Розница: Итоги за день", влияющем на складские остатки. В этом режиме программа запретит продажу товара, который не числится в остатках.
     
    Режим выбирается с помощью опции ROZN_SETTINGS, где указывается в каком типе операций ("У.Розница: Чеки" или "У.Розница: Итоги за день") АРМ "Розница" будет создавать операции розничных продаж.
     

    4.11. Электронная отчетность
     
    Электронная отчетность базируется на механизме "Расширенная система формирования отчетов" c некоторыми расширениями.
      Для каждого отчета в электронном виде в системе регистрируется объект "Отчет". Отчет состоит из меток. Для каждой метки задается процедура ее формирования либо формула, либо и то и другое. При необходимости может также задаваться процедура подготовки данных.
      Каждая процедура формирования метки может выдавать данные для отчета в двух вариантах:
    1. Стандартный - присваивать значение выходному параметру @REP либо добавлять записи во временную таблицу #RESULT_REP в поля FieldName и FieldValue.
    2. Вставлять значение типа XML в поле FieldXml таблицы #RESULT_REP.
    Первый вариант возвращения данных служит для облегчения перехода с бумажной отчетности к электронной. Для новых меток рекомендуется использовать второй вариант.
     
      Для формирования данных для отчетов в электронном виде служит процедура R_STANDART_DPA.
      Для каждого отчета задается шаблон в формате XSL, выполняющий преобразование XML-данных, сформированных процедурой R_STANDART_DPA, в формат XML, утвержденный налоговой администрацией для каждого отчета (XML-XML). Имя файла шаблона вносится в поле Шаблон. Для просмотра сформированного отчета в формате HTML в базе данных должен присутствовать xsl-шаблон, выполняющий преобразование из формата XML в формат HTML (XML-HTML). Для имен таких шаблонов действует следующее соглашение о наименовании:
    ИмяШаблонаXML-XMLБезРасширения_HTML.xsl
     
    Формат исходных xml-данных для преобразования XML-XML :
     
    <root>
      <values>
        <value name="Имя поля" alias="Псевдоним">Значение поля</value>
        <value name="Имя поля" alias="Псевдоним">Значение поля</value>
        ...
      </
    values>
      <xml из поля FieldXml >
    </root>

    4.11.1. Настройка электронной отчетности для Пенсионного фонда
    Метки отчетов по ежемесячной персонификации используют процедуры, базирующиеся на функции [dbo].[GetPersonifData], которая формирует несколько столбцов данных: начисленная ЗП, удержания, отпускные, больничные и т.п., разделяя их на облагаемую фондами часть и необлагаемую.
    Метки содержат описание, какие суммы из журнала проводок следует учитывать в данном отчете. В какой столбец попадет та или иная цифра определяется названием метки, а точнее, ее начальными символами:
     
    INDANI_ZP% - начислено ЗП
    INDANI_PENS% - начислено ЗП в рамках максимума для расчета взносов
    INDANI_UTR% - удержание
    INDANI_BOLNP% - больничные за счет предприятия
    INDANI_BOLNF% - больничные за счет фонда
    INDANI_OTPZ% - отпускные
    INDANI_OTPP% - отпускные в рамках максимума для расчета взносов
    INDANI_OTPTZ% - отпускные текущего периода 
    INDANI_OTPTP% - отпускные текущего периода в рамках максимума для расчета взносов
    INDANI_OTPSZ% - отпускные следующего периода
    INDANI_OTPSP% - отпускные следующего периода в рамках максимума для расчета взносов
     
    При формировании отчета учитываются только метки, непосредственно относящиеся к данному отчету.
     
    Таким образом, можно указать сколько угодно меток, начинающихся с указанных префиксов, но настроенных по разному и относящихся к разным отчетам, и получить для каждого отчета (процедуры его формирующей) собственные цифры.

    4.13. Автоматический мониторинг
     
    Комплекс INFOPOLIS позволяет создавать задачи, выполняемые по расписанию (автозадачи). Для этого служит модуль "Автоматический мониторинг". При создании задачи требуется задать следующие параметры:
     Наименование - имя задачи, выполняемой по расписанию.
     Процедура - имя процедуры в базе данных, которая будет запущена. В процедуре можно объявить параметр @AUTO_TASK_ID pk, в который будет передан идентификатор данной автозадачи (таблица auto_task).
     Расписание - ссылка на справочник расписаний, по которому запускается автозадача.
     Свойства - произвольная текстовая строка, которую можно использовать в процедуре (поле props в табл. auto_task). Может использоваться, когда несколько автозадач используют одну процедуру. Как правило, представляет собой набор флагов, разделенных символом "/", напр. "/A1/P_Q/".
     
     Порядок выполнения - позволяет задать порядок выполнения автозадач с одинаковым расписанием. Если автозадачи ссылаются на одно расписание и имеют один и тот же непустой порядок выполнения - такие задачи запускаются асинхронно (одновременно).
     
     Начальная дата - дата, от которой будет считаться расписание. Если не задана - следующий запуск начинается от предыдущей даты.
     
     Посл. запуск - дата и время последнего запуска автозадачи.
     
     След. запуск - дата и время следующего запуска автозадачи. Актуально только при условии использования механизма задач через Service Broker.
     Отключена - отключенные задачи не запускаются по расписанию. Если используется Sql Server Agent (см. ниже) нужно нажать кнопку "Обновить задания SQL Server".
     
     
     
     
    Кнопка "Обновить задания SQL Server"
    Данная кнопка служит для обновления механизма вызова автозадач по расписанию.
    Данный механизм может работать либо через SQL Server Agent либо через Service Broker.
    В первом случае используется преимущества заданий самого SQL-сервера - в частности, возможен просмотр истории запусков.
    Поскольку Sql Server Agent отсутствует в редакции Express Edition сервера, поэтому в системе предусмотрена эмуляция запуска заданий по расписанию через механизм Service Broker.
    При нажатии на эту кнопку система выдаст запрос - через какой механизм запускать автозадачи по расписанию. При этом, если редакция сервера Express Edition - выбор механизма SQL Server Agent будет недоступен.
     
     
     
    Если при выполнении автозадачи произошло исключение (exception), система создает задачу на системного администратора с текстом ошибки и прерывает выполнение задачи.
     
    Стандартные автозадачи, присутствующие в системе по-умолчанию:
     
    IP_JOB_NIGHT_STANDART - запускается каждую полночь. Выполняет проверки целостности данных, перенос логов в отдельную базу данных, а также другие операции, необходимые для функционирования системы.
     
    IP_JOB_ROZN_STANDART - запускается каждую полночь. Данная задача переносит выбитые чеки в тип операций, влияющий на склад, а также пересчитывает скидки в ценовой политике в зависимости от оборота.
     
    IP_JOB_BIRTHDAY_REMEMBER - напоминание о днях рождения сотрудников. За несколько дней создается задача на ответственного о предстоящих днях рождения.
     
    IP_JOB_MOVE_DT - переносит неполученные операции по дате пр. отгрузки и/или уведомляет ответственного путем создания на него задачи. Если на автозадаче проставлен ответственный с ролью "Выполнить" - на него будут созданы задачи с автором, в кадрах на которого стоит птичка "Забыть".
    Если проставлен ответственный с ролью "Проследить" - на него будут созданы уведомления на все задачи. Настройка типов операций, ответственных и пр. выполняется с пом. опции AUTO_MOVE_DT
     
    IP_JOB_FIRM_BLOCK - создает задачи-уведомления при добавлении контрагента в категорию из опции FIRM_BLOCK. Расписание на данную задачу не задаётся, процедура запускается из бизнес-логики. В наименование задачи можно использовать метки ~FIRM_NM~ и ~FC_NM~, которые будут заменены, соответственно, на имя контрагента и имя категории, в которую он был добавлен. На каждого ответственного создается отдельная задача. На текущего пользователя задача не создается.
     
    IP_JOB_ILLIQUID - Неликвиды - создаёт задачи на всех ответственных. В каждую задачу попадает список партий, которые лежат на складе дольше, чем число дней, указанное в дополнительном поле "Ликвидность, дней". У каждого ответственного будет только те партии, к балансовым единицам которых у него есть доступ.
     
     
     
    IP_IMPORT_KASSA_RTP - инициализирует сеанс импорта-экспорта данных с кассовым сервером RTP. Подробнее...
     
    IP_IMPORT_NAFTAPOS_ALL - инициализирует сеанс импорта-экспорта с системой управления АЗС NaftaPos. Подробнее...
     
     
     
     
    Полезные процедуры при создании автозадач:
     
    IP_ERROR_HANDLE - обработка исключений, вызывается из блока catch и позволяет создать задачу для dbo с текстом ошибки. Рекомендуется использовать в циклах, для того чтоб не прерывать выполнение задачи при возникновении исключения.
    IP_C_TASK - позволяет создавать задачи с результатом произвольного запроса. При этом строки с уже созданными задачами будут игнорироваться.
     
     

    4.14. Настройка планирования

    4.14.1. Алгоритмы автопланирования
     
    Алгоритм автопланирования представляет собой процедуру на языке TSQL, назначение которой - создание плановых операций, зависящих от какой-то текущей операции (товарной позиции).
      Рассмотрим подробнее атрибуты алгоритма автопланирования:
     
     Наименование - заголовок, который отображается пользователю при выборе алгоритма.
     Процедура - Имя хранимой процедуры, в которой собственно реализован алгоритм. Соглашение о наименовании таких процедур - они должны начинаться с префикса BL_PLAN_AUTO_. В системе реализована одна стандартная процедура автопланирования - BL_PLAN_AUTO_STANDART. Назначение этой процедуры - создавать операции производства или закупок. Если данный атрибут не указан - используется именно эта процедура.
      Свойства - произвольная строка, состоящая из идентификаторов, разделенных слешом. Данный атрибут нужен для расширения гибкости механизма конфигурирования автопланирования. Например, если несколько алгоритмов используют одну процедуру, их поведение может отличаться друг от друга в зависимости от свойств. Рассмотрим свойства для процедуры BL_PLAN_AUTO_STANDART:
        /STEP/ - при наличии данного идентификатора алгоритмом будет отработан только один шаг. В противном случае алгоритм раскручивает всю производственную цепочку до конца.
        /SUBST/ - при наличии данного идентификатора будет осуществляться замена комплектующих при создании производственных операций.
        /BUY/ - даже при наличии техкарт будет создана покупка вместо производственной операции.

    4.16. Прикинуться другим пользователем
     
    Данное действие позволяет системному администратору работать в системе от имени другого пользователя. Это полезно в случае отладки прав доступа.
    Кнопка с одноимённым названием находится на панели инструментов.
    При её нажатии система запрашивает следующие параметры:
     
    Кем прикинуться (Текущий Пользователь) - можно выбрать одного из пользователей, зарегистрированных в системе. Если выбрать пункт "<Собой>" - контекст будет переключен на пользователя, под которым был выполнен первоначальный вход в систему. В скобках выводится текущий пользователь, под которым осуществляется работа.
     
    Перечитать интерфейс - Если выбрать птичку, интерфейс программы будет обновлён в соответствии с правами пользователя. Иначе все элементы интерфейса будут оставлены прежние.
     
    Если режим прикидывания активен, имя пользователя выделяется жирным шрифтом (отображается внизу, в строке состояния главной формы приложения). В скобках в этом случае отображается имя первоначального пользователя.
     
    В связи с особенностями реализации SQL сервера, иногда пользователь при попытке прикинуться получает сообщение вида "Общая ошибка сети. Обратитесь к документации по сети". В этом случае действие "Прикинуться другим пользователем" нужно повторить.

    4.30. Внешние системы

    4.30.1. Нафта POS

    4.30.1.1. Создание новой АЗС
     
    Для подключения новой АЗС:
     
    Поля:
     
    ID АЗС в карточной системе - если используется карточная система

    4.30.1.2. Настройка синхронизации
     
    Синхронизация с сервером НафтаPOS осуществляется c помощью механизма Автоматического мониторинга путём вызова процедуры IP_IMPORT_NAFTAPOS_ALL по заданному расписанию.
    В поле "Свойства" для автозадачи можно задавать поведение процедуры.
    Свойства задаются через слеш (/). Допустимые свойства:
    AZS=Азс1,Азс2  - можно перечислять поимённо АЗС, с которыми выполняется синхронизация. Здесь Азс1,Азс2 - имя linked-сервера из опции NAFTAPOS_AZS. Если перед списком АЗС стоит знак "-" (минут) - будет выполняться синхронизация всех АЗС, кроме перечисленных.
    DIRECTION={0|1} - при наличии данного свойства осуществляется только импорт (0) или только экспорт (1) данных.
     
     
     
     
    Процедура IP_IMPORT_NAFTAPOS_ALL поочерёдно запускает процедуру IP_IMPORT_NAFTAPOS для каждой АЗС.
     
    Для настройки параметров см. Опции
     
    Внимание!
    Перед первой синхронизацией нужно убедиться в идентичности справочников форм оплат!
    Заполните поле Код справочника Формы оплаты в соответствии с полем ID таблицы CASHFORM.
     
    -- Запрос для просмотра таблицы CASHFORM:
    select * from openquery(ИмяСвязанногоСервера,'select ID,NAME from CASHFORM')
    -- Запрос для просмотра форм оплаты:
    select
    * from fopl
     
     
    Для нормального функционирования системы нужно, чтобы на всех серверах сети АЗС идентификаторы товаров, групп товаров, типов, контрагентов не пересекались.
     
    Также справочник форм оплаты CASHFORM должен быть идентичен для всех АЗС.
     
    Протокол первоначальной настройки синхронизации.
     
     
    1. Синхронизация справочника товаров.
     
    Если в системе NaftaPOS в справочнике товаров уже присутствуют позиции - делаем синхронизацию, что-бы они попали в Инфополис. До внесения товаров в ИНфополис! Если при этом возникает конфликт идентификаторов - удаляем в системе Инфополис конфликтные позиции.
    Эти товары появятся в виде, указанном в опции NAFTAPOS_CONFIG. После этого их нужно разнести, в соответствии с общей идеологией справочника товаров, по видам.
    Также будут проимпортированы цены в прайс-лист.
     
     
    Удаление ошибочно введённых товаров нужно производить в обоих системах одновременно, иначе при синхронизации товар будет проимпортирован из той системы, где он не был удалён.
     
    При подключении новой заправки на товарах, которые нужно прокинуть в NaftaPOS, делаем привязку к этой заправке. Делается это с помощью действия "Установить валюту цен" на виде товаров.
     
     
    2. Конфигурация АЗС.
     
    Конфигурация АЗС изначально создаётся в Нафте, при синхронизации она попадает в Инфополис.
    Конфигурация АЗС - это резервуары, ТРК и заправочные пистолеты.
     
    Все прочие объекты инфраструктуры АЗС, такие как мойка, шиномонтаж и пр. - настраиваются в Инфополисе как отдельные балансовые единицы.
     
    Важно помнить, что ошибочно введённые объекты конфигурации не удаляются при синхронизации. Их удаление производится вручную.
     
    2.1. Синхронизация резервуаров.
     
    Резервуары импортируются как склады, при этом в Инфополисе будет создана задача на администратора со списком новых складов.
     
    Идентификация резервуаров производится по номеру (tank.tankno) в NaftaPOS и по номеру склада в Инфополисе (Склад также должен быть привязан к балансовой единице - АЗС).
     
    Поскольку в NaftaPOS отсутствует наименование резервуара, в Инфополисе оно будет сформировано автоматически исходя из номера и вида топлива. Затем наименование резервуара можно изменять произвольным образом. Наименование резервуара используется в стандартных отчётах Инфополиса.
     
    Если в NaftaPOS для резервуара был изменён вид топлива - он меняется и в системе Инфополис, при этом создаётся задача на администратора.
     
    2.3. Синхронизация ТРК
     
    В Инфополисе каждая ТРК и каждый заправочный пистолет представлены отдельными сущностями, которые называются Производственными единицами.
    Поскольку справочник Производственных единиц иерархический - соответственно, на первом уровне находятся ТРК, в них входят пистолеты. Каждый пистолет ссылается на резервуар, к которому он подключен (атрибут "Склад"). Каждый резервуар, в свою очередь, ссылается на вид топлива (атрибут "Товар").
      
    2.3. Синхронизация касс.
     
    Касса в системе инфополис представлена двумя сущностями - Балансовая единица и Расчетный счет. При импорте конфигурации АЗС балансовая единица создаётся автоматически, как подчинённая для балансовой, соответствующей АЗС.
     
    Расчетные счета для касс должны быть настроены в системе Инфополис заранее
     
     
     

    4.30.1.3. Экспорт в 1С и другие бухгалтерские системы
     
    Для экспорта данных из системы Infopolis в 1С и другие бухгалтерские программы используется представление(view) ExportNaftaposDocuments.
    Ниже в таблице приведено описание полей этого представления:
     
    Поле Тип данных Описание
    document_type nvarchar
    Тип документа:
        APPEND приход топлива
        APPEND1 приход сопутки
        APPEND_RETURN Возврат поставщику
        SALE реализация топлива
        SALE1 реализация сопутки
        SALE_RETURN возврат от покупателя
    document_id bigint идентификатор документа
    document_no int номер документа
    azs_id bigint идентификатор заправки
    session_number int номер смены
    session_id bigint идентификатор смены
    session_dt1 datetime дата-время начала смены
    session_dt2 datetime дата-время конца смены
    product_id bigint идентификатор товара
    product_code nvarchar Код товара
    product_name nvarchar Наименование товара
    amount decimal Количество, для продаж - положительное, для возвратов и приходов - отрицательное
    sum_with_nds money сумма с НДС со скидкой , для продаж - положительное, для возвратов и приходов - отрицательное
    sum_without_nds money  сумма без НДС со скидкой , для продаж - положительное, для возвратов и приходов - отрицательное
    sum_nds money сумма НДС со скидкой , для продаж - положительное, для возвратов и приходов - отрицательное
    xprice_with_nds money Цена с НДС без скидки
    xsum_with_nds money сумма с НДС без скидки, для продаж - положительное, для возвратов и приходов - отрицательное
    xsum_without_nds money сумма без НДС без скидки , для продаж - положительное, для возвратов и приходов - отрицательное
    xsum_nds money Сумма НДС без скидки , для продаж - положительное, для возвратов и приходов - отрицательное
    is_fuel bit Признак топливо/сопутка. True - топливо, False - сопутка
    cashform int Форма оплаты: 
        2 - Наличные
        4 - Талоны
        5 - Дебет. карта
        6 - Банковская карта
        7 - Ведомость
        9 - Дисконтная карта, те же наличные, но со скидкой
     
     

    4.30.1.3. Экспорт в 1С и другие бухгалтерские системы
    Расширенный вариант запроса:
    document_type -- Тип документа:
       --APPEND приход топлива
       --APPEND1 приход сопутки
       --APPEND_RETURN Возврат поставщику
       --SALE реализация топлива
       --SALE1 реализация сопутки
       --SALE_RETURN возврат от покупателя
     
    document_id   -- bigint - идентификатор документа
     
    document_id_t -- varchar - идентификатор документа
     
    document_no   -- int - номер документа
     
    azs_id   -- bigint - идентификатор заправки
     
    azs_id_t -- varchar - идентификатор заправки (текст)
     
    session_number -- int - номер смены
     
    session_id -- bigint - идентификатор смены
     
    session_id_t -- varchar - идентификатор смены (текст)
     
    session_dt1 -- дата-время начала смены
     
    session_dt2 -- дата-время конца смены
     
    product_id -- bigint - идентификатор товара
     
    product_id_t -- varchar - идентификатор товара  (текст)
     
    product_code2 -- nvarchar - Код товара
     
    product_code2_t -- varchar - Код товара
     
    product_code -- nvarchar - Код товара
     
    product_code_t -- varchar - Код товара
     
    product_name -- nvarchar - Наименование товара
     
    product_name_t -- varchar - Наименование товара
     
    amount -- decimal - Количество, для продаж - положительное, для возвратов и приходов - отрицательное
     
    sum_with_nds -- сумма с НДС со скидкой , для продаж - положительное, для возвратов и приходов - отрицательное
     
    sum_without_nds -- сумма без НДС со скидкой , для продаж - положительное, для возвратов и приходов - отрицательное
     
    sum_nds -- сумма НДС со скидкой , для продаж - положительное, для возвратов и приходов - отрицательное
     
    xprice_with_nds -- Цена с НДС без скидки
     
    xsum_with_nds -- сумма с НДС без скидки, для продаж - положительное, для возвратов и приходов - отрицательное
     
    xsum_without_nds -- сумма без НДС без скидки , для продаж - положительное, для возвратов и приходов - отрицательное
     
    xsum_nds -- Сумма НДС без скидки , для продаж - положительное, для возвратов и приходов - отрицательное
     
    is_fuel -- Признак топливо/сопутка. True - топливо, False - сопутка
     
    cashform -- Форма оплаты:
        --2 - Наличные
        --4 - Талоны
        --5 - Дебет. карта
        --6 - Банковская карта
        --7 - Ведомость
        --9 - Дисконтная карта, те же наличные, но со скидкой
     
    be1 -- название кассы (может быть несколько на одной АЗС)
     
    azs_nm -- название АЗС
     
    DENSITY -- плотность (берем из Нафты. если там нету - берем дефолтовую из свойств товаров)
     
    T --Температура

    4.30.2. Кассовый сервер
    К комплексу "Инфополис", использующемуся в качестве Head-офис/Bak-офис системы, могут быть присоединены Front-офис системы сторонних разработчиков. Такие системы реализуют функции розничных продаж с использованием специализированного оборудования (кассовых аппаратов, POS-терминалов, автозаправочных комплексов и пр.) и, как правило, используют собственные кассовые серверы - программное обеспечение, отвечающее за взаимодействие с оборудованием.
    Процесс взаимодействия комплекса Инфополис с Front-офис системой (ее кассовым сервером) предусматривает:
    - передачу кассовому серверу данных о товарах, ценах, скидках и пр.;
    - получение от кассового сервера данных о розничных продажах (чеках).
     
    Процесс обмена данными с кассовым сервером Front-офис системы производится с помощью механизма автоматического мониторинга. По расписанию (по-умолчанию - каждые 10 минут) запускается процедура синхронизации данных с каждым из присоединенных кассовых серверов.
    Кассовый сервер Процедура
    RTP-Server IP_IMPORT_KASSA_RTP


    4.30.2.1. Кассовый сервер AvionRps
      Кассовый сервер AvionRps предназначен для работы с кассовыми аппаратами Экселлио посредством GPRS-модемов этой же фирмы.
     
      Для обеспечения взаимодействия кассового аппарата с системой Инфополис необходимо произвести его регистрацию в системе Инфополис и в кассовом сервере AvionRps, а также настроить взаимодействие модема с кассовым аппаратом и кассовым сервером. Для этого, кроме кассового аппарат и модема, необходима SIM-карта любого GSM-оператора с активированным набором услуг связи по протоколу GRPS.
     
      1. Настройка модема.
      1.1. Подключить модем к компьютеру с помощью нуль-модемного кабеля.
      1.2. Запустить на компьютере программу конфигурирования модема (скачать).
      1.3. Настроить параметры соединения модема с кассовым сервером:
          - ID устройства - произвольное число, - такой же номер для данного кассового аппарата должен быть прописан в кассовом сервере ;
          - Пароль устройства - не используется, присвоить значение "0";
          - Длительность TCP-соединения при отсутствии связи, сек - установить значение "600";
          - Количество попыток соединения с кассовым сервером - установить значение "5";
          - Тайм-аут между попытками соединения, сек - установить значение "60";
          - IP/Имя сервера - выделенный IP-адрес сервера, на котором установлено ПО кассового сервера;
          - Порт доступа - порт, используемый кассовым сервером для обмена пакетами - по умолчанию используется значение "7777";
          - Автоматическое подключение - значение "Да" указывает модему осуществить подключение к кассовому серверу при включении питания, при установке значения "Нет" подключение будет произведено при нажатии кнопки на модеме;
      1.4. Настроить параметры соединения модема с сервером GSM-оператора.
          - Адрес сервера APN - название GRPS-сервера оператора (зависит от оператора и выбранного тарифного пакета);
          - Имя пользователя  APN - определяется GSM-оператором или устанавливается в значение "0", если оператор не использует такую авторизацию;
          - Пароль APN - определяется GSM-оператором или устанавливается в значение "0", если оператор не использует такую авторизацию;
       1.5. Настроить параметры соединения модема с кассовым аппаратом.
          - Номер кассы - установить в значение "1";
          - Период опроса кассы, сек - установить в значение "30";
          - Скорость обмена с кассой - установить в значение "38400";
          - Уровень трассировки - установить в значение "0";
          - Версия ПО - не используется, оставить пустым;
          - Уровень трассировки - не используется, оставить пустым.
     
       2. Настройка кассового сервера.
       2.1. Зарегистрировать модем и кассовый аппарат в кассовом сервере (Кассовый сервер - Просмотр данных - Кассовые аппараты):
          - Название - произвольное название, определяющее местоположение кассового аппарата;
          - ID модема - соответствует полю ID устройства, указанному при конфигурировании модема;
          - Заводской номер - серийный номер кассового аппарата, указанный на этикетке на тыльной стороне кассового аппарата (вводится полностью, но без пробелов);
          - Логический номер ;
          - Модель кассового аппарата - указать модель кассового аппарата (для КА Екселліо DPU-50 указать Екселліо DP-50/500).
       2.2. Создать задания кассового сервера.
        Для демонстрационного режима достаточно создать следующие задания:
           - Задание: "Записать артикулы", Тип запуска: "После подключения модема"; 
           - Задание: "Прочитать эл.журнал из ЭККА", Тип запуска: "После подключения модема".
     
       3. Настройка комплекса Инфополис.
       3.1. Создать, если такового нет, расчетный счет (кассу), для обслуживания которого устанавливается данный кассовый аппарат.
       3.2. В свойствах счета указать серийный номер кассового аппарата, указанный на этикетке на тыльной стороне кассового аппарата (вводится полностью, но без пробелов).
       3.3. Проверить настройки задачи "Синхронизация с кассовым сервером RTP" (Конфигуратор>Задачи>Автоматический мониторинг).
     
     

    4.30.3. Настройка OpenVPN
     Для обеспечения доступа центральной БД системы Инфополис к внешним ресурсам (базам данных, внешним системам и т.п.), которые не имеют выделенных IP-адресов, используется технология VPN (Виртуальная Частная Сеть). Для организации сети применяется продукт OpenVPN - надежное и бесплатное программное средство.
     Серверная часть OpenVPN устанавливается на центральном сервере предприятия или на роутере, обеспечивающем доступ центрального сервера в интренет. Ресурс, на котором устанавливается OpenVPN, должен иметь выделенный IP-адрес. К этому адресу подключаются клиентские части OpenVPN, устанавливаемые на удаленных компьютерах, являющихся внешними системами.
     При правильной настройке OpenVPN, внешние системы становятся доступны с центрального сервера предприятия по выделенным IP-адресам в диапазоне внутренних адресов корпоративной сети.
     Предлагаемый вариант настройки OpenVPN позволяет подключить несколько клиентов к одному виртуальному адаптеру сервера OpenVPN.
     
     Установочный файл OpenVPN
     
     

    4.30.3.1. Создание ключей и сертификатов
     
     Вначале следует установить продукт OpenVPN на сервер с дистрибутива. Установку следует произвести в папку "C:\OpenVPN", а не в "C:\Program Files\OpenVPN", предлагаемую по-умолчанию.
     
     Создание сертификатов и ключей выполняется с помощью bat-файлов, расположенных в папке C:\OpenVPN\easy-rsa.
     Для их запуска следует вызвать утилиту командной строки (cmd) и перейти в папку C:\OpenVPN\easy-rsa.
     Далее следует выпольнить следующие действия:
     
     1) Выполнить команду init-config которая создаст файлы vars.bat и openssl.cnf.
    Файл vars.bat устанавливает переменные среды, которые используются для создания сертификатов. Его следует отредактировать, указав правильные значения переменных. Не должны быть пустыми переменные: KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG, KEY_EMAIL, KEY_SIZE.
     
     Пример файла vars.bat:
     
    set HOME=c:\OpenVPN\easy-rsa\
    set KEY_CONFIG=openssl.cnf
    set KEY_DIR=c:\OpenVPN\easy-rsa\keys
    set KEY_SIZE=1024
    set KEY_COUNTRY=UA
    set KEY_PROVINCE=Kiev
    set KEY_CITY=Kiev
    set KEY_ORG=Infopolis
    set KEY_EMAIL=info@infopolis.com.ua
     
     2) Выполнить команды:
     
     vars
     clean-all
     build-ca
     
    Последняя команда создает Certificate Authority (файлы ca.crt и ca.key). При этом она запрашивает некоторые параметры в интерактивном режиме. Ввести следует только один из них (Common Name), указав, например, имя вашего сервера.

     
    Пример отработки команды build-ca:
    ai:easy-rsa # ./build-ca
    Generating a 1024 bit RSA private key
    ............++++++
    ...........++++++
    writing new private key to 'ca.key'
    -----
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [UA]:
    State or Province Name (full name) [Kiev]:
    Locality Name (eg, city) [Kiev]:
    Organization Name (eg, company) [Infopolis]:
    Organizational Unit Name (eg, section) []:
    Common Name (eg, your name or your server's hostname) []:ServerOVPN
    Email Address [info@infopolis.com.ua]:
     3) Выполнить команду build-key-server, указав в качестве параметра, имя вашего серваера:
     
    build-key-server ServerOVPN
     
     Она создаст ключ и сертификат сервера (файлы ServerOVPN.crt и ServerOVPN.key). Из запрашиваемых в интерактивном режиме параметров следует ввести Common Name (как в п.2) и утведительно ответить на запросы о подписи сертификата:
     
    Sign the certificate? [y/n]: Y 
    1 out of 1 certificate requests certified, commit? [y/n]: Y
     
     4) Выполнить команду создания ключа и сертификата для каждого клиента (в командной строке указав имя клиента):
    build-key client1
    build-key client2
    build-key client3
    ...
     
    На запрос параметра Common Name следует ввести имя клиента, для каждого клиента свое: client1, client2 ...
     
    Результатом их работы будут ключи и сертификаты клиентских компьютеров (файлы client1.crt, client1.key, client2.crt, client2.key и т.д).
     
     4) Выполнить команду создания параметров шифрования:
     
    build-dh
     
     Выполняться она может довольно долго (несколько минут). Результатом ее работы будет файл dh1024.pem.
     
     5)Для добавления ключей и сертификатов необходимо вызвать файл vars и после этого прописать build-key Client(№ следующего пользователя)
    Пример:
    C:\openvpn\easy-rsa>vars
    C:\openvpn\easy-rsa>build-key client(№ следующего пользователя)
     
     
     
     

    4.30.3.2. Настройка серверной части OpenVPN
     
     - Установить продукт OpenVPN на сервер с прилагаемого дистрибутива. Установку следует произвести в папку "C:\OpenVPN", а не в "C:\Program Files\OpenVPN", предлагаемую по-умолчанию.
     - Поместить в папку "C:\Program Files\OpenVPN\Config" конфигурационный файл server.ovpn.
     
    пример server.ovpn
    #############################################
    port 1194
    proto tcp-server
     
    dev tap
    dev-node Tap0
     
    mode server
     
    tls-server
     
    dh c:\\keys\\dh1024.pem
    ca c:\\keys\\ca.crt
    cert c:\\keys\\Server.crt
    key c:\\keys\\Server.key
     

    #ip server
    ifconfig 10.7.41.200 255.255.255.0
     
    route-method exe
    route 10.7.41.0 255.255.255.0 10.7.41.200
     
    #server 10.7.41.200 255.255.255.252
     

    ifconfig-pool 10.7.41.1 10.7.41.150 255.255.255.0
    ifconfig-pool-persist clientip.txt 60
     
    # Немного улучшит пинг
    # mssfix
    # Время жизни клиентов, если не откликнулся — отключает
    keepalive 10 120
     
    persist-key
    client-to-client
     
    status openvpn-status.log
    verb 3
    ###############################################
     
     - Поместить в папку c:\keys\ файлы:
    ca.crt
    ca.key
    dh1024.pem
    Server.crt
    Server.key
     
     - Запустить службу OpenVPN Service
     
     

    4.30.3.3. Настройка клиентской части OpenVPN
     Как и на сервере, следует установить продукт OpenVPN на с дистрибутива. Установку следует произвести в папку "C:\OpenVPN", а не в "C:\Program Files\OpenVPN", предлагаемую по-умолчанию.
     
     - Поместить в папку "C:\Program Files\OpenVPN\Config" конфигурационный файл client.ovpn.
     
    пример client.ovpn
    #############################################
    #выделенный ip-адрес сервера
    remote XXX.XXX.XXX.XXX
    #Server port
    port 1194
    proto tcp-client
    dev tap
    tls-client
    keepalive 10 40
    # ip-адрес клиента, например 10.7.41.10
    ifconfig 10.7.41.10 255.255.255.0
    ca c:\\keys\\ca.crt
    cert c:\\keys\\client10.crt
    key c:\\keys\\client10.key
    ###############################################
     
     - Поместить в папку c:\keys\ файлы:
    ca.crt
    dh1024.pem
    client10.crt
    client10.key
     
     - Запустить службу OpenVPN Service
     

    4.50. Часто задаваемые вопросы по конфигурированию

    4.51.1. Интернет-сайт - общие положения
    Программное обеспечение движка интернет-сайта системы Инфополис написано на платформе ASP.NET и взаимодействует с базой данных учетной системы используя хранимые процедуры сервера в схеме "web".
    Для работы интернет-сайта на сервере, где расположена БД, должен быть установлен IIS и платформа .NET версии 4.0.
    Следует также убедиться, что на данном сервере разрешены расширения ISAPI и CGI для ASP.NET v4.0:
    Диспетчер служб ISS -> ВашСервер -> Features View -> ISAPI and CGI Restrictions

    4.51.2. Конфигурирование IIS
    При создании нового сайта следует определиться с именем, которое будет присвоено пулу приложения и папке, где будут располагаться файлы сайта. Строго требования для соответствия имен нет, но для удобства работы желательно, чтобы имя сайта имена пула и папки ассоциировались. Например, сайт будет иметь имя www.infopolis.com.ua. Выберем для папки и пула имя infopolis.
     После этого можно приступать к непосредственно настройке сайта (на примере сайта www.infopolis.com.ua):
     
    1. С помощью Диспетчера служб IIS создать пул приложения с именем infopolis. В настройках пула приложения указать версию среды .NET - 4.0, Режим конвеера - Классический.
    2. Создать папку ..\inetpub\wwwroot\infopolis и скопировать в нее файлы сайта (можно скопировать папку рабочего сайта).
    3. В папке ..\inetpub\wwwroot\infopolis найти файл web.config и открыть его на редактирование. Найти раздел <connectionStrings> и настроить нужным образом параметры подключения к БД. Найти раздел <mailSettings> и настроить нужным образом параметры подключения к почтовому серверу (серверу, через который сайт будет осуществлять отправку почты для осуществления механизма "обратной связи" посетителей сайта с администрацией сайта).
    4. На папку ..\inetpub\wwwroot\infopolis\Portals дать полные права пользователю IIS_IUSRS.
    5. С помощью Среды SQL Management Studio в базе данных, являющейся хранилищем данных сайта, отредактировать содержимое таблицы web.PortalAlias, указав с каким URL будет ассоциирован какой портал сайта. 
       Подробнее о порталах. В одной БД может храниться несколько сайтов (точнее, нескольких макетов). Соответственно, в папке Portals может находится насколько папок с макетами страниц сайта. Эти папки именуются соответственно номерам порталов, указанных в поле PortalID таблицы web.PortalAlias (\Portals\0, \Portals\1 и т.д.). В поле HTTPAlias указывается URL с которым ассоциирован каждый портал. Может быть указано несколько URL для каждого портала. Если файлы макетов нашего сайта расположены в папке \Portals\0, то в таблице web.PortalAlias должна присутствовать следующая запись:
    PortalID    HTTPAlias
           0    www.infopolis.com.ua
     
    6. С помощью Диспетчера служб IIS создать новый Веб-узел, указав созданный ранее пул приложений (infopolis) и папку физического размещения (..\inetpub\wwwroot\infopolis)
    7. В файле hosts указать соответствие URL сайта ip-адресу сервера во внутренней сети.
    8. Проверить работоспособность сайта введя его URL в строку браузера на сервере или средствами Диспетчера служб IIS.

    4.51.3. Настройка макетов страниц
    Настройка внешнего вида главного меню.
     
    Внешний вид главного меню определяется в таблице стилей
    ..\App_Themes\Base\main.css
    Используются фоновые изображения элементов меню:
    ..\App_Themes\Base\nav-a-bg-l.gif
    ..\App_Themes\Base\nav-a-bg-r.gif
    ..\App_Themes\Base\nav-bg.gif

    4.51.4. Добавление администраторского логина
    DECLARE @RC int
    ,@ApplicationName nvarchar(256)
    , @UserName nvarchar(256)
    , @Password nvarchar(128)
    , @PasswordSalt nvarchar(128)
    , @Email nvarchar(256)
    , @PasswordQuestion nvarchar(256)
    , @PasswordAnswer nvarchar(128)
    , @IsApproved bit
    , @CurrentTimeUtc datetime
    , @CreateDate datetime
    , @UniqueEmail int
    , @PasswordFormat int
    , @UserId uniqueidentifier
     
    select @ApplicationName ='do-it-yourself'
    , @UserName ='new_Admin_Name'
    , @Password ='******'
    , @PasswordSalt =''
    , @Email =''
    , @PasswordQuestion =''
    , @PasswordAnswer =''
    , @IsApproved =1
    , @CurrentTimeUtc=GETDATE()
    , @CreateDate =GETDATE()
    , @UniqueEmail =0
    , @PasswordFormat=0
     

    EXECUTE @RC = [dbo].[aspnet_Membership_CreateUser]
       @ApplicationName
      ,@UserName
      ,@Password
      ,@PasswordSalt
      ,@Email
      ,@PasswordQuestion
      ,@PasswordAnswer
      ,@IsApproved
      ,@CurrentTimeUtc
      ,@CreateDate
      ,@UniqueEmail
      ,@PasswordFormat
      ,@UserId OUTPUT
     
    --select * from web.[user]
     
    declare
    @NEW_USER_ID int
     
    select @NEW_USER_ID = 1+MAX(userid) from web.[user]
     
    set identity_insert web.[user] on
    insert web.[user] (UserID
    ,Username
    ,FirstName
    ,LastName
    ,IsSuperUser
    ,Email
    ,DisplayName
    ,UpdatePassword)
    values (@NEW_USER_ID,@UserName,@UserName,@UserName,0,'',@UserName,0)
    set identity_insert web.[user] off
     
    insert web.UserRole (
    UserID
    ,RoleID
    ) values (@NEW_USER_ID,0)
    insert web.UserRole (
    UserID
    ,RoleID
    ) values (@NEW_USER_ID,1)
     
    insert web.UserPortal (
    UserID
    ,PortalID
    ) values (@NEW_USER_ID,0)

    4.51.5. Удаление логина
    delete from aspnet_Membership where userid='EEF3634B-76F0-4C74-AA9D-C02902FF73FF'
    delete from aspnet_Users where userid='EEF3634B-76F0-4C74-AA9D-C02902FF73FF'
    delete from web.[User] where Username='admin'

    4.52. Перенос логинов пользователей
    Перенос логинов пользователей с одного сервера на другой.
    Данный скрипт выполняется на сервере с которого нужно скопировать логины. Результатом его работы является скрипт, который будучи запущеным на другом сервере, создаст там логины пользователей и назначит им пароли, как на первом сервере.
     
    -- Начало скрипта
    USE master
    GO
    IF OBJECT_ID ('sp_hexadecimal') IS NOT NULL
      DROP PROCEDURE sp_hexadecimal
    GO
    CREATE PROCEDURE sp_hexadecimal
        @binvalue varbinary(256),
        @hexvalue varchar (514) OUTPUT
    AS
    DECLARE @charvalue varchar (514)
    DECLARE @i int
    DECLARE @length int
    DECLARE @hexstring char(16)
    SELECT @charvalue = '0x'
    SELECT @i = 1
    SELECT @length = DATALENGTH (@binvalue)
    SELECT @hexstring = '0123456789ABCDEF'
    WHILE (@i <= @length)
    BEGIN
      DECLARE @tempint int
      DECLARE @firstint int
      DECLARE @secondint int
      SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1))
      SELECT @firstint = FLOOR(@tempint/16)
      SELECT @secondint = @tempint - (@firstint*16)
      SELECT @charvalue = @charvalue +
        SUBSTRING(@hexstring, @firstint+1, 1) +
        SUBSTRING(@hexstring, @secondint+1, 1)
      SELECT @i = @i + 1
    END
     
    SELECT @hexvalue = @charvalue
    GO
     
    IF OBJECT_ID ('sp_help_revlogin') IS NOT NULL
      DROP PROCEDURE sp_help_revlogin
    GO
    CREATE PROCEDURE sp_help_revlogin @login_name sysname = NULL AS
    DECLARE @name sysname
    DECLARE @type varchar (1)
    DECLARE @hasaccess int
    DECLARE @denylogin int
    DECLARE @is_disabled int
    DECLARE @PWD_varbinary  varbinary (256)
    DECLARE @PWD_string  varchar (514)
    DECLARE @SID_varbinary varbinary (85)
    DECLARE @SID_string varchar (514)
    DECLARE @tmpstr  varchar (1024)
    DECLARE @is_policy_checked varchar (3)
    DECLARE @is_expiration_checked varchar (3)
     
    DECLARE @defaultdb sysname
     
    IF (@login_name IS NULL)
      DECLARE login_curs CURSOR FOR
     
          SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM
    sys.server_principals p LEFT JOIN sys.syslogins l
          ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name <> 'sa'
    ELSE
      DECLARE login_curs CURSOR FOR
     

          SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM
    sys.server_principals p LEFT JOIN sys.syslogins l
          ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name = @login_name
    OPEN login_curs
     
    FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin
    IF (@@fetch_status = -1)
    BEGIN
      PRINT 'No login(s) found.'
      CLOSE login_curs
      DEALLOCATE login_curs
      RETURN -1
    END
    SET @tmpstr = '/* sp_help_revlogin script '
    PRINT @tmpstr
    SET @tmpstr = '** Generated ' + CONVERT (varchar, GETDATE()) + ' on ' + @@SERVERNAME + ' */'
    PRINT @tmpstr
    PRINT ''
    WHILE (@@fetch_status <> -1)
    BEGIN
      IF (@@fetch_status <> -2)
      BEGIN
        PRINT ''
        SET @tmpstr = '-- Login: ' + @name
        PRINT @tmpstr
        IF (@type IN ( 'G', 'U'))
        BEGIN -- NT authenticated account/group
     
          SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' FROM WINDOWS WITH DEFAULT_DATABASE = [' + @defaultdb + ']'
        END
        ELSE BEGIN -- SQL Server authentication
            -- obtain password and sid
                SET @PWD_varbinary = CAST( LOGINPROPERTY( @name, 'PasswordHash' ) AS varbinary (256) )
            EXEC sp_hexadecimal @PWD_varbinary, @PWD_string OUT
            EXEC sp_hexadecimal @SID_varbinary,@SID_string OUT
     
            -- obtain password policy state
            SELECT @is_policy_checked = CASE is_policy_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END FROM sys.sql_logins WHERE name = @name
            SELECT @is_expiration_checked = CASE is_expiration_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END FROM sys.sql_logins WHERE name = @name
     
                SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' WITH PASSWORD = ' + @PWD_string + ' HASHED, SID = ' + @SID_string + ', DEFAULT_DATABASE = [' + @defaultdb + ']'
     
            IF ( @is_policy_checked IS NOT NULL )
            BEGIN
              SET @tmpstr = @tmpstr + ', CHECK_POLICY = ' + @is_policy_checked
            END
            IF ( @is_expiration_checked IS NOT NULL )
            BEGIN
              SET @tmpstr = @tmpstr + ', CHECK_EXPIRATION = ' + @is_expiration_checked
            END
        END
        IF (@denylogin = 1)
        BEGIN -- login is denied access
          SET @tmpstr = @tmpstr + '; DENY CONNECT SQL TO ' + QUOTENAME( @name )
        END
        ELSE IF (@hasaccess = 0)
        BEGIN -- login exists but does not have access
          SET @tmpstr = @tmpstr + '; REVOKE CONNECT SQL TO ' + QUOTENAME( @name )
        END
        IF (@is_disabled = 1)
        BEGIN -- login is disabled
          SET @tmpstr = @tmpstr + '; ALTER LOGIN ' + QUOTENAME( @name ) + ' DISABLE'
        END
        PRINT @tmpstr
      END
     
      FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin
       END
    CLOSE login_curs
    DEALLOCATE login_curs
    RETURN 0
    GO
     
    EXEC sp_help_revlogin
    GO
     
    -- Конец скрипта