### Настройка Все добавляемые объекты включаем в подсистему **«Настройка»**. 1. Добавить перечисление **«ТипыНоменклатуры»** со значениями «Товар» и «Услуга». 2. Добавить перечисление **«СтавкиНДС»** со значениями БезНДС («Без НДС»), НДС10 («10%»), НДС20 («20%»). 3. Добавить справочник **«НоменклатурныеГруппы»**: * синоним — «Номенклатурные группы», представление объекта — «Номенклатурная группа»; * убрать код, дать разумную длину наименованию. 4. Добавить справочник **«Номенклатура»**: * убрать код, дать разумную длину наименованию; * включить иерархию групп и элементов; * добавить реквизиты, включив в «Проверке заполнения» вариант «Выдавать ошибку» и поставив флаг «Заполнять из данных заполнения»: * тип — ПеречислениеСсылка.ТипыНоменклатуры; * номенклатурнаяГруппа — СправочникСсылка.НоменклатурныеГруппы; * ставкаНДС — ПеречислениеСсылка.СтавкиНДС; * в модуле объекта переопределить событие «ОбработкаЗаполнения», заполнив тип и ставку НДС значениями по умолчанию: «Товар», «НДС20». Заполнять только для элемента, для группы эти реквизиты не определены; * создать форму элемента, расположив элементы разумным образом, например, такую: ![Форма элемента справочника Номенклатура](diploma-b-productserviceform.png) 5. Добавить регистр сведений **«Цены»**: * установить периодичность «По позиции регистратора» и режим записи «Подчинение регистратору»; * добавить измерение «Номенклатура» (СправочникСсылка.Номенклатура) с флагом «Ведущее» и ресурс «Цена» (ОпределяемыйТип.Сумма); * роли «Базовые права» дать права на просмотр и чтение, роли «Полные права» — на добавление, изменение и запись; * добавить общий модуль «ЦеныСервер» с флажками «Сервер» и «Внешнее соединение» и создать в нём экспортную функцию «ЦенаНаДату»(Номенклатура, Дата), которая получит запросом срез последних на указанную дату с отбором по номенклатуре и вернёт цену; * добавить общий модуль «ЦеныВызовСервера» с флажками «Сервер», «Внешнее соединение» и «Вызов сервера» и создать в нём функцию «ЦенаНаДату» для вызова из клиентского кода форм, которая вызовет одноимённую функцию из модуля «ЦеныСервер». 6. Добавить документ **«УстановкаЦен»**: * добавить ТЧ «Цены» с реквизитами «Номенклатура» (СправочникСсылка.Номенклатура) и «Цена» (ОпределяемыйТип.Сумма); * в «Движениях» выбрать регистр сведений «Цены»; * роли «Базовые права» дать права на просмотр и чтение, роли «Полные права» — на добавление, изменение и запись. * в модуле объекта: * переопределить событие «ОбработкаПроведения», формируя движения по регистру сведений «Цены» датой документа; * создать форму документа, в которой: * разумным образом разместить элементы управления для реквизитов и табличных частей; * создать клиентскую процедуру ПриИзмененииНоменклатуры с параметром «ИзмененнаяСтрока» (ДанныеФормыЭлементКоллекции), в которой, если Номенклатура заполнена, вызвать «ЦеныВызовСервера.ЦенаНаДату» и заполнить цену; * переопределить событие «ПриИзменении» поля ввода номенклатуры и вызвать в нём процедуру «ПриИзмененииНоменклатуры» с передачей текущих данных таблицы цен; * добавить команду «Подбор», разместив её в командной панели таблицы цен. В обработчике команды открыть форму выбора справочника «Номенклатура» с параметром «ЗакрыватьПриВыборе = Ложь», указав в качестве владельца таблицу цен; * переопределить событие «ОбработкаВыбора» таблицы цен. В обработчике отказаться от стандартной обработки и, если в таблице ещё нет выбранного значения, добавить строку и вызвать процедуру «ПриИзмененииНоменклатуры», передав добавленную строку; * форма может выглядеть, например, так: ![Форма документа УстановкаЦен](diploma-b-pricesetting.png) * проверить документ, убедившись в том, что: * введённые цены после проведения появляются в регистре; * выбор и подбор номенклатуры в последующих документах автоматически подставляют цены из предыдущих документов. 7. Добавить регистр сведений **«Скидки»** или скопировать и переименовать **«Цены»**: * установить периодичность «По позиции регистратора» и режим записи «Подчинение регистратору» * добавить измерение «НоменклатураНоменклатурнаяГруппа» (СправочникСсылка.Номенклатура, СправочникСсылка.НоменклатурныеГруппы) с флагом «Ведущее» и ресурс «Скидка» (Число); * роли «Базовые права» дать права на просмотр и чтение, роли «Полные права» — на добавление, изменение и запись; * в общий модуль «ЦеныСервер» добавить экспортную функцию «СкидкаНаДату» (Номенклатура, Дата), которая получит запросом срез последних на указанную дату с отбором по номенклатуре и номенклатурной группе и вернёт скидку, установленную для номенклатурной группы, если нет скидки для конкретной номенклатуры. В общий модуль ЦеныВызовСервера» добавить одноимённую функцию-обёртку. 8. Добавить документ **«УстановкаСкидок»** или скопировать и переименовать **«УстановкаЦен»**: * добавить ТЧ «Скидки» с реквизитами «НоменклатураНоменклатурнаяГруппа» (СправочникСсылка.Номенклатура, СправочникСсылка.НоменклатурныеГруппы) и «Скидка» (Число); * в «Движениях» выбрать регистр сведений «Скидки»; * роли «Базовые права» дать права на просмотр и чтение, роли «Полные права» — на добавление, изменение и запись; * в модуле объекта: * переопределить событие «ОбработкаПроведения», формируя движения по регистру сведений «Скидки» датой документа * создать форму документа, в которой: * разумным образом разместить элементы управления для реквизитов и табличных частей; * создать клиентскую процедуру «ПриИзмененииНоменклатурыНоменклатурнойГруппы» с параметром «ИзмененнаяСтрока» (ДанныеФормыЭлементКоллекции), в которой, если «НоменклатураНоменклатурнаяГруппа» заполнена, вызвать «ЦеныВызовСервера.СкидкаНаДату» и заполнить скидку; * переопределить событие «ПриИзменении поля ввода номенклатуры / номенклатурной группы» и вызвать в нём процедуру «ПриИзмененииНоменклатурыНоменклатурнойГруппы» с передачей текущих данных таблицы скидок; * форма может выглядеть, например, так: ![Форма документа УстановкаСкидок](diploma-b-discountsetting.png) * проверить документ, убедившись в том, что: * введённые скидки после проведения появляются в регистре; * выбор в последующих документах автоматически подставляет скидки из предыдущих. 9. Добавить журнал документов **«ЦеныИСкидки»**: * в качестве регистрируемых выбрать документы **«УстановкаЦен»** и **«УстановкаСкидок»**; * добавить графу «Ответственный».