1
0
mirror of https://github.com/netology-code/1c-homeworks.git synced 2024-11-24 08:02:20 +02:00

Уточнение требований к итоговой работе

This commit is contained in:
Matvey Seregin 2022-05-15 00:49:19 +03:00
parent 5805bf35ba
commit 3eb3180cea
3 changed files with 28 additions and 47 deletions

View File

@ -32,7 +32,7 @@
* С корреспонденцией
* С ресурсами:
* **Сумма** (ОпределяемыйТип.Сумма)
* **Количество** (ОпределяемыйТип.Количество) - с признаком учета **Количественный**
* **Количество** (ОпределяемыйТип.Количество) - с признаком учета **Количественный** и со снятым флажком **Балансовый**
* В регистраторы добавить документы:
* **ПоступлениеТоваровИУслуг**
* **РеализацияТоваровИУслуг**
@ -45,7 +45,7 @@
5. Доработать обработчик проведения документа **РеализацияТоваровИУслуг**:
* Формировать движение Дт **РасчетыСПокупателями** с заполнением субконто Контрагенты - Кт **Доходы** на общую сумму продажи (по всем строкам).
* Для строк с номенклатурой вида Товар формировать движение Дт **Расходы** - Кт **Товары** с заполнением субконто Номенклатура на сумму себестоимости списанного товара. Себестоимость должна рассчитываться по данным регистра бухгалтерии, а не по данным регистра накопления **Товары**. Данные регистра бухгалтерии нужно получать запросом к виртуальной таблице **РегистрБухгалтерии.Управленческий.Остатки** на МоментВремени() проводимого документа.
* Для строк с номенклатурой вида Товар формировать движение Дт **Расходы** - Кт **Товары** с заполнением субконто Номенклатура на сумму себестоимости списанного товара. Себестоимость должна рассчитываться по данным регистра бухгалтерии, а не по данным регистра накопления **Товары**. Данные регистра бухгалтерии нужно получать запросом к виртуальной таблице **РегистрБухгалтерии.Управленческий.Остатки** на МоментВремени() проводимого документа. При списании необходимо проверять, что количества товара достаточно для списания.
6. Доработать документ **ПоступлениеДенежныхСредств**:
* Тип реквизита **Плательщик** сделать составным и расширить его типом **СправочникСсылка.Сотрудники**.

View File

@ -39,23 +39,20 @@
* Создать для него понятную форму документа.
* На закладке "Движения" сделать его регистратором для регистра расчета **Зарплата** и для регистра бухгалтерии **Управленческий**
* В обработке проведения:
* Запросом выбрать оклады (реквизит **Оклад** из справочника **Сотрудники**) по сотрудникам из табличной части. Проще всего передать в запрос массив сотрудников, выгруженный из табличной части методом **ВыгрузитьКолонку**.
* Записать движения, пока без сумм, по регистру расчета **Зарплата**. При этом:
* В качестве периода регистрации указать дату документа, а в качестве периода действия - начало и конец месяца даты **ЗаМесяц**.
* В качестве вида расчета указать предопределенный ПланыВидовРасчета.Начисления.ОплатаПоОкладу.
* Записав движения, обойти их повторно и для каждой записи рассчитать сумму оплаты по окладу. При этом:
* Оклад определить, найдя сотрудника в ранее выбранных данных.
* Факт и норму определить вызовом метода **ПолучитьДанныеГрафика**, а сумму - умножением оклада на частное деления факта на норму:
* После записи движений документа, выполнить запрос к ним, в запросе:
* Получить оклад для каждого сотрудника.
* Получить факт и норму из соответствующей виртуальной таблицы регистра расчета.
* Получить номер строки движений для последующего обращения к нужному.
* Обойти результат запроса, на каждой итерации цикла выполнив расчет сумму путем умножения оклада на частное деления факта на норму:
```bsl
ТаблицаНорма = Движение.ПолучитьДанныеГрафика(
ВидПериодаРегистраРасчета.ПериодДействия);
Норма = ТаблицаНорма[0].Рабочий;
ТаблицаФакт = Движение.ПолучитьДанныеГрафика(
ВидПериодаРегистраРасчета.ФактическийПериодДействия);
Факт = ТаблицаФакт[0].Рабочий;
Движение.Сумма = ?(Норма = 0, 0, Оклад * Факт / Норма);
Пока Выборка.Следующий() Цикл
Движение = Движения.Зарплата[Выборка.НомерСтроки - 1];
Движение.Сумма = Выборка.Оклад * Выборка.Факт / Выборка.План;
КонецЦикла;
```
* Определив сумму, сформировать парное движение на такую же сумму по регистру бухгалтерии **Управленческий** в Дт счета **Расходы** и в Кт счета **РасчетыССотрудникми**, заполнив субконто **Сотрудник**.
@ -74,39 +71,13 @@
* Записать движения, пока без сумм, по регистру расчета **Зарплата**. При этом:
* В качестве периода регистрации указать дату документа, а в качестве периода действия и базового периода действия - начало и конец месяца даты **ЗаМесяц**.
* В качестве вида расчета указать предопределенный ПланыВидовРасчета.Начисления.ПремияПроцентом.
* Записав движения, получить базу запросом:
```bsl
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ЗарплатаБазаЗарплата.Сотрудник КАК Сотрудник,
| ЗарплатаБазаЗарплата.СуммаБаза КАК СуммаБаза
|ИЗ
| РегистрРасчета.Зарплата.БазаЗарплата(
| &Измерения,
| &Измерения,
| ,
| Регистратор = &Регистратор
| И ВидРасчета = &ВидРасчета) КАК ЗарплатаБазаЗарплата");
Запрос.УстановитьПараметр("Регистратор", Ссылка);
Запрос.УстановитьПараметр("ВидРасчета", ПланыВидовРасчета.Начисления.ПремияПроцентом);
Измерения = Новый Массив;
Измерения.Добавить("Сотрудник");
Запрос.УстановитьПараметр("Измерения", Измерения);
База = Запрос.Выполнить().Выгрузить();
```
* Обойти движения повторно и для каждой записи рассчитать сумму премии процентом. При этом:
* Базу определить, найдя сотрудника в ранее выбранной таблице **База**.
* Сумму определить, умножив базу на процент премии и поделив на 100.
* Записав движения, получить базу запросом к соответствующей виртуальной таблице.
* Обойти результат запроса, на каждой итерации цикла выполнив расчет премии, умножив базу на процент премии и поделив на 100.
```bsl
Для Каждого Движение Из Движения.Зарплата Цикл
СтрокаБазы = База.Найти(Движение.Сотрудник);
Если СтрокаБазы = Неопределено Тогда
Продолжить;
КонецЕсли;
Движение.Сумма = СтрокаБазы.СуммаБаза * Процент / 100;
Пока Выборка.Следующий() Цикл
Движение = Движения.Зарплата[Выборка.НомерСтроки - 1];
Движение.Сумма = Выборка.СуммаБаза * Процент / 100;
КонецЦикла;
```

View File

@ -1,4 +1,14 @@
## Требования к результату
# Требования к результату
## Технические требования
* Программный код всех модулей должен быть оформлен в соответствии со стандартами разработки на платформе 1С:Предприятие по ссылке: https://its.1c.ru/db/v8std#content:456:hdoc
* Недопустимо выполнять запросы в цикле, в том числе неявные при обращении через точку к реквизиту ссылки. То есть обращение `Строка.Номенклатура.ТипНоменклатуры` недопустимо.
* При работе с регистрами расчета необходимо получать данные для расчета через виртуальные таблицы. Недопустимо использовать объектную модель для обращения к регистрам расчета.
## Функциональные требования
Выгрузка информационной базы (файл с расширением dt), включающий демоданные и конфигурацию с именем "УправлениеИТФирмой" из диплома блока Б, дополненную:
@ -35,7 +45,7 @@
* Для услуг - Дт **Расходы** - Кт **РасчетыСПоставщиками** с заполнением субконто Контрагенты на сумму закупки.
* Документ **РеализацияТоваровИУслуг**:
* Для всех строк - Дт **РасчетыСПокупателями** с заполнением субконто Контрагенты - Кт **Доходы** на сумму продажи.
* Для товаров - Дт **Расходы** - Кт **Товары** с заполнением субконто Номенклатура на сумму себестоимости списанного товара. Себестоимость должна рассчитываться по данным регистра бухгалтерии, а не по данным регистра накопления **Товары**.
* Для товаров - Дт **Расходы** - Кт **Товары** с заполнением субконто Номенклатура на сумму себестоимости списанного товара. Себестоимость должна рассчитываться по данным регистра бухгалтерии, а не по данным регистра накопления **Товары**. Недопустимо списание товара в минус.
* Документ **ПоступлениеДенежныхСредств** (после расширения типа реквизита **Плательщик** типом **СправочникСсылка.Сотрудники**):
* Для контрагентов - Дт **ДенежныеСредства** - Кт **РасчетыСПокупателями** с заполнением субконто **Контрагенты** на сумму платежа.
* Для сотрудников - Дт **ДенежныеСредства** - Кт **РасчетыССотрудниками** с заполнением субконто **Сотрудники** на сумму платежа.