Следует учитывать, что деньги курьер мог забирать в различных филиалах. В первую очередь с курьера должны быть списаны деньги, которые он забрал в кассе того же филиала, для которого была произведена закупка товара. Порядок погашения выданных по остальным филиалам денег, за которые отчитывается курьер, остается на усмотрение разработчика.

По данным бухгалтерского учета необходимо получить отчет о задолженности курьеров перед компанией.

Задолженность курьеров за период с 01.01.2010 по 31.01.2010

Сотрудник

Регистратор

Долг на начало

Получено в кассе

Отчитался

Долг на конец

Онопко

1200

1200

Расход денег 1

500

Расход денег 2

700

Авансовый отчет 1

1200

Бельдыев

1000

900

100

Авансовый отчет 2

900



Справочник «Филиалы»

Документ «ПриходнаяНакладная»

Рекв. СуммаПоДокументу, Филиал, Курьер (физ. лица)

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

       Движения. Хозрасчетный. Записать();

       Движения. Хозрасчетный. Очистить();

       // регистр Хозрасчетный

       Движения. Хозрасчетный. Записывать = Истина;

               Движение = Движения. Хозрасчетный. Добавить();

               Движение. СчетДт = ПланыСчетов. Управленческий. Товары;

               Движение. СчетКт = ПланыСчетов. Управленческий. Поставщики;

               Движение. Период = Дата;

НЕ нашли? Не то? Что вы ищете?

               Движение. Сумма = СуммаПоДокументу;

               Движение. СубконтоКт[ПланыВидовХарактеристик. ВидыСубконто. Филиал] = Филиал;

               Движение. СубконтоКт[ПланыВидовХарактеристик. ВидыСубконто. ПН] = Ссылка;

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

Документ «РасходДенег»

Рекв. Курьер, Филиал, Сумма

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

       // регистр Хозрасчетный

       Движения. Хозрасчетный. Записывать = Истина;

       Движение = Движения. Хозрасчетный. Добавить();

       Движение. СчетДт = ПланыСчетов. Управленческий. Сотрудники;

       Движение. СчетКт = ПланыСчетов. Управленческий. Касса;

       Движение. Период = Дата;

       Движение. Сумма = Сумма;

       Движение. СубконтоДт[ПланыВидовХарактеристик. ВидыСубконто. Филиал] = Филиал;

       Движение. СубконтоДт[ПланыВидовХарактеристик. ВидыСубконто. Курьер] = Курьер;

       Движение. СубконтоКт[ПланыВидовХарактеристик. ВидыСубконто. Филиал] = Филиал;

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

Документ «АвансовыйОтчет»

Рекв. Курьер, Филиал, Накладная ( ПриходнаяНакладная)

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

       

       Движения. Хозрасчетный. Записать();

       Движения. Хозрасчетный. Очистить();

       Движения. Хозрасчетный. Записывать = Истина;

       

       Блокировка = Новый БлокировкаДанных;

       ЭлементБлокировки = Блокировка. Добавить("РегистрБухгалтерии. Хозрасчетный");

       ЭлементБлокировки. УстановитьЗначение("Счет", ПланыСчетов. Управленческий. Сотрудники);

       ЭлементБлокировки. УстановитьЗначение(ПланыВидовХарактеристик. ВидыСубконто. Курьер, Курьер);

       ЭлементБлокировки. Режим = РежимБлокировкиДанных. Исключительный;

       

       Блокировка. Заблокировать();

       

       Запрос = Новый Запрос;

       Запрос. Текст =

       "ВЫБРАТЬ

       |        ХозрасчетныйОстатки_Поставщики. Субконто1 КАК ФилиалНакладной,

       |        ХозрасчетныйОстатки_Поставщики. Субконто2 КАК Накладная,

       |        ХозрасчетныйОстатки_Поставщики. СуммаОстатокКт КАК ДолгПоНакладной,

       |        ХозрасчетныйОстатки_Сотрудники. Субконто1 КАК ФилиалДенегКурьера,

       |        ЕСТЬNULL(ХозрасчетныйОстатки_Сотрудники. СуммаОстатокДт, 0) КАК ДеньгиФилиала,

       |        ВЫБОР

       |                КОГДА ХозрасчетныйОстатки_Сотрудники. Субконто1 = &Филиал

       |                        ТОГДА 1

       |                ИНАЧЕ 2

       |        КОНЕЦ КАК Порядок

       |ИЗ

       |        РегистрБухгалтерии. Хозрасчетный. Остатки(

       |                        &МоментВремени,

       |                        Счет = ЗНАЧЕНИЕ(ПланСчетов. Управленческий. Поставщики),

       |                        &ФилиалыНакладные,

       |                        Субконто1 = &Филиал

       |                                И Субконто2 = &Накладная) КАК ХозрасчетныйОстатки_Поставщики

       |                ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии. Хозрасчетный. Остатки(&МоментВремени, Счет = ЗНАЧЕНИЕ(ПланСчетов. Управленческий. Сотрудники), &ФилиалКурьер, Субконто2 = &Курьер) КАК ХозрасчетныйОстатки_Сотрудники

       |                ПО (ХозрасчетныйОстатки_Поставщики. Субконто2.Курьер = ХозрасчетныйОстатки_Сотрудники. Субконто2)

       |

       |УПОРЯДОЧИТЬ ПО

       |        Порядок

       |ИТОГИ

       |        МАКСИМУМ(ДолгПоНакладной),

       |        СУММА(ДеньгиФилиала)

       |ПО

       |        ФилиалНакладной";

       

       ФилиалыКурьер = Новый Массив;

       ФилиалыКурьер. Добавить(ПланыВидовХарактеристик. ВидыСубконто. Филиал);

       ФилиалыКурьер. Добавить(ПланыВидовХарактеристик. ВидыСубконто. Курьер);

       

       ФилиалыНакладные = Новый Массив;

       ФилиалыНакладные. Добавить(ПланыВидовХарактеристик. ВидыСубконто. Филиал);

       ФилиалыНакладные. Добавить(ПланыВидовХарактеристик. ВидыСубконто. ПН);

       

       Запрос. УстановитьПараметр("Курьер", Курьер);

       Запрос. УстановитьПараметр("МоментВремени", МоментВремени());

       Запрос. УстановитьПараметр("Накладная", Накладная);

       Запрос. УстановитьПараметр("Филиал", Филиал);

       Запрос. УстановитьПараметр("ФилиалКурьер", ФилиалыКурьер);

       Запрос. УстановитьПараметр("ФилиалыНакладные", ФилиалыНакладные);

       

       РезультатЗапроса = Запрос. Выполнить();

       

       ВыборкаФилиалНакладной = РезультатЗапроса. Выбрать(ОбходРезультатаЗапроса. ПоГруппировкам);

       

       Пока ВыборкаФилиалНакладной. Следующий() Цикл

               

               Если ВыборкаФилиалНакладной. ДеньгиФилиала < ВыборкаФилиалНакладной. ДолгПоНакладной Тогда

                       Отказ = Истина;

                       Сообщение = Новый СообщениеПользователю;

                       Сообщение. Текст = "Внимание! У курьера недостаточно денег для погашения долга по накладной. Долг по накладной: "

                       + ВыборкаФилиалНакладной. ДолгПоНакладной + "; Всего денег у Курьера: " + ВыборкаФилиалНакладной. ДеньгиФилиала;

                       Сообщение. Поле = "";

                       Сообщение. Сообщить();

               КонецЕсли;

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8