1
0
mirror of https://github.com/netology-code/1c-homeworks.git synced 2024-11-30 08:06:56 +02:00
1c-homeworks/diploma-b-howto-deals.md
2020-07-20 14:11:37 +03:00

15 KiB

Сделки

Все добавляемые объекты включаем в новую подсистему Сделки

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