Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИСиТ. Методичка.doc
Скачиваний:
25
Добавлен:
04.11.2018
Размер:
745.47 Кб
Скачать

8.2. Отчет по остаткам на складе

Итак, после ввода некоторого количества приходных накладных интересно знать, что на каком складе лежит. Сделать отчет по складам.

  1. Отчет "ОстаткиНаСкладе".

  2. Вставить в экранную форму два элемента диалога.

  3. Первый: поле ввода "ВыбДата" тип Дата.

  4. Второй: поле ввода "ВыбСклад" тип С.Склады.

  5. Соответственно приставить к ним текстовые поля с надписью, что есть что (вообще, это удобно делать через меню Вставить командой "Элемент диалога..." либо аналогичной кнопкой из панели инструментов).

  6. В модуле прописать процедуру:

Процедура ПриОткрытии() ВыбДата=РабочаяДатаО;

// РабочаяДата — дата, на которую установлена в данный момент 1С.

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

  1. Заполнить процедуру Сформировать(). Эта процедура вызывается одноименной кнопкой [Сформировать]. Там она прописана в поле "Формула":

Процедура Сформировать()

ТабЗн=СоздатьОбъект( "ТаблицаЗначений");

// создаем динамическую 2-х мерную таблицу

ТабЗн.НоваяКолонка("Товар","Справочник. Номенклатура");

ТабЗн.НоваяКолонка("Ост","Число", 17,2):

// указываем какие колонки будет содержать наша динамическая таб

лица

РегОст=СоздатьОбъект("Регистр. ОстаткиТоваров");

// создаем в памяти копию регистра остатков Ре

гОст.ВременныйРасчет( 1);

// указываем, что из этого регистра нам. возможно, надо будет полу

чить данные

// на момент времени отличный от текущего

РассчитатьРегистрыНа(ВыбДата);

// указываем на какой момент времени надо получить данные из

ре¬гистров

РегОст.ВыбратьИтоги();

// открываем выборку итогов из регистра (на указанный момент

вре¬мени)

Пока РегОст.Получ итьИтог()= 1 Цикл

// получаем очередной итог

ТС кладНРегОст. Склад;

Если ТСклад-ВыбСклад Тогда

// если текущий итог по выбранному складу

ТабЗн.НоваяСтрока();

// добавляем в динамическую таблицу новую строку

ТабЗн.Товар=РегОст.Товар;

ТабЗн. Оет=РегОст. Количество;

// заполняем поля д. таблицы

КонецЕсли;

КонецЦикла;

РегОст="";

// убираем из памяти копию регистра. Она нам больше не нужна

СтрокаН=0;

ТабЗн.ВыбратьСтроку(СтрокаН,"Просмотр содержимого таблицы");

// Это мы делаем, чтобы просмотреть содержимое динамической таб

лицы

// у нас будут строки с одинаковым товаром и сортом, они возникли

из-за

// наличия измерения "Партия" нам надо их объединить

ТабЗн.Свернуть(" 1,2");

// методом Свернуть() мы объединяем строки у которых содержимое

// в колонках 1 и 2 одинаковое, а колонку 3 мы суммируем Стро

каН=0;

ТабЗн.ВыбратьС гроку(СтрокаН,"Просмотр содержимого таблицы");

// смотрим что получилось. Строки у нас идут вразнобой

ТабЗн.Сортировать" 1+,2+");

// отсортируем их. сперва сортируем по убыванию колонку 1, Стро

каН=0;

ТабЗн.ВыбратьСтроку(СтрокаН,"Просмотр содержимого таблицы");

// смотрим на результат

Таб=СоздатьОбъект("Таблица");

Таб.ИсходнаяТаблица( "Таблица");

Таб.ВывестиСекцию("Шапка");

ТТовар="@#$%&";

// такого товара у нас не будет

ТабЗн.ВыбратьСтроки();

// открываем выборку строк из д. таблицы

Пока ТабЗн.ПолучитьСтроку()= 1 Цикл

Товар=ТабЗн.Товар;

Тов=СокрЛП(Товар.Код)+" ("+СокрЛП(Товар.Наименование)+")";

Ост=ТабЗн.Ост;

Ед=Строка(Товар.ЕдИзм);

Если ТТовароТовар Тогда

// если товар из д. таблицы не совпадает с переменной ТТовар

Таб.ВывестиСекцию("Товар");

// выводим эту секцию таблицы для печати

ТТовар=Товар;

Иначе

// выводим эту секцию

КонецЕсли;

КонецЦикла;

Таб.ТолькоПросмотр( 1);

Таб.ПараметрыСтраницы( 1,100,1);

Таб. Показать(" ");

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

  1. Теперь создать шаблон для печатной таблицы.

  2. Загрузить 1С:Предприятие.

  3. Посмотреть, что покажет отчет на разные даты по разным складам.