
- •Методические указания
- •1. Постановка задачи.
- •2. Реализация.
- •2.1 Создание конфигурации.
- •2.2 Начало работы с метаданными.
- •2.3 Создание пользователя.
- •2.4 Справочник товаров.
- •Начинаем редактировать форму группы. Она будет иметь самый примитивный вид, как на картинке, но можно и как ни будь украсить (по желанию);
- •2.5 Документ. Приход денег.
- •2.6 Отчет по долгам.
- •2.78 Регистры по товарам.
- •2.8 Fifo/lifo/По-среднему.
- •2.9 Наборы прав.
- •2.29 Новые интерфейсы.
2.6 Отчет по долгам.
Когда документов будет много, и контрагентов в документах будет тоже много, мы запутаемся, что показывать нам, кому, по какому договору и сколько должен. Для таких целей существуют отчеты. Создадим отчет, имеющий свою отдельную форму.
В дереве метаданных, в разделе отчеты, создаем новый отчет;
Идентификатор – "Взаиморасчеты";
А вот вставлять в интерфейс из визарда не будем. Мы потом сами ручками вставим;
Конструкторы никакие вызывать не будем – так напишем (либо скопируем с сей методички);
Появилась экранная форма отчета;
Добавим поле ввода. Идентификатор – ВыбДата, тип – дата;
В модуле формы пишем: Процедура Сформировать() Запрос=СоздатьОбъект("Запрос"); // Запрос – специальный объект в 1С, служит для получения структурированной // выборки данных ТЗ=" |Период с ВыбДата по ВыбДата; |Контр = Регистр.Взаиморасчеты.Контрагент; |Дог = Регистр.Взаиморасчеты.Договор; |Сум = Регистр.Взаиморасчеты.Сумма; |Функция СумКонОст = КонОст(Сум); |Группировка Контр упорядочить по Контр.Код; |"; // Это текст запроса. Подробности в "Описании языка" том 2 Если Запрос.Выполнить(ТЗ)=0 Тогда Сообщить("Запрос не выполнен"); Возврат; КонецЕсли; // Если запрос будет не выполнен по какой либо причине, метод Выполнить() // вернет 0. Мы сообщим пользователю о произошедшей ошибке, и // командой Возврат – прервем выполнение процедуры ИтогоМы=0; ИтогоНам=0; // В этих двух переменных мы будем хранить итоговую информацию по долгу Таб=СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица(""); Таб.ВывестиСекцию("Шапка"); Пока Запрос.Группировка("Контр")=1 Цикл // Получаем очередную запись из запроса ТЭ=Запрос.Контр; // Во временную переменную передаем значение выборки Долг=Запрос.СумКонОст; // Определяем суммарный долг по текущему значению выборки // Дальше уже все знакомые нам методы Если ТЭ.ЭтоГруппа()=1 Тогда НазГр=СокрЛП(ТЭ.Наименование); Если Долг=0 Тогда ИначеЕсли Долг>0 Тогда Мы=Долг; Нам=0; ИначеЕсли Долг<0 Тогда Мы=0; Нам=-Долг; КонецЕсли; Таб.ВывестиСекцию("Группа"); Иначе Наз="("+СокрЛП(Строка(ТЭ.Код))+") "+СокрЛП(ТЭ.Наименование); Если Долг=0 Тогда Продолжить; ИначеЕсли Долг>0 Тогда Мы=Долг; Нам=0; ИтогоМы=ИтогоМы+Мы; ИначеЕсли Долг<0 Тогда Мы=0; Нам=-Долг; ИтогоНам=ИтогоНам+Нам; КонецЕсли; Таб.ВывестиСекцию("Строка"); КонецЕсли; КонецЦикла; Таб.ВывестиСекцию("Итого"); Таб.ТолькоПросмотр(1); Таб.ПараметрыСтраницы(1,100,1); Таб.Показать(""); КонецПроцедуры
Перейдем на закладку таблица, создадим шаблон, такого вида:
Закроем форму отчета;
Теперь будем включать наш отчет в меню. В окне метаданных перейдем на закладку "Интерфейсы";
Меню Действия, команда "Редактировать". Редактировать меню;
Входим в редактирование строки "новая колонка...";
Название пишем "Отчеты";
[ОК];
Открываем появившийся раздел меню "Отчеты";
Открываем подраздел меню "новый...";
Выбираем объект – Отчеты.Взаиморасчеты;
Поля Название, Подсказка заполнились автоматически. Их можно поменять;
[ОК];
Меню Действия команда "Тест" вызовет окошко, где будет показано, как будет выглядеть наше меню;
Закрываем тестовое окно;
Закрываем окно редактирования меню;
Возвращаемся к дереву метаданных;
Сохраняем конфигурацию;