среда, 25 марта 2015 г.

1c специалист. Задача 2.25

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

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

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

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

6) Переходим к "Расходу денег".

  • Добавим реквизит шапки "Курьер" .
  • Пишем процедуру проведения.

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

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




7) Делаем отчет.
ВЫБРАТЬ
УправленческийОборотыДтКт.СубконтоДт1 КАК Поставщик,
УправленческийОборотыДтКт.СубконтоКт1 КАК Курьер,
УправленческийОборотыДтКт.СуммаОборот КАК Сумма
ИЗ
РегистрБухгалтерии.Управленческий.ОборотыДтКт(&ДатаНачала, &ДатаОкончания, , СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Товары), , СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Сотрудники), , ) КАК УправленческийОборотыДтКт


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

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

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