Билет 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 |


