75 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

### Настройка
Все добавляемые объекты включаем в подсистему **Настройка**.
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. Добавить журнал документов **ЦеныИСкидки**:
* В качестве регистрируемых выбрать документы **УстановкаЦен** и **УстановкаСкидок**
* Добавить графу Ответственный