НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "УпрАналитика",,,ТекстЗапроса, Загол);

ИначеЕсли ВидРазделителя = 3 Тогда

НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "УпрАналитика",ВыбРазделитель3,"ВыбРазделитель3",ТекстЗапроса, Загол);

НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "Фирма",,,ТекстЗапроса, Загол);

НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "ЮрЛицо",,,ТекстЗапроса, Загол);

КонецЕсли;

НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "Номенклатура",ВыбТМЦ, "ВыбТМЦ", ТекстЗапроса, Загол,"СвойстваНоменклатуры");

НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "Покупатель", ВыбПокупатель,"ВыбПокупатель",ТекстЗапроса, Загол,"СвойстваКонтрагентов");

НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "Договор", ВыбДоговор, "ВыбДоговор", ТекстЗапроса, Загол);

Если НетОш = 0 Тогда

Возврат;

КонецЕсли;

Если ЗаполнитьДок = 1 Тогда

Если ПустоеЗначение(ДокументЗаказаПоставщику) = 0 Тогда // вызвали из документа

ДатаОтгрузки = ДокументЗаказаПоставщику. ДатаОтгрузки;

Иначе // из отчета, формируем новый документ

ДатаОтгрузки = ДатаКонца;

КонецЕсли;

ТаблЗначВДок. УдалитьСтроки();

ТекстЗапроса = ТекстЗапроса + "Группировка Номенклатура без групп;

|Условие (ОперацияЗаявка = Перечисление. ВидыОперацийЗаявок. НаПоставку);

|Условие (ДатаОтгрузкиЗаявка >= ДатаОтгрузки);

|Условие (ПустоеЗначение(Номенклатура) = 0);

НЕ нашли? Не то? Что вы ищете?

|Условие (НЕ(ВидНоменклатура = Перечисление. ВидыНоменклатуры. Услуга));

|Условие (НЕ(ВидНоменклатура = Перечисление. ВидыНоменклатуры. Работа));";

// Если ошибка в запросе, то выход из процедуры

Если Запрос. Выполнить(ТекстЗапроса) = 0 Тогда

Возврат;

КонецЕсли;

Пока Запрос. Группировка("Номенклатура") = 1 Цикл

КоличествоВЗаказ = Запрос. КонОстЗаявкаК - Запрос. КонОстРезерв - Запрос. КонОстЗаказК;

Если КоличествоВЗаказ > 0 Тогда

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

ТаблЗначВДок. Номенклатура = Запрос. Номенклатура;

ТаблЗначВДок. Количество = КоличествоВЗаказ;

КонецЕсли;

КонецЦикла;

Если ЗакрытьДиалог = 1 Тогда

СтрокаДействийФормы = "#Закрыть";

КонецЕсли;

Возврат;

КонецЕсли; // Если ЗаполнитьДок = 1

// Фильтр по виду заявок

ВыбВидЗаявки = ВидЗаявок. ПолучитьЗначение(ВидЗаявок. ТекущаяСтрока());

Если ПустоеЗначение(ВыбВидЗаявки) = 0 Тогда

ТекстЗапроса = ТекстЗапроса + "Условие (ОперацияЗаявка = ВыбВидЗаявки);";

КонецЕсли;

Если (ТипЗначенияСтр(Таб) <> "Таблица") ИЛИ (Обновить = 0) Тогда

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

Иначе

Таб. Очистить();

КонецЕсли;

Таб. ИсходнаяТаблица("ЗаявкиПокупателей");

ПечЗаголовокСтолбца = "";

УстановитьГруппировкиЗапроса(ТекстЗапроса, ПечЗаголовокСтолбца);

КоличествоГруппировок = СписокГруппировок. РазмерСписка();

Если (НомерГруппировкиПоТМЦ = 9999) и (НомерГруппировкиПоДоговору=9999) Тогда

Предупреждение("Обязательно установите группировку по номенклатуре или договору!",60);

Возврат;

КонецЕсли;

Если КоличествоГруппировок > 5 Тогда

Предупреждение("Нельзя сделать больше 5 группировок!",60);

Возврат;

КонецЕсли;

// Если ошибка в запросе, то выход из процедуры

Если Запрос. Выполнить(ТекстЗапроса) = 0 Тогда

Возврат;

КонецЕсли;

глЧислоСтрок = 0;

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

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

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

// выводим шапку на каждой странице

НачПовт = Таб. ВысотаСекции("Кнопки") + Таб. ВысотаСекции("Шапка");

КонПовт = НачПовт + Таб. ВысотаСекции("ШапкаТаблицы");

Таб. ПовторятьПриПечатиСтроки(НачПовт + 1, КонПовт);

глОживить(1);

Таб. Опции(0, 0, Таб. ВысотаТаблицы(), 0, "ЗаявкиПокупателей", "ЗаявкиПодразделений");

// ВЫВОД ГРУППИРОВОК ЗАПРОСА

ВывестиГруппировку(Запрос,1);

// Заполнение полей "Итого"

ПечатьСтроки(Запрос,0,"Итого","","");

Таб. ОбластьПечати(3);

// Вывод заполненной формы

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

Если глПолучитьПолномочие("РазрешитьРедактированиеТаблиц") = 0 Тогда

Таб. Защита(1);

КонецЕсли;

Таб. Показать("Заявки подразделений", "");

Если (Обновить = 2)ИЛИ(ЗакрытьДиалог=1) Тогда

СтрокаДействийФормы = "#Закрыть";

КонецЕсли;

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

//

// ПоКнопкеСформироватьЗаказ()

//

// Параметры:

// Нет

//

// Возвращаемое значение:

// Нет

//

// Вызывается из формул элементов диалога:

// Кнопка "Сформировать заказ".

//

// Описание:

// Формирует документ "Заказ" и заполняет его строками из отчета

//

Процедура ПоКнопкеСформироватьЗаказ()

Перем СписокПараметров;

// Проверки

Если (ВидРазделителя <> 1) или (ВыбРазделитель1.Выбран() = 0) Тогда

Предупреждение("Для формирования заказа выберите фирму!", 60);

Возврат;

КонецЕсли;

// для правильного функционирования алгоритма необходимо

// чтобы группировка заявка была помечена.

Если Группировки. Пометка(Группировки. НайтиЗначение("Заявка"))=0 Тогда

Предупреждение("Для формирования заказа пометьте группировку заявка!", 60);

Возврат;

КонецЕсли;

Сформировать(1,1);

СписокПараметров = СоздатьОбъект("СписокЗначений");

СписокПараметров. Установить("ТаблЗнач", ТаблЗначВДок);

Если ПустоеЗначение(ДокументЗаказаПоставщику) = 0 Тогда

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

ОткрытьФорму(ДокументЗаказаПоставщику, СписокПараметров);

Иначе

// будем формировать новый документ => добавим параметры

СписокПараметров. Установить("ДатаДок", ДатаКонца);

СписокПараметров. Установить("Фирма", ВыбРазделитель1);

ОткрытьФорму("Документ. Заказ", СписокПараметров);

КонецЕсли;

КонецПроцедуры // ПоКнопкеСформироватьЗаказ()

////////////////////////////////////////////////////////////////////////////////

// ПРЕДОПРЕДЕЛЕННЫЕ ПРОЦЕДУРЫ

Если ФлагВосстановленияНастройки = 0 Тогда

ВидЕдиницы = 1;

ВидРазделителя = 1;

Иначе

Если Группировки. НайтиЗначение("Проект") = 0 Тогда

Группировки. ДобавитьЗначение("Проект", "Проекты");

КонецЕсли;

КонецЕсли;

Если (ТипЗначенияСтр(Форма. Параметр) = "СписокЗначений") и (глОбновить = 0) Тогда

глРасшифровка = Форма. Параметр;

ВызовИзДокумента = 1;

Форма. кнСформироватьЗаказ. Заголовок("Перенести в документ");

Форма. кнОК. Доступность(0);

Форма. кнСформировать. Заголовок("Просмотр");

Форма. ДатаКонца. Доступность(0);

Форма. ВидРазделителя. Доступность(0);

Форма. ЮрЛицо. Доступность(0);

Форма. УпрАналитика. Доступность(0);

Форма. ВыбРазделитель1. Доступность(0);

Форма. кнХРазделитель1. Доступность(0);

КонецЕсли;

Если (глФлагРасшифровки = 1) или (ВызовИзДокумента = 1) Тогда

Обновить = глОбновить;

// восстанавливаем настройки из списка

ДатаКонца = глРасшифровка. Получить("ДатаКонца");

ВыбТМЦ = глРасшифровка. Получить("ВыбТМЦ");

ВыбДоговор = глРасшифровка. Получить("ВыбДоговор");

ВыбПокупатель = глРасшифровка. Получить("ВыбПокупатель");

ВидЗаявок. ТекущаяСтрока(глРасшифровка. Получить("ВидЗаявок"));

ВидРазделителя = глРасшифровка. Получить("ВидРазделителя");

ВыбРазделитель1 = глРасшифровка. Получить("ВыбРазделитель1");

ВыбРазделитель2 = глРасшифровка. Получить("ВыбРазделитель2");

ВыбРазделитель3 = глРасшифровка. Получить("ВыбРазделитель3");

ВидЕдиницы = глРасшифровка. Получить("ВидЕдиницы");

глРасшифровка. Получить("Группировки").Выгрузить(Группировки);

Если ВызовИзДокумента = 1 Тогда

ДокументЗаказаПоставщику = глРасшифровка. Получить("ДокументЗаказа");

КонецЕсли;

Если ТипЗначенияСтр(глРасшифровка. Получить("ТаблицаМФ"))="ТаблицаЗначений" Тогда

ТаблицаМФ. Загрузить(глРасшифровка. Получить("ТаблицаМФ"));

КонецЕсли;

Если Обновить <> 0 Тогда

Таб = глТаблица;

КонецЕсли;

Если (Обновить <> 2) и (ВызовИзДокумента <> 1) Тогда

Сформировать();

СтатусВозврата(0);

Возврат;

КонецЕсли;

Иначе

Обновить = 0;

КонецЕсли;

ПерерисовкаНазванийЗакладок();

ТаблицаМФ. ВидимостьКолонки("Тип",0);

ТаблицаМФ. ВидимостьКолонки("Вид",0);

ТаблицаМФ. ВидимостьКолонки("СписокЭлементов",0);

ТаблицаМФ. ВидимостьКолонки("ТипМФ",0);

ТаблицаМФ. ВидимостьКолонки("ИмяПеременной",0);

ТаблицаМФ. ВыводитьПиктограммы("ФлВкл");

УправлениеДиалогом();

КонецПроцедуры // ПриОткрытии()

//

// Предопределенная процедура.

Процедура ВводНового()

// эта предопределенная процедура выполняется при восстановлении настройки

ПерерисовкаНазванийЗакладок();

УправлениеДиалогом();

ТаблицаМФ. ВыводитьПиктограммы("ФлВкл");

КонецПроцедуры // ВводНового()

//

// Предопределенная процедура

//

Процедура ПриВыбореЗакладки(Номер, Значение)

// закладки

Если Номер=1 Тогда

глПриСменеСтрокиТаблицыМФ(1,ТекСтрокаВТаблице, Контекст); // записываем изменения если они были

КонецЕсли;

УправлениеДиалогом();

ПерерисовкаНазванийЗакладок();

КонецПроцедуры // ПриВыбореЗакладки

//

// Предопределенная процедура

//

Процедура ОбработкаПодбора(Значение)

Если (СписокЭлементовМФ. НайтиЗначение(Значение)=0) Тогда

Представление=""+Значение;

Если ТипЗначенияСтр(Значение)="Справочник" Тогда

Если СокрЛП(Метаданные. Справочник(Значение. Вид()).Владелец) <> "Метаданные" Тогда

Представление=Представление+" ("+Значение. Владелец+")";

КонецЕсли;

КонецЕсли;

СписокЭлементовМФ. ДобавитьЗначение(Значение, Представление);

ТаблицаМФ. ФлВкл=2;

КонецЕсли;

КонецПроцедуры // ОбработкаПодбора

////////////////////////////////////////////////////////////////////////////////

// ОПЕРАТОРЫ ОСНОВНОЙ ПРОГРАММЫ

ДатаКонца = ПолучитьДатуТА();

ВидЗаявок. УдалитьВсе();

ВидЗаявок. ДобавитьЗначение(ПолучитьПустоеЗначение("Перечисление. ВидыОперацийЗаявок"), "Все");

ВидЗаявок. ДобавитьЗначение(Перечисление. ВидыОперацийЗаявок. Неподтвержденная);

ВидЗаявок. ДобавитьЗначение(Перечисление. ВидыОперацийЗаявок. НаСклад);

ВидЗаявок. ДобавитьЗначение(Перечисление. ВидыОперацийЗаявок. НаПоставку);

ВидЗаявок. ТекущаяСтрока(1);

// инициализация переменных множественного фильтра

ТипМФ. УдалитьВсе();

ТипМФ. ДобавитьЗначение("одно из");

ТипМФ. ДобавитьЗначение("все кроме");

ТаблицаМФ. УдалитьСтроки();

Пока ТаблицаМФ. КоличествоКолонок()>0 Цикл

ТаблицаМФ. УдалитьКолонку(1);

КонецЦикла;

ТаблицаМФ. НоваяКолонка("Тип");

ТаблицаМФ. НоваяКолонка("Вид");

ТаблицаМФ. НоваяКолонка("ИмяПеременной");

ТаблицаМФ. НоваяКолонка("СписокЭлементов"); // список элементов, по которым производим фильтрацию

ТаблицаМФ. НоваяКолонка("ТипМФ"); // текущая строка списка ТипМФ

ТаблицаМФ. НоваяКолонка("ФлВкл","Число",1,,"Вкл",5,,); // фильтр включен ("1" или "0")

ТаблицаМФ. НоваяКолонка("Представление",,,,"Вид фильтра:");

ТаблицаМФ. ВыводитьПиктограммы("ФлВкл");

ТекСтрокаВТаблице="";

// Инициализируем закладки

Форма. ИспользоватьЗакладки(1);

Форма. Закладки. ДобавитьЗначение(1,"Основная");

Форма. Закладки. ДобавитьЗначение(2,"Множественный фильтр");

Форма. Закладки. ТекущаяСтрока(1);

Группировки. ДобавитьЗначение("Договор", "Договор покупателя");

Группировки. ДобавитьЗначение("Заявка", "Заявка");

Группировки. ДобавитьЗначение("Номенклатура","Номенклатура");

Группировки. ДобавитьЗначение("Проект", "Проект");

Группировки. Пометка(2, 1);

Группировки. Пометка(3, 1);

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

ТаблЗначВДок. НоваяКолонка("Номенклатура");

ТаблЗначВДок. НоваяКолонка("Количество");

ТаблЗначВДок. НоваяКолонка("ПоЗаявке", "Документ. Заявка");

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4