Разработка автоматизированной системы по учёту и анализу заказов покупателей и формированию заказов поставщикам
Классификация информационных систем. Система "1С:Предприятие", структура данных и основные средства конфигурирования. Составление алгоритма программы прогнозирования товарного спроса. Характеристика и оценка прогрессивности научно-технической продукции.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 21.04.2012 |
Размер файла | 1,6 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Возврат Х;
КонецФункции // Титул
//----------
Процедура Товары Прайса (Прайс, Список Товаров) // Список товаров (указанной части) прайса
Прс=СоздатьОбъект("Справочник._Прайсы");
СпрТов=СоздатьОбъект("Справочник._Прайс_товар");
Если ПустоеЗначение(Прайс)=0 Тогда
Если Прайс.ЭтоГруппа()=1 Тогда
Прс.ИспользоватьРодителя(Прайс.ТекущийЭлемент()); // и переходим к перебору
Иначе // итак, единственная прайсовая группа, товар перечислен в подчинённом справочнике...
СпрТов.ИспользоватьВладельца(Прайс.ТекущийЭлемент());
СпрТов.ВыбратьЭлементы();
Пока СпрТов.ПолучитьЭлемент()=1 Цикл
Если СпрТов.Товар.Выбран()=0 Тогда Продолжить КонецЕсли;
Если СпрТов.Товар.ПометкаУдаления()=1 Тогда Продолжить КонецЕсли;
Если СпрТов.ПометкаУдаления()=1 Тогда Продолжить КонецЕсли;
Если СписокТоваров.Принадлежит(СпрТов.Товар.ТекущийЭлемент())=0 Тогда
СписокТоваров.ДобавитьЗначение(СпрТов.Товар.ТекущийЭлемент())
КонецЕсли
КонецЦикла;
Возврат
КонецЕсли;
КонецЕсли;
Прс.ВыбратьЭлементы();
Пока Прс.ПолучитьЭлемент()=1 Цикл
Если Прс.ЭтоГруппа()=1 Тогда Продолжить КонецЕсли;
// Выведем все товары-строки
СпрТов.ИспользоватьВладельца(Прс.ТекущийЭлемент());
СпрТов.ВыбратьЭлементы();
Пока СпрТов.ПолучитьЭлемент()=1 Цикл
Если СпрТов.Товар.Выбран()=0 Тогда Продолжить КонецЕсли;
Если СпрТов.Товар.ПометкаУдаления()=1 Тогда Продолжить КонецЕсли;
Если СпрТов.ПометкаУдаления()=1 Тогда Продолжить КонецЕсли;
Если СписокТоваров.Принадлежит(СпрТов.Товар.ТекущийЭлемент())=0 Тогда
СписокТоваров.ДобавитьЗначение(СпрТов.Товар.ТекущийЭлемент())
КонецЕсли
КонецЦикла;
КонецЦикла;
КонецПроцедуры // ТоварыПрайса
//------------
Функция НазваниеДня(ДатаХ)
i=НомерДняНедели(ДатаХ);
Если i=1 Тогда Возврат "понедельник" КонецЕсли;
Если i=2 Тогда Возврат "вторник" КонецЕсли;
Если i=3 Тогда Возврат "среда" КонецЕсли;
Если i=4 Тогда Возврат "четверг" КонецЕсли;
Если i=5 Тогда Возврат "пятница" КонецЕсли;
Если i=6 Тогда Возврат "суббота" КонецЕсли;
Если i=7 Тогда Возврат "воскресенье" КонецЕсли;
КонецФункции // НазваниеДня
//----------
Процедура ПоПрайсу()
Если Форма.Закладки.ТекущаяСтрока()=1 Тогда
ВыбТовар="";
ЕстьТовар=?(ВыбПрайс.Выбран()=0,0,?(ВыбПрайс.ЭтоГруппа()=1,0,1));
Форма.ВыбТовар.Видимость(ЕстьТовар);
Форма.ВТх.Видимость(ЕстьТовар);
Форма.ВТхх.Видимость(ЕстьТовар);
Если ВыбПрайс.Выбран()=0 Тогда Возврат КонецЕсли;
Голова=?(ВыбПрайс.Уровень()=1,ВыбПрайс,?(ВыбПрайс.Уровень()=2,ВыбПрайс.Родитель,ВыбПрайс.Родитель.Родитель));
ПризнакОтбора=СокрЛП(Голова);
КонецЕсли;
КонецПроцедуры // ПоПрайсу
//------------
Процедура ЗаказПоставщику()
Если ВыбЗаказ.Выбран()=0 Тогда
//Х="Предварительно в поле справа д.б. показан предыдущий заказ
//|или введён новый, без заполнения табличной части!";
Х="Предварительно в поле справа должен быть введён новый заказ
|без заполнения табличной части!";
Предупреждение(Х);
Возврат
КонецЕсли;
Если ВыбЗаказ.КоличествоСтрок()>0 Тогда
Если Вопрос("В указанном заказе строк в табличной части "+ВыбЗаказ.КоличествоСтрок()+"."+РазделительСтрок+
"Формируем заказ заново ?","Да+Нет")="Нет" Тогда Возврат КонецЕсли;
КонецЕсли;
ВЗ=СоздатьОбъект ("Документ."+ВыбЗаказ.Вид());
Если ВЗ.НайтиДокумент(ВыбЗаказ)=0 Тогда
Предупреждение ("СОШ-529");Возврат
КонецЕсли;
ВЗ.УдалитьСтроки();
ВЗ.ДатаОтгрузки=ВЗ.ДатаДок;
// Заполнение
ЕстьОШИБКИ=0;
ТП.ВыбратьСтроки();
Пока ТП.ПолучитьСтроку()=1 Цикл
Если ПустоеЗначение(ТП.Заказ)=1 Тогда Продолжить; КонецЕсли;
ВЗ.НоваяСтрока();
ВЗ.Номенклатура=ТП.Товар;
ЕстьЕД=1;
Если ТП.Товар.ЗакупочнаяЕдиница.Выбран()=0 Тогда
ЕстьЕД=0;
КонецЕсли;
Если ЕстьЕД=0 Тогда
Единица=ТП.Товар.БазоваяЕдиница.ТекущийЭлемент();
Сообщить ("Закупочная единица не указана или коэффициент<=1. Строка "+ТП.НомерСтроки+", товар: "+ТП.Товар);
Иначе
Единица=ТП.Товар.ЗакупочнаяЕдиница.ТекущийЭлемент();
КонецЕсли;
К=Единица.Коэффициент;
Если К < 1 Тогда
Сообщить("Нет коэффициента у единицы. Строка "+ТП.НомерСтроки+", товар: "+ТП.Товар,"!");
К=1;
ЕстьОШИБКИ=1
КонецЕсли;
Если К=1 Тогда
Кц=ТП.Заказ;
Иначе
//Кц=Цел(ТП.Заказ/К);
//Если Кц*К<>ТП.Заказ Тогда
//Сообщить("Указано количество не кратное упаковке (кф.уп."+К+"). Строка "+ТП.НомерСтроки+", товар: "+ТП.Товар,"!");
//ЕстьОШИБКИ=1
//КонецЕсли;
Кц=Цел(ТП.Заказ/К);
Если Кц*К<>ТП.Заказ Тогда Кц=Кц+1 КонецЕсли;
КонецЕсли;
ВЗ.Единица=Единица;
ВЗ.Коэффициент=К;
ВЗ.Количество=Кц;
глПересчетТаблЧасти(ВЗ.ТекущийДокумент(),"Номенклатура");
КонецЦикла;
ВЗ.Записать();
Х="Заказ сформирован."+?(ЕстьОШИБКИ=1," Есть ОШИБКИ !!!","");
Предупреждение(Х);
КонецПроцедуры // ЗаказПоставщику
//------------
Процедура ДиапазонПоДате(Дата0="",Дата1,Дата2)
Если ПустоеЗначение(Дата0)=0 Тогда
Если Дата0>ПолучитьДатуТА() Тогда Дата0=ПолучитьДатуТА(); Предупреждение("Итоги расчитаны по "+Дата0); КонецЕсли;
Понедельник=Дата(Дата0-НомерДняНедели(Дата0)+1);
Дата2=Дата(Понедельник-3);
КонецЕсли;
хх=НомерДняНедели(Дата0);
х=Число(Дата0Х)-Число(Дата0);
Если (х>7)ИЛИ(х<(8-хх)) Тогда Дата0Х=Дата(Дата0+7);КонецЕсли;
Если НЕ(НомерДняНедели(Дата2)=5) Тогда
Дата2=Дата(Дата2-НомерДняНедели(Дата2)+5);
КонецЕсли;
Понедельник=Дата(Дата2-НомерДняНедели(Дата2)+1);
Дата1=Дата(Понедельник-7*(ГлубинаАнализа-1));
РабочихДнейДоПоставки=Число(Дата0Х)-Число(Дата0)-3;
КонецПроцедуры // ДиапазонПоДате
//------------
Процедура Аппроксимация(Данные,А,В)
А=0;В=0;
Если ПустоеЗначение(Данные)=1 Тогда Возврат КонецЕсли;
Хсред=Данные.Итог("Х")/Данные.КоличествоСтрок();
Усред=Данные.Итог("У")/Данные.КоличествоСтрок();
Числитель=0;
Знаменатель=0;
Данные.ВыбратьСтроки();
Пока Данные.ПолучитьСтроку()=1 Цикл
Числитель=Числитель+(Данные.Х-Хсред)*Данные.У;
Знаменатель=Знаменатель+(Данные.Х-Хсред)*(Данные.Х-Хсред);
КонецЦикла;
Если Знаменатель=0 Тогда
А=Усред; В=0;
Иначе
В=Числитель/Знаменатель;
А=Усред-Хсред*Числитель/Знаменатель;
КонецЕсли;
КонецПроцедуры // Аппроксимация
//------------
Процедура АнализЛинейный() // Линейная апроксимация
Перем Прогноз,А,В,Хмин,Хмакс,Заказ;
ТП.Очистить();
ТТ.Выгрузить(ТП,,,"Товар,Остаток");
ТП.НоваяКолонка("ПрогнозПродаж","Число",7,0,"Прогноз",6);
ТП.НоваяКолонка("А","Число",17,0,"А",6);
ТП.НоваяКолонка("В","Число",17,0,"В",6);
ТП.НоваяКолонка("Мин","Число",17,0,"min",6);
ТП.НоваяКолонка("Макс","Число",17,0,"max",6);
ТП.НоваяКолонка("Заказ","Число",7,0,"Заказ",6);
Данные=СоздатьОбъект("ТаблицаЗначений");
Данные.НоваяКолонка("Х","Число",3,0);
Данные.НоваяКолонка("У","Число",7,0);
Если ТТ.КоличествоКолонок()<> ГлубинаАнализа+3 Тогда Сообщить("СОШ-682");Возврат КонецЕсли;
ном=0;
ТТ.ВыбратьСтроки();
Пока ТТ.ПолучитьСтроку()=1 Цикл
ном=ном+1;
ТП.ПолучитьСтрокуПоНомеру(ном);
Данные.УдалитьСтроки();
Для i=1 По ГлубинаАнализа Цикл
у=ТТ.ПолучитьЗначение(ном,i+3);
Если (ПустоеЗначение(у)=1)И(ПустоПропускать=1) Тогда // пропускаем
Иначе
Данные.НоваяСтрока();
Данные.Х=i;
Данные.У=у;
КонецЕсли;
КонецЦикла;
Если ПустоеЗначение(Данные)=1 Тогда Сообщить("Строку "+ТТ.ТекущаяСтрока()+" не обрабатываем.");Продолжить КонецЕсли;
Аппроксимация (Данные,А,В);
// Параметры заказа
//Прогноз1=А+В*(ГлубинаАнализа+1);
Прогноз2=А+В*(ГлубинаАнализа+2);
Расчётный Остаток На Моменть Поступления Заказа=Макс(ТТ.Остаток-ТТ.Расходимость*РабочихДнейДоПоставки,0);
Заказ=Прогноз2*1.3-РасчётныйОстатокНаМоментьПоступленияЗаказа;
Хмин=Прогноз2*0.5;
Хмакс=Прогноз2*1.5;
ТП.А=А;
ТП.В=В;
ТП.ПрогнозПродаж=Прогноз2;
ТП.Заказ=Заказ;
ТП.Мин=Хмин;
ТП.Макс=Хмакс;
КонецЦикла;
ТТ.ТекущаяСтрока(1);
ТП.ТекущаяСтрока(1);
Форма.Закладки.ТекущаяСтрока(3);
Форма.ИспользоватьСлой("Основной,Даты,Заказ", 2);
КонецПроцедуры // АнализЛинейный
//------------
Процедура УбратьОтрицательныеОстатки() // Возможна пересортица...
ТТ.ВыбратьСтроки();
Пока ТТ.ПолучитьСтроку()=1 Цикл
Если ТТ.Остаток<0 Тогда ТТ.Остаток=0; КонецЕсли;
КонецЦикла;
КонецПроцедуры // УбратьОтрицательныеОстатки
//------------
Процедура Хроника() // Построение графика продаж по неделям
СписокТоваров=СоздатьОбъект("СписокЗначений");
ТоварыПрайса(ВыбПрайс,СписокТоваров);
// Остаток расчитываем на конец предыдущей недели...
// Нет, берём текущий остаток, на рабочую дату.
ОстаткиПоТоварам=СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Остатки)
|Период с Дата0 по Дата0;
|Товар=Регистр.ОстаткиТМЦ.Номенклатура;
|КолВо = Регистр.ОстаткиТМЦ.Количество;
|Функция КО = КонОст(КолВо);
|Группировка Товар Без Групп;
|Условие (Товар В СписокТоваров);
|"//}}ЗАПРОС
;
Если Остатки По Товарам. Выполнить (ТекстЗапроса) = 0 Тогда Предупреждение("Запрос по остаткам не выполнен!");Возврат КонецЕсли;
ЗапросПоТоварам=Создать Объект ("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Товар)
|Период с Дата1 по Дата2;
|Товар=Регистр.ПартииНаличие.Номенклатура;
|КодОперации=Регистр.ПартииНаличие.КодОперации;
|КолВо = Регистр.ПартииНаличие.Количество;
//|Функция Закупка = Приход(КолВо) когда (КодОперации=глКО.Закупка);
//|Функция ВозвратПоставщику = Расход(КолВо) когда (КодОперации=глКО.ВозвратПоставщику);
|Функция Продажа = Расход(КолВо) когда (КодОперации=глКО.Продажа);
//|Функция ВозвратОтПокупателя = Приход(КолВо) когда (КодОперации=глКО.ВозвратОтПокупателя);
|Группировка Неделя;
|Группировка Товар Без Групп;
//|Без итогов;
|Условие (Товар В СписокТоваров);
|"//}}ЗАПРОС;
Если ЗапросПоТоварам.Выполнить(ТекстЗапроса) = 0 Тогда Предупреждение("Запрос по товарам не выполнен!");Возврат КонецЕсли;
ТТ.Очистить();
ТХ=СоздатьОбъект("ТаблицаЗначений");
ТХ.НоваяКолонка("Товар","Справочник.Номенклатура",,,,10);
ТХ.НоваяКолонка("Остаток","Число",7,0,"КонОст",5);
ТХ.НоваяКолонка("Расходимость","Число",7,0,"СрРсх",5);
КолонкиПрихода=СоздатьОбъект("СписокЗначений");
КолонкиРасхода=СоздатьОбъект("СписокЗначений");
Д=0;
Пока ЗапросПоТоварам.Группировка("Неделя") = 1 Цикл
День=Дата(ЗапросПоТоварам.Неделя);
Состояние(""+День);
Д=Д+1;
КолонкаРасхода="Д"+Д;
ТХ.НоваяКолонка(КолонкаРасхода,"Число",7,0,""+День,6);
КолонкиРасхода.ДобавитьЗначение(КолонкаРасхода);
Пока ЗапросПоТоварам.Группировка("Товар") = 1 Цикл
Товар=ЗапросПоТоварам.Товар.ТекущийЭлемент();
СтрокаХ=0;
Если ТХ.НайтиЗначение(Товар,СтрокаХ,1)=0 Тогда
ТХ.НоваяСтрока();
ТХ.Товар=Товар.ТекущийЭлемент();
Если ОстаткиПоТоварам.Получить(Товар.ТекущийЭлемент())=1 Тогда
//ОстаткиПоТоварам.Группировка("Товар");
ТХ.Остаток=Число(ОстаткиПоТоварам.КО);
КонецЕсли;
СтрокаХ=ТХ.КоличествоСтрок();
Иначе
ТХ.ПолучитьСтрокуПоНомеру(СтрокаХ);
КонецЕсли;
//Приход=ЗапросПоТоварам.Закупка-ЗапросПоТоварам.ВозвратПоставщику;
//Расход=ЗапросПоТоварам.Продажа-ЗапросПоТоварам.ВозвратОтПокупателя;
Расход=ЗапросПоТоварам.Продажа;
ТХ.Расходимость=ТХ.Расходимость+Расход;
//ТХ.УстановитьЗначение(СтрокаХ,КолонкаПрихода,Приход);
ТХ.УстановитьЗначение(СтрокаХ,КолонкаРасхода,Расход);
КонецЦикла;
КонецЦикла;
Если ПустоеЗначение(ТХ)=1 Тогда Предупреждение("Данных не найдено !");Возврат КонецЕсли;
ТХ.ВыбратьСтроки();
Пока ТХ.ПолучитьСтроку()=1 Цикл
ТХ.Расходимость=ТХ.Расходимость/Д;
КонецЦикла;
ТХ.Выгрузить(ТТ);
Форма.Закладки.ТекущаяСтрока(2);
Форма.ИспользоватьСлой("Основной,Даты,Планирование", 2);
КонецПроцедуры // Хроника
//------------
Процедура ПриВыбореЗакладки(НомерЗакладки, ЗначениеЗакладки)
Если НомерЗакладки = 1 Тогда
Форма.ИспользоватьСлой("Основной,Анализ,Даты",2);
ПоПрайсу();
ИначеЕсли НомерЗакладки = 2 Тогда
Форма.ИспользоватьСлой("Основной,Даты,Планирование", 2);
ИначеЕсли НомерЗакладки = 3 Тогда
Форма.ИспользоватьСлой("Основной,Даты,Заказ", 2);
КонецЕсли;
КонецПроцедуры // ПриВыбореЗакладки
//------------
Процедура ПриОткрытии()
Если ПустоеЗначение(Дата0)=1 Тогда Дата0=РабочаяДата(); КонецЕсли;
Если Дата0>ПолучитьДатуТА() Тогда Дата0=ПолучитьДатуТА(); КонецЕсли;
ДиапазонПоДате(Дата0,Дата1,Дата2);
Спр = Форма.Параметр;
Если ПустоеЗначение(Спр) =0 Тогда
Если Спр.Вид() = "_Прайсы" Тогда
ВыбПрайс=Спр.ТекущийЭлемент();
КонецЕсли;
КонецЕсли;
Форма.ИспользоватьЗакладки(1);
Форма.Закладки.ДобавитьЗначение(1, "Анализ");
Форма.Закладки.ДобавитьЗначение(2, "Планирование");
Форма.Закладки.ДобавитьЗначение(3, "Заказ");
//Форма.Закладки.ДобавитьЗначение(4, "Данные");
//Форма.Закладки.ДобавитьЗначение(5, "Метод");
Форма.ИспользоватьСлой("Основной,Анализ,Даты",2);
ПоПрайсу();
КонецПроцедуры // ПриОткрытии
Размещено на Allbest.ru
Подобные документы
Проектирование систем обработки данных для заданных объектов управления, автоматизированных систем разного назначения. Разработка автоматизированной системы приема заказов организации. Модель бизнес-процесса. Основные алгоритмы работы программы.
курсовая работа [910,8 K], добавлен 25.05.2015Обработка и хранение информации, связанной с заказами, при осуществлении поставок продукции с помощью системы управления базами данных (СУБД). Разработка автоматизированной системы учета заказов для ООО "Класс-сервис". Программно-технические средства.
дипломная работа [2,2 M], добавлен 22.09.2011Инфологическая модель задачи автоматизации и формирования заказов поставщикам, контроля состояния склада. Анализ ключей сущностей проектируемой базы данных, разработка и нормализация системы таблиц и форм. Механизм оформления заказов в базе данных.
курсовая работа [358,5 K], добавлен 26.11.2012Разработка автоматизированной информационной системы учета заказов на выполнение работ и формированию отчетной документации Бюро технической инвентаризации (БТИ). Системный анализ и схема документооборота. Разработка инфологической модели данных.
дипломная работа [603,9 K], добавлен 29.08.2014Разработка автоматизированной системы по учету и анализу заказов на товары для предприятия, работающего в сфере торговли товарами для обеспечения безопасности. Разработка удобного для пользователя интерфейса. Реализация многопользовательского доступа.
дипломная работа [1,1 M], добавлен 14.01.2012Разработка автоматизированной информационной системы "Стол заказов" для учета регистрации заказов и информации о клиентах, ответственных лицах и товарах. Характеристики комплекса задач. Проект базы данных, построение логической и физической моделей.
курсовая работа [354,9 K], добавлен 18.12.2014Разработка методов повышение прибыльности бизнеса, путем решения проблем отдела продаж в процессе обработки заказов клиентов с помощью информационных технологий, что предполагает разработку модуля для автоматизированной обработки заказов клиентов.
дипломная работа [4,0 M], добавлен 06.12.2013Рассмотрение условий работы сотрудников фирмы "Окна Марио". Составление базы данных для проектирования информационной системы учета и контроля заказов. Разработка проекта. Произведенный расчет экономической эффективности и экологичности программы.
дипломная работа [4,6 M], добавлен 29.08.2014Разработка автоматизированной системы учета и мониторинга выполнения заказов клиентов в ЗАО "Централизованный региональный технический сервис" группы компаний MAYKOR. Обоснование СУБД и инструментальных средств программирования. Затраты на разработку.
дипломная работа [2,8 M], добавлен 18.01.2015Разработка программного обеспечения для автоматизации процесса учета поступления и формирования заказов. Построение реляционной базы данных средствами Microsoft Access. Методы повышения эффективности организации информационных потоков на предприятии.
дипломная работа [1,9 M], добавлен 02.12.2012