mirror of
https://github.com/netology-code/1c-homeworks.git
synced 2024-11-16 07:10:14 +02:00
16 KiB
16 KiB
Сделки
Все добавляемые объекты включаем в новую подсистему «Сделки».
- Добавить регистр накопления «Товары» вида «Остатки»
- добавить измерение «Номенклатура» (СправочникСсылка.Номенклатура) и ресурсы «Сумма» (ОпределяемыйТип.Сумма) и «Количество» (ОпределяемыйТип.Количество).
- Добавить регистр накопления «ВзаиморасчётыСКонтрагентами» вида «Остатки»:
- добавить измерение «Контрагент» (СправочникСсылка.Контрагенты) и ресурс «Сумма» (ОпределяемыйТип.Сумма).
- Добавить регистр накопления «Доходы» вида «Обороты»:
- д«обавить измерение «Номенклатура» (СправочникСсылка.Номенклатура) и ресурсы «Сумма» (ОпределяемыйТип.Сумма) и «Количество» (ОпределяемыйТип.Количество).
- Добавить регистр накопления «Расходы» вида «Обороты»:
- добавить измерение «Номенклатура» (СправочникСсылка.Номенклатура) и ресурс «Сумма» (ОпределяемыйТип.Сумма).
- Добавить общий модуль «НДСКлиентСервер»:
- с флагами «Клиент» и «Сервер»;
- создать в нём функцию «СуммаНДСПоСтавке» (Сумма, СтавкаНДС), возвращающую сумму НДС, рассчитанную от суммы по ставке согласно требованиям. Чтобы обеспечить работоспособность на клиенте, для получения значений ставок НДС используйте функцию «ПредопределенноеЗначение()».
- Добавить документ «ПоступлениеТоваровИУслуг»:
- добавить реквизиты «Поставщик»» (СправочникСсылка.Контрагенты) и «Сумма» (ОпределяемыйТип.Сумма);
- добавить ТЧ «ТоварыИУслуги» с реквизитами:
- «Номенклатура» (СправочникСсылка.Номенклатура);
- «Количество» (ОпределяемыйТип.Количество);
- «СтавкаНДС» (ПеречислениеСсылка.СтавкиНДС);
- «Цена», «Сумма», «СуммаНДС» (ОпределяемыйТип.Сумма);
- в «Движениях» выбрать регистры накопления «Товары», «Расходы» и «ВзаиморасчётыСКонтрагентами»;
- создать форму документа, в которой:
- разумным образом разместить элементы управления для реквизитов и табличных частей;
- в таблице товаров и услуг включить отображение подвала и вывести в него итог по колонкам «Сумма» и «Сумма НДС», поставив флаг «Отображать в подвале» и задав путь к данным подвала;
- создать клиентские процедуры:
- ПриИзмененииКоличества(ИзмененнаяСтрока), ПриИзмененииЦены(ИзмененнаяСтрока), в которых:
- рассчитывать сумму по цене и количеству и вызывать ПриИзмененииСуммы();
- ПриИзмененииСуммы(ИзмененнаяСтрока), ПриИзмененииСтавкиНДС(ИзмененнаяСтрока), в которых:
- рассчитывать сумму НДС по сумме и ставке вызовом НДСКлиентСервер.СуммаНДСПоСтавке();
- ПриИзмененииКоличества(ИзмененнаяСтрока), ПриИзмененииЦены(ИзмененнаяСтрока), в которых:
- переопределить обработчики событий ПриИзменении полей ввода для количества, цены, суммы и ставки НДС и вызывать из них процедуры ПриИзменении<...>, передавая в качестве параметра «ТекущиеДанные» таблицы;
- форма может выглядеть, например, так:
- в модуле объекта:
- создать обработчик события «ОбработкаПроведения» и формировать движения, выбрав предварительно запросом табличную часть с типами номенклатуры:
- по регистру «ВзаиморасчётыСКонтрагентами» — одно движение вида «Расход» с указанием контрагента-поставщика и общей суммы;
- по регистру «Товары» — движения вида «Приход» по каждой строке с номенклатурой типа «Товары» с указанием номенклатуры, количества и суммы;
- по регистру ««Расходы» — движения по каждой строке с номенклатурой типа «Услуги» с указанием номенклатуры и суммы;
- создать обработчик события «ПередЗаписью» и сохранять в реквизит шапки «Сумма» итог по одноимённому реквизиту табличной части для отображения в списках;
- создать обработчик события «ОбработкаПроведения» и формировать движения, выбрав предварительно запросом табличную часть с типами номенклатуры:
- проверить документ, убедившись в том, что:
- при изменении количества и цены пересчитывается сумма и сумма НДС, а при изменении суммы и ставки НДС — сумма НДС;
- формируются движения по трём регистрам накопления, и сумма движения по «Взаиморасчётам» равна итогу по колонке «Сумма» и сумме движений по «Товарам» и «Расходам». Пример движений для документа со снимка выше:
- Добавить документ «РеализацияТоваровИУслуг» или скопировать и переименовать «ПоступлениеТоваровИУслуг»:
- добавить реквизиты «Покупатель» (СправочникСсылка.Контрагенты) и «Сумма» (ОпределяемыйТип.Сумма);
- добавить ТЧ «ТоварыИУслуги» с реквизитами:
- «Номенклатура» (СправочникСсылка.Номенклатура);
- «Количество» (ОпределяемыйТип.Количество);
- «СтавкаНДС» (ПеречислениеСсылка.СтавкиНДС);
- «Скидка» (Число);
- «Цена», «Сумма», «СуммаНДС» (ОпределяемыйТип.Сумма);
- в «Движениях» выбрать регистры накопления «Товары», «Доходы», «Расходы» и «ВзаиморасчётыСКонтрагентами»;
- создать форму документа, в которой:
- разумным образом разместить элементы управления для реквизитов и табличных частей;
- в таблице товаров и услуг включить отображение подвала и вывести в него итог по колонкам «Сумма" и «Сумма НДС";
- создать клиентскую функцию «СуммаПоСтроке» (Строка), которая возвращает сумму с учётом количества, цены и скидки;
- создать клиентские процедуры:
- ПриИзмененииНоменклатуры(ИзмененнаяСтрока), в которой:
- заполнять цену и скидку аналогично документам «УстановкаЦен» и «УстановкаСкидок», а также заполнять ставку НДС и вызывать процедуры «ПриИзмененииЦены», «ПриИзмененииСкидки» и «ПриИзмененииСтавкиНДС»;
- ПриИзмененииКоличества(ИзмененнаяСтрока), ПриИзмененииЦены(ИзмененнаяСтрока), ПриИзмененииСкидки(ИзмененнаяСтрока), в которых:
- рассчитывать сумму вызовом «СуммаПоСтроке()» и вызывать «ПриИзмененииСуммы()»;
- ПриИзмененииСуммы(ИзмененнаяСтрока), ПриИзмененииСтавкиНДС(ИзмененнаяСтрока), в которых:
- рассчитывать сумму НДС по сумме и ставке вызовом «НДСКлиентСервер.СуммаНДСПоСтавке()»;
- ПриИзмененииНоменклатуры(ИзмененнаяСтрока), в которой:
- переопределить обработчики событий ПриИзменении полей ввода номенклатуры, количества, цены, скидки, суммы и ставки НДС, и вызывать из них процедуры ПриИзменении<...>, передавая в качестве параметра «ТекущиеДанные таблицы»;
- реализовать подбор аналогично документу «УстановкаЦен», передавая в качестве владельца открываемой формы таблицу «ТоварыИУслуги», а в обработчике события «ОбработкаВыбора» вызывая процедуру «ПриИзмененииНоменклатуры», чтобы обеспечить получение цен и скидок и автоматический пересчёт сумм;
- форма может выглядеть, например, так:
- в модуле объекта:
- создать обработчик события «ОбработкаПроведения» и формировать движения, выбрав предварительно запросом данные табличной части документа с типами номенклатуры и соединив с виртуальной таблицей Остатки регистра «Товары» по номенклатуре:
- по регистру «ВзаиморасчётыСКонтрагентами» — одно движение вида «Приход» с указанием контрагента-покупателя и общей суммы;
- по регистру товары — движения вида «Расход» по каждой строке с номенклатурой типа «Товары» с указанием номенклатуры, количества и суммы. Сумму рассчитывать, определив среднюю стоимость единицы делением суммы остатка на количество остатка и умножив среднюю стоимость на реализуемое количество. При нехватке остатков отказываться от проведения, выводя пользователю разумное сообщение;
- по регистру «Расходы» — движения по каждой строке с номенклатурой типа «Товары» с указанием номенклатуры и суммы, равной сумме расхода по регистру «Товары»;
- по регистру «Доходы» — движения по каждой строке с указанием номенклатуры, количества и суммы;
- создать обработчик события «ПередЗаписью» и сохранять в реквизит шапки «Сумма» итог по одноименному реквизиту табличной части для отображения в списках;
- создать обработчик события «ОбработкаПроведения» и формировать движения, выбрав предварительно запросом данные табличной части документа с типами номенклатуры и соединив с виртуальной таблицей Остатки регистра «Товары» по номенклатуре:
- проверить документ, убедившись в том, что:
- при изменении количества, цены и скидки пересчитывается сумма и сумма НДС, а при изменении суммы и ставки НДС - сумма НДС;
- формируются движения по четырём регистрам накопления, и сумма движения по «Взаиморасчётам» равна итогу по колонке «Сумма» и сумме движений по «Доходам», а суммы движений по «Расходам» и «Товарам» совпадают. Пример движений для документа со снимка выше:
- Добавить журнал документов «Сделки»:
- в качестве регистрируемых выбрать документы «ПоступлениеТоваровИУслуг» и «РеализацияТоваровИУслуг»;
- добавить графы «Контрагент: «Поставщик» из «Поступления» и «Покупатель» из «Реализации», «Ответственный» и «Сумма».