понедельник, 9 марта 2015 г.

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

Условие из сборника:
Организация занимается оказанием услуг. Стоимость услуг определяется в условных единицах, а их оплата происходит в рублях, причем курс условной единицы определяется для каждого контрагента индивидуально. Расчеты в условных единицах ведутся только с покупателями. Оказание услуг отражается с помощью документа «Расходная накладная». Стоимость услуг указывается в условных единицах. При проведении документа формируется проводка:
Дт «Покупатели» - Кт «Прибыли и убытки» на сумму оказанных услуг в условных единицах и в рублях (по текущему курсу). Текущий курс условной единицы рассчитывается автоматически при проведении документа «Расходная накладная» в соответствии со шкалой, устанавливаемой пользователем для каждого контрагента. Шкала выглядит следующим образом:


Решение:
Для решения задачи задействуем следующие объекты:
1) ПВХ "Виды субконто". 

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

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

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

Процедура ОбработкаПроведения(Отказ, Режим)
// регистр Управленческий 
Движения.Управленческий.Записывать = Истина;
Движения.Управленческий.Записать();
//блокировка
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрБухгалтерии.Управленческий");
ЭлементБлокировки.УстановитьЗначение("Счет",ПланыСчетов.Управленческий.Покупатели);
ЭлементБлокировки.УстановитьЗначение("Субконто1",Контрагент);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
Запрос = Новый("Запрос");
Запрос.Текст ="ВЫБРАТЬ
             | ЕСТЬNULL(ШкалаКурсаСрезПоследних.Курс, 0) КАК Курс,
             | ЕСТЬNULL(УправленческийОборотыДтКт.СуммаУЕОборот, 0) КАК Оборот
             |ИЗ
             | РегистрСведений.ШкалаКурса.СрезПоследних(&КонДата, ) КАК ШкалаКурсаСрезПоследних
             | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Управленческий.ОборотыДтКт(&НачДата, &КонДата, , СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Покупатели), &мсубконто, СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.ПрибылиУбытки), , СубконтоДт1 = &Контрагент) КАК УправленческийОборотыДтКт
             | ПО (ЕСТЬNULL(УправленческийОборотыДтКт.СуммаУЕОборот, 0) МЕЖДУ ШкалаКурсаСрезПоследних.ОбъемПокупокОт И ШкалаКурсаСрезПоследних.ОбъемПокупокДо)";
 
мсубконто = Новый("Массив");
мсубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконто.Контрагенты);
Запрос.УстановитьПараметр("НачДата",ДобавитьМесяц(Дата,-1));
Запрос.УстановитьПараметр("КонДата",Новый Граница(МоментВремени(),ВидГраницы.Исключая));
Запрос.УстановитьПараметр("мсубконто",мсубконто);
Запрос.УстановитьПараметр("Контрагент",Контрагент);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Движение = Движения.Управленческий.Добавить();
Движение.СчетДт = ПланыСчетов.Управленческий.Покупатели;
Движение.СчетКт = ПланыСчетов.Управленческий.ПрибылиУбытки;
Движение.Период = Дата;
Движение.СуммаУЕ = СуммаПоДокументу;
Движение.Сумма =СуммаПоДокументу* Выборка.Курс;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Контрагенты] = Контрагент;
КонецЕсли;
КонецПроцедуры

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
СуммаПоДокументу = СписокНоменклатуры.Итог("Сумма");
КонецПроцедуры


5) Отчет



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

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