Нужен отчет

SeverBap

Well-Known Member
18.09.2007
451
0
34
г. Брянск
#1
Нужен отчет по материалам на складе!!!!! если сырье давальческое то по договору контрагента кокретизаци!!!
где найти или достать!!!
 

SeverBap

Well-Known Member
18.09.2007
451
0
34
г. Брянск
#4
написал код нужно переосмыслить:
Код:
//////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////ПЕРЕМЕННЫЕ
Перем ВиртуальнаяТаблица;
//////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////ПРОЦЕДУРЫ И ФУНЦИИ
//************************************************************************
Функция УстановкаДанных(УКонтрагент,УДоговор,УМатериал,УПартия,УЗначение,УДействие)
Перем ЗначениеВозврата,Установка;
ВиртуальнаяТаблица.ВыбратьСтроки();
Пока ВиртуальнаяТаблица.ПолучитьСтроку()=1 Цикл
Если (ВиртуальнаяТаблица.Владелец=УКонтрагент) И (ВиртуальнаяТаблица.Договор=УДоговор) И (ВиртуальнаяТаблица.Партия=УПартия) Тогда
Если ВиртуальнаяТаблица.Материал=УМатериал Тогда
Если ПустоеЗначение(УДействие)=1 Тогда
ВиртуальнаяТаблица.Количество=ВиртуальнаяТаблица.Количество-УЗначение;
Иначе
ВиртуальнаяТаблица.Количество=ВиртуальнаяТаблица.Количество+УЗначение;
КонецЕсли;	
Установка=1;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если ПустоеЗначение(Установка)=1 Тогда
ВиртуальнаяТаблица.НоваяСтрока();
ВиртуальнаяТаблица.Владелец=УКонтрагент;
ВиртуальнаяТаблица.Договор=УДоговор;
ВиртуальнаяТаблица.Партия=УПартия;
ВиртуальнаяТаблица.Материал=УМатериал;
Если ПустоеЗначение(УДействие)=1 Тогда
ВиртуальнаяТаблица.Количество=-УЗначение;
Иначе
ВиртуальнаяТаблица.Количество=УЗначение;
КонецЕсли;
КонецЕсли;
Возврат ЗначениеВозврата;
КонецФункции	
//************************************************************************
Функция	ПолучитьСписокДоговоров(КонтрагентП,СписокДоговоровП);
ВиртуальнаяТаблица.ВыбратьСтроки();
Пока ВиртуальнаяТаблица.ПолучитьСтроку()=1 Цикл
Если ВиртуальнаяТаблица.Владелец=КонтрагентП Тогда
Если СписокДоговоровП.НайтиЗначение(ВиртуальнаяТаблица.Договор)=0 Тогда
СписокДоговоровП.ДобавитьЗначение(ВиртуальнаяТаблица.Договор);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецФункции	
//************************************************************************
Процедура ПечатьДанных()
СписокКонтрагентов=СоздатьОбъект("СписокЗначений");
СписокДоговоров=СоздатьОбъект("СписокЗначений");
ВиртуальнаяТаблица.ВыбратьСтроки();
Пока ВиртуальнаяТаблица.ПолучитьСтроку()=1 Цикл
Если СписокКонтрагентов.НайтиЗначение(ВиртуальнаяТаблица.Владелец)=0 Тогда
СписокКонтрагентов.ДобавитьЗначение(ВиртуальнаяТаблица.Владелец);
КонецЕсли;
КонецЦикла;
ТаблицаПечати=СоздатьОбъект("Таблица");
ТаблицаПечати.ИсходнаяТаблица("ДавальческоеСырье");
ТаблицаПечати.Опции(0,0,0,0);
ТаблицаПечати.ВывестиСекцию("ШапкаОтчета");
Для Сч=1 По СписокКонтрагентов.РазмерСписка() Цикл
Контрагент=СписокКонтрагентов.ПолучитьЗначение(Сч);
ТаблицаПечати.ВывестиСекцию("Контрагент");
СписокДоговоров.УдалитьВсе();
ПолучитьСписокДоговоров(Контрагент,СписокДоговоров);
Для Сч1=1 По СписокДоговоров.РазмерСписка() Цикл
Договор=СписокДоговоров.ПолучитьЗначение(Сч1);
ТаблицаПечати.ВывестиСекцию("Договор");
ТаблицаПечати.ВывестиСекцию("ШапкаТаблицы");
ВиртуальнаяТаблица.ВыбратьСтроки();
Пока ВиртуальнаяТаблица.ПолучитьСтроку()=1 Цикл
Если (ВиртуальнаяТаблица.Владелец=Контрагент) И (ВиртуальнаяТаблица.Договор=Договор) Тогда
Материал=ВиртуальнаяТаблица.Материал;
ЕдиницаИзмерения=Материал.ЕдиницаИзмерения;
Остаток=ВиртуальнаяТаблица.Количество;
ТаблицаПечати.ВывестиСекцию("СтрокаДанных");
КонецЕсли;
КонецЦикла;
КонецЦикла;	
КонецЦикла;	
ТаблицаПечати.ТолькоПросмотр(1);
Таблицапечати.Показать("Остатки на складах"+ТекущаяДата());
КонецПроцедуры	
//************************************************************************
Процедура ПерерасчетДанных()
СписокПартий=СоздатьОбъект("СписокЗначений");
ТаблицаДанных.ВыбратьСтроки();
Пока ТаблицаДанных.ПолучитьСтроку()=1 Цикл
УстановкаДанных(ТаблицаДанных.Владелец,ТаблицаДанных.Договор,ТаблицаДанных.Материал,ТаблицаД
анных.Партия,ТаблицаДанных.Количество,ТаблицаДанных.Значение);
КонецЦикла;
КонецПроцедуры
//************************************************************************
Процедура Сформировать()
ТаблицаДанных.УдалитьСтроки();
РегистрОбхода=СоздатьОбъект("Регистр.МестаХранения");
РегистрОбхода.ВыбратьДвижения(ДатаНачала,ДатаКонца);
Пока РегистрОбхода.ПолучитьДвижение()=1 Цикл
Если (ПустоеЗначение(Владелец)=0) И (РегистрОбхода.Владелец<>Владелец) Тогда
Продолжить;
КонецЕсли;	
Если РегистрОбхода.текущийДокумент().Вид()="ТребованиеНакладная" Тогда
Если ПустоеЗначение(РегистрОбхода.ТекущийДокумент().ДокументОснование)=0 Тогда
Если РегистрОбхода.ТекущийДокумент().ДокументОснование.Вид()<>"План" Тогда
ДоговорУстановки=РегистрОбхода.ТекущийДокумент().ДокументОснование.Договор;
ПартияНаУстановку=РегистрОбхода.текущийДокумент().ДокументОснование;
КонецЕсли;
КонецЕсли;
ИначеЕсли РегистрОбхода.текущийДокумент().Вид()="ПоступлениеТоваров" Тогда
ДоговорУстановки=РегистрОбхода.текущийДокумент().Договор;
ПартияНаУстановку=РегистрОбхода.текущийДокумент();			
КонецЕсли;
Если (ПустоеЗначение(Договор)=0) И (Договор<>ДоговорУстановки) Тогда
Продолжить;
КонецЕсли;
Если (ПустоеЗначение(МестоХранения)=0) И (РегистрОбхода.МестоХранения<>МестоХранения) Тогда
Продолжить;
КонецЕсли;
Таблицаданных.НоваяСтрока();
ТаблицаДанных.ДатаДанных=РегистрОбхода.ТекущийДокумент().ДатаДок;
ТаблицаДанных.Владелец=РегистрОбхода.Владелец;
Таблицаданных.Договор=ДоговорУстановки;
ТаблицаДанных.Материал=РегистрОбхода.МПЗ;
ТаблицаДанных.Партия=ПартияНаУстановку;
ТаблицаДанных.Количество=РегистрОбхода.Количество;
ТаблицаДанных.Значение=РегистрОбхода.Приход;
КонецЦикла;
ПерерасчетДанных();
ПечатьДанных();
КонецПроцедуры
//************************************************************************
//////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////ОСНОВНОЙ МОДУЛЬ
ДатаНачала=НачМесяца(ТекущаяДата());
ДатаКонца=КонМесяца(ТекущаяДата());
ТаблицаДанных.НоваяКолонка("ДатаДанных","Дата");
ТаблицаДанных.НоваяКолонка("Владелец");
ТаблицаДанных.НоваяКолонка("Договор");
ТаблицаДанных.НоваяКолонка("Материал");
ТаблицаДанных.НоваяКолонка("Партия");
ТаблицаДанных.НоваяКолонка("Количество");
ТаблицаДанных.НоваяКолонка("Значение");
ВиртуальнаяТаблица=СоздатьОбъект("ТаблицаЗначений");
ВиртуальнаяТаблица.Загрузить(ТаблицаДанных);
как можно все отследить?
 
K

krenk

Гость
#5
Млин, Вар, пользуйся запросом... По-моему, намудрил ооооочень.... :)
 
K

kaa

Гость
#7
может лучьше как-то так:
"//{{ЗАПРОС(Сформировать)
|Период с по ;
|МПЗ = Регистр.Партии.МПЗ;
|Партия = Регистр.Партии.Партия;
|МестоХранения = Регистр.Партии.МестоХранения;
|Владелец = Регистр.Партии.Владелец;
|Количество = Регистр.Партии.Количество;
|Сумма = Регистр.Партии.Сумма;
|Функция КоличествоКонОст = КонОст(Количество);
|Функция СуммаНачОст = НачОст(Сумма);
|Группировка Партия;
|Группировка МПЗ;
|Условие(Владелец);
|"//}}ЗАПРОС
;
 

SeverBap

Well-Known Member
18.09.2007
451
0
34
г. Брянск
#8
kaa да беспорно реально, но мне еще прийдется ковырятся с партиями, для того что бы вытянуть от туда какнибудь этот договор владельца!!!! :)
 

SeverBap

Well-Known Member
18.09.2007
451
0
34
г. Брянск
#9
kaa не получается проследить договор если партия пустая, что еще надо добавить в запрос для этого?

Все остальные отборы я поставил.
 
E

ech

Гость
#10
ого как он тебе срочно нужен, уже месяц делаешь ...
 
J

jcnby

Гость
#11
:( быть может вставишь в запрос этот твой договор как переменную запроса?
 

SeverBap

Well-Known Member
18.09.2007
451
0
34
г. Брянск
#12