Файл: Разработка конфигурации, реализующий учет хозяйственных товаров на складе.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 28.06.2023

Просмотров: 52

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Для Каждого ТекСтрокаТовары Из Товары Цикл

ОбластьТовары. Параметры. Заполнить (ТекСтрокаТовары);

КолВо = КолВо + 1;

ТабДок. Вывести (ОбластьТовары);

КонецЦикла;

// вывод области "Всего"

Область = Макет. ПолучитьОбласть ("Всего");

Область. Параметры. ИтогСумма = Товары. Итог ("Сумма");

СуммаДок = Область. Параметры. ИтогСумма;

СуммаНДС = СуммаДок - (СуммаДок/1.18);

Область. Параметры. СуммаНДС = СуммаНДС;

Область. Параметры. Заполнить (ЭтотОбъект);

ТабДок. Вывести (Область);

// вывод области "Сумма"

Область = Макет. ПолучитьОбласть ("Сумма");

Область. Параметры. СуммаДокумента = ЧислоПрописью (СуммаДок,, "Рубль, рубля, рублей, м, копейка, копейки, копеек, ж");

Область. Параметры. КолВо = КолВо;

Область. Параметры. Заполнить (ЭтотОбъект);

ТабДок. Вывести (Область);

ТабДок. ОтображатьСетку = Ложь;

ТабДок. Защита = Ложь;

ТабДок. ТолькоПросмотр = Ложь;

ТабДок. ОтображатьЗаголовки = Ложь;

ТабДок. Показать ();

КонецПроцедуры.

Документ Продажа товара включает дополнительные реквизиты в шапке документа: Фирма, Покупатель, Комментарий; в табличной части: Наименование, Количество, Цена, Сумма. Поле Наименование должно иметь кнопку выбора для выбора товара из справочника, поле Количество должно иметь кнопку выбора для вызова калькулятора. Значение поля Цена должно подставляться из справочника. Сумма в строке должна рассчитываться автоматически. Под табличной частью должна выводиться итоговая сумма по всем строкам. Должна формироваться печатная форма документа в виде расходной накладной. В печатных формах всех документов рассчитывается и указывается сумма НДС, общее количество наименований товара и сумма прописью. Документы должны иметь возможность записи без проведения и с проведением.

Текст процедур прописываем в модуле документа:

Процедура ТоварыНаименованиеПриИзменении (Элемент)

Строка=ЭлементыФормы. Товары. ТекущиеДанные;

Строка. Цена=Строка. Наименование. ЦенаПокупки;

КонецПроцедуры.

Процедура ТоварыКолВоПриИзменении (Элемент)

Строка=ЭлементыФормы. Товары. ТекущиеДанные;

Строка. Сумма=Строка. КолВо*Строка. Цена;

СуммаДок=Товары. Итог ("Сумма");

КонецПроцедуры

Процедура ПриОткрытии ()

Фирма=Константы. НаименованиеФирмы. Получить ();

КонецПроцедуры


Процедура Печать (Элемент)

ТабДок = Новый ТабличныйДокумент;

Макет = Документы. ПродажаТовара. ПолучитьМакет ("Печать");

// Заголовок

Область = Макет. ПолучитьОбласть ("Заголовок");

Область. Параметры. Заполнить (ЭтотОбъект);

ТабДок. Вывести (Область);

// Шапка

Шапка = Макет. ПолучитьОбласть ("Шапка");

Шапка. Параметры. Заполнить (ЭтотОбъект);

ТабДок. Вывести (Шапка);

// Товары

Область = Макет. ПолучитьОбласть ("ТоварыШапка");

ТабДок. Вывести (Область);

КолВо = 0;

ОбластьТовары = Макет. ПолучитьОбласть ("Товары");

Для Каждого ТекСтрокаТовары Из Товары Цикл

ОбластьТовары. Параметры. Заполнить (ТекСтрокаТовары);

КолВо = КолВо + 1;

ТабДок. Вывести (ОбластьТовары);

КонецЦикла;

// вывод области "Всего"

Область = Макет. ПолучитьОбласть ("Всего");

Область. Параметры. ИтогСумма = Товары. Итог ("Сумма");

СуммаДок = Область. Параметры. ИтогСумма;

СуммаНДС = СуммаДок - (СуммаДок/1.18);

Область. Параметры. СуммаНДС = СуммаНДС;

Область. Параметры. Заполнить (ЭтотОбъект);

ТабДок. Вывести (Область);

// вывод области "Сумма"

Область = Макет. ПолучитьОбласть ("Сумма");

Область. Параметры. СуммаДокумента = ЧислоПрописью (СуммаДок,, "Рубль, рубля, рублей, м, копейка, копейки, копеек, ж");

Область. Параметры. КолВо = КолВо;

Область. Параметры. Заполнить (ЭтотОбъект);

ТабДок. Вывести (Область);

ТабДок. ОтображатьСетку = Ложь;

ТабДок. Защита = Ложь;

ТабДок. ТолькоПросмотр = Ложь;

ТабДок. ОтображатьЗаголовки = Ложь;

ТабДок. Показать ();

КонецПроцедуры

Работа с журналами документов. Создаем 2 журнала: Документы по закупкам и Документы по продажам. Журналы должны включать дополнительные реквизиты Контрагент и Сумма по документу.

Работа с отчетами. Создаем 4 отчета: Прайс-лист, Остатки товаров на складе, Отчет по закупкам и Отчет по продажам. Отчёт Остатки товаров на складе должен иметь возможность детализации по отдельным товарам. Отчёты по закупкам и продажам должны формироваться за период с детализацией по контрагентам. Существует необходимость осуществления сложной обработки данных, которую очень сложно получить, непосредственно работая со справочниками, документами, регистрами и журналами, для выполнения такой обработки существует механизм запросов. Запросы мы используем при создании отчета Остатки, а остальные создаем с помощью схемы компоновки данных.


Рисунок 13 - Окно отчета Прайс - лист

Рисунок 14 - Окно отчета Отчет по закупкам

Рисунок 15 - Окно отчета Отчет по продажам

Отчет Остатки товаров на складе создали с помощью запроса, процедуру прописываем в модуле формы отчета.

Процедура КнопкаСформироватьНажатие (Кнопка)

ТабДок = Новый ТабличныйДокумент;

Макет = ЭтотОбъект. ПолучитьМакет ("Макет");

ОбластьМакета = Макет. ПолучитьОбласть ("Шапка");

ОбластьМакета. Параметры. ТекущаяДата = ТекущаяДата ();

ТабДок. Вывести (ОбластьМакета);

Запрос = Новый Запрос;

Если Товары. Наименование <> "" Тогда

Запрос. Текст = "

|Выбрать

| ОстаткиТовараОстатки. Товары,

| ОстаткиТовараОстатки. Товары. Наименование КАК Наименование,

| ОстаткиТовараОстатки. КолВоОстаток КАК Количество

| Из

| РегистрНакопления. ОстаткиТовара. Остатки КАК ОстаткиТовараОстатки

| Где

| ОстаткиТовараОстатки. Товары В (&Товары)

|";

Иначе

Запрос. Текст = "

|ВЫБРАТЬ

| ОстаткиТовараОстатки. Товары,

| ОстаткиТовараОстатки. Товары. Наименование КАК Наименование,

|ОстаткиТовараОстатки. КолВоОстаток КАК Количество

| Из

| РегистрНакопления. ОстаткиТовара. Остатки КАК ОстаткиТовараОстатки

|";

КонецЕсли;

Запрос. УстановитьПараметр ("Товары", Товары);

Результат = Запрос. Выполнить ();

Выборка = Результат. Выбрать ();

Пока Выборка. Следующий () Цикл

ОбластьМакета = Макет. ПолучитьОбласть ("Товар");

ОбластьМакета. Параметры. Товар = Выборка. Наименование;

ОбластьМакета. Параметры. Количество = Выборка. Количество;

ТабДок. Вывести (ОбластьМакета);

КонецЦикла;

ТабДок. Показать ();

КонецПроцедуры

Рисунок 16 - Окно отчета Остатки

Создание пользователей.

В системе 1С: Предприятие 8.2 для авторизации используется список пользователей, для разграничения полномочий мы создаем в объекте роли 2 пользователей и создаем 2 интерфейса, устанавливаем в каждом набор прав, для разрешения доступа только к необходимым объектам.

Для работы с конфигурацией мы создали двух пользователей. Первый пользователь - Иванов (Администратор) с полными правами и интерфейсом, а второй - Петров (менеджер) с ограниченными правами (нельзя редактировать константы) и с ограниченным интерфейсом (нет пункта Операции в главном меню).


Процедуры описываем в модуле объекта:

Процедура СтартПередСтартом (ТочкаМаршрутаБизнесПроцесса, Отказ)

НужноЗаписать = Ложь;

ЕСЛИ Счет. Пустая () ТОГДА

СчетОбъект = Документы. ЗаявкиПокупателя. СоздатьДокумент ();

СчетОбъект. Дата = ТекущаяДата ();

СчетОбъект. Записать ();

Счет = СчетОбъект. Ссылка;

НужноЗаписать = Истина;

КОНЕЦЕСЛИ;

ЕСЛИ РасходнаяНакладная. Пустая () ТОГДА

РасходнаяНакладнаяОбъект = Документы. ПродажаТовара. СоздатьДокумент ();

РасходнаяНакладнаяОбъект. Дата = ТекущаяДата ();

РасходнаяНакладнаяОбъект. Записать ();

РасходнаяНакладная = РасходнаяНакладнаяОбъект. Ссылка;

НужноЗаписать = Истина;

КОНЕЦЕСЛИ;

ЕСЛИ НужноЗаписать ТОГДА

Записать ();

КОНЕЦЕСЛИ;

СООБЩИТЬ ("Старт бизнес-процесса: " + """" + ЭтотОбъект. МетаДанные (). Синоним+"""");

КонецПроцедуры.

Процедура СчетОплаченПроверкаУсловия (ТочкаМаршрутаБизнесПроцесса, Результат)

Результат = Счет. ОплатаСчета;

КонецПроцедуры.

Процедура ВыпискаСчетаОбработкаИнтерактивнойАктивации (ТочкаМаршрутаБизнесПроцесса, Задача, СтандартнаяОбработка)

Счет. ПолучитьФорму ("ФормаДокумента"). Открыть ();

СтандартнаяОбработка=Ложь;

КонецПроцедуры.

Процедура ВыпискаСчетаПередИнтерактивнымВыполнением (ТочкаМаршрутаБизнесПроцесса, Задача, Отказ)

Если Счет. Товары. Количество () =0 тогда

Отказ=Истина;

КонецЕсли;

КонецПроцедуры.

Процедура ВыпискаНакладнойОбработкаИнтерактивнойАктивации (ТочкаМаршрутаБизнесПроцесса, Задача, СтандартнаяОбработка)

РасходнаяНакладная. ПолучитьФорму ("ФормаДокумента"). Открыть ();

СтандартнаяОбработка=Ложь;

КонецПроцедуры.

Процедура ВыпискаНакладнойПередИнтерактивнымВыполнением (ТочкаМаршрутаБизнесПроцесса, Задача, Отказ)

Если РасходнаяНакладная. Товары. Количество () =0 тогда

Отказ=Истина;

КонецЕсли;

КонецПроцедуры.

Процедура ОтгрузкаСоСкладаОбработкаИнтерактивнойАктивации (ТочкаМаршрутаБизнесПроцесса, Задача, СтандартнаяОбработка)

РасходнаяНакладная. ПолучитьФорму ("ФормаДокумента"). Открыть ();

СтандартнаяОбработка=Ложь;

КонецПроцедуры.

Процедура НормальноеЗавершениеПриЗавершении (ТочкаМаршрутаБизнесПроцесса, Отказ)

Сообщить ("Завершение бизнес-процесса: "+""""+ЭтотОбъект. Метаданные (). Синоним+"""");


КонецПроцедуры.

Процедура НетПриЗавершении (ТочкаМаршрутаБизнесПроцесса, Отказ)

Сообщить ("Досрочное завершение бизнес-процесса: "+""""+ЭтотОбъект. Метаданные (). Синоним+"""");

КонецПроцедуры.

В модуле обычного приложения определяем процедуры:

Процедура ПриНачалеРаботыСистемы ()

ПараметрыСеанса. ТекущийИсполнитель=Справочники. Сотрудники. НайтиПоКоду (ИмяПользователя ());

ПодключитьОбработчикОповещения ("ОбработчикОповещения");

КонецПроцедуры.

Процедура ОбработчикОповещения (ИмяСобытия, Параметр, Источник) Экспорт

Если ИмяСобытия="ЗаписьСчета" Тогда

Запрос=Новый Запрос;

Запрос. УстановитьПараметр ("Парам", Источник. Ссылка);

Запрос. Текст="ВЫБРАТЬ

|Задача. Ссылка

|Из

|БизнесПроцесс. ПродажаТовара КАК ПродажаТовара ЛЕВОЕ СОЕДИНЕНИЕ Задача. Задача. ЗадачиПоИсполнителю КАК Задача

|ПО ПродажаТовара. Ссылка=Задача. БизнесПроцесс

|ГДЕ (Задача. Выполнена=Ложь) и (ПродажаТовара. Счет=&Парам)";

Выборка=Запрос. Выполнить (). Выбрать ();

Пока Выборка. Следующий () Цикл

ТекущаяЗадача=Выборка. Ссылка. ПолучитьОбъект ();

Если ТекущаяЗадача. ТочкаМаршрута=БизнесПроцессы. ПродажаТовара. ТочкиМаршрута. ВыпискаСчета Тогда

ФормаСчета=ТекущаяЗадача. БизнесПроцесс. Счет. ПолучитьФорму ();

Если ФормаСчета. Открыта () =Истина Тогда

Если Вопрос ("Пометить задачу"""+ТекущаяЗадача. Наименование+"""как выполненную?",РежимДиалогаВопрос. ДаНет) =КодВозвратаДиалога. Да Тогда

ТекущаяЗадача. ВыполнитьЗадачу ();

КонецЕсли;

КонецЕсли;

КонецЕсли;

КонецЦикла;

КонецЕсли;

Если ИмяСобытия="Списание" Тогда

Запрос=Новый Запрос;

Запрос. УстановитьПараметр ("Парам", Источник. Ссылка);

Запрос. Текст="ВЫБРАТЬ

|Задача. Ссылка

|Из

|БизнесПроцесс. ПродажаТовара КАК ПродажаТовара ЛЕВОЕ СОЕДИНЕНИЕ Задача. Задача. ЗадачиПоИсполнителю КАК Задача

|ПО ПродажаТовара. Ссылка=Задача. БизнесПроцесс

|ГДЕ (Задача. Выполнена=Ложь) и (ПродажаТовара. РасходнаяНакладная=&Парам)";

Выборка=Запрос. Выполнить (). Выбрать ();

Пока Выборка. Следующий () Цикл

ТекущаяЗадача=Выборка. Ссылка. ПолучитьОбъект ();

Если ТекущаяЗадача. ТочкаМаршрута=БизнесПроцессы. ПродажаТовара. ТочкиМаршрута. ВыпискаНакладной Тогда

ФормаДокумента=ТекущаяЗадача. БизнесПроцесс. РасходнаяНакладная. ПолучитьФорму ();