7.7 Создание хитрого тчета Остатки ТМЦ

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем skillful, 7 май 2010.

  1. TopicStarter Overlay
    skillful
    Offline

    skillful

    Регистрация:
    7 май 2010
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте!
    версия 7.7 конфигурация "Торговля и склад" (7.70.027)

    Хочу переделать отчет остатки ТМЦ,
    стандартный отчет выводит сначала название категорий, потом товар:
    пример:
    Посмотреть вложение 4247


    А нужно сделать вот так:
    название категорий вообще не выводилось построчно
    а выводились только сами товары (а рядом в следующей ячейке название категории к которой относится товар ВАЖНО)
    пример

    Код:
    товар1       расходные материалы/чернила фасованные/чернила ink-tek    цена и т.д.
    товар2       расходные материалы/чернила фасованные/чернила ink-tek    цена и т.д.
    
    
    Покапавшись в конфигураторе обнаружил некий код в остатках ТМЦ,
    думаю в нем нужно править. Еcть ли решение этой проблемы?


    Код:
    // выводим группы ТМЦ
    Пока СписокГрупп.РазмерСписка()>0 Цикл
    Группа     = СписокГрупп.ПолучитьЗначение(1);
    Если ТМЦ.ПринадлежитГруппе(Группа)=1 Тогда
    ТЗ.НоваяСтрока(); 
    ТЗ.Уровень = СписокГрупп.РазмерСписка();
    ТЗ.ПечТекстСтроки = Группа.Наименование;
    ТЗ.ПечКод = Группа.Код;
    ТЗ.ПечКодПоз = Группа.КодСоответствия;
    ТЗ.Родитель    = Группа.Родитель;
    ТЗ.ТекРасшифровка = Группа;
    КонецЕсли;
    СписокГрупп.УдалитьЗначение(1);
    КонецЦикла;   
    
    ТМЦСтрока = "" + ТМЦ + ?(Константа.ПоказыватьАртикул = 1, " " + СокрЛП(ТМЦ.Артикул), "");
    
    Если ПредставлениеЦены = "отпускная цена (только розница)"  Тогда
    Пока Запрос.Группировка("ЦенаПрод") = 1 Цикл
    
    ТЗ.НоваяСтрока();                              
    ТЗ.Уровень = 0;
    ТЗ.ТекРасшифровка     = ТМЦ; 
    ТЗ.Родитель            = ТМЦ.Родитель;
    ТЗ.ПечЕд             = ?(ВидЕдиницы = 1,ТМЦ.ОсновнаяЕдиница, ТМЦ.БазоваяЕдиница);
    ТЗ.ПечТекстСтроки    = ТМЦСтрока + ?(ТМЦ.МинОстаток=0,"",", мин. остаток = "+СокрЛП(глФРМКоличество(ТМЦ.МинОстаток,ТЗ.ПечЕд)));
    ТЗ.ПечКод            = ТМЦ.Код;
    ТЗ.ПечКодПоз        = ТМЦ.КодСоответствия;
    Если ВыводитьЗаказанный = 1 Тогда
    ТЗ.Заказано = Запрос.ЗаказаноКонОст;
    КонецЕсли;
    ЗаполнитьСтроку(ТЗ, Запрос, СписокСкладов, ВДокумент);
    КонецЦикла;
    иначе
    ТЗ.НоваяСтрока();                              
    ТЗ.Уровень = 0;
    ТЗ.ТекРасшифровка     = ТМЦ;
    ТЗ.Родитель            = ТМЦ.Родитель;
    ТЗ.ПечЕд             = ?(ВидЕдиницы = 1,ТМЦ.ОсновнаяЕдиница, ТМЦ.БазоваяЕдиница);
    ТЗ.ПечТекстСтроки    = ТМЦСтрока + ?(ТМЦ.МинОстаток=0,"",", мин. остаток = "+СокрЛП(глФРМКоличество(ТМЦ.МинОстаток,ТЗ.ПечЕд)));
    ТЗ.ПечКод            = ТМЦ.Код;
    ТЗ.ПечКодПоз        = ТМЦ.КодСоответствия;
    Если ВыводитьЗаказанный = 1 Тогда
    ТЗ.Заказано = Запрос.ЗаказаноКонОст;
    КонецЕсли;
    ЗаполнитьСтроку(ТЗ, Запрос, СписокСкладов, ВДокумент);
    КонецЕсли;  
    глОживить(1);
    
    КонецЦикла;        
    
    // Последняя строка для общих итогов
    ТЗ.НоваяСтрока();
    ТЗ.Уровень = 12;
    
    РассчитатьИтогиПоГруппам(СписокСкладов);     
    
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку() = 1  Цикл 
    ПечТекстСтроки = ТЗ.ПечТекстСтроки  + Группа.Наименование;
    ПечКод = ТЗ.ПечКод;
    ПечКодПоз = ТЗ.ПечКодПоз;
    ПечЕд = ТЗ.ПечЕд;
    ТекРасшифровка = ТЗ.ТекРасшифровка;
    Если (ТЗ.Уровень > 0) И (ТЗ.Уровень < 12) Тогда       
    ИмяСекции = "СтрокаГ";           
    ИначеЕсли ТЗ.Уровень = 12 Тогда
    ИмяСекции = ?((ПредставлениеЦены <> "не показывать") ИЛИ (ИтогиПоКоличеству = 1),"ПодвалИтого","Подвал");
    Иначе
    Если ТЗ.ТекРасшифровка.Матрица=1 Тогда
    ИмяСекции = "СтрокаМ";
    Иначе
    ИмяСекции = "Строка";
    КонецЕсли;
    КонецЕсли;              
    Таб.ВывестиСекцию(ИмяСекции+"|ТМЦ");
    
    
    
    

    Вложения:

    • 1.JPG
      1.JPG
      Размер файла:
      84 КБ
      Просмотров:
      173
  2. Steel Rain
    Offline

    Steel Rain Опытный в 1С

    Регистрация:
    29 сен 2006
    Сообщения:
    408
    Симпатии:
    2
    Баллы:
    29
    Ну вот на примере:
    Код:
        Пока Запрос.Группировка(1) = 1 Цикл
    // Заполнение полей 1группировки
    Таб.ВывестиСекцию("Первая");
    Пока Запрос.Группировка(2) = 1 Цикл
    // Заполнение полей 2группировки
    Таб.ВывестиСекцию("Вторая");
    КонецЦикла;
    КонецЦикла;
    
    
    Такой код выведет таблицу вида
    Первая
    Вторая
    Вторая
    Вторая
    и т.п. пока цикл не кончиться
    Если написать так:
    Код:
        Пока Запрос.Группировка(1) = 1 Цикл
    // Заполнение полей 1группировки        
    Пока Запрос.Группировка(2) = 1 Цикл
    // Заполнение полей 2группировки
    Таб.ВывестиСекцию("Вторая");
    Таб.ПрисоединитьСекцию("|Первая");
    КонецЦикла;
    КонецЦикла;
    
    
    то получиться таблица вида
    Вторая Первая
    Вторая Первая и т.д.
    Ну секции должны быть в таблице соответствующим образом оформлены. Мог накосячить с синтаксисом ПрисоединитьСекцию. Но смысл такой.

    В целом копать надо не там где формируются данные для вывода. А там где уже строки выводятся.
  3. TopicStarter Overlay
    skillful
    Offline

    skillful

    Регистрация:
    7 май 2010
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    спасибо! вообщем немного покапавшись, и поразмыслив над кодами понял примерную суть кода.
    пока получилось следующее

    Код:
    Процедура Сформировать (ЗакрытьДиалог=0, ВДокумент=0)
    
    Перем Т;
    Перем Пр;
    Т = СоздатьОбъект("Таблица");
    Т.ИсходнаяТаблица("Таблица");
    
    СпрТМЦ=СоздатьОбъект ("Справочник.Номенклатура");
    СпрТМЦ.ПорядокКодов ();//сортируем по кодам
    СпрТМЦ.ВыбратьЭлементы ();
    
    Пока СпрТМЦ.ПолучитьЭлемент() = 1 Цикл
    Если СпрТМЦ.ЭтоГруппа() = 1 Тогда 
    ПолныйКод = СпрТМЦ.ПолноеНаименование(); //такой код выводит полное имя
    //категории вида (категория/под категория/под под категория)
    Т.ВывестиСекцию("Секция_1");            
    
    КонецЕсли;
    КонецЦикла; 
    
    Т.ТолькоПросмотр(1);
    Т.Показать();	
    КонецПроцедуры
    
    

    теперь осталось за малым: исправить
    Код:
    Если СпрТМЦ.ЭтоГруппа() = 1 Тогда 
    ПолныйКод = СпрТМЦ.ПолноеНаименование(); //такой код выводит полное имя
    //категории вида (категория/под категория/под под категория)
    Т.ВывестиСекцию("Секция_1");            
    
    КонецЕсли;
    
    
    на

    Код:
    Если СпрТМЦ.ЭтоГруппа() = 1 Тогда 
    Продолжить;//пропускаем группу (мне не надо выводить)	
    КонецЕсли;
    
    
    и ниже дописать наименование товаров имеющихся в наличии, а рядом использовать функцию "ПолноеНаименование()" для того чтоб прописался полный путь категории
Похожие темы
  1. xxx949
    Ответов:
    4
    Просмотров:
    414
Загрузка...

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