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