Имя: Пароль:
1C
1C 7.7
v7: Условие использования материала
0 Роспатнюк Сергей Сер
 
26.04.19
09:29
Добрый день, помогите найти где считается процент использования материала вот процедуры, цель вывести в отчет колонку с этим процентом и отсортировать по процентам.

//процедурка будет показывать материал которого за период использовали меньше 30% от остатка за тотже период  
//**********
//**********

Процедура Сформировать1()
    //    неснижм= СоздатьОбъект("Справочник.Неснижаемые");
    //    неснижм.ИспользоватьВладельца(материалы);
    Несн = СоздатьОбъект("ТаблицаЗначений");
    СписокНеснижаемых(Несн);
    спМатериалов = СоздатьОбъект("СписокЗначений");
    несн.Выгрузить(спМатериалов,,,"материал");
    состояние("расчет итогов");
    оборотсумма=0;
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    Ит = СоздатьОбъект("БухгалтерскиеИтоги");
    //начало=0;
    //конец=0;
    //расход=0;
    //приход=0;
    Если вклСклад = 0 Тогда    
        
    ИначеЕсли Склад.Выбран() = 1 Тогда
        //Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения,Склад,,0);
    Иначе    
        //Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения);
    КонецЕсли; //                                    
    Если вклМОЛ = 0 Тогда
        
    ИначеЕсли МОЛ.выбран() = 1 Тогда
        Ит.ИспользоватьСубконто(ВидыСубконто.Сотрудники,МОЛ,,0);
    Иначе    
        Ит.ИспользоватьСубконто(ВидыСубконто.Сотрудники);
    КонецЕсли; //
    Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения,Склад,,1);
    // Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения,Склад1,,1);
    Ит.ИспользоватьСубконто(ВидыСубконто.Материалы,сзМатериалы,1,флгВыводитьГруппы);
    
    Если (движ = 1) или (Ист = 1) Тогда
        //    Ит.ВыполнитьЗапрос(выбНачПериода,ВыбКонПериода, списокСчетов,,,,"Проводка",1+4);
    Иначе    
        //Ит.ВыполнитьЗапрос(выбНачПериода,ВыбКонПериода, списокСчетов,,,,,"К");
    КонецЕсли; //
    
    Сформировать_Колонки("Заголовок");
    Сформировать_Колонки("Шапка");  
    //Таб.ВывестиСекцию("1");
    
    Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);          
    нпп = 0;  
    Ит.ВыполнитьЗапрос(выбНачПериода,ВыбКонПериода, списокСчетов,,,,"Проводка",1+4);
    Ит.ВыбратьСубконто(ВидыСубконто.МестаХранения);
    
    Пока Ит.ПолучитьСубконто(ВидыСубконто.МестаХранения) = 1 Цикл  
        
        Сформировать_Колонки("Субконто1");
        Ит.ВыбратьСубконто(ВидыСубконто.Сотрудники);
        Пока Ит.ПолучитьСубконто(ВидыСубконто.Сотрудники) = 1 Цикл
            Сформировать_Колонки("Субконто2");
            Ит.ВыбратьСубконто(ВидыСубконто.Материалы);
            
            Пока Ит.ПолучитьСубконто(ВидыСубконто.Материалы) = 1 Цикл  
                
                Если ФлУд = 1 Тогда
                    Если Ит.Субконто(ВидыСубконто.Материалы).ПометкаУдаления() = 0 Тогда
                        Продолжить;
                    КонецЕсли;
                КонецЕсли;
                
                нпп = нпп + 1;
                материал = Ит.Субконто(3);
                
                Если Материал.ЭтоГруппа()=1 Тогда
                    Сформировать_Колонки("Субконто3Группа");
                    Продолжить;
                Иначе
                    материал = Ит.Субконто(3);     
                    // оборотсумма=оборотсумма;
                    если  Несн .НайтиЗначение(материал,,)=0 тогда
                        //неснижм.Владелец.НайтиПоРеквизиту(материал.,,);
                        //    сообщить("нащол несниж материал"+материал);
                        //        иначе
                        Если (Ит.КО(3))<((Ит.СКД(3)-ит.СКК(3))*0.3) Тогда
                            //
                            //Сформировать_Колонки("Субконто2");     
                            //ит.выбратьПериоды();
                            //Ит.ВыбратьСубконто(ВидыСубконто.Материалы);
                            //пока Ит.ПолучитьСубконто(ВидыСубконто.Материалы)=1 цикл
                            //Пока ит.получитьПериод()=1 Цикл      
                            
                            оборотсумма=оборотсумма+Ит.КО(1);
                            приходсумма=приходсумма+ит.до(1);
                            конец=конец+Ит.СКД(1)-ит.СКК(1);
                            начало=начало+Ит.СНД(1)-ит.СНК(1);
                            колначало=колначало   + Ит.СНД(3)-ит.СНК(3);
                            колконец=  колконец  +  Ит.СКД(3)-ит.СКК(3);
                            расходкол= расходкол  +  Ит.КО(3);
                            приходкол=  приходкол  +ит.до(3);
                            Сформировать_Колонки("Субконто3");
                            
                            
                            
                            //конеццикла;  
                            //Сформировать_Колонки("итоги");
                        КонецЕсли;
                    конецесли;
                КонецЕсли;  
                Если (движ = 1) или (Ист = 1) Тогда
                    ит.выбратьПериоды();
                    Пока ит.получитьПериод()=1 Цикл  
                        
                        Если движ = 1 Тогда
                            док = Строка(ит.операция.документ)+"; ";    
                            Срок = СрокИзДат(ит.операция.документ.ДатаДок);
                        иначе
                            док = "";
                        КонецЕсли;
                        
                        Если Ист = 1 Тогда  
                            Если Ит.ДО(3)>0 Тогда
                                Источник = Строка(Ит.Операция.Кредит.МестаХранения);
                            иначе
                                Источник = Строка(Ит.Операция.Дебет.МестаХранения);
                            КонецЕсли;
                        иначе
                            Источник="";                            
                        КонецЕсли;
                        Сформировать_Колонки("Док");
                    КонецЦикла;  //  
                КонецЕсли;
                
            КонецЦикла;
            
        КонецЦикла;
        
    КонецЦикла;
    //сообщить(оборотсумма);
    расход=оборотсумма;
    приход=приходсумма;
    //а=оборотсумма;
    //б=приходсумма;
    в=конец;
    г=начало;
    д=колначало;
    е=колконец;
    а=расходкол;
    б=приходкол;                
    
    
    
    Таб.ВывестиСекцию("Подвал");    
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать","");
КонецПроцедуры



Код запроса

//**** неснижаемые обрашаемся к справочнику
Процедура СписокНеснижаемых(Табла="")
    Перем Запрос, ТекстЗапроса, Таб;
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(СписокНеснижаемых)
    |Период с ВыбКонПериода по ВыбКонПериода;
    |Обрабатывать НеПомеченныеНаудаление;
    |Без итогов;  
    |ЗаписьСпр = Справочник.Неснижаемые.ТекущийЭлемент;
    |менеджер = Справочник.Неснижаемые.менеджер;
    |сезон = Справочник.Неснижаемые.сезон;
    |критический = Справочник.Неснижаемые.критический;
    |неснижаемый = Справочник.Неснижаемые.неснижаемый;
    |материал = Справочник.Неснижаемые.Владелец;
    |склад = Справочник.Неснижаемые.склад;
    |Группировка менеджер без групп;
    |Группировка материал без групп;
    |Группировка склад без групп;      "
    ;  
    //Если фильтрСезон = 1 Тогда
    //текстзапроса = текстзапроса + "
    //|Условие(сезон = выбСезон);"
    //;        
    //КонецЕсли;
    //Если выбСклад.Выбран() = 1 Тогда
    //текстзапроса = текстзапроса + "
    //|Условие(склад = выбСклад);"
    //;        
    //КонецЕсли;
    //Если выбменеджер.выбран() = 1 Тогда
    //    текстзапроса = текстзапроса + "
    //    |Условие(менеджер = ВыбМенеджер);"
    //    ;        
    //КонецЕсли;
    текстзапроса = текстзапроса + "    
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Если пустоеЗначение(табла) = 0 Тогда
            статусВозврата(0);
        КонецЕсли;    
        возврат;
    КонецЕсли;
    Если ТипЗначенияСтр(табла) <> "ТаблицаЗначений" Тогда
    иначе
        запрос.выгрузить(табла,1,0);
    конецесли;
КонецПроцедуры
1 Builder
 
26.04.19
09:33
Если (Ит.КО(3))<((Ит.СКД(3)-ит.СКК(3))*0.3) Тогда
2 Роспатнюк Сергей Сер
 
26.04.19
09:34
(1) Большое спасибо
3 Роспатнюк Сергей Сер
 
26.04.19
16:12
Все бы хорошо, колонка добавлена процент считается, но как отсортировать по этому проценту не пойму ибо формула находится прямо на макете, не ужели только созданием ТЗ и предварительным расчетом с последующим выводом в таблицу отчета, может можно попроще кто с семеркой на ты подскажите
4 Роспатнюк Сергей Сер
 
26.04.19
16:31
походу 7ков не осталось (
5 Builder
 
26.04.19
16:39
(3) Мысль правильная - создать ТЗ, заполнить, отсортировать, вывести.
Куда уж проще то?
6 Роспатнюк Сергей Сер
 
26.04.19
16:48
(5) Проще Таб.Сортировать("Колнока") ну только у ТабДока так нельзя(((
7 Роспатнюк Сергей Сер
 
26.04.19
16:50
(5) просто не особо понимаю откуда в коде выше появляется материал, да и как работать с Бух итогами тоже не знаю
8 Slypower
 
29.04.19
08:46
(6) Так если сперва загнать в ТЗ, потом отсортировать, и уже обходя ТЗ выводить.
9 HawkEye
 
29.04.19
08:50
(7) вместо ВывестиСекцию() - сделай .НоваяСтрока()
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.