Нужен отчет

Тема в разделе "1C и всё что с ней связано", создана пользователем SeverBap, 2 фев 2009.

  1. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    Нужен отчет по материалам на складе!!!!! если сырье давальческое то по договору контрагента кокретизаци!!!
    где найти или достать!!!
     
  2. ech

    ech Гость

    Самому написать
     
  3. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    ПИШУ, только время поджимает! есть у кого аналоги?
     
  4. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    написал код нужно переосмыслить:
    Код (Text):
    //////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////ПЕРЕМЕННЫЕ
    Перем ВиртуальнаяТаблица;
    //////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////ПРОЦЕДУРЫ И ФУНЦИИ
    //************************************************************************
    Функция УстановкаДанных(УКонтрагент,УДоговор,УМатериал,УПартия,УЗначение,УДействие)
    Перем ЗначениеВозврата,Установка;
    ВиртуальнаяТаблица.ВыбратьСтроки();
    Пока ВиртуальнаяТаблица.ПолучитьСтроку()=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) И (РегистрОбхода.МестоХранения<>МестоХранения) Тогда
    Продолжить;
    КонецЕсли;
    Таблицаданных.НоваяСтрока();
    ТаблицаДанных.ДатаДанных=РегистрОбхода.ТекущийДокумент().ДатаДок;
    ТаблицаДанных.Владелец=РегистрОбхода.Владелец;
    Таблицаданных.Договор=ДоговорУстановки;
    ТаблицаДанных.Материал=РегистрОбхода.МПЗ;
    ТаблицаДанных.Партия=ПартияНаУстановку;
    ТаблицаДанных.Количество=РегистрОбхода.Количество;
    ТаблицаДанных.Значение=РегистрОбхода.Приход;
    КонецЦикла;
    ПерерасчетДанных();
    ПечатьДанных();
    КонецПроцедуры
    //************************************************************************
    //////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////////////////////////////ОСНОВНОЙ МОДУЛЬ
    ДатаНачала=НачМесяца(ТекущаяДата());
    ДатаКонца=КонМесяца(ТекущаяДата());
    ТаблицаДанных.НоваяКолонка("ДатаДанных","Дата");
    ТаблицаДанных.НоваяКолонка("Владелец");
    ТаблицаДанных.НоваяКолонка("Договор");
    ТаблицаДанных.НоваяКолонка("Материал");
    ТаблицаДанных.НоваяКолонка("Партия");
    ТаблицаДанных.НоваяКолонка("Количество");
    ТаблицаДанных.НоваяКолонка("Значение");
    ВиртуальнаяТаблица=СоздатьОбъект("ТаблицаЗначений");
    ВиртуальнаяТаблица.Загрузить(ТаблицаДанных);
    как можно все отследить?
     
  5. krenk

    krenk Гость

    Млин, Вар, пользуйся запросом... По-моему, намудрил ооооочень.... :)
     
  6. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    krenk подскажи как и мы тут разб...ремся!
     
  7. kaa

    kaa Гость

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

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    kaa да беспорно реально, но мне еще прийдется ковырятся с партиями, для того что бы вытянуть от туда какнибудь этот договор владельца!!!! :)
     
  9. SeverBap

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
    kaa не получается проследить договор если партия пустая, что еще надо добавить в запрос для этого?

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

    ech Гость

    ого как он тебе срочно нужен, уже месяц делаешь ...
     
  11. jcnby

    jcnby Гость

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

    SeverBap Well-Known Member

    Регистрация:
    18 сен 2007
    Сообщения:
    440
    Симпатии:
    0
Загрузка...

Поделиться этой страницей