АИС "Работа с покупателями"

ФункцияглВернутьЦену(Номенклатура,ТипЦены,ДатаЦены=0,ЦенаЦены=0,ЕдЦены=0,ВалЦены=0,НаценкаЦены=0,НайденнаяЦена=0,НеДобавИздержки=0)ЭкспортДалее ФункцияGlVozrOst(кд_ном)ЭкспортДалее ФункцияGlVozrCeni()ЭкспортДалее ФункцияGlVozrNom()ЭкспортДалее //############################################################################### //БлокдляработысинтернетмагазиномчерезWebслужбу //******************************************************************* //Функциявозвращаетпараметрпоимениизфайлаnastr.txtрабочегокаталога //Форматфайла: //строкиначинающиесяс#-коментарии //имяпараметразадаётсякак[имя],азначениележитнастрочкувнизу ФункцияПарамПоИмени(пар) ПеремномСтрок; Перемстр; Ткст=СоздатьОбъект("Текст"); Ткст.КодоваяСтраница(0); Ткст.Открыть(КаталогИБ()+"nastr.txt"); номСтрок=1; ПоканомСтрок<=Ткст.КоличествоСтрок()Цикл стр=Ткст.ПолучитьСтроку(номСтрок); //удаляемпробелывначалеиконцестроки СокрЛП(стр); ЕслистрДлина(стр)>0Тогда //Есликоментарий,топропускаем ЕслиЛев(стр,1)="#"Тогда номСтрок=номСтрок+1; Продолжить; КонецЕсли; //Есликакойтопараметр,тогда ЕслиЛев(стр,1)="["Тогда стр=лев(стр,стрДлина(стр)-1); стр=прав(стр,стрДлина(стр)-1); //Еслиэтотпараметр-искомый Еслистр=парТогда ВозвратСокрЛП(Ткст.ПолучитьСтроку(номСтрок+1)); КонецЕсли; КонецЕсли; КонецЕсли; номСтрок=номСтрок+1; КонецЦикла; Возврат"0";//Еслиничегоненашли-возвращаетноль КонецФункции //****************************************************************** //Функциявозвращаетколичествотоварапоегокоду,преднозначенадлявыводачерезWebслужбу ФункцияGlVozrOst(кд_ном)Экспорт ПеремОст; Ном=создатьОбъект("Справочник.Номенклатура"); Склд=СоздатьОбъект("Справочник.Склады"); Регр=СоздатьОбъект("Регистр.ОстаткиТМЦ"); Склд.НайтиПоКоду("00001"); Ном.НайтиПоКоду(кд_ном); Ост=0; Ост=Регр.СводныйОстаток(,ном.ТекущийЭлемент(),Склд.ТекущийЭлемент(),,"Количество"); ВозвратОст; КонецФункции //******************************************************************* //Функциявозвращаеттаблицузначений-номенклатурускодомиеёпараметры ФункцияGlVozrNom()Экспорт ПеремОст,ТабЗн; ПеремКатВыгр; Запрос=СоздатьОбъект("Запрос"); ТекстЗапроса= "//{{ЗАПРОС(Номенклатура) |Ном=Справочник.Номенклатура.ТекущийЭлемент; |ГруппировкаНом;"//}}ЗАПРОС ; ЕслиЗапрос.Выполнить(ТекстЗапроса)=0Тогда Предупреждение("Ошибкавзапросе"); КонецЕсли; КатВыгр=ПарамПоИмени("КаталогВыгр")+ПарамПоИмени("Ном"); ДБФ=СоздатьОбъект("XBase"); ДБФ.ДобавитьПоле("EtoGruppa",1,1,0); ДБФ.ДобавитьПоле("KodNom",2,9,0); ДБФ.ДобавитьПоле("Otec",2,9,0); ДБФ.ДобавитьПоле("Strana",2,20,0); ДБФ.ДобавитьПоле("Naimenov",2,250,0); ДБФ.СоздатьФайл(КатВыгр+"nomen.dbf"); ДБФ.КодоваяСтраница(1); Запрос.ВНачалоВыборки(); ПокаЗапрос.Группировка(1)=1Цикл ДБФ.Добавить(); ДБФ.KodNom=Запрос.Ном.Код; ДБФ.Otec=Запрос.Ном.Родитель.Код; ДБФ.Strana=Запрос.Ном.СтранаПроисхождения.Наименование;; ДБФ.Naimenov=Запрос.Ном.Наименование; ДБФ.EtoGruppa=Запрос.ЭтоГруппа(1); ДБФ.Записать(); КонецЦикла; Возврат1; КонецФункции //******************************************************************* //Возвращаетценупоуказаннымпарметрам-используетсявзапросевнизу ФункцияВозрНомерПрайса(Кд)Экспорт ЕслиКд="00002"Тогда Возврат1; ИначеЕслиКд="00003"Тогда Возврат2; ИначеЕслиКд="00004"Тогда Возврат3; ИначеЕслиКд="00005"Тогда Возврат4; ИначеЕслиКд="00006"Тогда Возврат5; ИначеЕслиКд="00007"Тогда Возврат6; ИначеЕслиКд="00001"Тогда Возврат0; Иначе Возврат33;//Еслиошибка.0нельзя,т.к.вдругэтоунасболеенизкие КонецЕсли; КонецФункции //******************************************************************* //Функциявозвращаетценынаноменклатуруиномерпрайса ФункцияGlVozrCeni()Экспорт ПеремОст,ТабЗн; ПеремКатВыгр; ПеремизПроц; Запрос=СоздатьОбъект("Запрос"); ТекстЗапроса= "//{{ЗАПРОС(Цены) |Номенклатура=Справочник.Цены.Владелец; |ТипКод=Справочник.Цены.ТипЦен.Код; |Тип=Справочник.Цены.ТипЦен; |Цен=Справочник.Цены.ТекущийЭлемент; |ГруппировкаЦен; |"//}}ЗАПРОС ; ЕслиЗапрос.Выполнить(ТекстЗапроса)=0Тогда Предупреждение("Ошибкавзапросе"); КонецЕсли; КатВыгр=ПарамПоИмени("КаталогВыгр")+ПарамПоИмени("Цен"); ДБФ=СоздатьОбъект("XBase"); ДБФ.ДобавитьПоле("Cena",1,8,2); ДБФ.ДобавитьПоле("Nomen",2,9,0); ДБФ.ДобавитьПоле("Prajs",1,2,0); ДБФ.СоздатьФайл(КатВыгр+"Ceni.dbf"); ДБФ.КодоваяСтраница(1); Запрос.ВНачалоВыборки(); ПокаЗапрос.Группировка(1)=1Цикл Если(Запрос.ТипКод<>"00010")Тогда ДБФ.Добавить(); глВернутьЦену(Запрос.Номенклатура,Запрос.Тип,,изПроц,,,,0); ДБФ.Cena=изПроц; ДБФ.Nomen=Запрос.Номенклатура.Код; ДБФ.Prajs=ВозрНомерПрайса(Запрос.ТипКод); ДБФ.Записать(); КонецЕсли; КонецЦикла; Возврат1; КонецФункции //******************************************************************* //Функциявозвращаетостаткиноменклатуры ФункцияGlVozrOstatki()Экспорт ПеремкатВыгр,дат; Перемск; ОСТ=СоздатьОбъект("XBase"); ОСТ.ДобавитьПоле("Kod",2,9,0); ОСТ.ДобавитьПоле("Ostatok",1,5,0); катВыгр=ПарамПоИмени("КаталогВыгр")+ПарамПоИмени("Ост"); ОСТ.СоздатьФайл(катВыгр+"ost.dbf");

АИС Работа с покупателями

Реферат

Компьютеры, программирование

Другие рефераты по предмету

Компьютеры, программирование

Сдать работу со 100% гаранией
отоколирование всех действий в таблицу _Statistika,
  • Схема авторизации пользователей.
  •  

    2.4.2 Функциональное назначение страниц

    1. Default.aspx. Стартовая страница приложения. Данная страница представлена на рисунке в следующем подразделе. На неё возложены такие функции: отображение информации о предприятии, авторизация пользователя, заказ товара,
    2. Men.aspx. Страница для менеджеров. На данной странице осуществляется авторизация менеджеров, запускается процедура переноса данных с 1С через WEB службу в MS SQL Server, выгрузка остатков с удалённых магазинов, переход к административным страницам «Zakazi.aspx», «Statistika.aspx», «Polzovateli.aspx»,
    3. Zakazi.aspx. Административная страница. Служит для просмотра всех заказов, их детального просмотра и изменения статуса выбранного заказа,
    4. Statistika.aspx. Административная страница для просмотра статистики по использованию сайта,
    5. Polzovateli.aspx. Административная страница для редактирования списка пользователей, добавления новых пользователей и получения статистики по выбранному пользователю,
    6. Skolko.aspx. Задание количества выбранного товара в заказе при его формировании на странице «default.aspx»,
    7. ShemaProezda.aspx. Информация о торговых точках компании. Схема проезда, график работы, телефоны, адреса,
    8. Kontakt.aspx. Отправка текстового сообщение на электронный адрес выбранному должностному лицу. Не модерируется. Отправка происходит мгновенно,
    9. Prajs.aspx. С этой страницы происходит запуск формирования прайс листа в формате xls и передача полученного файла пользователю через диалоговое окно «Сохранить Как…»,
    10. Zakaz.aspx. Просмотр формируемого заказа пользователем, его редактирование и подтверждение.

    В программе использовались «пользовательские элементы управления». Под этим понятием подразумевается динамически включаемый код из файла с расширением «ascx». Я использовал два подобных элемента. В какие страницы они включаются показано на рисунке 6. Данные объекты написаны на языке JavaScript. Код для объекта «derevo.ascx» позаимствован из [11] и доработан до нужного результата.

    3 ИНФОРМАЦИОННОЕ ОБЕСПЕЧЕНИЕ ПРИЛОЖЕНИЯ

     

    3.1 Общие принципы организации информационной базы

    Все данные централизованно хранятся на сервере 1С. С сервера 1С поступают на удалённые торговые точки накладные, а на Web сервер поступают данные по ассортименту, остаткам и текущим ценам. С удалённых магазинов регулярно снимаются остатки, которые идут в базу данных Web сервера.

     

    3.2 Передача данных удалённым точкам

    Передача данных описана в разделе 2.2.

    Передаются документы «Реализация», в том числе:

    1. наименование номенклатурной позиции,
    2. количество переданного товара,
    3. страна производитель,
    4. единицы учёта,
    5. цена отпускная,
    6. цена закупочная.

     

    3.3 Ведение БД на WEB сервере с использованием SQL Server 2000

    Концептуальная модель базы данных SQL Server показана на рисунке 7.

    Рисунок 7 Концептуальная модель базы данных на стороне WEB сервера (SQL Server).

     

    Заполнение данной БД происходит посредством хранимых процедур, код некоторых из них приведён в приложении Г. В этом же приложение можно посмотреть пример выполнения SQL кода, формируемого в ASP.NET.

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

    Таблицы БД. Их содержание и назначение:

    Таблица 2 список протоколируемых действий

    ПолеТипНазначениеKodDejstvIntАвтоинкрементное ключевое полеDejstvieC(100)Действие

    Таблица 3 ведение статистики по действиям пользователей в системе

    ПолеТипНазначениеKodStatIntАвтоинкрементное ключевое полеDejstvIntСвязь с таблицей _StoDelDataDateДата и время действияPolzovatelintСсылка на таблицу _Polzovateli. (Если пользователь авторизирован)

    Таблица 4 список продаваемых товаров

    ПолеТипНазначениеKodNomС(9)Ключевое полеOtecC(9)Родитель (для построения дерева)NaimenovIntПолное наименованиеStranaC(120)Страна производительMinPartijaintМинимальное количество покупки для оптовикаPhotoC(200)Путь к фотографии товараOpisanieC(600)Описание товараEtoGruppasmallIntПозиция является группой

    Таблица 5 цены на товары

    ПолеТипНазначениеKodCeniIntАвтоинкрементное полеCenamoneyЦена в рубляхNomenС(9)Ссылка на _NomenklaturaNomerPrajsasmallintНомер прайса

    Таблица 6 остатки товаров

    ПолеТипНазначениеKodOstatkaIntАвтоинкрементное полеKolichestvoIntОстатокMagazinIntСсылка на _MagaziniNomenC(9)Ссылка на _Nomenkalatura

    Таблица 7 остатки товаров

    ПолеТипНазначениеKodMagazinaIntАвтоинкрементное ключевое полеNaimenovanieC(200)Название магазинаAdressC(200)АдресTelephonC(30)ТелефоныVremjaRabotiC(50)Время работыShemaProezdaC(120)Путь к файлу .jpg, содержащему схему проезда к данному магазинуDataOstatkovDateTimeДата и время прошлой выгрузки остатков в _Ostatki по данному магазину

    Таблица 8 менеджеры (администраторы портала)

    ПолеТипНазначениеKodMenedzeraIntАвтоинкрементное ключевое полеImjaC(20)Имя доступа менеджераPassC(15)Пароль для доступаEmailC(12)Электронный адресDataZahodaDateTimeВремя последнего посещения

    Таблица 9 новости для покупателей.

    ПолеТипНазначениеKodNovostiIntАвтоинкрементное ключевое полеAvtorIntСсылка на _MenedzeriNovostC(600)НовостьDataC(12)Дата создания новости

    Таблица 10 заказы оптовиков.

    ПолеТипНазначениеKodZakazaIntАвтоинкрементное ключевое полеObrabotanDateКогда обработанStatussmallintСтатус (подтврждён, обработан)PolzovatelIntСсылка на _PolzovateliDataDateДата и время созданияSymmoneyСумма заказа

    Таблица 11 Товары в заказе.

    ПолеТипНазначениеKodPoziciiIntАвтоинкрементное ключевое полеZakazIntСсылка на _ZakaziNomenIntСсылка на _NomenklaturaCenamoneyЦена одной позицииKolichestvoIntКоличествоSymmoneyСумма (Cena*Kolichestvo)

     

     

    4 ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРИЛОЖЕНИЯ

    4.1 Программные средства для создания и поддержания распределённой БД

    4.1.1 Обработка на центральной базе «Выгрузка накладной»

    Внешний вид программы (внешней обработки) показан на рисунке 8

    Рисунок 8 Окно подпрограммы «Выгрузка накладной»

     

    Пользователю требуется выбрать каталог, куда будут сохранены dbf файлы с информацией по накладной, и сам документ. Алгоритм работы обработки таков:

    1. Создание каталога по имени документа,
    2. Создание трёх «DBF» файлов и выгрузка в них данных по каждой позиции выгружаемой номенклатурной позиции, включая данные для построения древовидной структуры,
    3. Последовательный проход по элементам документа «Реализация» с выгрузкой в файлы «DBF» таких свойств как:
    4. Единица измерения,
    5. Цена,
    6. Страна происхождения,
    7. Производитель (как основное свойство),
    8. Наименование для печати,
    9. Ставка НДС.

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

     

    4.1.2 Обработка на удалённой торговой точке - «Загрузка документов»

    Флеш накопитель доставляется в магазин вместе с товаром, вставляется кассиром в системный блок.

    Далее кассир по инструкции (инструкция пользователя находится в разделе 5.1.8) открывает из 1С обработку загрузки документа, представленную на рисунке 9.

    Рисунок 9 Окно подпрограммы «Загрузка документов»

     

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

    В данной обработке использовался запрос, извлекающий из регистра «ОстаткиТМЦ» остатки по всем номенклатурным позициям:

    ТекстЗапроса =

    "//{{ЗАПРОС(Выгр_Ост)

    |РегНом= Регистр.ОстаткиТМЦ.Номенклатура;

    |РегНомКод=Регистр.ОстаткиТМЦ.Номенклатура.Код;

    |РегСклд= Регистр.ОстаткиТМЦ.Склад.Код;

    |РегКол= Регистр.ОстаткиТМЦ.Количество;

    |Группировка РегНом без Групп;

    |Группировка РегСклд;

    |Функция КОН = КонОст(РегКол);"//}}ЗАПРОС

    ;

    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

    Предупреждение("Ошибка в запросе");

    КонецЕсли;

    Этот запрос позволяет избежать перебора записей и ускорить выборку по сравнению с простым перебором в десятки раз. Время выполнения этого запроса занимает менее 8 секунд. Но как видно синтаксис сложен и не понятен на первый взгляд. Описать работу запроса можно так: используя индексы DBF файлов, происходит выборка из регистра остатков по всей номенклатуре. В запросе вводятся локальные переменные «РегНом», «РегНомКод», «РегСклд», «РегКол», доступ к которым возможен например при переборе результатов запроса через конструкцию «Запрос.Параметр». Так как в запросе явно не указан временной период, то по умолчанию используется «точка актуальности» - термин, введённый 1С, обозначающий рабочую дату или точку актуальности итогов, то есть время, п

    Похожие работы

    << < 1 2 3 4 5 6 7 8 9 > >>