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