1
0
mirror of https://github.com/netology-code/1c-homeworks.git synced 2024-11-24 08:02:20 +02:00
1c-homeworks/diploma-b-howto-settings.md
2020-07-20 12:04:15 +03:00

10 KiB

Настройка

Все добавляемые объекты включаем в подсистему Настройка.

  1. Добавить перечисление ТипыНоменклатуры со значениями Товар и Услуга.

  2. Добавить перечисление СтавкиНДС со значениями БезНДС ("Без НДС"), НДС10 ("10%"), НДС20 ("20%").

  3. Добавить справочник НоменклатурныеГруппы:

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