Добавил финальный диплом

This commit is contained in:
Марычев Павел Иванович 2022-05-29 16:40:39 +04:00
parent bcd61bc9e2
commit de3e8b95b1
18 changed files with 342 additions and 0 deletions

BIN
certificate.pdf Normal file

Binary file not shown.

View File

@ -0,0 +1,78 @@
### Учет
Все добавляемые объекты включаем в новую подсистему **Учет**, выведенную в командный интерфейс.
1. Добавить план видов характеристик **ВидыСубконто**:
* Тип значения характеристик - составной (СправочникСсылка.Контрагенты, СправочникСсылка.Номенклатура, СправочникСсылка.Сотрудники)
* Представление объекта - "Вид субконто"
* Три предопределенных элемента:
* Контрагенты (СправочникСсылка.Контрагенты)
* Номенклатура (СправочникСсылка.Номенклатура)
* Сотрудники (СправочникСсылка.Сотрудники)
2. Добавить план счетов **Управленческий**:
* Длина кода - 4, наименования - 50
* Маска кода - "##.#", автопорядок по коду, ширина порядка - 4.
* Добавить признак учета **Количественный** для учета по количеству на единственном счете **Товары**
* В качестве видов субконто указать созданный на предыдущем шаге ПВХ **ВидыСубконто**. Максимальное количество видов субконто - 1.
* Добавить предопределенные счета:
* Активный 41 **Товары** (виды субконто: Номенклатура, учет по количеству)
* Активный 50 **ДенежныеСредства**
* Пассивный 60 **РасчетыСПоставщиками** (виды субконто: Контрагенты)
* Активный 62 **РасчетыСПокупателями** (виды субконто: Контрагенты)
* Активно-пассивный 70 **РасчетыССотрудниками** (виды субконто: Сотрудники)
* Активно-пассивный 90 **ПрибылиИУбытки** с субсчетами
* 90.1 **Доходы**
* 90.2 **Расходы**
* В итоге план счетов должен выглядеть так:
![План счетов Управленческий](diploma-c-chart-of-accounts.png)
3. Добавить регистр бухгалтерии **Управленческий**:
* С учетом по плану счетов **Управленческий**
* С корреспонденцией
* С ресурсами:
* **Сумма** (ОпределяемыйТип.Сумма)
* **Количество** (ОпределяемыйТип.Количество) - с признаком учета **Количественный** и со снятым флажком **Балансовый**
* В регистраторы добавить документы:
* **ПоступлениеТоваровИУслуг**
* **РеализацияТоваровИУслуг**
* **ПоступлениеДенежныхСредств**
* **СписаниеДенежныхСредств**
4. Доработать обработчик проведения документа **ПоступлениеТоваровИУслуг**:
* Для строк с номенклатурой вида Товар формировать движение Дт **Товары** с заполнением субконто Номенклатура - Кт **РасчетыСПоставщиками** с заполнением субконто Контрагенты на сумму строки.
* Для строк с номенклатурой вида Услуга формировать движение Дт **Расходы** - Кт **РасчетыСПоставщиками** с заполнением субконто Контрагенты на сумму строки.
5. Доработать обработчик проведения документа **РеализацияТоваровИУслуг**:
* Формировать движение Дт **РасчетыСПокупателями** с заполнением субконто Контрагенты - Кт **Доходы** на общую сумму продажи (по всем строкам).
* Для строк с номенклатурой вида Товар формировать движение Дт **Расходы** - Кт **Товары** с заполнением субконто Номенклатура на сумму себестоимости списанного товара. Себестоимость должна рассчитываться по данным регистра бухгалтерии, а не по данным регистра накопления **Товары**. Данные регистра бухгалтерии нужно получать запросом к виртуальной таблице **РегистрБухгалтерии.Управленческий.Остатки** на МоментВремени() проводимого документа. При списании необходимо проверять, что количества товара достаточно для списания.
6. Доработать документ **ПоступлениеДенежныхСредств**:
* Тип реквизита **Плательщик** сделать составным и расширить его типом **СправочникСсылка.Сотрудники**.
* При проведении формировать движения в Дт **ДенежныеСредства** и Кт:
* Для плательщиков-контрагентов - **РасчетыСПокупателями** с заполнением субконто **Контрагенты**.
* Для плательщиков-сотрудников - **РасчетыССотрудниками** с заполнением субконто **Сотрудники**.
7. Доработать документ **СписаниеДенежныхСредств**:
* Тип реквизита **Получатель** сделать составным и расширить его типом **СправочникСсылка.Сотрудники**.
* При проведении формировать движения с Кт **ДенежныеСредства** и в Дт:
* Для получателей-контрагентов - **РасчетыСПоставщиками** с заполнением субконто **Контрагенты**.
* Для получателей-сотрудников - **РасчетыССотрудниками** с заполнением субконто **Сотрудники**.
8. Добавить отчет **ОборотноСальдоваяВедомость** ("Оборотно-сальдовая ведомость"):
* Создать основную схему компоновки данных, а в ней - набор данных-запрос
* В запрос конструктором добавить виртуальную таблицу **РегистрБухгалтерии.Управленческий.ОстаткиИОбороты** с параметрами &НачалоПериода и &КонецПериода
* В качестве полей выбрать:
* Будущие группировки **Счет** и **Субконто1**
* Будущие ресурсы:
* **СуммаНачальныйОстатокДт** и **СуммаНачальныйОстатокДт**
* **СуммаОборотДт** и **СуммаОборотКт**
* **СуммаКонечныйОстатокДт** и **СуммаКонечныйОстатокКт**
* На закладке "Ресурсы* добавить три пары ресурсов с функцией по умолчанию **Сумма** и прочими настройками по умолчанию
* На закладке "Настройки":
* Добавить группирровку **Счет** (с иерархией), а под ней - **Субконто1** (без иерархии)
* Добавить ресурсы, сгруппировав их в группы "Начальный остаток", "Оборот", "Конечный остаток", и дав краткие заголовки "Дт" и "Кт" вместо избыточных "СуммаНачальныйОстатокДт" и т.д.:
![Настройки Оборотно-сальдовой ведомости](diploma-c-trial-balance.png)
* Параметры **НачалоПериода** и **КонецПериода** включите в пользовательские настройки с быстрым доступом.
* Сформировав движения документами по всем счетам, проверьте отчет. Он должен выглядеть примерно так:
![Пример Оборотно-сальдовой ведомости](diploma-c-trial-balance-example.png)

View File

@ -0,0 +1,52 @@
### Взаимодействие
Все добавляемые объекты включаем в новую подсистему **Взаимодействие**, выведенную в командный интерфейс.
1. Добавить определяемый тип **ПредметПроцесса**, включив в него все документы и справочники.
2. Добавить справочник **Роли**
* Без кода, с наименованием разумной длины
3. Добавить регистр сведений **ИсполнителиРолей**:
* С измерениями **Роль** (СправочникСсылка.Роли) и **Исполнитель** (СправочникСсылка.Сотрудники)
* Запретить незаполненные значения измерений
4. Добавить задачу **Задача**
* С адресацией по регистру **ИсполнителиРолей**
* С реквизитами адресации **Исполнитель** (СправочникСсылка.Сотрудники) и **Роль** (СправочникСсылка.Роли), связав их с одноименнными измерениями регистра **ИсполнителиРолей**
* С основным реквизитом адресации **Исполнитель**
* Текущий исполнитель определяется по значению параметра сеанса **ТекущийСотрудник**
* С наименованием разумной длины и строковым реквизитом **ПодробноеОписание** неограниченной длины.
* С разумной формой задачи, включающей только прикладные реквизиты в режиме "Только просмотр"
5. Добавить процесс **Поручение**
* С задачей **Задача**
* С реквизитами:
* **НаименованиеЗадачи** (обязательный; строка такой же длины, как наименование задачи)
* **ПодробноеОписание** (строка неограниченной длины)
* **Исполнитель** (обязательный; составной тип: СправочникСсылка.Сотрудники, СправочникСсылка.Роли)
* **Предмет** (ОпределяемыйТип.ПредметПроцесса)
* Со схемой, состоящей из точки старта, точки действия и точки завершения
* В точке действия переопределить обработчик **ПриСозданииЗадач**, дозаполнив созданные задачи реквизитами процесса:
```bsl
Для Каждого ФормируемаяЗадача Из ФормируемыеЗадачи Цикл
ФормируемаяЗадача.Наименование = НаименованиеЗадачи;
ФормируемаяЗадача.ПодробноеОписание = ПодробноеОписание;
ФормируемаяЗадача.Исполнитель = ?(ТипЗнч(Исполнитель) = Тип("СправочникСсылка.Сотрудники"),
Исполнитель, Неопределено);
ФормируемаяЗадача.Роль = ?(ТипЗнч(Исполнитель) = Тип("СправочникСсылка.Роли"),
Исполнитель, Неопределено);
КонецЦикла;
```
* Создать разумную форму процесса, содержащую только прикладные реквизиты, с возможностью заполнить их и стартовать процесс.
6. Добавить форму списка задач **ЗадачиМне**
* Не назначать ее основной формой (основная форма будет содержать все задачи)
* Добавить команду **ПринятьКИсполнению**, при вызове которой на севере нужно:
* Получить объект текущей задачи
* Установить реквизит **Исполнитель** равным значению параметра сеанса **ТекущийСотрудник**
* Записать объект текущей задачи
* Добавить в нее динамический список по виртуальной таблице **Задача.Задача.ЗадачиПоИсполнителю** с разумным минимумом реквизитов
* Добавить этот список в рабочую область начальной страницы
* Удостовериться, что пользователи видят на рабочем столе свои задачи, адресованные им как непосредственно, так и посредством ролей

View File

@ -0,0 +1,85 @@
### Зарплата
Все добавляемые объекты включаем в новую подсистему **Зарплата**, выведенную в командный интерфейс, и включаем в состав функциональной опции **ВестиРасчетЗарплаты**.
1. Добавить регистр сведений **Календарь**:
* Измерение - День (Дата)
* Ресурс - Рабочий (Число)
2. Добавить план видов расчета **Начисления**:
* Без кода и с наименованием разумной длины (например, 100)
* На закладке "Расчет" укажите:
* Использование периода действие
* Зависимость от базы по периоду действия по тому же плану видов расчета
* Создайте предопределенные виды расчета:
* **Больничный**, **Отпуск**, **ФиксированнаяПремия**
* **ОплатаПоОкладу** с вытесняющими видами расчета **Больничный** и **Отпуск**
* **ПремияПроцентом** с базовым и ведущим видом расчета **ОплатаПоОкладу**
3. Добавить регистр расчета **Зарплата**:
* С учетом по плану видов расчета **Начисления**
* Использующий период действия и базовый период
* Использующий в качестве графика регистр **Календарь**, со значением графика **Рабочий**, а датой графика - **День**
* С периодичностью "Месяц"
* С измерением **Сотрудник** (СправочникСсылка.Сотрудники) и ресурсом **Сумма** (ОпределяемыйТип.Сумма).
4. Добавить документ **НачислениеСписком** для начисления фиксированных сумм по списку сотрудников:
* С обязательным реквизитом **Начисление** (ВидРасчетаСсылка.Начисления)
* С обязательными реквизитами **ПериодДействияНачало** и **ПериодДействияКонец** (Дата и время)
* С табличной частью **Сотрудники** с реквизитами **Сотрудник** (СправочникСсылка.Сотрудники) и **Сумма** (ОпределяемыйТип.Сумма).
* Создать для него понятную форму документа.
* На закладке "Движения" сделать его регистратором для регистра расчета **Зарплата** и для регистра бухгалтерии **Управленческий**
* В обработке проведения для каждой строки формировать движения:
* По регистру расчета **Зарплата**, не забыв заполнить вид расчета (по реквизиту **Начисление**), период регистрации (дата документа) и период действия (согласно реквизитам **ПериодДействияНачало** и **ПериодДействияКонец**). Период действия понадобится в дальнейшем для вытеснения оплаты по окладу больничными и отпусками, введенными этим документом.
* По регистру бухгалтерии **Управленческий** в Дт счета **Расходы** и в Кт счета **РасчетыССотрудниками** с заполнением субконто **Сотрудник** на сумму начисления.
5. Добавить документ **НачислениеОплатыПоОкладу** для начисления оплаты по окладу с учетом фактически отработанного времени:
* С обязательным реквизитом **ЗаМесяц** типа Дата с форматом "MM.yyyy", чтобы пользователь видел только месяц.
* С табличной частью **Сотрудники** с единственным реквизитом **Сотрудник** (СправочникСсылка.Сотрудники).
* Создать для него понятную форму документа.
* На закладке "Движения" сделать его регистратором для регистра расчета **Зарплата** и для регистра бухгалтерии **Управленческий**
* В обработке проведения:
* Записать движения, пока без сумм, по регистру расчета **Зарплата**. При этом:
* В качестве периода регистрации указать дату документа, а в качестве периода действия - начало и конец месяца даты **ЗаМесяц**.
* В качестве вида расчета указать предопределенный ПланыВидовРасчета.Начисления.ОплатаПоОкладу.
* После записи движений документа, выполнить запрос к ним, в запросе:
* Получить оклад для каждого сотрудника.
* Получить факт и норму из соответствующей виртуальной таблицы регистра расчета.
* Получить номер строки движений для последующего обращения к нужному.
* Обойти результат запроса, на каждой итерации цикла выполнив расчет сумму путем умножения оклада на частное деления факта на норму:
```bsl
Пока Выборка.Следующий() Цикл
Движение = Движения.Зарплата[Выборка.НомерСтроки - 1];
Движение.Сумма = Выборка.Оклад * Выборка.Факт / Выборка.План;
КонецЦикла;
```
* Определив сумму, сформировать парное движение на такую же сумму по регистру бухгалтерии **Управленческий** в Дт счета **Расходы** и в Кт счета **РасчетыССотрудникми**, заполнив субконто **Сотрудник**.
* Создав документ, заполните календарь и убедитесь в том, что документ:
* В отсутствие вытесняющих начислений начисляет за месяц полную сумму оклада.
* После ввода оклада или больничного документом **НачислениеСписком** уменьшает начисления по окладу пропорционально дням невыхода.
6. Добавить документ **НачислениеПремииПроцентом** для начисления премии процентом от оклада:
* С обязательным числовым реквизитом **Процент**
* С обязательным реквизитом **ЗаМесяц** типа Дата с форматом "MM.yyyy", чтобы пользователь видел только месяц.
* С табличной частью **Сотрудники** с единственным реквизитом **Сотрудник** (СправочникСсылка.Сотрудники).
* Создать для него понятную форму документа.
* На закладке "Движения" сделать его регистратором для регистра расчета **Зарплата** и для регистра бухгалтерии **Управленческий**
* В обработке проведения:
* Записать движения, пока без сумм, по регистру расчета **Зарплата**. При этом:
* В качестве периода регистрации указать дату документа, а в качестве периода действия и базового периода действия - начало и конец месяца даты **ЗаМесяц**.
* В качестве вида расчета указать предопределенный ПланыВидовРасчета.Начисления.ПремияПроцентом.
* Записав движения, получить базу запросом к соответствующей виртуальной таблице.
* Обойти результат запроса, на каждой итерации цикла выполнив расчет премии, умножив базу на процент премии и поделив на 100.
```bsl
Пока Выборка.Следующий() Цикл
Движение = Движения.Зарплата[Выборка.НомерСтроки - 1];
Движение.Сумма = Выборка.СуммаБаза * Процент / 100;
КонецЦикла;
```
* Определив сумму, сформировать парное движение на такую же сумму по регистру бухгалтерии **Управленческий** в Дт счета **Расходы** и в Кт счета **РасчетыССотрудниками**, заполнив субконто **Сотрудник**.
* Создав документ, проверьте себя, начислив премию процентом от оклада и выплатив все начисления документом **СписаниеДенежныхСредств**. В оборотно-сальдовой ведомости кредитовые обороты счета **РасчетыССотрудниками** должны полностью закрыться дебетовыми, и остаток стать нулевым.

View File

@ -0,0 +1,116 @@
# Требования к результату
## Технические требования
* Программный код всех модулей должен быть оформлен в соответствии со стандартами разработки на платформе 1С:Предприятие по ссылке: https://its.1c.ru/db/v8std#content:456:hdoc
* Недопустимо выполнять запросы в цикле, в том числе неявные при обращении через точку к реквизиту ссылки. То есть обращение `Строка.Номенклатура.ТипНоменклатуры` недопустимо.
* При работе с регистрами расчета необходимо получать данные для расчета через виртуальные таблицы. Недопустимо использовать объектную модель для обращения к регистрам расчета.
## Функциональные требования
Выгрузка информационной базы (файл с расширением dt), включающий демоданные и конфигурацию с именем "УправлениеИТФирмой" из диплома блока Б, дополненную:
Подсистемой **Учет**, а в ней:
* Регистром бухгалтерии **Управленческий**, который:
* Содержит ресурсы Количество и Сумма определяемых типов
* Поддерживает корреспонденции
* Планом видов характеристик **ВидыСубконто**, который:
* Включает значения типов СправочникСсылка.Номенклатура, СправочникСсылка.Контрагенты, СправочникСсылка.Сотрудники
* Содержит предопределенные элементы Номенклатура, Контрагенты, Сотрудники
* Планом счетов **Управленческий**, который:
* Используется для учета в регистре бухгалтерии **Управленческий**
* В качестве видов субконто использует ПВХ **ВидыСубконто**
* Содержит предопределенные счета:
* Активный 41 **Товары** (виды субконто: Номенклатура, учет по количеству)
* Активный 50 **ДенежныеСредства**
* Пассивный 60 **РасчетыСПоставщиками** (виды субконто: Контрагенты)
* Активный 62 **РасчетыСПокупателями** (виды субконто: Контрагенты)
* Активно-пассивный 70 **РасчетыССотрудниками** (виды субконто: Сотрудники)
* Активно-пассивный 90 **ПрибылиИУбытки** с субсчетами
* 90.1 **Доходы**
* 90.2 **Расходы**
* Отчетом **ОборотноСальдоваяВедомость**, который:
* Построен на СКД
* Выводит отстатки и обороты по счетам за выбранный период
* Документы, созданные в рамках диплома Б, должны быть доработаны для формирования проводок по регистру бухгалтерии **Управленческий**:
* Документ **ПоступлениеТоваровИУслуг**:
* Для товаров - Дт **Товары** с заполнением субконто Номенклатура - Кт **РасчетыСПоставщиками** с заполнением субконто Контрагенты на сумму закупки.
* Для услуг - Дт **Расходы** - Кт **РасчетыСПоставщиками** с заполнением субконто Контрагенты на сумму закупки.
* Документ **РеализацияТоваровИУслуг**:
* Для всех строк - Дт **РасчетыСПокупателями** с заполнением субконто Контрагенты - Кт **Доходы** на сумму продажи.
* Для товаров - Дт **Расходы** - Кт **Товары** с заполнением субконто Номенклатура на сумму себестоимости списанного товара. Себестоимость должна рассчитываться по данным регистра бухгалтерии, а не по данным регистра накопления **Товары**. Недопустимо списание товара в минус.
* Документ **ПоступлениеДенежныхСредств** (после расширения типа реквизита **Плательщик** типом **СправочникСсылка.Сотрудники**):
* Для контрагентов - Дт **ДенежныеСредства** - Кт **РасчетыСПокупателями** с заполнением субконто **Контрагенты** на сумму платежа.
* Для сотрудников - Дт **ДенежныеСредства** - Кт **РасчетыССотрудниками** с заполнением субконто **Сотрудники** на сумму платежа.
* Документом **СписаниеДенежныхСредств** (после расширения типа реквизита **Получатель** типом **СправочникСсылка.Сотрудники**):
* Для контрагентов - Дт **РасчетыСПоставщиками** с заполнением субконто **Контрагенты** - Кт **ДенежныеСредства** на сумму платежа.
* Для сотрудников - Дт **РасчетыССотрудниками** с заполнением субконто **Сотрудники** - Кт **ДенежныеСредства** на сумму платежа.
Подсистемой **Зарплата**, а в ней:
* Регистром сведений **Календарь**, который:
* Содержит измерение **День** (Дата) и ресурс **Рабочий** (Число)
* Регистром расчета **Зарплата**, который:
* Содержит измерение **Сотрудник** и ресурс **Сумма** определяемого типа
* Поддерживает период действия и период регистрации
* Привязан к регистру **Календарь** как к календарю
* Планом видов расчета **Начисления**, который:
* Используется для учета в регистре расчета **Зарплата**
* Использует период действия и зависит по базе по периоду действия от самого себя.
* Содержит предопределенные виды расчетов:
* Больничный, Отпуск, ФиксированнаяПремия
* ОплатаПоОкладу, вытесняемый видами расчета Больничный и Отпуск
* ПремияПроцентом, зависящая по базе от вида расчета ОплатаПоОкладу
* Документом **НачислениеСписком**, который:
* Содержит реквизит **Начисление** (ПланВидовРасчетаСсылка.Начисления) и начало и конец периода действия
* Содержит табличную часть **Сотрудники** с сотрудниками и суммами
* При проведении формирует движения:
* По регистру расчета **Зарплата** с указанием сотрудника, вида расчета, периодов и суммы
* По регистру бухгалтерии **Управленческий** в Дт счета **Расходы** с Кт счета **РасчетыССотрудниками** с заполнением субконто **Сотрудники** на ту же сумму.
* Документом **НачислениеОплатыПоОкладу**, который:
* Содержит реквизит **ЗаМесяц** (Дата), определяющий месяц периода действия
* Содержит табличную часть **Сотрудники** с сотрудниками
* При проведении формирует движения:
* По регистру расчета **Зарплата** с указанием сотрудника, вида расчета, периодов и суммы. Сумма рассчитывается по данным графиков как оклад, умноженный на частное от деления фактически отработанного времени (с учетом вытеснения больничным и окладом) на норму времени.
* По регистру бухгалтерии **Управленческий** в Дт счета **Расходы** с Кт счета **РасчетыССотрудниками** с заполнением субконто **Сотрудники** на ту же сумму.
* Документом **НачислениеПремииПроцентом**, который:
* Содержит реквизит **ЗаМесяц** (Дата), определяющий месяц периода действия, и **Процент** (Число), определяющий процент премии
* Содержит табличную часть **Сотрудники** с сотрудниками
* При проведении формирует движения:
* По регистру расчета **Зарплата** с указанием сотрудника, вида расчета, периодов и суммы. Сумма рассчитывается по данным базы (оплаты по окладу за базовый период) умножением базы на процент.
* По регистру бухгалтерии **Управленческий** в Дт счета **Расходы** с Кт счета **РасчетыССотрудниками** с заполнением субконто **Сотрудники** на ту же сумму.
Подсистемой **Взаимодействие**, а в ней:
* Справочником **Роли** с наименованием разумной длины
* Регистром сведений **ИсполнителиРолей**, который:
* Содержит измерения **Роль** (СправочникСсылка.Роли) и **Исполнитель** (СправочникСсылка.Сотрудники)
* Используется для адресации задач
* Задачей **Задача**, которая:
* Содержит реквизиты адресации **Исполнитель** (основной, СправочникСсылка.Сотрудники) и **Роль** (СправочникСсылка.Роли), заполняемые по данным процесса
* В качестве текущего исполнителя использует значение параметра сеанса **ТекущийСотрудник**
* Содержит реквизит **ПодробноеОписание** (строка неограниченной длины), заполняемый по данным процесса
* Содержит форму задачи с ее прикладными реквизитами, недоступными для редактирования
* Содержит форму **ЗадачиМне**, которая:
* Содержит задачи, адресованные текущему сотруднику по данным виртуальной таблицы **Задача.Задача.ЗадачиПоИсполнителю** с учетом ролевой адресации
* Выведена на рабочую область начальной страницы
* Процессом **Поручение**, который:
* Использует задачу **Задача**
* Содержит реквизиты, достаточные для заполнения создаваемых задач, и реквизит **Предмет** (ОпределяемыйТип.ПредметПроцесса)
* Имеет простую схему, состоящую из точки старта, точки действия и точки завершения
* При создании задач заполняет их наименование, подробное описание, исполнителя и роль по собственным данным

View File

@ -0,0 +1,11 @@
# Выпускной диплом
## Описание задачи
Развить созданную в блоке Б конфигурацию "Управление ИТ-фирмой", обеспечив возможность учета хозяйственных операций на управленческом плане счетов, расчет и начисление заработной платы, а также взаимодействие сотрудников с использованием задач и процессов.
Итогом станет конфигурация, на базовом уровне содержащая все элементы управленческих учетных систем на платформе 1С:Предприятие.
[Требования к результату](diploma-c-reqs.md)
[Порядок выполнения](diploma-c-howto.md)