Диплом: Автоматизация учета и анализа ассортимента в интернет-магазине «Литрес»

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
ПРИЛОЖЕНИЕ 1
Программный код
Процедура Сформировать()
//Открываем соединение
ado.Open("Driver={Microsoft Access Driver
(*.mdb)};Dbq="+ф_ИмяMDB+";Uid=Admin;Pwd=;");
таб=СоздатьОбъект("Таблица");
таб.ИсходнаяТаблица("Таблица");
таб.ВывестиСекцию("Шапка");
таб.Опции(0);
Запрос="SELECT * FROM ТестоваяТаблица;";
ado.Execute(Запрос);
Пока ado.EOF=0 Цикл //Цикл по записям
таб.ВывестиСекцию("Строка|Начало");
зн=ado.GetField("id"); таб.ПрисоединитьСекцию("Строка|Данные");
зн=ado.GetField("text1"); таб.ПрисоединитьСекцию("Строка|Данные");
зн=ado.GetField("memo1"); таб.ПрисоединитьСекцию("Строка|Данные");
зн=ado.GetField("Байт1"); таб.ПрисоединитьСекцию("Строка|Данные");
зн=ado.GetField("Целое1"); таб.ПрисоединитьСекцию("Строка|Данные");
зн=ado.GetField("ДлинноеЦелое1");
таб.ПрисоединитьСекцию("Строка|Данные");
зн=ado.GetField("Single1");
таб.ПрисоединитьСекцию("Строка|Данные");
зн=ado.GetField("Double1");
таб.ПрисоединитьСекцию("Строка|Данные");
зн=ado.GetField("КодРепликации1");
таб.ПрисоединитьСекцию("Строка|Данные");
зн=ado.GetField("ДатаВремя1");
таб.ПрисоединитьСекцию("Строка|Данные");
зн=ado.GetFieldAsDateTime("ДатаВремя1");
таб.ПрисоединитьСекцию("Строка|Данные");
зн=ado.GetField("Денежный1");
таб.ПрисоединитьСекцию("Строка|Данные");
зн=ado.GetField("Логический1");
таб.ПрисоединитьСекцию("Строка|Данные");
зн=ado.GetField("Действительное1");
таб.ПрисоединитьСекцию("Строка|Данные");
ado.MoveNext(); //Переходим к след. записи
КонецЦикла;
ado.Close(); //Закрываем соединение
таб.Показать("Запрос");
КонецПроцедуры
Добавление записей
В этом примере я использую параметризацию: Prepare и Bind. Это позволяет
исключить атаки злоумышленников, или сбои в работе, если я по какой-то причине
не проставлю кавычки для экранирования текстовых полей. Полноценная
параметризация не реализована.
//_________________________________________________________________________
___________________________
Процедура ф_Добавить()
// //Открываем соединение
ado.Open("Driver={Microsoft Access Driver
(*.mdb)};Dbq="+ф_ИмяMDB+";Uid=Admin;Pwd=;");
//Подготовка запроса
Запрос="INSERT INTO ТестоваяТаблица (text1,memo1,Байт1,Целое1,
ДлинноеЦелое1, Single1, Double1,КодРепликации1,ДатаВремя1,Денежный1,
Логический1,Действительное1) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)";
ado.PrepareQuery(Запрос);
ado.Bind("это text");
ado.Bind("это memo");
ado.Bind(257);
ado.Bind(32767);
ado.Bind(9999999);
ado.Bind(12.34);
ado.Bind(56.78);
ado.Bind("{AB634001-F13D-11D0-A459-004095E1DAEA}");
ado.Bind('26.01.2007');
ado.Bind(33.33);
ado.Bind(1);
ado.Bind(111);
ado.Execute();
ado.Close(); //Закрываем соединение
КонецПроцедуры
Обновление записей
Данный пример смотрит, есть ли запись с указанным ID. Если ее нет, то добавляет
(Insert) ее, затем делает Update.
//_________________________________________________________________________
___________________________
Процедура ф_Обновить()
// //Открываем соединение
ado.Open("Driver={Microsoft Access Driver
(*.mdb)};Dbq="+ф_ИмяMDB+";Uid=Admin;Pwd=;");
Запрос="SELECT id FROM ТестоваяТаблица WHERE id=?;";
ado.PrepareQuery(Запрос);
ado.Bind(1);
ado.Execute();
Если ado.EOF=1 Тогда
Запрос="INSERT INTO ТестоваяТаблица (id) VALUES (?)";
ado.PrepareQuery(Запрос);
ado.Bind(1);
ado.Execute();
КонецЕсли;
Запрос="UPDATE ТестоваяТаблица SET "+
"text1=?,memo1=?,Байт1=?,Целое1=?,ДлинноеЦелое1=?, Single1=?,
Double1=?,
КодРепликации1=?,ДатаВремя1=?,Денежный1=?,Логический1=?,Действительное1=?"+
" WHERE id=?";
ado.PrepareQuery(Запрос);
ado.Bind("это text");
ado.Bind("это memo");
ado.Bind(257);
ado.Bind(32767);
ado.Bind(9999999);
ado.Bind(12.34);
ado.Bind(56.78);
ado.Bind("{AB634001-F13D-11D0-A459-004095E1DAEA}");
ado.Bind('26.01.2007');
ado.Bind(33.33);
ado.Bind(1);
ado.Bind(111);
ado.Bind(1);
ado.Execute();
ado.Close(); //Закрываем соединение
КонецПроцедуры
Удобное обновление записей
Этот пример делает то же самое, что и предыдущий, но записан в более
удобном для восприятия виде.
//_________________________________________________________________________
___________________________
Процедура ф_Обновить1()
// //Открываем соединение
ado.Open("Driver={Microsoft Access Driver
(*.mdb)};Dbq="+ф_ИмяMDB+";Uid=Admin;Pwd=;");
ado.OpenRec("ТестоваяТаблица");
ado.KeyField("id", 1); //Ключевое поле
ado.DataField("text1", "это текст");
ado.DataField("memo1", "это memo");
ado.DataField("Байт1", 255);
ado.DataField("Целое1", 32767);
ado.DataField("ДлинноеЦелое1", 88889999);
ado.DataField("Single1", 12.34);
ado.DataField("Double1", 56.78);
ado.DataField("КодРепликации1", "{AB634001-F13D-11D0-A459-
004095E1DAEA}");
ado.DataField("ДатаВремя1", '26.01.1976');
ado.DataField("Денежный1", 100.55);
ado.DataField("Логический1", 1);
ado.DataField("Действительное1", 1234);
ado.SaveRec();
ado.Close(); //Закрываем соединение
КонецПроцедуры
Работа со ссылочными типами
Приведенный ниже пример обновляет таблицу, которая содержит код,
наименование и
ссылку на элемент товаров. Метод GetFieldAsObject("Товар")
извлекает товар из таблицы как ссылку на объект 1С:Предприятие!
//_________________________________________________________________________
___________________________
Процедура ф_Реквизиты()
//Открываем соединение
ado.Open("Driver={Microsoft Access Driver
(*.mdb)};Dbq="+ф_ИмяMDB+";Uid=Admin;Pwd=;");
спр=СоздатьОбъект("Справочник.Товары");
спр.ВыбратьЭлементы();
Пока спр.ПолучитьЭлемент() = 1 Цикл
Запрос="SELECT Код FROM Товары WHERE Код=?;";
ado.PrepareQuery(Запрос);
ado.Bind(0+спр.Код);
ado.Execute();
Если ado.EOF=1 Тогда
Запрос="INSERT INTO Товары (Код) VALUES (?)";
ado.PrepareQuery(Запрос);
ado.Bind(0+спр.Код);
ado.Execute();
КонецЕсли;
Запрос="UPDATE Товары SET "+
"Товар=?,Наименование=?"+
" WHERE Код=?";
ado.PrepareQuery(Запрос);
ado.Bind(спр.ТекущийЭлемент());
ado.Bind(спр.Наименование);
ado.Bind(0+спр.Код);
ado.Execute();
КонецЦикла;
//Читаем элементы
Запрос="SELECT * FROM Товары";
ado.Execute(Запрос);
Пока ado.EOF=0 Цикл //Цикл по записям
зн=ado.GetField("Код"); Сообщить("Код="+зн+" ");
зн=ado.GetField("Наименование"); Сообщить("Наименование="+зн+" ");
зн=ado.GetFieldAsObject("Товар"); Сообщить("Товар="+зн+" ");
ado.MoveNext(); //Переходим к след. записи
КонецЦикла;
ado.Close(); //Закрываем соединение
КонецПроцедуры
То же самое, с использованием OpenRec-SaveRec.
//_________________________________________________________________________
___________________________
Процедура ф_Реквизиты1()
//Открываем соединение
ado.Open("Driver={Microsoft Access Driver
(*.mdb)};Dbq="+ф_ИмяMDB+";Uid=Admin;Pwd=;");
//Пишем товары в таблицу
спр=СоздатьОбъект("Справочник.Товары");
спр.ВыбратьЭлементы();
Пока спр.ПолучитьЭлемент() = 1 Цикл
ado.OpenRec("Товары");
ado.KeyField("Код", 0+спр.Код); //Ключевое поле
ado.DataField("Наименование", спр.Наименование);
ado.DataField("Товар", спр.ТекущийЭлемент());
ado.SaveRec();
КонецЦикла;
//Читаем элементы
Запрос="SELECT * FROM Товары";
ado.Execute(Запрос);
Пока ado.EOF=0 Цикл //Цикл по записям
зн=ado.GetField("Код"); Сообщить("Код="+зн+" ");
зн=ado.GetField("Наименование"); Сообщить("Наименование="+зн+" ");
зн=ado.GetFieldAsObject("Товар"); Сообщить("Товар="+зн+" ");
ado.MoveNext(); //Переходим к след. записи
КонецЦикла;
ado.Close(); //Закрываем соединение
КонецПроцедуры
//Проверяет, что значение Зн - это ссылка
//Написал, отладил 20070227 fixin
Функция обЭтоСсылка(Зн) экспорт
Перем Ссылка;
Ссылка=обИзвлечьСсылку(Зн);
Возврат Зн=Ссылка и Ссылка<>Неопределено;
КонецФункции
//Проверяет, что значение Зн - это объект, который содержит ссылку
//Написал, отладил 20070227 fixin
Функция обЭтоОбъектССсылкой(Зн) экспорт
Перем Ссылка;
Ссылка=обИзвлечьСсылку(Зн);
Возврат Зн<>Ссылка и Ссылка<>Неопределено;
КонецФункции
//Проверяет, что значение Зн - это примитивный тип (простым перебором)
//Написал, отладил 20070227 fixin
Функция обЭтоПримитивныйТип(Зн) экспорт
Возврат
ТипЗнч(Зн)=Тип("Null") ИЛИ
ТипЗнч(Зн)=Тип("Неопределено") ИЛИ
ТипЗнч(Зн)=Тип("Число") ИЛИ
ТипЗнч(Зн)=Тип("Строка") ИЛИ
ТипЗнч(Зн)=Тип("Дата") ИЛИ
ТипЗнч(Зн)=Тип("Булево") ИЛИ
ТипЗнч(Зн)=Тип("Тип");
КонецФункции
//Извлекает ссылку из объекта или ссылки.
//Если извлечь ссылку невозможно, возвращает Неопределено.
//Работает корректно для всех типов, в том числе и для примитивных
//Написал, отладил 20070227 fixin
Функция обИзвлечьСсылку(Зн) экспорт
Перем С;
Если обЭтоПримитивныйТип(Зн) Тогда
Возврат Неопределено;
КонецЕсли;
С=Новый Структура("Ссылка", Неопределено);
ЗаполнитьЗначенияСвойств(С, Зн);
Возврат С.Ссылка;
КонецФункции
Перем Запрос;
Процедура ПриОткрытии()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Рег.Номенклатура,
| Рег.КоличествоОстаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(
| ,
| Склад = &Склад
| И Номенклатура В (&Номенклатура)) КАК Рег";
Запрос.УстановитьПараметр("Склад", Склад);
КонецПроцедуры
Процедура СправочникСписокПриПолученииДанных(Элемент, ОформленияСтрок)
Если Элемент.Колонки.Остаток.Видимость Тогда
МассивНоменклатуры = Новый Массив;
Для Каждого ОформлениеСтроки ИЗ ОформленияСтрок Цикл
Если НЕ ОформлениеСтроки.ДанныеСтроки.ЭтоГруппа Тогда
МассивНоменклатуры.Добавить(ОформлениеСтроки.ДанныеСтроки.Ссылка);
КонецЕсли;
КонецЦикла;
Запрос.УстановитьПараметр("Номенклатура", МассивНоменклатуры);
тзОстатки = Запрос.Выполнить().Выгрузить();
Для Каждого ОформлениеСтроки ИЗ
ОформленияСтрок Цикл
Если НЕ ОформлениеСтроки.ДанныеСтроки.ЭтоГруппа
Тогда
СтрТЗ = тзОстатки.Найти(ОформлениеСтроки.ДанныеСтроки.Ссылка,
"Номенклатура");
Если СтрТЗ <> Неопределено Тогда
ОформлениеСтроки.Ячейки.Остаток.УстановитьТекст(СтрТЗ.КоличествоОстаток);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
IPO - инструмент финансирования деятельности организации. На примере ПАО «Нефтяная компания «Лукойл»
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)