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

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

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

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

КатВыгр=ПарамПоИмени("КаталогВыгр")+ПарамПоИмени("Ном");

ДБФ=СоздатьОбъект("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");

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

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

Запрос.ВНачалоВыборки();
ПокаЗапрос.Группировка(1)=1Цикл
ПокаЗапрос.Группировка(2)=1Цикл
ЕслиЗапрос.РегСклд="00001"Тогда
ОСТ.Добавить();
ОСТ.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

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

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

*/

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) к 1С, сохраняющий данные по условию в Excel:

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

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

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

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

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

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

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

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