НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "УпрАналитика",,,ТекстЗапроса, Загол);
ИначеЕсли ВидРазделителя = 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 |


