7.7 Отчет по материалам

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

  1. TopicStarter Overlay
    Mitay_D
    Offline

    Mitay_D Опытный в 1С

    Регистрация:
    16 фев 2010
    Сообщения:
    314
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте уважаемые программисты.
    Конфигурация ПУБ, но изменена почти полностью. Не могу понять, как сделать так чтобы в отчете сгруппировать движения по складам и вывести по каждому складу отдельно в секциях, через "ПрисоединитьСекцию".

    Вложения:

  2. TopicStarter Overlay
    Mitay_D
    Offline

    Mitay_D Опытный в 1С

    Регистрация:
    16 фев 2010
    Сообщения:
    314
    Симпатии:
    0
    Баллы:
    26
    Разобрался как присоединить секции со складами в шапке, теперь мучаюсь как распределить данные по этим складам, а получается, что выводит в первом складе все. Изменил процедуру печати
    Код:
    Процедура СформироватьКолонкиПоЦехам()
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    Таб.ВывестиСекцию("Заголовок|Голова"); 
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); 
    Для н = 1 По сзЦех.РазмерСписка() Цикл 
    Цех = СзЦех.ПолучитьЗначение(н);
    Таб.ПрисоединитьСекцию("Заголовок|Склады");
    КонецЦикла;
    Таб.ПрисоединитьСекцию("Заголовок|Остаток");
    // вот здесь нужно скорее всего проверить на принадлежность к складу из списка значения и как то вывести, пока понять не могу как (
    
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать", "");
    КонецПроцедуры
    
  3. TopicStarter Overlay
    Mitay_D
    Offline

    Mitay_D Опытный в 1С

    Регистрация:
    16 фев 2010
    Сообщения:
    314
    Симпатии:
    0
    Баллы:
    26
    Получилось кое что, но до такой степени коряво и "подогнано под действительность", что ужас. Подскажите что и как исправить, так как если движения по цехам не было, то выдает все нормально, если было движение по 2-м цехам, то тоже нормально, а если по одному, то все. да и по коду видно, что он грамозкий.

    Вложения:

  4. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Как видно из активности данной ветки, желающих разбираться в этом отчете не так уж и много.

    От себя могу заметить, что формирование таких отчетов, это довольно муторное занятие - нужно хорошо знать конфигурацию, правильно сформировать выборку, а потом не запутаться с выводом результатов.

    Поэтому не стоит обижаться на форумчан - кому-то это не под силам по знаниям, кому-то по времени.

    Лично я, не буду скачивать отчет... если хотите, что бы кто-то "допилил" его, думаю это будет платно.

    Но помогу пойти правильным путем, расскажу, с чего начать и куда смотреть.

    Начнем? Для формирования любого отчета необходимо сначала подготовить данные. На основании чего строится отчет (запрос, ТЗ, БИ, выборка остатков и движений регистров)?
  5. TopicStarter Overlay
    Mitay_D
    Offline

    Mitay_D Опытный в 1С

    Регистрация:
    16 фев 2010
    Сообщения:
    314
    Симпатии:
    0
    Баллы:
    26
    Данные подготовил и они находятся в ТЗ, проблемма с выводом их на печатную форму, при разных условиях срабатывает по разному. Первый раз делаю отчет токого вида, поэтому столкнулся с такой проблемой! Данные на печать выводит правильно (именно цифры), а присоединяет коряво (ну точнее я присоединяю коряво).
  6. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Не понятен смысл данной фразы.

    Хорошо, имеем готовую ТЗ. Создавай обработку, вноси в нее следующий код.
    Далее просто открываешь программно обработку, передаешь в нее ТЗ в качестве параметра.
    Должна сформироваться печатная форма.
    Код:
    //*******************************************
    //
    //   Обработка выполнения отображения
    //		  Таблицы значений
    //								  by WaRDeR
    
    //*******************************************
    //
    //   Для работы необходимо передать список значений
    // Параметр = СоздатьОбъект("СписокЗначений");
    // Параметр.ДобавитьЗначение(ТЗ, "Название таблицы [опционально]");
    // ОткрытьФорму("Отчет", Параметр, "Z:\_ExtForms\ТаблицаЗначений-Показать.ert");
    //*******************************************
    Процедура ВывестиТЗ(ТЗ, Тб, НачинатьСоСтроки, Парам = 0, НазваниеТаблицы = "")
    
    Уведомление = "";
    //Если ТЗ.КоличествоСтрок() > 1000 Тогда
    // ТЗ.КоличествоСтрок(1000);
    // Уведомление = "(Размер таблицы ограничен 1000 строками)";
    //КонецЕсли;
    
    Если ПустоеЗначение(НазваниеТаблицы) = 0 Тогда
    Обл = Тб.Область(НачинатьСоСтроки);
    Обл.ЦветФона(0,128,128);
    Обл = Тб.Область(НачинатьСоСтроки, 1);
    Обл.Текст = НазваниеТаблицы + Уведомление;
    Обл.ЦветТекста(255,255,255);
    Обл.РазмерШрифта(12);
    Обл.Полужирный(1);
    НачинатьСоСтроки = НачинатьСоСтроки + 1;
    КонецЕсли;
    Если ТЗ.КоличествоКолонок() = 0 Тогда
    Обл = Тб.Область(НачинатьСоСтроки, 1);
    Обл.Текст = "ОШИБКА В ТАБЛИЦЕ ЗНАЧЕНИЙ";
    Обл.ЦветТекста(255,0,0);
    Иначе
    Обл = Тб.Область(НачинатьСоСтроки, 1);
    Обл.Текст = "№";
    Если Парам = 1 Тогда
    Обл.ШиринаСтолбца(5);
    КонецЕсли;
    Обл.ЦветФона(220,220,220);
    Обл.Полужирный(1);
    Обл.Рамка(1,1,1,1);
    
    Для К = 1 По ТЗ.КоличествоКолонок() Цикл
    Длинна = "";
    Заголовок = "";
    ТЗ.ПолучитьПараметрыКолонки(К,,Длинна,,Заголовок);
    Обл = Тб.Область(НачинатьСоСтроки, К + 1);
    Обл.Текст = Заголовок;
    Если Парам = 1 Тогда
    Обл.ШиринаСтолбца(Длинна);
    КонецЕсли;
    Обл.ЦветФона(220,220,220);
    Обл.Полужирный(1);
    Обл.Рамка(1,1,1,1);
    КонецЦикла;
    Для Стр = 1 По ТЗ.КоличествоСтрок() Цикл
    Обл = Тб.Область(Стр + НачинатьСоСтроки, 1);
    Обл.Текст = Стр;
    Обл.Рамка(1,1,1,1);
    
    Для К = 1 По ТЗ.КоличествоКолонок() Цикл
    Зн = ТЗ.ПолучитьЗначение(Стр, К);
    Обл = Тб.Область(Стр + НачинатьСоСтроки, К + 1);
    Код = ?(ТипЗначенияСтр(Зн) = "Справочник", "#" + Зн.Код, + "");
    Обл.Текст = "" + Зн + Код;
    Обл.Расшифровка(Зн);
    Обл.Рамка(1,1,1,1);
    КонецЦикла;
    КонецЦикла;
    Для К = 1 По ТЗ.КоличествоКолонок() Цикл
    Тип = "";
    ТЗ.ПолучитьПараметрыКолонки(К,Тип);
    Если Тип <> "Число" Тогда
    Продолжить;
    КонецЕсли;
    Обл = Тб.Область(НачинатьСоСтроки + ТЗ.КоличествоСтрок() + 1, К + 1);
    Обл.Текст = ТЗ.Итог(К);
    Обл.ЦветФона(100,255,255);
    Обл.Полужирный(1);
    Обл.Рамка(1,1,1,1);
    КонецЦикла;
    КонецЕсли;
    
    НачинатьСоСтроки = НачинатьСоСтроки  + ТЗ.КоличествоСтрок() + 1;
    КонецПроцедуры
    Процедура Сформировать(Спис)
    
    Тб = СоздатьОбъект("Таблица");
    Тб.Вывести();
    
    Обл = Тб.Область(1, 1);
    Обл.ВысотаСтроки(1);
    НачинатьСоСтроки = 2;
    
    Для Ц = 1 По Спис.РазмерСписка() Цикл
    НазваниеТаблицы = "";
    ТЗ = Спис.ПолучитьЗначение(Ц, НазваниеТаблицы);
    ВывестиТЗ(ТЗ, Тб, НачинатьСоСтроки, Ц, НазваниеТаблицы);
    НачинатьСоСтроки = НачинатьСоСтроки + 2;
    КонецЦикла;
    
    //Тб.ТолькоПросмотр(1);
    Тб.Опции(0,1,0,0);
    Тб.Показать();
    КонецПроцедуры
    Процедура ПриОткрытии()
    СтатусВозврата(0);
    Если ТипЗначенияСтр(Форма.Параметр) <> "СписокЗначений" Тогда
    Предупреждение("В качестве параметра обработки нужно передать список значений,
    |элементы которой - таблицы значений");
    Возврат;
    КонецЕсли;
    Сформировать(Форма.Параметр);
    КонецПроцедуры
    Потом рассказывай, получилось или нет, какие есть вопросы по используемым механизмам.
  7. TopicStarter Overlay
    Mitay_D
    Offline

    Mitay_D Опытный в 1С

    Регистрация:
    16 фев 2010
    Сообщения:
    314
    Симпатии:
    0
    Баллы:
    26
    Спасибо, помогло.

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