пятница, 27 февраля 2015 г.

1c специалист задача 2.19


Решение:


1) Для решения задачи задействуем следующие объекты:
  • Добавляем перечисления "Варианты списания" "Сразу" и "Частично".
  • В справочник "Номенклатура" добавляем реквизиты "Вариант списания" и "СрокПолезногоИспользования"
  • Добавляем регистр сведений "Первоначальная стоимость" с реквизитами "номенклатура" и "партия" и ресурсом значение.

2) ПВХ "Виды субконто". 

  • Заполняем типы значений характеристик и дополнительные значения характеристик. 
  • Согласно условия задачи заводим 2 предопределенных элемента "Номенклатура"  и "Партия". 

3) Дорабатываем план счетов. 

  • Добавляем признак учета субконто "количественный",
  •  на закладке "субконто" заполняем тип субконто и устанавливаем значение субконто=2.
  • Редактируем предопределенный счет "Товары" и "Материалы" (признак учета и 2 субконто).
4) Добавляем документе "КупляПродажа".
5) Добавляем регистр бухгалтерии "Управленческий".
  • Связываем его с планом счетов
  • Добавляем ресурсы (количество, сумма)
  • Выбираем регистраторы.
6) Не забываем о том, что в задачах бухгалтерского учета необходимо добавить документ,  с помощью которого можно добавлять записи в регистр вручную. Назовем его "Ручная операция".  укажем что он является регистратором нашего регистра.  добавим форму
на форму вытащим реквизит Объект-движения-управленческий.
7) Переходим к Приходной накладной.
  • Добавляем реквизит ТЧ "ДляСобственныхНужд".
  • Небольшой "тюнинг". Вешаем процедуру пересчета строки на событие "при изменении" количества и цены, записываем реквизит "сумма по документу" при записи документа.
  • С помощью конструктора движений формируем обработку проведения, затем ее немного корректируем.



Процедура ОбработкаПроведения(Отказ, Режим)

Движения.Управленческий.Записывать = Истина;
Движения.ПервоначальнаяСтоимость.Записывать = Истина;
Для Каждого ТекСтрокаСписокНоменклатуры Из СписокНоменклатуры Цикл
Движение = Движения.Управленческий.Добавить();
Если   ТекСтрокаСписокНоменклатуры.ДляСобственныхНужд Тогда 
Движение.СчетДт = ПланыСчетов.Управленческий.Материалы;
Иначе
Движение.СчетДт = ПланыСчетов.Управленческий.Товары;
КонецЕсли;
Движение.СчетКт = ПланыСчетов.Управленческий.Поставщики;
Движение.Период = Дата;
Движение.Сумма = ТекСтрокаСписокНоменклатуры.Сумма;
Движение.Количество = ТекСтрокаСписокНоменклатуры.Количество;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = ТекСтрокаСписокНоменклатуры.Номенклатура;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Партия] = Ссылка;
Если   ТекСтрокаСписокНоменклатуры.ДляСобственныхНужд Тогда
Запись = Движения.ПервоначальнаяСтоимость.Добавить();
Запись.Номенклатура = ТекСтрокаСписокНоменклатуры.Номенклатура;
Запись.Партия = Ссылка;
Запись.Значение =ТекСтрокаСписокНоменклатуры.Сумма;
КонецЕсли;
КонецЦикла;
КонецПроцедуры


8) Переходим к "СобственнымНуждам".
  • Пишем процедуру проведения.
Обратите внимание в задаче есть возможность "попасть" на "копейки", чтобы ничего не зависло, делаем проверку
Если Окр(Выборка.ОстатокСум,1,1) = Окр(СуммаСписания,1,1)  Тогда
СуммаСписания =Выборка.ОстатокСум;
КонецЕсли;


Процедура ОбработкаПроведения(Отказ, РежимПроведения)

Движения.Управленческий.Записывать = Истина;
Движения.Управленческий.Очистить();
Движения.Управленческий.Записать();

Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрБухгалтерии.Управленческий");
ЭлементБлокировки.УстановитьЗначение("Счет",ПланыСчетов.Управленческий.Материалы);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать(); 

Запрос = Новый("Запрос");
Запрос.Текст = "ВЫБРАТЬ
| УправленческийОстатки.Субконто1 КАК Материал,
| УправленческийОстатки.Субконто2 КАК Партия,
| ЕСТЬNULL(УправленческийОстатки.КоличествоОстатокДт, 0) КАК ОстатокКол,
| ЕСТЬNULL(УправленческийОстатки.СуммаОстатокДт, 0) КАК ОстатокСум,
| УправленческийОстатки.Субконто1.ВариантСписания КАК ВариантСписания,
| ПервоначальнаяСтоимость.Значение КАК ПервоначальнаяСтоимость,
| ЕСТЬNULL(ПервоначальнаяСтоимость.Номенклатура.СрокПолезногоИспользования, 1) КАК СрокПолезногоИспользования
|ИЗ
| РегистрБухгалтерии.Управленческий.Остатки(&ТочкаИтогов, Счет = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Материалы), , КОНЕЦПЕРИОДА(Субконто2.Дата, МЕСЯЦ) < &ТочкаИтогов) КАК УправленческийОстатки
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПервоначальнаяСтоимость КАК ПервоначальнаяСтоимость
| ПО УправленческийОстатки.Субконто1 = ПервоначальнаяСтоимость.Номенклатура
| И УправленческийОстатки.Субконто2 = ПервоначальнаяСтоимость.Партия";

Запрос.УстановитьПараметр("ТочкаИтогов", КонецМесяца(Дата));

Выборка  = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Движение =Движения.Управленческий.Добавить();
Движение.Период = КонецМесяца(Дата);
Движение.СчетДт = ПланыСчетов.Управленческий.ПрибылиУбытки;
Движение.СчетКт = ПланыСчетов.Управленческий.Материалы;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = Выборка.Материал;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Партия] = Выборка.Партия;
Если Выборка.ВариантСписания = Перечисления.ВариантыСписания.Сразу Тогда 
СуммаСписания = Выборка.ОстатокСум;
Иначе
СуммаСписания =Выборка.ПервоначальнаяСтоимость/ Выборка.СрокПолезногоИспользования;
КонецЕсли;
Если Окр(Выборка.ОстатокСум,1,1) = Окр(СуммаСписания,1,1)  Тогда
СуммаСписания =Выборка.ОстатокСум;
Движение.Количество=Выборка.ОстатокКол;
КонецЕсли;
Движение.Сумма = СуммаСписания;
КонецЦикла;


КонецПроцедуры

9) Отчет простейший.
ВЫБРАТЬ
УправленческийОстатки.Субконто1 КАК Товар,
СУММА(УправленческийОстатки.КоличествоОстатокДт) КАК Количество,
СУММА(УправленческийОстатки.СуммаОстатокДт) КАК ОстаточнаяСтоимость,
УправленческийОстатки.Субконто2 КАК Партия
ИЗ
РегистрБухгалтерии.Управленческий.Остатки(&ДатаОтчета, Счет = &счет, , ) КАК УправленческийОстатки

СГРУППИРОВАТЬ ПО
УправленческийОстатки.Субконто1,

УправленческийОстатки.Субконто2

Но есть один непонятный  вопрос: Выводить итоговые данные по номенклатуре или с учетом партии, Если решаем что правильный вариант 2 тогда в конструкторе настроек ставим упорядочивание по партиям.

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

Надеюсь Вам также будет интересен 




Этот видеокурс поможет Вам:
  • Избежать типичных и нетипичные ошибок в 1С:Бухгалтерия 8;
  • Cэкономить Вам время и силы;
  • Более уверенно работать с программой.

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

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