Difference between revisions of "Установка проекта Розница"

From SunFlurry wiki
Jump to: navigation, search
(Начальная настройка базы данных торговой точки)
m (1 revision imported)
(No difference)

Revision as of 10:28, 4 April 2022

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

Программа установки

Для выполнения установки Вам потребуются административные права (для регистрации сервера в сервисах операционной системы и копирования файлов в папки, защищенные для копирования для обычных пользователей). Проект можно устанавливать на операционные системы Windows, начиная с Windows XP и позже, либо серверные операционные системы Microsoft (Windows 2000 может также быть использована, но работоспособность на ней не проверялась длительное время). Требования к оборудованию: практически любой процессор (с Celeron 1.8Ггц и даже более младшие версии), для небольших торговых точек -- дополнительная память не требуется, для больших базы данных может возникнуть необходимость в использовании 2Гб памяти (для систем Windows 7 и ниже) и 4Гб памяти (для систем Windows 8, 10 и выше).

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

Далее диалог позволяет выбрать место на диске, куда будет происходить установка. В рабочих условиях, возможно, более удобно и правильно производить установку в папку SunFlurry непосредственно на диске C:, а не в подчиненную папку папки "Program Files", где базу данных будет сложнее найти и файлы резервного копирования могут быть забыты. Для удобства описания, примем, однако, что установка была выполнена по умолчанию и произведена в папку C:\Program Files (x86)\SunFlurry. Диалог также позволяет выбрать, какие из компонентов подлежат установке (см. рис. 1).

После окончания установки на рабочем столе появится иконка клиента "SunFlurry Розница", программы для работы оператора, и, если Вы также устанавливали Студию, иконка "SunFlurry Studio". Для дальнейшей настройки, запустите программу-клиента с помощью ярлыка "SunFlurry Розница" (создание структуры базы данных, которое будет происходить сразу после установки, может занять несколько секунд, поэтому, если клиент не запускается по причине недоступности сервера, подождите минуту и попробуйте снова). В диалоге регистрации пользователя для начала работы необходимо ввести имя учетной записи и пароль администратора локального компьютера (пользователя, входящего в группу "Администраторы"). Это предоставит Вам полные права в программе, и с помощью этих прав можно будет настроить учетные записи других пользователей, если в этом есть необходимость.

Начальная настройка базы данных торговой точки

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

На экран будет выведен мастер начального заполнения, состоящий из 6 шагов. Для основных справочников (номенклатура, контрагенты) мастер создает только папки, другие важные справочники (план счетов и виды субконто бухгалтерского учета) будут заполнены полностью. На шаге 2 мастер дает возможность загрузить справочник городов и улиц (KLADR) Вашего региона. Это рекомендуется сделать даже если Вы просто тестируете возможности программы, так как это позволит удобно заполнять адреса юридических лиц. Для загрузки KLADR Вам необходимы два файла KLADR.DBF и STREET.DBF, которые можно скачать бесплатно с государственных сайтов в Интернет.

Для тестирования возможностей программы, а также для обычной установки торговой точки, рекомендуется оставить все поля мастера без изменения по умолчанию. На шаге 4 будет предложено ввести идентификатор процедуры резервного копирования, однако настройке по умолчанию, резервное копирование выполняется по расписанию, заданному в файле инициализации сервера, поэтому, это поле необходимо оставить пустым. Пункт 5 требует дополнительного ввода информации (см. рис. 3). Если торговая точка не будет торговать алкогольной продукцией, поля "код точки ЕГАИС" и "Адрес сервера ЕГАИС" можно не заполнять

Добавление и настройка драйверов устройств

Чтобы торговая точка заработала, необходимо выбрать и настроить драйверы оборудования. Для этого в главном меню "Справочники" выберите пункт "Магазины". В открывшемся окне есть только одна запись -- магазин, который был создан в момент начального заполнения базы данных. Для настройки драйверов необходимо открыть форму этой записи. Внешний вид элемента справочника магазины показан на рис. 4.

Для добавления оборудования необходимо использовать кнопку "Оборудование". Обычно для магазина требуется добавить и настроить нужный драйвер кассового терминала (ККМ). Вид настроек зависит от определенного драйвера и может представлять собой редактирование текстового файла или визуальную форму с настройками. После настройки оборудования, оно добавляется в рабочее место кассира или администратора. Рабочие места заданы на закладке "Рабочие места" элемента магазина, в каждое из рабочих мест можно добавить любые настроенные драйверы, однако, нужно понимать, что для правильной работы с кассой, в одном рабочем месте может быть выбран только один драйвер ККМ. Рабочие места должны быть ассоциированы с учетной записью -- пользователем. С первым пользователем, под которым был выполнен вход в программу, ассоциируется рабочее место "Администратор". Для настройки выбора рабочего места для текущего пользователя используйте кнопку "Установки пользователя" на панели с иконками под главным меню.

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

Минимальный комплект драйверов, требуемых для работы программы в режиме кассового терминала, это драйвер ККТ (по умолчанию это виртуальный ККТ, который необходимо удалить из рабочего места для работы с реальными продажами) и драйвер сканера штрихкодов. Также необходимо заполнить адрес УМТ ЕГАИС (обычно 127.0.0.1:8080) и код точки ЕГАИС, если будут происходить продажи алкоголя. После настройки требуемых драйверов и добавления их в рабочее место пользователя для того, чтобы настроенные драйвера были загружены в память без выхода из программы, необходимо выполнить переподключение драйверов в форме "установки пользователя". После того, как драйверы настроены и загружены, можно заходить в форму рабочего места продавца (либо значок монеты на панели инструментов, либо "Отделы учета" - "Розница" - "Рабочее место продавца" в главном меню), открыть смену и начинать продажи.

Для настройки процедуры резервного копирования, Вы можете отредактировать файл sfsrv.ini, который при установке по умолчанию, находится в папке C:\Program Files (x86)\SunFlurry\Server. Содержимое этого файла рекомендуется изменять только техническим специалистам. Для более подробного описания, обратитесь к статье Установки сервера.

Пример программного заполнения справочника Номенклатура

При создании информационной базы одна из основных задач состоит в заполнении справочника номенклатуры продаваемыми товарами. Рассмотрим вариант заполнения справочника из текстового файла. Этот код можно использовать для создания своей версии загрузки номенклатуры из других источников (xls, xml, txt и пр.). Кусок кода, представленный здесь, можно запустить на закладке "Вычисление и исполнение" панели управления (административной панели) в рабочей программе (чтобы открыть панель управления, используйте пункт главного меню "Общие", "Административная панель").


  //Локальная функция установки цены, используется ниже по тексту
  Function ЛокУстановитьЦену(зН,ТипЦен,Цена,Магазин,ФлПродажнаяЦена)
    Дата:=BegOfDay(Date());

    Ц:=Ref.цЦены;
    Фл:=0;
    If Ц.Find("@Parent,ТипЦен",зН,ТипЦен) Then
      If Ц.Status()=1 Then
        Ц.Mark(0);
      EndIf;
    Else
      Ц.New();
      Ц.Parent(зН);
      Ц.ТипЦен:=ТипЦен;
      Ц.Save();
    EndIf;
    Ц.SetValue("Цена",Цена,Дата);

    //Кроме установки самой цены, создадим запись о том, что ценник для этой цены уже был распечатан
    //Если этого не сделать, необходимо будет хотя бы один раз распечатать ценники, чтобы новые цены начали работать
    If ФлПродажнаяЦена Then
      пЦ:=Ref.цПечатьЦенников;
      If пЦ.Find("@Parent,Магазин",зН,Магазин)=0 Then
        //Создаем
        пЦ.New();
        пЦ.Parent(зН);
        пЦ.Магазин:=Магазин;
        пЦ.ДатаПечати:=Дата;
        пЦ.ОбщаяСкидка:=0;
        пЦ.Save();
      ElseIf _Or(пЦ.ОбщаяСкидка<>0,isEmpty(пЦ.ДатаПечати),пЦ.ДатаПечати<Дата) Then
        пЦ.ДатаПечати:=Дата;
        пЦ.ОбщаяСкидка:=0;
        пЦ.Save();
      EndIf;
    EndIf;
  EndFunction

//Выбрать файл для загрузки
Файл:="";
If Not OpenFileDialog(Имя,"Выберите файл для загрузки:","Файлы txt (*.txt)|*.txt",0) Then
  Exit;
EndIf;
//Загрузить файл в объект Text
Т:=Text.Create(1);
Т.Load(Файл);

//Найдем по коду корневую папку, в которой будем создавать всю стрктуру папок
аКорневаяПапка:=DB("Ref.тмцНоменклатура","Code","000000000001");

//Найдем магазин, для которого происходит загрузка (требуется для создания цен)
аМагазин:=DB("Ref.рознМагазины","Code","000000000001");

//Единицы измерения (для упрощения примера)
аЕдиницаШт:=DB("Ref.тмцЕдиницыИзмерения","Name","шт");
аЕдиницаКг:=DB("Ref.тмцЕдиницыИзмерения","Name","кг");

//Цикл для каждой строки файла
For i:=1 To Т.Size() Do
  //Допустим, элементы строки разделены знаками табуляции (_TAB)
  //Допустим, файл также содержит папки товаров
  //Допустим, в файле есть внешние коды (артикли), с помощью которых мы можем найти, что уже было загружено, если загрузка была прервана

  //Получить текущую строку файла
  Стр:=Т.GetLine(i);
  СтрНаименование:=TearStr(Стр,_TAB);
  СтрАртикль:=TearStr(Стр,_TAB);
  СтрАртикльПапки:=TearStr(Стр,_TAB);
  ФлЭтоПапка:=Number(TearStr(Стр,_TAB));
  //Предусмотрим случай, когда для отделения дробной части используется запятая
  ЧлЦенаЗакупки:=Number(Replace(TearStr(Стр,_TAB),",","."));
  ЧлЦенаПродажи:=Number(Replace(TearStr(Стр,_TAB),",","."));
  ...

  //Если это новый элемент, создадим его, иначе найдем
  аН:=Ref.тмцНоменклатура;
  If Not аН.Find("ВнешнийТекстовыйКод",СтрАртикль) Then
    аН.New(ФлЭтоПапка);
    аН.СтрАртикль:=ВнешнийТекстовыйКод;
    аН.Save();
  ElseIf Not IsEmpty(аН.Name) Then
    //Пропускаем уже загруженный ранее элемент
    Continue;
  EndIf;

  //Помещаем элемент в нужную папку
  аПапка:=Ref.тмцНоменклатура;
  If IsEmpty(СтрАртикльПапки) Then
    аПапка:=аКорневаяПапка;
  ElseIf Not аПапка.Find("ВнешнийТекстовыйКод",СтрАртикльПапки) Then
    аПапка:=аКорневаяПапка;   
  EndIf;
  аН.Folder(аПапка);

  //Заполним наименование
  аН.Name:=СтрНаименование;
  //Если это папка, остальные реквизиты не будут нужны
  If аН.IsFolder() Then
    аН.Save();
    Continue;    
  EndIf;

  //Заполняем основные свойства товара
  аН.ВидНоменклатуры:=Enum.ВидыНоменклатуры.Товар;
  аН.СтавкаНДС:=?(ЧлСтавкаНДС=10,Enum.СтавкиНДС.НДС10,Enum.СтавкиНДС.НДС20);
  аН.ОбъемЛитров:=ЧлОбъем;
  аН.базМассаНетто:=ЧлМасса;
  //Обычно задана для табачных изделий
  аН.ЦенаМаксимальнаяПродажная:=ЧлЦенаМаксимальнаяПродажная;
  //Обычно задана для некоторых видов алкоголя
  аН.ЦенаМинимальнаяПродажная:=ЧлЦенаМинимальнаяПродажная;

  //Единицы
  аН.флВесовойТовар:=ЧлВесовойТовар;
  If аН.флВесовойТовар Then
    аН.базЕдиница:=аЕдиницаКг;
  Else
    аН.базЕдиница:=аЕдиницаШт;
  EndIf;
  аН.оснЕдиница:=аН.базЕдиница;
  аН.оснКоэффициент:=1;

  //ЕГАИС и пр.
  аН.флАлкогольнаяПродукция:=ЧлАлкогольнаяПродукция;
  аН.флПодлежитПрослеживаемости:=ЧлПодлежитПрослеживаемости;
  If ЧлАлкогольнаяПродукция Then
    аН.ЕГАИСКодАП:=ЧлКодАП;
    аН.флПартионныйУчет:=1;

    //Создадим или найдем элемент справочника тмцПартииТМЦ: аПартия
    //Здесь код опущен для улучшения читаемости
    ...

    аПартия.ЕГАИСКодАП:=ЧлКодАП;
    аПартия.ЕГАИСКодНоменклатуры:=..;
    аПартия.ЕГАИСКодПроизводителя:=..;
    аПартия.ЕГАИСКодСправок:=..;
    аПартия.Производитель:=..;
    аПартия.флМарочныйУчет:=..;
    аПартия.флИмпортнаяПродукция:=..;
    аПартия.флБезУпаковки:=..;
    ...
    аПартия.Save();    
  EndIf;
  If аН.флПодлежитПрослеживаемости Then
    аН.ГИСМТТоварнаяГруппа:=..;
  EndIf;


  //Установка закупочной и продажной цен
  ЛокУстановитьЦену(аН,аМагазин.ТипЦенПоступления,ЧлЦенаЗакупки,аМагазин);
  ЛокУстановитьЦену(аН,аМагазин.ТипЦенРеализации,ЧлЦенаПродажи,аМагазин,1);   

  //Сохраним все изменения в товаре
  аН.Save();
EndDo;