Скачайте в формате документа WORD

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

РЕФЕРАТ


ВКР содержит пояснительную записку на 85 листах формата А4, включающую 21 рисунок, 11 таблиц, 24 литературных источника, 5 приложений.

WEB ПРОГРАММИРОВАНИЕ, WEB СЛУЖБА, С, C#, АВТОМАТИЗАЦИЯ, ADO, ТИРАЖИРОВАНИЕ, ИНСТРУКЦИЯ, COM.

Цель работы - автоматизация работы с покупателями.

В процессе работы проведён анализ аппаратных и программных средств предприятия, выбраны технологии и средства для решения поставленных задач.

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

-                        ускорение обслуживания покупателей на розничных торговых точках,

-                        ведение точного чёта товаров на далённых точках,

-                        поддержка распределённой базы данных,

-                        предоставление полной информации по текущему ассортименту компании интерактивным пользователям Интернет портала,

-                        публикация новостей и данных о компании на Интернет портале,

-                        возможность оформления заказов через Интернет.

.
СОДЕРЖАНИЕ:

TOC \o "1-5" ВВЕДЕНИЕ 7/a>

1 ПОСТАНОВКА ЗАДАЧИ НА ПРОЕКТИРОВАНИЕ 8/a>

1.1 Назначение и цели создания программного комплекса 8/a>

1.2 Что было до внедрения АИС. 10/a>

1.3 Структура компьютерной сети предприятия 11/a>

1.4 Выбор программных средств и технологий взаимодействия 12/a>

1.4.1 Выбор СУБД для автоматизации

хозяйственно-складской деятельности

и построения распределённой БД 13/a>

1.4.2 Выбор среды разработки 14/a>

1.4.3 Передача данных через локальную сеть 15/a>

1.4.4 Выбор языка программирования 15/a>

1.4.5 Выбор СУБД для Web сервера 16/a>

1.5 Описание средств разработки 16/a>

1.5.1 лС Предприятие. Конфигурация Торговля и склад 16/a>

1.5.2 MS SQL Server 2 21/a>

1.5.3 MS Visual Studio.NET 22/a>

a href="#_Toc106719">2 ФУНКЦИОНАЛЬНАЯ ЧАСТЬ 25/a>

2.1 Общее функционирование системы на базе лС 25/a>

2.2 Функции создания и поддержания распределённой БД 26/a>

2.3 Функции для переноса данных с сервера приложений С на WEB сервер (SQL Server) 28/a>

2.3.1 Функции WEB службы 29/a>

2.4 Функции ASP.NET приложения 34/a>

2.4.1 Схема работа Интернет сайта 35/a>

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

a href="#_Toc106719341">3 ИНФОРМАЦИОННОЕ ОБЕСПЕЧЕНИЕ ПРИЛОЖЕНИЯ 39/a>

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

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

3.3 Ведение БД на WEB сервере с использованием SQL Server 2 39/a>

a href="#_Toc106719345">4 ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРИЛОЖЕНИЯ 45/a>

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

4.1.1 Обработка на центральной базе Выгрузка накладной 45/a>

4.1.2 Обработка на удалённой торговой точке - Загрузка документов 46/a>

4.2 Автоматизация работы кассира в магазине 48/a>

4.3 WEB приложение 50/a>

4.3.1 словия на работу WEB приложения у удалённого пользователя. 51/a>

4.3.2 Используемые средства 52/a>

4.3.2.1 Стандартные средства WEB программирования 52/a>

4.3.2.2 ASP.NET 2.0 52/a>

4.3.2.3 ADO.NET 53/a>

4.3.3 Получение данных от WEB Службы 53/a>

4.3.4 Кэширование данных 54/a>

4.3.5 Отправка электронной почты 55/a>

4.3.6 Полномочия пользователей 56/a>

2.4.7 Проблемы и их решение 57/a>

a href="#_Toc106719361">5 ТЕХНОЛОГИЯ ЭКСПЛУАТАЦИИ ПРИЛОЖЕНИЯ 59/a>

5.1 Инструкция оператора системы С на далённом магазине 59/a>

5.1.1 Общие сведения 59/a>

5.1.2 Порядок работы: 59/a>

5.1.3 Продажа (Реализация): 60/a>

5.1.4 Возврат продажи 62/a>

5.1.5 Использование меню фискального регистратора (ФР): 64/a>

5.1.6 Акт сверки: 64/a>

5.1.7 Печать ценников по подбору: 66/a>

5.1.8 Загрузка накладных: 68/a>

5.2 Эксплуатация WEB портала 68/a>

a href="#_Toc106719372" rel="nofollow" >ЗАКЛЮЧЕНИЕ 70/a>

a href="#_Toc106719373">СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 71/a>

a href="#_Toc106719374">ПРИЛОЖЕНИЕ А КОНЦЕПТУАЛЬНВЯ МОДЕЛЬ ПЕРЕНОСА ДАННЫХ 73/a>

ПРИЛОЖЕНИЕ Б КОД WEB СЛУЖБЫ (ФАЙЛ Service.asmx) 74/a>

ПРИЛОЖЕНИЕ В ФУНКЦИИ ГЛОБАЛЬНОГО МОДУЛЯ, ФОРМИРУЮЩИЕ ДАННЫЕ ДЛЯ WEB СЛУЖБЫ 78/a>

ПРИЛОЖЕНИЕ Г НЕКОТОРЫЕ ХРАНИМЫЕ ПРОЦЕДУРЫ И ЗАПРОСЫ К СИСТЕМЕ SQL SERVER 82/a>

ПРИЛОЖЕНИЕ Д КОД РАБОТЫ С WEB СЛУЖБОЙ ИЗ ASP.NET 84/a>



для создания и поддержания распределённой Б

4.1.СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1.   Прилагаемая к системе лСа предприятие документация и встроенная справка (синтаксис - помощник).

2.   лС:Торговля и Склад в вопросах и ответах: Практическое пособие. Богачева Т. Г. М.: лС-Паблишинг, 2003 г. -273 с.

3.   Конфигурирование и администрирование С: Предприятия. Тимофеев Г.С., Шумейко Д.А. Ростов н/Д: Феникс, 2003 г - 320 с.

4.   лС:Предпирятие: программирование для всех. Бартеньев О.В. - М.: Диалог-МИФИ, 2004. - 464 с.

5.   лС:Предприятие. Эффективное программирование. сиков Т.Н. - М.:Новое знание, 2004 г. - 464с.

6.   Форум Территория УСФ:

ПРИЛОЖЕНИЕ А

Концептуальная модель переноса данных.

Скачайте в формате документа WORD

ПРИЛОЖЕНИЕ Б

Код Web службы (Файл Service.asmx)

// Данная служба - возвращает остаток по посланному коду


using System.Web;

using System;

using System.Reflection;

using System.Web.Services;

using System.Web.Services.Protocols;

using System.Data;

using System.Data.OleDb;


[WebServiceBinding(ConformanceClaims=WsiClaims.BP10,EmitConformanceClaims = true)]

public class Service : System.Web.Services.WebService {

private

// Параметры для подключения к С

Type _1C = null; // ассоциация с программой

object tor = null; // COM объект

object rmtrade = null;

object[] args = null; // аргументы для функции

object Order = null;

//***************************************************************************

// Подключение к С. Возвращает true в случае дачи и false - неудачи

bool podkluchenie(){

_1C = Type.GetTypeFromProgID("V77s.Application");а

try{

tor = Activator.CreateInstance(_1C);

rmtrade = _1C.InvokeMember("RMTrade", BindingFlags.GetProperty, null, tor, null);

// Задаём парметры подключения, чтобы вход происходил автоматически

args = new object[] { rmtrade, "/DC:\\\\ /NFOKS /P676676 ", "NO_SPLASH_SHOW" };

//Запуск С

_1C.InvokeMember("Initialize", BindingFlags.InvokeMethod, null, tor, args);

return true;

}

catch{

// Нет доступа к COM объекту

//return "Ошибка - проверь безопастность OLE";

//Скорее всего в Windows заданы права доступа к COM объектам только локальным

//пользователям. Лечится через "Служба компонентов"

return false;

}

}

//******************************************************************************

// Выполняет процедуру с заданным именем и с заданными параметрами

// Через неё обращаться к функциям, которые возвращают одну переменную

object Procedura1C_par(string Imja, string Param){

args = new object[] { Param };

return _1C.InvokeMember(Imja, BindingFlags.InvokeMethod, null, tor, args);

}

//******************************************************************************

// Выполняет процедуру с заданным именем и с заданными параметрами

// Через неё обращаться к функциям, которые возвращают ТЗ

object Procedura1C_tz(string Imja, string Param){

args = new object[] {};

//*return_1C.InvokeMember(Imja, BindingFlags.GetField | BindingFlags.InvokeMethod | BindingFlags.Default, null, tor, null);

return _1C.InvokeMember(Imja, BindingFlags.InvokeMethod | BindingFlags.OptionalParamBinding, null, tor, args);

}

//******************************************************************************

// Обращается к процедуре С и возвращает таблицу с результатами

// Через неё обращение к процедурам С, которые пишут файлы dbf

// Параметры:

// ImjaProc - имя вызываемой процедуры

// ImjaKat - каталог, из которого будут загружены таблицы

// ImjaTabl - имя таблицы


DataTable Vigr(string ImjaProc, string ImjaKat, string ImjaTabl)

{

// object ost;

int i;

string rez;

DataSet dt = new DataSet();

DataTable ddt = new DataTable();а

if (podkluchenie())

{// Если далось подключиться

try

{

rez = Procedura1C_tz(ImjaProc, "").ToString();

// Теперь у нас всё как надо - выгрузилась БД в файл.

// Подключаемся к ней через ADO.NET

string konekt = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ImjaKat+";Extended Properties=dBase IV;mode=Read|Write|Share Deny None";

string zapr = "Select * from " + ImjaTabl;

OleDbDataAdapter adapt = new OleDbDataAdapter(zapr, konekt);

adapt.Fill(dt, ImjaTabl);

//ds.WriteXml(@"C:\.xml");

_1C.InvokeMember("ExitSystem", BindingFlags.InvokeMethod, null, tor, new object[] { 0 });

tor = null;

_1C = null;

return dt.Tables[0];

}

catch

{// Если возникла ошибка

_1C.InvokeMember("ExitSystem", BindingFlags.InvokeMethod, null, tor, new object[] { 0 });

tor = null;

_1C = null;

return ddt;

}

}

else

{ // Если не далось подключиться

_1C.InvokeMember("ExitSystem", BindingFlags.InvokeMethod, null, tor, new object[] { 0 });

tor = null;

_1C = null;

return ddt;

}

}


[WebMethod]

public

//******************************************************************************

// Возвращает Количество оставшегося товара по его коду

string OstatokPoKodu(string nom) {

string ost;

ost = "Пусто";

if (podkluchenie()){

ost = Procedura1C_par("GlVozrOst", nom).ToString();

_1C = null;

return ost;

}else{

_1C = null;

return null;

}

}

[WebMethod]

public

//******************************************************************************

// Сохраняет номенклатуру

DataTable VigruzNom(){

return Vigr("GlVozrNom", @"C:\BD_WB\nomen\", "nomen");

}


[WebMethod]

public

//******************************************************************************

// Сохраняет и передаёт цены

DataTable VigruzCeni()

{

return Vigr("GlVozrCeni", @"C:\BD_WB\ceni\", "ceni");

}


[WebMethod]

public

//******************************************************************************

// Сохраняет и передаёт остатки

DataTable VigruzOst()

{

return Vigr("GlVozrOstatki", @"C:\BD_WB\ost_osnov\", "ost");

}

}


ПРИЛОЖЕНИЕ В

Функции глобального модуля,

формирующие данные для WEB Службы.

Функция гВернутьЦену(Номенклатура, ТипЦены, ДатЦены = 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(кд_ном) Экспорт
     Перем Ост;
     
     Ном=создатьОбъект("Справочник.Номенклатура");
     Склд = СоздатьОбъект("Справочник.Склады");
     Регр = СоздатьОбъект("Регистр.ОстаткиТМЦ"); 
     
     Склд.НайтиПоКоду("1");
     Ном.НайтиПоКоду(кд_ном); 
     
     Ост = 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;
Конецункции 
       
//*******************************************************************
//  Возвращает цену по указанным парметрам - используется в запросе внизу
Функция ВозрНомерПрайса(Кд) Экспорт
     Если Кд = "2" Тогда
          Возврат 1;
     ИначеЕсли Кд = "3" Тогда
          Возврат 2;
     ИначеЕсли Кд = "4" Тогда
          Возврат 3;
     ИначеЕсли Кд = "5" Тогда
          Возврат 4;                
     ИначеЕсли Кд = "6" Тогда
          Возврат 5;
     ИначеЕсли Кд = "7" Тогда
          Возврат 6;
     ИначеЕсли Кд = "1" Тогда
          Возврат 0;
     Иначе 
          Возврат 33;     // Если ошибка. 0 нельзя, т.к. вдруг это у нас более низкие
     КонецЕсли;
Конецункции


//*******************************************************************
// Функция возвращает цены на номенклатуру и номер прайса
Функция GlVozrCeni() Экспорт
     Перем Ост, ТабЗн;                           
    Перем КатВыгр; 
     Перем изПроц;
     
     Запрос = СоздатьОбъект("Запрос");  
     ТекстЗапроса = 
     "//{{ЗАПРОС(Цены)      
     |Номенклатура     = Справочник.Цены.Владелец;
     |ТипКод         = Справочник.Цены.ТипЦен.Код;
     |Тип               = Справочник.Цены.ТипЦен;
     |Цен            = Справочник.Цены.ТекущийЭлемент;
     |Группировка Цен; 
     |"//}}ЗАПРОС
     ;
     
     Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
          Предупреждение("Ошибка в запросе");
     КонецЕсли;                                  
     
     КатВыгр = ПарамПоИмени("КаталогВыгр") + ПарамПоИмени("Цен");
     
     ДБФ = СоздатьОбъект("XBase");
     ДБФ.ДобавитьПоле("Cena",1,8,2);
     ДБФ.ДобавитьПоле("Nomen",2,9,0);
     ДБФ.ДобавитьПоле("Prajs",1,2,0);

     ДБФ.Создатьйл(КатВыгр+"Ceni.dbf"); 
     ДБФ.КодоваяСтраница(1);  
     Запрос.НачалоВыборки();
     Пока Запрос.Группировка(1)=1 Цикл   
               Если (Запрос.ТипКод<>"10") Тогда
                    ДБФ.Добавить();           
                    гВернутьЦену(Запрос.Номенклатура, Запрос.Тип,,изПроц,,,,0);
                    ДБФ.Cena  = изПроц;
                    ДБФ.Nomen = Запрос.Номенклатура.Код;
                    ДБФ.Prajs = ВозрНомерПрайса(Запрос.ТипКод);
                    ДБФ.Записать();
               КонецЕсли;
     КонецЦикла;
     Возврат 1;
Конецункции 


//*******************************************************************
// Функция возвращает остатки номенклатуры
Функция GlVozrOstatki() Экспорт
     Перем катВыгр, дат;  
     Перем ск;
     
     ОСТ = СоздатьОбъект("XBase"); 
     ОСТ.ДобавитьПоле("Kod",2,9,0);
     ОСТ.ДобавитьПоле("Ostatok",1,5,0);
                  
     катВыгр =ПарамПоИмени("КаталогВыгр") + ПарамПоИмени("Ост"); 

     ОСТ.Создатьйл(катВыгр+"ost.dbf"); 

     ОСТ.КодоваяСтраница(1);     
     Запрос = СоздатьОбъект("Запрос");  
     ТекстЗапроса = 
     "//{{ЗАПРОС(Выгр_Ост)
     |РегНом            = Регистр.ОстаткиТМЦ.Номенклатура;
     |РегСклд           = Регистр.ОстаткиТМЦ.Склад.Код;
     |РегКол            = Регистр.ОстаткиТМЦ.Количество;   
     |Группировка РегНом без Групп; 
     |Группировка РегСклд; 
     |Функция КОН       = КонОст(РегКол);"//}}ЗАПРОС
    ;

     Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
          Предупреждение("Ошибка в запросе");
     КонецЕсли; 

     Запрос.НачалоВыборки();
     Пока Запрос.Группировка(1)=1 Цикл   
          Пока Запрос.Группировка(2)=1 Цикл   
               Если Запрос.РегСклд="1" Тогда 
                    ОСТ.Добавить();           
                    ОСТ.Kod = Запрос.РегНом.Код;
                    ОСТ.Ostatok = Запрос.КОН;
                    ОСТ.Записать();                 
              КонецЕсли;
          КонецЦикла;
     КонецЦикла;

     Возврат 1;
Конецункции 


ПРИЛОЖЕНИЕ Г

Некоторые хранимые процедуры и запросы

к системе SQL Server

Хранимая процедура DobTov

/*добавляет товар к указанному заказу в казанном количестве,

сумму исчет сам и вставляет - по коду передаваемого прайса */

CREATE PROCEDURE DobTov

@Nomen char(9),

@Zakaz int,

@Kolichestvo int,

@Prajs smallint

AS

DECLARE @cen money

SET @cen=(SELECT SUM(Cena) FROM _Ceni WHERE ((NomerPrajsa = @Prajs) and (_Ceni.Nomen=@Nomen)))


INSERT _TovariVZakaze (Nomen, Zakaz, Kolichestvo, Cena, Sym)

VALUES (@Nomen, @Zakaz, @Kolichestvo, @cen, @cen*@Kolichestvo)

GO


Хранимая процедура NomenObnovi

/* Служит для загрузки Номенклатуры с сервера С.

Если позиция с таким кодом, то обновляет. Иначе - добавляет

*/

CREATE PROCEDURE NomenObnovi

@KodNom char(9),

@EtoGruppa smallint,

@Otec char(9),

@Strana char(30),

@Naimenov char(300)

AS

IF (SELECT COUNT(KodNom) FROM _Nomenklatura WHERE (KodNom = @KodNom))>0а BEGIN

UPDATE [_Nomenklatura] SET [EtoGruppa] = @EtoGruppa, [Otec] = @Otec, [Strana] = @Strana, [Naimenov] = @Naimenov WHERE ([KodNom] = @KodNom)

END

ELSE BEGIN

INSERT INTO [_Nomenklatura] ([KodNom], [EtoGruppa], [Otec], [Strana], [Naimenov]) VALUES (@KodNom, @EtoGruppa, @Otec, @Strana, @Naimenov)

END

GO


Запрос из VisualStudio (страница default.aspx при переходе с prajs.aspx) к С, сохраняющий данные по словию в Excel:

// Копируем файл из вложенного каталога /shabloni в /zaka4

// При копировании - добавляем к имени файла rendom'om число

Random rnd = new Random();а // Для получения случайного значения

// тут мы получаем случайное значение, чтобы потом добавить к имени файла

String str_rnd = Convert.ToInt32(rnd.NextDouble() * 1).ToString();

// Задаём пути к файлам

string path = Server.MapPath("") +@"\Shabloni\Price.xls";

string path2 = Server.MapPath("") + @"\Zaka4\Price" + str_rnd + ".xls";

// Копируем файл шаблонный

FileInfo fi1 = new FileInfo(path);

fi1.CopyTo(path2);


String zapr3;

zapr3 = "insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0; Database=" + path2 + " ; ID=Foks; Password=676676', 'SELECT * FROM [Прайс$]') SELECT Naimenov, KodNom, Strana, MinimPartija, CAST (Cena AS nvarchar) FROM dbo._Nomenklatura, dbo._Ceni, dbo._Ostatki WHERE (([EtoGruppa] = 0) AND (Kolichestvo>0) AND (_Ostatki.Nomen=KodNom) AND (_Ceni.Nomen=KodNom) AND (NomerPrajsa=" +

Session["prs"].ToString() + ") AND (Otec='"+ str +"') ) ORDER BY Naimenov";

// помечаем всё цыфркой 3, дабы 100% не было конфликтов

SqlConnection con3 = new SqlConnection(System.Configuration.ConfigurationSettings.ConnectionStrings["ConnectionForForWeb"].ConnectionString);

SqlCommand cmd3 = new SqlCommand(zapr3, con3);

con3.Open();

cmd3.ExecuteScalar();

con3.Close();



ПРИЛОЖЕНИЕ Д

Код работы с WEB Службой из ASP.NET

//******************************************************************************

//Загрузка номенклатуры, которую получаем от далённой службы

void Button1_Click(object sender, EventArgs e)

{

int i, vsego;а // Счётчик и общее число записей, полученных от Web Службы


DataTable ds = new DataTable();

Sluzba.Service ws = new Sluzba.Service();

ws.Timeout = 1 * 60 * 5;

try{

ds = ws.VigruzNom(); // Получаем данные с далённой службы

}

catch{

LabelInfo.Text = "Ошибка доступа к С. Подождите 15 минут и повторите попытку";

return;

}

// ds.Tables[0].TableName = "Nomenkl";

// ds.Tables[0].Columns[0].ColumnName = "EtoGruppa";

// ds.Tables[0].Columns[1].ColumnName = "KodNom";

// ds.Tables[0].Columns[2].ColumnName = "Otec";

// ds.Tables[0].Columns[3].ColumnName = "Strana";

// ds.Tables[0].Columns[4].ColumnName = "Naimenov";

// ds.WriteXml(@"C:\ds.xml");


// Подключение к MS SQL Server

SqlConnection konekt = new SqlConnection("Server=FKS;Integrated Security=True;Database=ForWeb");

SqlCommand sqlcom = new SqlCommand("NomenObnovi", konekt);

sqlcom.CommandType = CommandType.StoredProcedure;

SqlParameter param = null;

param = sqlcom.Parameters.Add(new SqlParameter("@KodNom", SqlDbType.Char, 9));

param.Direction = ParameterDirection.Input;

param = sqlcom.Parameters.Add(new SqlParameter("@EtoGruppa", SqlDbType.SmallInt, 9));

param.Direction = ParameterDirection.Input;

param = sqlcom.Parameters.Add(new SqlParameter("@Otec", SqlDbType.Char, 9));

param.Direction = ParameterDirection.Input;

param = sqlcom.Parameters.Add(new SqlParameter("@Strana", SqlDbType.Char, 30));

param.Direction = ParameterDirection.Input;

param = sqlcom.Parameters.Add(new SqlParameter("@Naimenov", SqlDbType.Char, 300));

param.Direction = ParameterDirection.Input;


LabelInfo.Text = "Ждите завершения выгрузки номенклатуры";

vsego = ds.Rows.Count;

konekt.Open();

for (i = 0; i < vsego; i++)

{

sqlcom.Parameters[0].Value = ds.Rows[i][1];

sqlcom.Parameters[1].Value = ds.Rows[i][0];

sqlcom.Parameters[2].Value = ds.Rows[i][2];

sqlcom.Parameters[3].Value = ds.Rows[i][3];

sqlcom.Parameters[4].Value = ds.Rows[i][4];

sqlcom.ExecuteNonQuery();

}

konekt.Close();


LabelInfo.Text = "Выгрузка номенклатуры спешно завершена, обновилось записей -а " + vsego;

}