Добавил решение блока 06
This commit is contained in:
		@@ -0,0 +1,19 @@
 | 
			
		||||
### Деньги
 | 
			
		||||
 | 
			
		||||
Все добавляемые объекты включаем в новую подсистему **Деньги**
 | 
			
		||||
 | 
			
		||||
1. Добавить документ **ПоступлениеДенежныхСредств**:
 | 
			
		||||
  * Добавить реквизиты Плательщик (СправочникСсылка.Контрагенты) и Сумма (ОпределяемыйТип.Сумма)
 | 
			
		||||
  * Создать форму документа, в которой разумным образом разместить элементы управления для реквизитов
 | 
			
		||||
  * В "Движениях" выбрать регистр накопления **ВзаиморасчетыСКонтрагентами**
 | 
			
		||||
  * В модуле объекта создать обработчик события ОбработкаПроведения и формировать движение по регистру Взаиморасчеты вида "Расход" с указанием контрагента-плательщика и общей суммы
 | 
			
		||||
 | 
			
		||||
2. Добавить документ **СписаниеДенежныхСредств** (или скопировать и переименовать **ПоступлениеДенежныхСредств**):
 | 
			
		||||
  * Добавить реквизиты Получатель (СправочникСсылка.Контрагенты) и Сумма (ОпределяемыйТип.Сумма)
 | 
			
		||||
  * Создать форму документа, в которой разумным образом разместить элементы управления для реквизитов
 | 
			
		||||
  * В "Движениях" выбрать регистр накопления **ВзаиморасчетыСКонтрагентами**
 | 
			
		||||
  * В модуле объекта создать обработчик события ОбработкаПроведения и формировать движение по регистру Взаиморасчеты вида "Приход" с указанием контрагента-получателя и общей суммы
 | 
			
		||||
 | 
			
		||||
3. Добавить журнал документов **Деньги**:
 | 
			
		||||
  * В качестве регистрируемых выбрать документы **ПоступлениеДенежныхСредств** и **СписаниеДенежныхСредств**
 | 
			
		||||
  * Добавить графы Контрагент (Плательщик из Поступления и Получатель из Списания), Ответственный и Сумма
 | 
			
		||||
@@ -0,0 +1,94 @@
 | 
			
		||||
### Сделки
 | 
			
		||||
 | 
			
		||||
Все добавляемые объекты включаем в новую подсистему **Сделки**
 | 
			
		||||
 | 
			
		||||
1. Добавить регистр накопления **Товары** вида "Остатки":
 | 
			
		||||
  * Добавить измерение Номенклатура (СправочникСсылка.Номенклатура) и ресурсы Сумма (ОпределяемыйТип.Сумма) и Количество (ОпределяемыйТип.Количество)
 | 
			
		||||
 | 
			
		||||
2. Добавить регистр накопления **ВзаиморасчетыСКонтрагентами** вида "Остатки":
 | 
			
		||||
  * Добавить измерение Контрагент (СправочникСсылка.Контрагенты) и ресурс Сумма (ОпределяемыйТип.Сумма)
 | 
			
		||||
 | 
			
		||||
3. Добавить регистр накопления **Доходы** вида "Обороты":
 | 
			
		||||
  * Добавить измерение Номенклатура (СправочникСсылка.Номенклатура) и ресурсы Сумма (ОпределяемыйТип.Сумма) и Количество (ОпределяемыйТип.Количество)
 | 
			
		||||
 | 
			
		||||
4. Добавить регистр накопления **Расходы** вида "Обороты":
 | 
			
		||||
  * Добавить измерение Номенклатура (СправочникСсылка.Номенклатура) и ресурс Сумма (ОпределяемыйТип.Сумма)
 | 
			
		||||
  
 | 
			
		||||
5. Добавить общий модуль НДСКлиентСервер:
 | 
			
		||||
 * С флагами "Клиент" и "Сервер"
 | 
			
		||||
 * Создать в нем функцию СуммаНДСПоСтавке(Сумма, СтавкаНДС), возвращающую сумму НДС, рассчитанную от суммы по ставке согласно [требованиям](diploma-b-reqs.md). Чтобы обеспечить работоспособность на клиенте, для получения значений ставок НДС используйте функцию ПредопределенноеЗначение().
 | 
			
		||||
  
 | 
			
		||||
6. Добавить документ **ПоступлениеТоваровИУслуг**:
 | 
			
		||||
  * Добавить реквизиты Поставщик (СправочникСсылка.Контрагенты) и Сумма (ОпределяемыйТип.Сумма)
 | 
			
		||||
  * Добавить ТЧ ТоварыИУслуги с реквизитами:
 | 
			
		||||
    * Номенклатура (СправочникСсылка.Номенклатура)
 | 
			
		||||
    * Количество (ОпределяемыйТип.Количество)
 | 
			
		||||
    * СтавкаНДС (ПеречислениеСсылка.СтавкиНДС)
 | 
			
		||||
    * Цена, Сумма, СуммаНДС (ОпределяемыйТип.Сумма)
 | 
			
		||||
  * В "Движениях" выбрать регистры накопления Товары, Расходы и ВзаиморасчетыСКонтрагентами
 | 
			
		||||
  * Создать форму документа, в которой:
 | 
			
		||||
    * Разумным образом разместить элементы управления для реквизитов и табличных частей
 | 
			
		||||
     * В таблице товаров и услуг включить отображение подвала и вывести в него итог по колонкам "Сумма" и "Сумма НДС", поставив флаг "Отображать в подвале" и задав путь к данным подвала.
 | 
			
		||||
    * Создать клиентские процедуры:
 | 
			
		||||
      * ПриИзмененииКоличества(ИзмененнаяСтрока), ПриИзмененииЦены(ИзмененнаяСтрока), в которых:
 | 
			
		||||
        * Рассчитывать сумму по цене и количеству и вызывать ПриИзмененииСуммы()
 | 
			
		||||
      * ПриИзмененииСуммы(ИзмененнаяСтрока), ПриИзмененииСтавкиНДС(ИзмененнаяСтрока), в которых:
 | 
			
		||||
        * Рассчитывать сумму НДС по сумме и ставке вызовом НДСКлиентСервер.СуммаНДСПоСтавке()
 | 
			
		||||
    * Переопределить обработчики событий ПриИзменении полей ввода для количества, цены, суммы и ставки НДС, и вызывать из них процедуры ПриИзменении<...>, передавая в качестве параметра ТекущиеДанные таблицы.
 | 
			
		||||
  * Форма может выглядеть, например, так:
 | 
			
		||||

 | 
			
		||||
  * В модуле объекта:
 | 
			
		||||
    * Создать обработчик события ОбработкаПроведения и формировать движения (выбрав предварительно запросом табличную часть с типами номенклатуры):
 | 
			
		||||
      * По регистру ВзаиморасчетыСКонтрагентами - одно движение вида "Расход" с указанием контрагента-поставщика и общей суммы
 | 
			
		||||
      * По регистру Товары - движения вида "Приход" по каждой строке с номенклатурой типа Товары с указанием номенклатуры, количества и суммы
 | 
			
		||||
      * По регистру Расходы - движения по каждой строке с номенклатурой типа Услуги с указанием номенклатуры и суммы
 | 
			
		||||
    * Создать обработчик события ПередЗаписью и сохранять в реквизит шапки Сумма итог по одноименному реквизиту табличной части для отображения в списках
 | 
			
		||||
 * Проверить документ, убедившись в том, что:
 | 
			
		||||
  * При изменении количества и цены пересчитывается сумма и сумма НДС, а при изменении суммы и ставки НДС - сумма НДС
 | 
			
		||||
  * Формируются движения по трем регистрам накопления, и сумма движения по Взаиморасчетам равна итогу по колонке Сумма и сумме движений по Товарам и Расходам. Пример движений для документа со снимка выше:
 | 
			
		||||

 | 
			
		||||

 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
7. Добавить документ **РеализацияТоваровИУслуг** (или скопировать и переименовать **ПоступлениеТоваровИУслуг**):
 | 
			
		||||
  * Добавить реквизиты Покупатель (СправочникСсылка.Контрагенты) и Сумма (ОпределяемыйТип.Сумма)
 | 
			
		||||
  * Добавить ТЧ ТоварыИУслуги с реквизитами:
 | 
			
		||||
    * Номенклатура (СправочникСсылка.Номенклатура)
 | 
			
		||||
    * Количество (ОпределяемыйТип.Количество)
 | 
			
		||||
    * СтавкаНДС (ПеречислениеСсылка.СтавкиНДС)
 | 
			
		||||
    * Скидка (Число)
 | 
			
		||||
    * Цена, Сумма, СуммаНДС (ОпределяемыйТип.Сумма)
 | 
			
		||||
  * В "Движениях" выбрать регистры накопления Товары, Доходы, Расходы и ВзаиморасчетыСКонтрагентами
 | 
			
		||||
  * Создать форму документа, в которой:
 | 
			
		||||
    * Разумным образом разместить элементы управления для реквизитов и табличных частей
 | 
			
		||||
     * В таблице товаров и услуг включить отображение подвала и вывести в него итог по колонкам "Сумма" и "Сумма НДС".
 | 
			
		||||
    * Создать клиентскую функцию СуммаПоСтроке(Строка), которая возвращает сумму с учетом количества, цены и скидки 
 | 
			
		||||
    * Создать клиентские процедуры:
 | 
			
		||||
      * ПриИзмененииНоменклатуры(ИзмененнаяСтрока), в которой:
 | 
			
		||||
        * Заполнять цену и скидку аналогично документам **УстановкаЦен** и **УстановкаСкидок**, а также заполнять ставку НДС и вызывать процедуры ПриИзмененииЦены, ПриИзмененииСкидки и ПриИзмененииСтавкиНДС
 | 
			
		||||
      * ПриИзмененииКоличества(ИзмененнаяСтрока), ПриИзмененииЦены(ИзмененнаяСтрока), ПриИзмененииСкидки(ИзмененнаяСтрока), в которых:
 | 
			
		||||
        * Рассчитывать сумму вызовом СуммаПоСтроке() и вызывать ПриИзмененииСуммы()
 | 
			
		||||
      * ПриИзмененииСуммы(ИзмененнаяСтрока), ПриИзмененииСтавкиНДС(ИзмененнаяСтрока), в которых:
 | 
			
		||||
        * Рассчитывать сумму НДС по сумме и ставке вызовом НДСКлиентСервер.СуммаНДСПоСтавке()
 | 
			
		||||
    * Переопределить обработчики событий ПриИзменении полей ввода номенклатуры, количества, цены, скидки, суммы и ставки НДС, и вызывать из них процедуры ПриИзменении<...>, передавая в качестве параметра ТекущиеДанные таблицы.
 | 
			
		||||
    * Реализовать подбор аналогично документу **УстановкаЦен**, передавая в качестве владельца открываемой формы таблицу ТоварыИУслуги, а в обработчике события ОбработкаВыбора вызывая процедуру ПриИзмененииНоменклатуры, чтобы обеспечить получение цен и скидок и автоматический пересчет сумм.
 | 
			
		||||
  * Форма может выглядеть, например, так:
 | 
			
		||||

 | 
			
		||||
  * В модуле объекта:
 | 
			
		||||
    * Создать обработчик события ОбработкаПроведения и формировать движения, выбрав предварительно запросом данные табличной части документа с типами номенклатуры и соединив с виртуальной таблицей Остатки регистра Товары по номенклатуре:
 | 
			
		||||
      * По регистру ВзаиморасчетыСКонтрагентами - одно движение вида "Приход" с указанием контрагента-покупателя и общей суммы
 | 
			
		||||
      * По регистру Товары - движения вида "Расход" по каждой строке с номенклатурой типа Товары с указанием номенклатуры, количества и суммы. Сумму рассчитывать, определив среднюю стоимость единицы делением суммы остатка на количество остатка и умножив среднюю стоимость на реализуемое количество. При нехватке остатков отказываться от проведения, выводя пользователю разумное сообщение.
 | 
			
		||||
      * По регистру Расходы - движения по каждой строке с номенклатурой типа Товары с указанием номенклатуры и суммы, равной сумме расхода по регистру Товары.
 | 
			
		||||
      * По регистру Доходы - движения по каждой строке с указанием номенклатуры, количества и суммы
 | 
			
		||||
    * Создать обработчик события ПередЗаписью и сохранять в реквизит шапки Сумма итог по одноименному реквизиту табличной части для отображения в списках
 | 
			
		||||
 * Проверить документ, убедившись в том, что:
 | 
			
		||||
  * При изменении количества, цены и скидки пересчитывается сумма и сумма НДС, а при изменении суммы и ставки НДС - сумма НДС
 | 
			
		||||
  * Формируются движения по четырем регистрам накопления, и сумма движения по Взаиморасчетам равна итогу по колонке Сумма и сумме движений по Доходам, а суммы движений по Расходам и Товарам совпадают. Пример движений для документа со снимка выше:
 | 
			
		||||

 | 
			
		||||

 | 
			
		||||

 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
8. Добавить журнал документов **Сделки**:
 | 
			
		||||
  * В качестве регистрируемых выбрать документы **ПоступлениеТоваровИУслуг** и **РеализацияТоваровИУслуг**
 | 
			
		||||
  * Добавить графы Контрагент  (Поставщик из Поступления и Покупатель из Реализации), Ответственный и Сумма
 | 
			
		||||
@@ -0,0 +1,43 @@
 | 
			
		||||
### Отчеты
 | 
			
		||||
 | 
			
		||||
1. Добавляем отчет **Взаиморасчеты с контрагентами**:
 | 
			
		||||
  * Включаем в подсистему **Сделки**
 | 
			
		||||
  * Создаем основную схему компоновки данных
 | 
			
		||||
  * Добавляем набор данных-запрос, в котором выбираем контрагента, сумму (начальный остаток, приход, расход и конечный остаток) из виртуальной таблицы ОстаткиИОбороты регистра Взаиморасчеты без параметров
 | 
			
		||||
  * Даем полям сумм нормальные заголовки ("Начальный остаток" вместо "Сумма начальный остаток" и т.д.)
 | 
			
		||||
  * На закладке "Ресурсы" добавляем все суммы (начальный остаток, приход, расход и конечный остаток) с настройками по умолчанию
 | 
			
		||||
  * В настройках:
 | 
			
		||||
    * Добавляем группировку по контрагенту.
 | 
			
		||||
    * На закладке "Выбранные поля" выбираем поле Контрагент и все суммы
 | 
			
		||||
    * На закладке "Отбор" добавляем поле Контрагент и включаем быстрый доступ
 | 
			
		||||
  * Проверяем: отчет должен выглядеть примерно так:
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
1. Добавляем отчет **Движение товаров**:
 | 
			
		||||
  * Включаем в подсистему **Сделки**
 | 
			
		||||
  * Создаем основную схему компоновки данных
 | 
			
		||||
  * Добавляем набор данных-запрос, в котором выбираем номенклатуру, сумму и количество (начальный остаток, приход, расход и конечный остаток) из виртуальной таблицы ОстаткиИОбороты регистра Товары без параметров
 | 
			
		||||
  * На закладке "Ресурсы" добавляем все суммы и количества (начальный остаток, приход, расход и конечный остаток). В колонке "Рассчитывать по..." для количеств оставляем только расчет по номенклатуре без иерархии, чтобы не складывать разнородные количества.
 | 
			
		||||
  * В настройках:
 | 
			
		||||
    * Добавляем группировку по номенклатуре с иерархией.
 | 
			
		||||
    * На закладке "Параметры" включаем использование автоматически добавленных параметров Начало периода и Конец периода; включаем их в пользовательские настройки с быстрым доступом
 | 
			
		||||
    * На закладке "Выбранные поля" выбираем поле Номенклатура, все суммы и количества. Суммы и количества объединяем в группы "Начальный остаток", "Приход", "Расход", "Конечный остаток". Суммам и количествам, выбрав в контекстном меню команду "Заголовок", даем краткие заголовки, достаточные в контексте группы ("Количество", "Сумма").
 | 
			
		||||
    * На закладке "Отбор" добавляем поле Номенклатура и включаем быстрый доступ
 | 
			
		||||
  * Проверяем: отчет должен выглядеть примерно так:
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
3. Добавляем отчет **ДоходыИРасходы**:
 | 
			
		||||
  * Включаем в подсистему **Сделки**
 | 
			
		||||
  * Создаем основную схему компоновки данных
 | 
			
		||||
  * Добавляем набор данных-запрос, в котором конструкцией ОБЪЕДИНИТЬ ВСЕ объединяем два подзапроса:
 | 
			
		||||
    * В первом получаем номенклатуру, оборот по сумме (с псевдонимом Доходы) и 0 (с псевдонимом Расходы) из виртуальной таблицы Обороты регистра Доходы
 | 
			
		||||
    * Во втором получаем номенклатуру, 0 (с псевдонимом Доходы) и оборот по сумме (с псевдонимом Расходы) из виртуальной таблицы Обороты регистра Расходы:
 | 
			
		||||
    
 | 
			
		||||
  * Добавляем вычисляемое поле Прибыль с выражением "Доходы - Расходы"
 | 
			
		||||
  * На закладке "Ресурсы" добавляем все Доходы, Расходы и Прибыль с настройками по умолчанию.
 | 
			
		||||
  * В настройках:
 | 
			
		||||
    * Добавляем группировку по номенклатуре (с иерархией).
 | 
			
		||||
    * На закладке "Параметры" включаем использование автоматически добавленных параметров Начало периода и Конец периода; включаем их в пользовательские настройки с быстрым доступом
 | 
			
		||||
    * Выбираем поля Номенклатура, Доходы, Расходы, Прибыль
 | 
			
		||||
  * Проверяем: отчет должен выглядеть примерно так:
 | 
			
		||||
   
 | 
			
		||||
@@ -0,0 +1,74 @@
 | 
			
		||||
### Настройка
 | 
			
		||||
 | 
			
		||||
Все добавляемые объекты включаем в подсистему **Настройка**.
 | 
			
		||||
 | 
			
		||||
1. Добавить перечисление **ТипыНоменклатуры** со значениями Товар и Услуга.
 | 
			
		||||
  
 | 
			
		||||
2. Добавить перечисление **СтавкиНДС** со значениями БезНДС ("Без НДС"), НДС10 ("10%"), НДС20 ("20%").
 | 
			
		||||
 | 
			
		||||
3. Добавить справочник **НоменклатурныеГруппы**:
 | 
			
		||||
  * Синоним - "Номенклатурные группы", представление объекта - "Номенклатурная группа"
 | 
			
		||||
  * Убрать код, дать разумную длину наименованию
 | 
			
		||||
 | 
			
		||||
4. Добавить справочник **Номенклатура**:
 | 
			
		||||
  * Убрать код, дать разумную длину наименованию
 | 
			
		||||
  * Включить иерархию групп и элементов
 | 
			
		||||
  * Добавить реквизиты, включив в "Проверке заполнения" вариант "Выдавать ошибку", и поставив флаг "Заполнять из данных заполнения":
 | 
			
		||||
    * Тип - ПеречислениеСсылка.ТипыНоменклатуры
 | 
			
		||||
    * НоменклатурнаяГруппа - СправочникСсылка.НоменклатурныеГруппы
 | 
			
		||||
    * СтавкаНДС - ПеречислениеСсылка.СтавкиНДС
 | 
			
		||||
  * В модуле объекта переопределить событие ОбработкаЗаполнения, заполнив тип и ставку НДС значениями по умолчанию (Товар, НДС20). Заполнять только для элемента (для группы эти реквизиты не определены).
 | 
			
		||||
  * Создать форму элемента, расположив элементы разумным образом, например, такую:
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
5. Добавить регистр сведений **Цены**:
 | 
			
		||||
  * Установить режим записи "Подчинение регистратору" и периодичность "По позиции регистратора"
 | 
			
		||||
  * Добавить измерение Номенклатура (СправочникСсылка.Номенклатура) с флагом "Ведущее" и ресурс Цена (ОпределяемыйТип.Сумма)
 | 
			
		||||
  * Роли "Базовые права" дать права на просмотр и чтение, роли "Полные права" - на добавление, изменение и запись.
 | 
			
		||||
  * Добавить общий модуль ЦеныСервер с флажком "Сервер", и создать в нем экспортную функцию ЦенаНаДату(Номенклатура, Дата), которая получит запросом срез последних на указанную дату с отбором по номенклатуре и вернет цену.
 | 
			
		||||
  * Добавить общий модуль ЦеныВызовСервера с флажками "Сервер", "Внешнее соединение" и "Вызов сервера", и создать в нем функцию ЦенаНаДату для вызова из клиентского кода форм, которая вызовет одноименную функцию из модуля ЦеныСервер.
 | 
			
		||||
  
 | 
			
		||||
6. Добавить документ **УстановкаЦен**:
 | 
			
		||||
  * Добавить ТЧ Цены с реквизитами Номенклатура (СправочникСсылка.Номенклатура) и Цена (ОпределяемыйТип.Сумма)
 | 
			
		||||
  * В "Движениях" выбрать регистр сведений "Цены"
 | 
			
		||||
  * Роли "Базовые права" дать права на просмотр и чтение, роли "Полные права" - на добавление, изменение и запись.
 | 
			
		||||
  * В модуле объекта:
 | 
			
		||||
    * Переопределить событие ОбработкаПроведения, формируя движения по регистру сведений Цены датой документа
 | 
			
		||||
  * Создать форму документа, в которой:
 | 
			
		||||
    * Разумным образом разместить элементы управления для реквизитов и табличных частей
 | 
			
		||||
    * Создать клиентскую процедуру ПриИзмененииНоменклатуры с параметром ИзмененнаяСтрока (ДанныеФормыЭлементКоллекции), в которой, если Номенклатура заполнена, вызвать ЦеныВызовСервера.ЦенаНаДату и заполнить цену.
 | 
			
		||||
    * Переопределить событие ПриИзменении поля ввода номенклатуры и вызвать в нем процедуру ПриИзмененииНоменклатуры с передачей текущих данных таблицы цен.
 | 
			
		||||
    * Добавить команду Подбор, разместив ее в командной панели таблицы цен. В обработчике команды открыть форму выбора справочника Номенклатура с параметром ЗакрыватьПриВыборе = Ложь, указав в качестве владельца таблицу цен.
 | 
			
		||||
    * Переопределить событие ОбработкаВыбора таблицы цен. В обработчике отказаться от стандартной обработки и, если в таблице еще нет выбранного значения - добавить строку и вызвать процедуру ПриИзмененииНоменклатуры, передав добавленную строку.
 | 
			
		||||
    * Форма может выглядеть, например, так:
 | 
			
		||||

 | 
			
		||||
  * Проверить документ, убедившись в том, что:
 | 
			
		||||
    * Введенные цены после проведения появляются в регистре.
 | 
			
		||||
    * Выбор и подбор номенклатуры в последующих документах автоматически подставляют цены из предыдущих документов.
 | 
			
		||||
 | 
			
		||||
7. Добавить регистр сведений **Скидки** (или скопировать и переименовать **Цены**):
 | 
			
		||||
  * Установить режим записи "Подчинение регистратору" и периодичность "По позиции регистратора"
 | 
			
		||||
  * Добавить измерение НоменклатураНоменклатурнаяГруппа (СправочникСсылка.Номенклатура, СправочникСсылка.НоменклатурныеГруппы) с флагом "Ведущее" и ресурс Скидка (Число)
 | 
			
		||||
  * Роли "Базовые права" дать права на просмотр и чтение, роли "Полные права" - на добавление, изменение и запись.
 | 
			
		||||
  * В общий модуль ЦеныСервер добавить экспортную функцию СкидкаНаДату(Номенклатура, Дата), которая получит запросом срез последних на указанную дату с отбором по номенклатуре и номенклатурной группе и вернет скидку, установленную для номенклатурной группы, если нет скидки для конкретной номенклатуры. В общий модуль ЦеныВызовСервера добавить одноименную функцию-обертку.
 | 
			
		||||
  
 | 
			
		||||
8. Добавить документ **УстановкаСкидок** (или скопировать и переименовать **УстановкаЦен**):
 | 
			
		||||
  * Добавить ТЧ Скидки с реквизитами НоменклатураНоменклатурнаяГруппа (СправочникСсылка.Номенклатура, СправочникСсылка.НоменклатурныеГруппы) и Скидка (Число)
 | 
			
		||||
  * В "Движениях" выбрать регистр сведений "Скидки"
 | 
			
		||||
  * Роли "Базовые права" дать права на просмотр и чтение, роли "Полные права" - на добавление, изменение и запись.
 | 
			
		||||
  * В модуле объекта:
 | 
			
		||||
    * Переопределить событие ОбработкаПроведения, формируя движения по регистру сведений Скидки датой документа
 | 
			
		||||
  * Создать форму документа, в которой:
 | 
			
		||||
    * Разумным образом разместить элементы управления для реквизитов и табличных частей
 | 
			
		||||
    * Создать клиентскую процедуру ПриИзмененииНоменклатурыНоменклатурнойГруппы с параметром ИзмененнаяСтрока (ДанныеФормыЭлементКоллекции), в которой, если НоменклатураНоменклатурнаяГруппа заполнена, вызвать ЦеныВызовСервера.СкидкаНаДату и заполнить скидку.
 | 
			
		||||
    * Переопределить событие ПриИзменении поля ввода номенклатуры / номенклатурной группы и вызвать в нем процедуру ПриИзмененииНоменклатурыНоменклатурнойГруппы с передачей текущих данных таблицы скидок.
 | 
			
		||||
    * Форма может выглядеть, например, так:
 | 
			
		||||

 | 
			
		||||
  * Проверить документ, убедившись в том, что:
 | 
			
		||||
    * Введенные скидки после проведения появляются в регистре.
 | 
			
		||||
    * Выбор в последующих документах автоматически подставляет скидки из предыдущих.
 | 
			
		||||
    
 | 
			
		||||
9. Добавить журнал документов **ЦеныИСкидки**:
 | 
			
		||||
  * В качестве регистрируемых выбрать документы **УстановкаЦен** и **УстановкаСкидок**
 | 
			
		||||
  * Добавить графу Ответственный 
 | 
			
		||||
 | 
			
		||||
@@ -0,0 +1,24 @@
 | 
			
		||||
## Порядок выполнения
 | 
			
		||||
 | 
			
		||||
### Общий подход
 | 
			
		||||
 | 
			
		||||
* Диплом является развитием предыдущего и включает многие механизмы, реализованные в ходе выполнения домашних заданий.
 | 
			
		||||
* Во все создаваемые документы добавляем реквизит Ответственный (СправочникСсылка.Сотрудники). В модулях объектов переопределяем событие ОбработкаЗаполнения, заполняя реквизит Ответственный сотрудником текущего пользователя (функция реализована в рамках диплома А).
 | 
			
		||||
* В формах документов, на на закладке "Командный интерфейс", включаем видимость команд перехода к движениям по соответствующим регистрам, чтобы они появились в панели навигации: это сильно упростит отладку и проверку.
 | 
			
		||||
* Все добавляемые объекты, за исключением регистров и документов, управляющих ценами и скидками, включаем в роль "Базовые права", разрешая все действия, кроме интерактивного удаления. Запрещаем интерактивное удаление и в роли "Полные права".
 | 
			
		||||
 | 
			
		||||
[Подсистема "Настройка"](diploma-b-howto-settings.md)
 | 
			
		||||
 | 
			
		||||
Номенклатура, цены, скидки.
 | 
			
		||||
 | 
			
		||||
[Подсистема "Сделки"](diploma-b-howto-deals.md)
 | 
			
		||||
 | 
			
		||||
Поступление и реализация товаров и услуг.
 | 
			
		||||
 | 
			
		||||
[Подсистема "Деньги"](diploma-b-howto-cash.md)
 | 
			
		||||
 | 
			
		||||
Поступление и списание денежных средств.
 | 
			
		||||
 | 
			
		||||
[Отчеты](diploma-b-howto-reports.md)
 | 
			
		||||
 | 
			
		||||
Отчеты по взаиморасчетам, движению товаров, доходам и расходам.
 | 
			
		||||
@@ -0,0 +1,136 @@
 | 
			
		||||
## Требования к результату
 | 
			
		||||
 | 
			
		||||
Конфигурация с именем "УправлениеИТФирмой" из диплома блока А, дополненная:
 | 
			
		||||
 | 
			
		||||
В существующей подсистеме Настройки:
 | 
			
		||||
 | 
			
		||||
* Перечислением **ТипыНоменклатуры** (Товар, Услуга)
 | 
			
		||||
 | 
			
		||||
* Перечислением **СтавкиНДС** (БезНДС, НДС10, НДС20)
 | 
			
		||||
 | 
			
		||||
* Справочником **НоменклатурныеГруппы**
 | 
			
		||||
   * Без иерархии, с наименованием разумной длины
 | 
			
		||||
 | 
			
		||||
* Справочником **Номенклатура**, который:
 | 
			
		||||
   * Имеет наименование разумной длины и неограниченную иерархию групп и элементов
 | 
			
		||||
   * Содержит реквизиты Тип, СтавкаНДС и НоменклатурнаяГруппа, используемые для элементов и обязательные к заполнению
 | 
			
		||||
 | 
			
		||||
* Документом **УстановкаЦен**, который:
 | 
			
		||||
   * Содержит реквизит шапки Ответственный и табличную часть Цены с реквизитами Номенклатура и Цена
 | 
			
		||||
   * Имеет форму, в которой реализованы:
 | 
			
		||||
      * Выбор и подбор номенклатуры с автоматическим назначением цен согласно срезу последних регистра сведений Цены
 | 
			
		||||
   * Формирует движения по регистру сведений **Цены**
 | 
			
		||||
   
 | 
			
		||||
* Регистром сведений **Цены**, который:
 | 
			
		||||
   * Содержит измерение Номенклатура и ресурс Цена
 | 
			
		||||
   * Является периодическим с подчинением регистратору (документу **УстановкаЦен**)
 | 
			
		||||
 | 
			
		||||
* Документом **УстановкаСкидок**, который:
 | 
			
		||||
   * Содержит реквизит шапки Ответственный и табличную часть Скидки с реквизитами НоменклатураНоменклатурнаяГруппа и Скидка
 | 
			
		||||
   * Имеет форму, в которой реализованы:
 | 
			
		||||
      * Выбор номенклатуры и номенклатурных групп с автоматическим назначением скидок согласно срезу последних регистра сведений Скидки
 | 
			
		||||
   * Формирует движения по регистру сведений **Скидки**
 | 
			
		||||
   
 | 
			
		||||
* Регистром сведений **Скидки**, который:
 | 
			
		||||
   * Содержит измерение НоменклатураНоменклатурнаяГруппа и ресурс Скидка
 | 
			
		||||
   * Является периодическим с подчинением регистратору (документу **УстановкаСкидок**)
 | 
			
		||||
   
 | 
			
		||||
* Журналом документов **ЦеныИСкидки**, который:
 | 
			
		||||
   * Содержит документы **УстановкаЦен** и **УстановкаСкидок** и графу Ответственный
 | 
			
		||||
 | 
			
		||||
Подсистемой **Сделки**, а в ней:
 | 
			
		||||
 | 
			
		||||
* Документом **ПоступлениеТоваровИУслуг**, который:
 | 
			
		||||
   * Содержит реквизиты шапки Поставщик, Ответственный, Сумма и табличную часть ТоварыИУслуги с реквизитами Номенклатура, Количество, Цена, Сумма, СтавкаНДС, СуммаНДС
 | 
			
		||||
   * Имеет форму, в которой реализован выбор и подбор номенклатуры с автоматическим пересчетом числовых колонок по правилам:
 | 
			
		||||
      * При изменении реквизитов Количество и Цена пересчитывается Сумма и СуммаНДС (см. ниже "Правила расчета НДС")
 | 
			
		||||
      * При изменении реквизита Сумма пересчитывается Цена и СуммаНДС
 | 
			
		||||
      * При изменении реквизита СтавкаНДС пересчитывается СуммаНДС
 | 
			
		||||
   * Перед записью заполняет реквизит шапки Сумма итогом по одноименной колонке табличной части
 | 
			
		||||
   * Формирует движения:
 | 
			
		||||
      * Расход по регистру накопления **ВзаиморасчетыСКонтрагентами** с указанием поставщика в сумме общего итога по реквизиту ТЧ Сумма
 | 
			
		||||
      * Приход по регистру накопления **Товары** в разрезе номенклатуры типа Товар согласно реквизитам ТЧ Количество и Сумма
 | 
			
		||||
      * Движения по регистру накопления **Расходы** в разрезе номенклатуры типа Услуга согласно реквизиту ТЧ Сумма
 | 
			
		||||
 | 
			
		||||
* Документом **РеализацияТоваровИУслуг**, который:
 | 
			
		||||
   * Содержит реквизит шапки Покупатель, Ответственный, Сумма и табличную часть ТоварыИУслуги с реквизитами Номенклатура, Количество, Скидка, Цена, Сумма, СтавкаНДС, СуммаНДС
 | 
			
		||||
   * Имеет форму, в которой реализован выбор и подбор номенклатуры с автоматическим назначением цены и скидки, а также пересчетом числовых колонок по правилам:
 | 
			
		||||
      * При изменении реквизитов Количество и Цена пересчитывается Сумма (с учетом скидки) и СуммаНДС (см. ниже "Правила расчета НДС")
 | 
			
		||||
      * При изменении реквизита Скидка пересчитывается Сумма и СуммаНДС (см. ниже "Применение скидок")
 | 
			
		||||
      * При изменении реквизита Сумма пересчитывается СуммаНДС
 | 
			
		||||
      * При изменении реквизита СтавкаНДС пересчитывается СуммаНДС
 | 
			
		||||
   * Перед записью заполняет реквизит шапки Сумма итогом по одноименной колонке табличной части
 | 
			
		||||
   * Формирует движения:
 | 
			
		||||
      * Приход по регистру накопления **ВзаиморасчетыСКонтрагентами** с указанием покупателя в сумме общего итога по реквизиту ТЧ Сумма
 | 
			
		||||
      * Расход по регистру накопления **Товары** в разрезе номенклатуры типа Товар согласно реквизиту ТЧ Количество и сумме, определенной согласно средней стоимости остатков этого товара. В отсутствие достаточного остатка проведение не выполняется.
 | 
			
		||||
      * Движения по регистру накопления **Расходы** в разрезе номенклатуры типа Товар в сумме себестоимости продаж (сумме расхода по регистру Товары)
 | 
			
		||||
      * Движения по регистру накопления **Доходы** в разрезе номенклатуры всех типов согласно реквизиту ТЧ Сумма
 | 
			
		||||
      
 | 
			
		||||
* Журналом документов **Сделки**, который:
 | 
			
		||||
   * Содержит документы **ПоступлениеТоваровИУслуг** и **РеализацияТоваровИУслуг** с графами Контрагент, Ответственный и Сумма
 | 
			
		||||
 | 
			
		||||
Подсистемой **Деньги**, а в ней:
 | 
			
		||||
 | 
			
		||||
* Документом **ПоступлениеДенежныхСредств**, который:
 | 
			
		||||
  * Содержит реквизиты Плательщик и Сумма
 | 
			
		||||
  * Формирует движение: расход по регистру накопления **ВзаиморасчетыСКонтрагентами** с указанием плательщика и суммы
 | 
			
		||||
 | 
			
		||||
* Документом **СписаниеДенежныхСредств**, который:
 | 
			
		||||
  * Содержит реквизиты Получатель и Сумма
 | 
			
		||||
  * Формирует движение: приход по регистру накопления **ВзаиморасчетыСКонтрагентами** с указанием получателя и суммы
 | 
			
		||||
  
 | 
			
		||||
* Журналом документов **Деньги**, который:
 | 
			
		||||
   * Содержит документы **ПоступлениеДенежныхСредств** и **СписаниеДенежныхСредств** с графами Контрагент, Ответственный и Сумма
 | 
			
		||||
 | 
			
		||||
* Регистром накопления **ВзаиморасчетыСКонтрагентами**, который:
 | 
			
		||||
  * Имеет вид Остатки
 | 
			
		||||
  * Содержит измерение Контрагент и ресурс Сумма
 | 
			
		||||
  * Подчинен регистраторам **ПоступлениеТоваровИУслуг**, **РеализацияТоваровИУслуг**, **ПоступлениеДенежныхСредств**, **РасходованиеДенежныхСредств**
 | 
			
		||||
  * Положительные остатки по нему означают дебиторскую задолженность (нам должны), отрицательные - кредиторскую (мы должны)
 | 
			
		||||
      
 | 
			
		||||
* Регистром накопления **Товары**, который:
 | 
			
		||||
  * Имеет вид Остатки
 | 
			
		||||
  * Содержит измерение Номенклатура и ресурсы Количество, Сумма
 | 
			
		||||
  * Подчинен регистраторам **ПоступлениеТоваровИУслуг** и **РеализацияТоваровИУслуг**
 | 
			
		||||
  * Хранит текущие остатки товаров и их себестоимость с учетом НДС
 | 
			
		||||
  
 | 
			
		||||
* Регистром накопления **Доходы**, который:
 | 
			
		||||
  * Имеет вид Обороты
 | 
			
		||||
  * Содержит измерение Номенклатура и ресурсы Количество, Сумма
 | 
			
		||||
  * Подчинен регистратору **РеализацияТоваровИУслуг**
 | 
			
		||||
  * Хранит доходы (выручку) от реализации товаров и услуг с учетом НДС
 | 
			
		||||
  
 | 
			
		||||
* Регистром накопления **Расходы**, который:
 | 
			
		||||
  * Имеет вид Обороты
 | 
			
		||||
  * Содержит измерение Номенклатура и ресурсы Количество, Сумма
 | 
			
		||||
  * Подчинен регистраторам **ПоступлениеТоваровИУслуг**, **РеализацияТоваровИУслуг**
 | 
			
		||||
  * Хранит расходы по приобретенным услугам и себестоимость реализованных товаров с учетом НДС
 | 
			
		||||
  
 | 
			
		||||
* Отчетом **ДоходыИРасходы**, который:
 | 
			
		||||
  * Выводит, соединяя, данные регистров **Доходы** и **Расходы** в три колонки ("Доходы", "Расходы", "Прибыль")
 | 
			
		||||
  * Содержит группировку по номенклатуре с учетом иерархии и общие итоги
 | 
			
		||||
  
 | 
			
		||||
* Отчетом **ДвижениеТоваров**, который:
 | 
			
		||||
  * Выводит данные регистра **Товары**: остатки и обороты по количеству и сумме
 | 
			
		||||
  * Содержит группировку по номенклатуре с учетом иерархии и общие итоги
 | 
			
		||||
  * Не суммирует количества в общем итоге и по иерархии номенклатуры
 | 
			
		||||
  
 | 
			
		||||
* Отчетом **ВзаиморасчетыСКонтрагентами**, который:
 | 
			
		||||
  * Выводит данные регистра **ВзаиморасчетыСКонтрагентами**: остатки и обороты
 | 
			
		||||
  * Содержит группировку по контрагентам и общие итоги
 | 
			
		||||
  
 | 
			
		||||
Ценообразование должно быть доступно только роли **ПолныеПрава**.
 | 
			
		||||
 | 
			
		||||
### Применение скидок
 | 
			
		||||
 | 
			
		||||
Скидки определяются по срезу последних регистра сведений Скидки. Если скидка установлена и на конкретный элемент справочника **Номенклатура**, и на номенклатурную группу, приоритет имеет скидка для конкретного элемента.
 | 
			
		||||
 | 
			
		||||
Цена определяется по данным регистра сведений Цены и не пересчитывается при изменении скидки. Сумма определяется по цене с учетом скидки как:
 | 
			
		||||
   Сумма = Количество * Цена * (100 - Скидка) / 100
 | 
			
		||||
При изменении суммы изменяется скидка, но не цена, по обратной формуле:
 | 
			
		||||
   Скидка = 100 * (1 - Сумма / Количество / Цена)
 | 
			
		||||
 | 
			
		||||
### Правила расчета НДС
 | 
			
		||||
 | 
			
		||||
НДС рассчитывается по ставкам, определяемым по значению перечисления **СтавкиНДС** (БезНДС - 0%, НДС10 - 10%, НДС20 - 20%). Сумма НДС определяется умножением суммы на ставку (т.е. НДС рассчитывается по схеме "в том числе", например, для ставки 20% и суммы 120 р сумма НДС будет равна 120 * 0.2 / (1 + 0.2) = 20.
 | 
			
		||||
 | 
			
		||||
@@ -0,0 +1,11 @@
 | 
			
		||||
# Диплом блока Б "Сделки и деньги"
 | 
			
		||||
 | 
			
		||||
## Описание задачи
 | 
			
		||||
 | 
			
		||||
Развить созданную в блоке А конфигурацию "Управление ИТ-фирмой", обеспечив возможность учета хозяйственных операций по приобретению и реализации товаров и услуг и движению денежных средств с базовым механизмом ценообразования и набором простых отчетов.
 | 
			
		||||
 | 
			
		||||
Итогом станет конфигурация, содержащая главные элементы управленческих учетных систем на платформе 1С:Предприятие.
 | 
			
		||||
 | 
			
		||||
[Требования к результату](diploma-b-reqs.md)
 | 
			
		||||
 | 
			
		||||
[Порядок выполнения](diploma-b-howto.md)
 | 
			
		||||
		Reference in New Issue
	
	Block a user