воскресенье, 14 июня 2015 г.

1c специалист. Решение задачи 1.36


Основные моменты:

1) Решение построено на 3-х РН след. структуры:

Документы Приходная накладная и Расходная накладная формируют движения по ним вполне стандартно отдельно останавливаться на них не стоит.

2) В задании упоминается документ "Сторно".

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
КолДвижений = Документ.Метаданные().Движения; 
Для Каждого Движение Из КолДвижений Цикл 
Ресурсы = Движение.Ресурсы; 
"white-space: pre;"> НЗ = РегистрыНакопления[Движение.Имя].СоздатьНаборЗаписей(); 
НЗ.Отбор.Регистратор.Установить(Ссылка); 
СтНЗ = РегистрыНакопления[Движение.Имя].СоздатьНаборЗаписей(); 
СтНЗ.Отбор.Регистратор.Установить(Документ); 
СтНЗ.Прочитать(); 
Для Каждого Стр Из СтНЗ Цикл 
НовЗапись = НЗ.Добавить(); 
ЗаполнитьЗначенияСвойств(НовЗапись, Стр); 
Для Каждого Ресурс Из Ресурсы Цикл 
НовЗапись[Ресурс.Имя] = - НовЗапись[Ресурс.Имя]; 
НовЗапись.Период = Дата; 
КонецЦикла; 
КонецЦикла; 
НЗ.Записать(); 
КонецЦикла; 
КонецПроцедуры


3) В задании требуется построить отчет с использованием ПВХ.
Задействуем след. объекты 
ПВХ "Свойства Объектов". 
Регистр сведений "ЗначенияСвойствНоменклатуры"
Свойство тип (ПВХ "Свойства объектов")
Значение свойства (Характеристика.СвойстваОбъектов).

4) Отчет о продажах элементарен, а отчет "Ведомость по складу" довольно хитер. Дело в том что значения сумм можем взять из регистра "СтоимостиНоменклатуры", однако в этом отчете нет данных о складе, по которому нужно отобрать данные.
Поэтому придется использовать данные 2-х регистров
ВЫБРАТЬ
ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура,
ОстаткиНоменклатурыОстаткиИОбороты.Склад,
ОстаткиНоменклатурыОстаткиИОбороты.КоличествоОборот,
ОстаткиНоменклатурыОстаткиИОбороты.КоличествоПриход,
ОстаткиНоменклатурыОстаткиИОбороты.КоличествоРасход,
ОстаткиНоменклатурыОстаткиИОбороты.КоличествоНачальныйОстаток,
ОстаткиНоменклатурыОстаткиИОбороты.КоличествоКонечныйОстаток
ПОМЕСТИТЬ ВТ
ИЗ
РегистрНакопления.ОстаткиНоменклатуры.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , Склад = &Склад) КАК ОстаткиНоменклатурыОстаткиИОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ.Номенклатура,
СУММА(ВТ.КоличествоПриход) КАК КоличествоПриход,
СУММА(ВТ.КоличествоРасход) КАК КоличествоРасход,
СУММА(ВТ.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток,
СУММА(ВТ.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
СУММА(ВЫБОР
КОГДА СтоимостиНоменклатурыОстаткиИОбороты.КоличествоПриход <> 0
ТОГДА СтоимостиНоменклатурыОстаткиИОбороты.СтоимостьПриход / СтоимостиНоменклатурыОстаткиИОбороты.КоличествоПриход * ВТ.КоличествоПриход
ИНАЧЕ 0
КОНЕЦ) КАК СтоимостьПриход,
СУММА(ВЫБОР
КОГДА СтоимостиНоменклатурыОстаткиИОбороты.КоличествоРасход <> 0
ТОГДА СтоимостиНоменклатурыОстаткиИОбороты.СтоимостьРасход / СтоимостиНоменклатурыОстаткиИОбороты.КоличествоРасход * ВТ.КоличествоРасход
ИНАЧЕ 0
КОНЕЦ) КАК СтоимостьРасход,
СУММА(ВЫБОР
КОГДА СтоимостиНоменклатурыОстаткиИОбороты.КоличествоНачальныйОстаток <> 0
ТОГДА СтоимостиНоменклатурыОстаткиИОбороты.СтоимостьНачальныйОстаток / СтоимостиНоменклатурыОстаткиИОбороты.КоличествоНачальныйОстаток * ВТ.КоличествоНачальныйОстаток
ИНАЧЕ 0
КОНЕЦ) КАК СтоимостьНачальныйОстаток,
СУММА(ВЫБОР
КОГДА СтоимостиНоменклатурыОстаткиИОбороты.КоличествоКонечныйОстаток <> 0
ТОГДА СтоимостиНоменклатурыОстаткиИОбороты.СтоимостьКонечныйОстаток / СтоимостиНоменклатурыОстаткиИОбороты.КоличествоКонечныйОстаток * ВТ.КоличествоКонечныйОстаток
ИНАЧЕ 0
КОНЕЦ) КАК СтоимостьКонечныйОстаток
ИЗ
ВТ КАК ВТ
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостиНоменклатуры.ОстаткиИОбороты КАК СтоимостиНоменклатурыОстаткиИОбороты
ПО ВТ.Номенклатура = СтоимостиНоменклатурыОстаткиИОбороты.Номенклатура

СГРУППИРОВАТЬ ПО
ВТ.Номенклатура
{ХАРАКТЕРИСТИКИ
ТИП(Справочник.Номенклатура)
ВИДЫХАРАКТЕРИСТИК ПланВидовХарактеристик.СвойстваОбъектов
ПОЛЕКЛЮЧА Ссылка
ПОЛЕИМЕНИ Наименование
ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствНоменклатуры
ПОЛЕОБЪЕКТА Номенклатура
ПОЛЕВИДА Свойство
ПОЛЕЗНАЧЕНИЯ ЗначениеСвойства }


На закладке "Характеристики" заполняем строку

Группировка по полю "Номенклатура.Производитель" станет доступна в пользовательском режиме.




Скачать решение задачи 1.36

Комментариев нет:

Отправить комментарий