Помогите с примером по 1С

Новая тема
"Подскожите как сзделать в данной задачи чтобы материалы отоброжались
только те которые фактически числятся на складе?

Функция  СформироватьТаблицуОтчета()

            ТЗ_Отчет = СоздатьОбъект("ТаблицаЗначений");
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса=
"//{{ЗАПРОС(МойЗапрос)
|Обрабатывать НеПомеченныеНаУдаление;
|Материал = Справочник.Материалы.ТекущийЭлемент;
|Цена = Справочник.Материалы.Цена;
|ЕдИзм = Справочник.Материалы.ЕдиницаИзмерения;
|Группировка Материал Без Групп;
|Без Итогов;
|//}}ЗАПРОС";

Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда
Возврат ТЗ_Отчет;
КонецЕсли;
Запрос.Выгрузить(ТЗ_Отчет, 1);
ТЗ_Отчет.НоваяКолонка("Остаток", "Число");

БухИтоги.ИспользоватьСубконто(ВидыСубконто.Материалы, , 1);
БухИтоги.ИспользоватьСубконто(ВидыСубконто.МестаХранения, фСклад.ТекущийЭлемент(), 2);
БухИтоги.ВключатьСубсчета(1);
БухИтоги.ВыполнитьЗапрос(фНаДату, фНаДату, "10", , , 1);
БухИтоги.ВыбратьСубконто(1);
Пока БухИтоги.ПолучитьСубконто(1)=1 Цикл
Материал=БухИтоги.Субконто(1);
ОстМатериал=БухИтоги.СКД("К")-БухИтоги.СКК("К");
чНомСтр=0;
Если ТЗ_Отчет.НайтиЗначение(Материал, чНомСтр, "Материал")=0 Тогда
ТЗ_Отчет.НоваяСтрока();
ТЗ_Отчет.Материал = Материал;
ТЗ_Отчет.Цена = Материал.Цена;
ТЗ_Отчет.ЕдИзм = Материал.ЕдиницаИзмерения;
чНомСтр = ТЗ_Отчет.КоличествоСтрок();
КонецЕсли;
ТЗ_Отчет.УстановитьЗначение(чНомСтр, "Остаток", ОстМатериал);
КонецЦикла;
Возврат ТЗ_Отчет;
КонецФункции    


                             
        Процедура ПечатьОтчета(пТЗ_Отчет)

Таб=СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица");
ПечШапка="Остатки материалов "+СокрЛП(фСклад.Наименование)+" на "+фНаДату;
Таб.ВывестиСекцию("Шапка");
НачСтрТаблицы=Таб.ВысотаТаблицы()+1;
ПечНомер=0;
пТЗ_Отчет.ВыбратьСтроки();
 
       
 
Пока пТЗ_Отчет.ПолучитьСтроку()=1 Цикл
 
ПечМатериал=пТЗ_Отчет.Материал.Наименование;
ПечКол=пТЗ_Отчет.ЕдИзм.Наименование;
ПечЦена=пТЗ_Отчет.Цена;
ПечУчетныйОстаток=пТЗ_Отчет.Остаток;
ПечНомер=ПечНомер+1;
РасшМатериал=пТЗ_Отчет.Материал;
       
Таб.ВывестиСекцию("Строка");
   КонецЦикла;

Таб.ТолькоПросмотр(1);
Таб.Показать("Ведомость");

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

Процедура Сформировать()
ТЗ_Отчет=СформироватьТаблицуОтчета();
ПечатьОтчета(ТЗ_Отчет);
КонецПроцедуры
"
"при печати в цикле добавь
если пТЗ_Отчет.Остаток<>0 тогда
 Таб.ВывестиСекцию("Строка");
конецесли;"
"А я бы написал: Если пТЗ_Отчет.Остаток = 0 тогда продолжить; КонецЕсли;

Или изменить выборку материалов. А то сделана она как-то подозрительно...  :-)"
Так а ты зачем вообще используешь запрос-то?

Строй ТЗ по бухгалтерским итогам - и работать быстрее будет и как раз будут отобраны только те материалы, которые есть на складе по бух.данным
А можеш подскозать по точней как это будет выглядеть по бухгалтерским итогам !!!
"Я бы вообще вот так сделал, зачем заморачиваться с запросами - получается, что ты делаешь одно и тоже два раза...

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

ПечУчетныйОстаток=БухИтоги.СКД("К")-БухИтоги.СКК("К");
ПечКол=РасшМатериал.ЕдиницаИзмерения;
ПечЦена=РасшМатериал.Цена;
ПечНомер=ПечНомер+1;
Таб.ВывестиСекцию("Строка");
КонецЦикла;
Таб.ТолькоПросмотр(1);
Таб.Показать("Ведомость");
КонецПроцедуры

Естественно, что в выборку у тебя попадут только те материалы, по которым есть остаток. И вообще нужно быть аккуратным, т.к. не на всех 10 счетах 2-е субконто "МестаХранения"."
Читают тему
(гостей: 1)

Быстрый переход