// восстанавливаем настройки из списка
ДатаНачала = глРасшифровка.Получить("ДатаНачала");
ДатаКонца = глРасшифровка.Получить("ДатаКонца");
ДатаНачалаЗак= глРасшифровка.Получить("ДатаНачалаЗак");
ДатаКонцаЗак = глРасшифровка.Получить("ДатаКонцаЗак");
ВыбТМЦ = глРасшифровка.Получить("ВыбТМЦ");
Если
ТипЗначенияСтр(глРасшифровка.Получить("ТаблицаМФ"))="Таблица
Значений" Тогда
ТаблицаМФ.Загрузить(глРасшифровка.Получить("ТаблицаМФ"));
КонецЕсли;
Если Обновить <> 0 Тогда
Таб = глТаблица;
КонецЕсли;
Если Обновить <> 2 Тогда
Сформировать();
СтатусВозврата(0);
Возврат;
КонецЕсли;
Иначе
Обновить = 0;
КонецЕсли;
ПерерисовкаНазванийЗакладок();
ТаблицаМФ.ВидимостьКолонки("Тип",0);
ТаблицаМФ.ВидимостьКолонки("Вид",0);
ТаблицаМФ.ВидимостьКолонки("СписокЭлементов",0);
ТаблицаМФ.ВидимостьКолонки("ТипМФ",0);
ТаблицаМФ.ВидимостьКолонки("ИмяПеременной",0);
ТаблицаМФ.ВыводитьПиктограммы("ФлВкл");
УправлениеДиалогом();
КонецПроцедуры// ПриОткрытии()
//************************************************************
// Предопределенная процедура.
Процедура ВводНового()
// эта предопределенная процедура выполняется при восстановлении настройки
ПерерисовкаНазванийЗакладок();
УправлениеДиалогом();
ТаблицаМФ.ВыводитьПиктограммы("ФлВкл");
КонецПроцедуры // ВводНового()
//************************************************************
// Предопределенная процедура
Процедура ПриВыбореЗакладки(Номер,Значение)
// закладки
Если Номер=1 Тогда
глПриСменеСтрокиТаблицыМФ(1,ТекСтрокаВТаблице,Контекст); //
записываем изменения если они были
КонецЕсли;
УправлениеДиалогом();
ПерерисовкаНазванийЗакладок();
КонецПроцедуры// ПриВыбореЗакладки
//************************************************************
// Предопределенная процедура
Процедура ОбработкаПодбора(Значение)
Если (СписокЭлементовМФ.НайтиЗначение(Значение)=0) Тогда
Представление=""+Значение;
Если ТипЗначенияСтр(Значение)="Справочник" Тогда
Если СокрЛП(Метаданные.Справочник(Значение.Вид()).Владелец) <>
"Метаданные" Тогда
Представление=Представление+" ("+Значение.Владелец+")";
КонецЕсли;
КонецЕсли;
СписокЭлементовМФ.ДобавитьЗначение(Значение,Представление);
ТаблицаМФ.ФлВкл=2;
КонецЕсли;
КонецПроцедуры // ОбработкаПодбора
ДатаКонца = ПолучитьДатуТА();
// инициализация списков
// инициализация переменных множественного фильтра
ТипМФ.УдалитьВсе();
ТипМФ.ДобавитьЗначение("одно из");
ТипМФ.ДобавитьЗначение("все кроме");
ТаблицаМФ.УдалитьСтроки();
Пока ТаблицаМФ.КоличествоКолонок()>0 Цикл
ТаблицаМФ.УдалитьКолонку(1);
КонецЦикла;
ТаблицаМФ.НоваяКолонка("Тип");
ТаблицаМФ.НоваяКолонка("Вид");
ТаблицаМФ.НоваяКолонка("ИмяПеременной");
ТаблицаМФ.НоваяКолонка("СписокЭлементов"); // список элементов,
по которым производим фильтрацию
ТаблицаМФ.НоваяКолонка("ТипМФ"); // текущая строка списка
ТипМФ
ТаблицаМФ.НоваяКолонка("ФлВкл","Число",1,,"Вкл",5,,); // фильтр
включен ("1" или "0")
ТаблицаМФ.НоваяКолонка("Представление",,,,"Вид фильтра:");
ТаблицаМФ.ВыводитьПиктограммы("ФлВкл");
// тип вид переменная название
глДобавитьВТаблицуМФ(ТаблицаМФ,"Справочник","Товары",
"Номенклатура", "По номенклатуре");
глДобавитьВТаблицуМФ(ТаблицаМФ,"Справочник","Организации",
"Поставщик", "По поставщикам");
глДобавитьВТаблицуМФ(ТаблицаМФ,"Справочник","ЗначенияСвойст
в", "Номенклатура", "По свойствам
номенклатуры");
ТекСтрокаВТаблице = "";
// Инициализируем закладки
Форма.ИспользоватьЗакладки(1);
Форма.Закладки.ДобавитьЗначение(1,"Основная");
Форма.Закладки.ДобавитьЗначение(2,"Множественный фильтр");
Форма.Закладки.ТекущаяСтрока(1);
Приложение Б
Листинг программной реализации отчета «Нулевая реализация»
//*******************************************
// Процедура генерации запроса Осталось.
Процедура Осталось()
Перем Запрос, ТекстЗапроса, Таб;
Запрос=СоздатьОбъект("Запрос");
ТекстЗапроса ="
Период с ВыбДатаНач по ВыбДатаКон;
Обрабатывать НеПомеченныеНаУдаление;
Предприятие =
Регистр.Остатки.Подразделение,Регистр.Продажи.Подразделение;
Товар = Регистр.Остатки.Товар,Регистр.Продажи.Номенклатура;
Количество = Регистр.Остатки.Количество;
КоличествоП=Регистр.Продажи.Количество;
Поставщик =
Регистр.Остатки.ПрихДок.Агент,Регистр.Продажи.Поставщик;
СуммаРозн = Регистр.Остатки.СуммаРозн;
Функция КолОст = КонОст(Количество);
Функция СуммаРознОст = КонОст(СуммаРозн);
Функция КолПриход = Приход(Количество);
Функция КолРасход = Расход(Количество);
Функция Продано = Сумма(КоличествоП);
Группировка Товар упорядочить по КолОст;
Условие(Предприятие в ВыбПредприятие);
Условие(Товар в ВыбТовар);
Условие(Поставщик в ВыбПоставщик);
Условие(КоличествоП = 0);
"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
// Подготовка к заполнению выходных форм данными запроса
//Рег=СоздатьОбъект("Регистр.ОстаткиТоваров");
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица1");
// Заполнение полей "Заголовок"
Усл="";
Если ПустоеЗначение(ВыбПредприятие)=0 Тогда
Усл=Усл+"По подразделению: "+ВыбПредприятие+".";
КонецЕсли;
Если ПустоеЗначение(ВыбПоставщик)=0 Тогда
Усл=Усл+"По поставщику: "+ВыбПоставщик+".";
КонецЕсли;
Если ПустоеЗначение(ВыбТовар)=0 Тогда
Усл=Усл+"По товарам: "+ВыбТовар+".";
КонецЕсли;
Таб.ВывестиСекцию("Заголовок");
Состояние("Заполнение выходной таблицы...");
Ном=0;
Пока Запрос.Группировка("Товар") = 1 Цикл
Если Запрос.ЭтоГруппа("Товар")=1 Тогда
Таб.ВывестиСекцию("ГрТовар");
Иначе
Если Запрос.Продано<>0 Тогда Продолжить; КонецЕсли;
Если Запрос.КолРасход<>0 Тогда Продолжить; КонецЕсли;
Ном=Ном+1;
Если Ном%50=0 Тогда
Состояние("Обработано строк "+Ном);
КонецЕсли;
ЦенаЗ=Запрос.Товар.ЦенаЗакуп;
ЦенаР=Запрос.Товар.ЦенаРозн;
Таб.ВывестиСекцию("Товар1");
КонецЕсли;
КонецЦикла;
// Заполнение полей "Итого"
Таб.ВывестиСекцию("Итого");
// Вывод заполненной формы
Таб.Опции(0, 0, 3, 0, "НулеваяРеализация","НулеваяРеализация");
Таб.ТолькоПросмотр(1);
Таб.Показать("НулеваяРеализация: "+ВыбПредприятие,
"");
КонецПроцедуры
Приложение В
Листинг программной реализации отчета «Пакетная печать инвентаризаций»
Процедура Сформировать()
таб=создатьобъект("Таблица");
Таб.Опции(0,0,0,0,"ВедомостьСнятияОстатков","ВедомостьСнятияОста
тков");
ДОК=создатьобъект("Документ.инвентаризация");
док.выбратьДокументы(выбдата,выбдата1);
пока док.получитьДокумент()=1 цикл
если док.проведен()=1 тогда продолжить; конецесли;
если док.пометкаудаления()=1 тогда продолжить; конецесли;
если пустоезначение(выбагент)=0 тогда
если док.агент<>выбагент тогда продолжить; конецесли;
конецесли;
если (начлист>число(док.лист)) или (Конлист<число(док.лист)) тогда
продолжить; конецесли;
для я=1 по экз цикл
таб.вывестисекцию("шапкаИнв");
Ном=0;
док.выбратьСтроки();
пока док.получитьстроку()=1 цикл
Ном = Ном + 1;
таб.вывестисекцию("Строка");
Если Ном%2=0 Тогда
ОблТаб=Таб.Область(Таб.ВысотаТаблицы(),1,Таб.ВысотаТаблицы(),7);
ОблТаб.РамкаСнизу(7);
КонецЕсли;
конеццикла;
таб.вывестисекцию("Итог");
таб.вывестисекцию("Подвал");
таб.новаястраница();
конеццикла;
конеццикла;
таб.показать();
КонецПроцедуры
выбдата=рабочаядата();
начлист=1;
конлист=1;
экз=2;