Билет 11

Оперативный учет

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

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

Необходимо создать отчеты о состоянии отгрузок товаров за период.

Отгрузки товаров за периоде 01.01.2010 по 31.03.2010

Товар

Отгружено нами

Кол./сум.

Получено покупателем

Кол./сум.

Куртка замшевая

10

100000

8

80000

Портсигар

50

50000

50

50000

******************************************************************

Справочник «Номенклатура»

Документ: «Расходная накладная»

РеквТЧ: ДоставленноеКоличество

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

       СуммаДоставки = 0;

       // регистр ОтгруженныеТовары

       Движения. ОтгруженныеТовары. Записывать = Истина;

       Для Каждого ТекСтрокаСписокНоменклатуры Из СписокНоменклатуры Цикл

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

               Движение = Движения. ОтгруженныеТовары. Добавить();

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

               Движение. Номенклатура = ТекСтрокаСписокНоменклатуры. Номенклатура;

               Движение. Количество = ТекСтрокаСписокНоменклатуры. Количество;

               Движение. Сумма = ТекСтрокаСписокНоменклатуры. Сумма;

               

               Если ТекСтрокаСписокНоменклатуры. ДоставленноеКоличество > ТекСтрокаСписокНоменклатуры. Количество Тогда

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

                       Сообщение. Текст = "Доставленное количество не может превышать отправленное";

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

                       

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

               ИначеЕсли ТекСтрокаСписокНоменклатуры. ДоставленноеКоличество = ТекСтрокаСписокНоменклатуры. Количество Тогда

                       Движение. ДоставленноеКоличество = ТекСтрокаСписокНоменклатуры. Количество;

                       Движение. ДоставленоНаСумму = ТекСтрокаСписокНоменклатуры. Сумма;

               Иначе

                       Движение. ДоставленноеКоличество = ТекСтрокаСписокНоменклатуры. ДоставленноеКоличество;

                       Движение. ДоставленоНаСумму = Окр(?(ТекСтрокаСписокНоменклатуры. Количество = 0,0,ТекСтрокаСписокНоменклатуры. Сумма / ТекСтрокаСписокНоменклатуры. Количество * ТекСтрокаСписокНоменклатуры. ДоставленноеКоличество),2);

               КонецЕсли;

               СуммаДоставки = СуммаДоставки + Движение. ДоставленоНаСумму;

       КонецЦикла;

       

       // регистр Взаиморасчеты Расход

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

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

       Движение. ВидДвижения = ВидДвиженияНакопления. Расход;

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

       Движение. Накладная = Ссылка;

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

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

Документ: «ПриходДенег»

Рекв: Сумма; ТЧ: РасходныеНакладные

РеквТЧ: Накладная

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

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

       ЭБ = Блокировка. Добавить("РегистрНакопления. Взаиморасчеты");

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

       ЭБ. ИсточникДанных = РасходныеНакладные;

       ЭБ. ИспользоватьИзИсточникаДанных("Накладная","Накладная");

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

       

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

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

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

       

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

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

       "ВЫБРАТЬ

       |        ПриходДенегРасходныеНакладные. Накладная

       |ПОМЕСТИТЬ ВТ_ТЧ

       |ИЗ

       |        Документ. ПриходДенег. РасходныеНакладные КАК ПриходДенегРасходныеНакладные

       |

       |СГРУППИРОВАТЬ ПО

       |        ПриходДенегРасходныеНакладные. Накладная

       |;

       |

       |////////////////////////////////////////////////////////////////////////////////

       |ВЫБРАТЬ

       |        ВзаиморасчетыОстатки. Накладная,

       |        -ВзаиморасчетыОстатки. СуммаОстаток КАК СуммаОстаток

       |ИЗ

       |        РегистрНакопления. Взаиморасчеты. Остатки(

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

       |                        Накладная В

       |                                (ВЫБРАТЬ

       |                                        ВТ_ТЧ. Накладная

       |                                ИЗ

       |                                        ВТ_ТЧ КАК ВТ_ТЧ)) КАК ВзаиморасчетыОстатки

       |

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

       |        ВзаиморасчетыОстатки. Накладная. МоментВремени

       |ИТОГИ

       |        СУММА(СуммаОстаток)

       |ПО

       |        ОБЩИЕ";

       

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

       

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

       

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

       

       ВыборкаОбщийИтог. Следующий();                // Общий итог

       

       Если ВыборкаОбщийИтог. СуммаОстаток < Сумма Тогда

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

               Сообщение. Текст = "Нельзя делать переплаты и авансы! Доступная сумма: " + ВыборкаОбщийИтог. СуммаОстаток;

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

               

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

       КонецЕсли;

       

       КСписанию = Сумма;

       

       ВыборкаДетальныеЗаписи = ВыборкаОбщийИтог. Выбрать();

       

       Пока ВыборкаДетальныеЗаписи. Следующий() Цикл

               Если КСписанию > 0 Тогда

                       Если КСписанию >= ВыборкаДетальныеЗаписи. СуммаОстаток Тогда

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