АИС "Работа с покупателями"
Реферат - Компьютеры, программирование
Другие рефераты по предмету Компьютеры, программирование
Предупреждение("Ошибкавзапросе");
КонецЕсли;
КатВыгр=ПарамПоИмени("КаталогВыгр")+ПарамПоИмени("Ном");
ДБФ=СоздатьОбъект("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";