// Процедура генерации материального отчета.
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Без итогов;
|НоменклатураМатериалов = Регистр. ОстаткиНоменклатурыМатериалов. НоменклатураМатериалов, Регистр. ЗаказПоставщику. Номенклатура;
|КоличествоСкл = Регистр. ОстаткиНоменклатурыМатериалов. Количество;
|КоличествоЗак = Регистр. ЗаказПоставщику. Количество;
|Функция КоличествоСклКонОст = КонОст(КоличествоСкл);
|Функция КоличествоЗакКонОст = КонОст(КоличествоЗак);
|Группировка НоменклатураМатериалов без групп;
//|Условие(НоменклатураМатериалов = ВыбНоменклатураМатериалов);
|"//}}ЗАПРОС
;
если ВыбНоменклатураМатериалов. Выбран() = 1 тогда
ТекстЗапроса = ТекстЗапроса +"
|Условие(НоменклатураМатериалов = ВыбНоменклатураМатериалов);";
КонецЕсли;
// Если ошибка в запросе, то выход из процедуры
Если Запрос. Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
// Подготовка к заполнению выходных форм данными запроса
Таб = СоздатьОбъект("Таблица");
Таб. ИсходнаяТаблица("Сформировать");
// Заполнение полей "Заголовок"
Таб = СоздатьОбъект("Таблица");
Таб. ИсходнаяТаблица("Сформировать");
Таб. ВывестиСекцию("Заголовок");
Состояние("Заполнение выходной таблицы...");
Таб. Опции(0, 0, Таб. ВысотаТаблицы(), 0);
Пока Запрос. Группировка() = 1 Цикл
// Заполнение полей Сформировать
Таб. ВывестиСекцию("Сформировать");
КонецЦикла;
// Вывод заполненной формы
Таб. ТолькоПросмотр(1);
Таб. Показать("Сформировать", "");
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ МОДУЛЯ
//
//
// ВыбратьПоФильтру()
//
// Параметры:
// Нет
//
// Описание:
// Открывает обработку отбора элементов по произвольному фильтру
//
Процедура ВыбратьПоФильтру()
Перем ВидЗначенияПодбора;
ВидЗначенияПодбора=СокрЛП(ТаблицаМФ. Вид);
Если ПустоеЗначение(ВидЗначенияПодбора)=1 Тогда
Возврат;
КонецЕсли;
СписокПараметров=СоздатьОбъект("СписокЗначений");
СписокПараметров. ДобавитьЗначение("", "ИмяВызвавшейФормы");
СписокПараметров. ДобавитьЗначение(ТаблицаМФ. Тип, "Тип");
СписокПараметров. ДобавитьЗначение(ВидЗначенияПодбора,"Вид");
СписокПараметров. ДобавитьЗначение(СписокЭлементовМФ, "Объекты");
ТаблицаМФ. ФлВкл=2;
ОткрытьФорму("Обработка. ПодборОбъектов#",СписокПараметров);
КонецПроцедуры // ВыбратьПоФильтру
//
// ПерерисовкаНазванийЗакладок
//
// Параметры:
// Нет
//
// Описание:
// Добавляет "(!)" в заголовок закладки с множественным фильтром, когда этот фильтр задан
//
Функция ПерерисовкаНазванийЗакладок()
Форма. Закладки. УстановитьЗначение(2,?(глМножественныйФильтрЗадан(ТаблицаМФ)=1,"(!) ","")+"Множественный фильтр");
КонецФункции // ПерерисовкаНазванийЗакладок()
//
// РасшифровкаОбновить(Обновить)
//
// Параметры:
// Обновить = 1 - нажата кнопка "Обновить"
// 2 - нажата кнопка "Настройка"
//
// Возвращаемое значение:
// Расшифровка (список значений)
//
// Вызывается из формул элементов диалога:
// из таблицы, кнопки "Обновить" и "Настройка"
//
// Описание:
// функция для стандартного механизма кнопок ""Обновить" и "Настройка""
// помещает значение параметра в список Расшифровка и возвращает этот список
//
Функция РасшифровкаОбновить(Обновить)
Расшифровка. Установить("Обновить", Обновить);
Возврат Расшифровка;
КонецФункции //РасшифровкаОбновить()
//
// УправлениеДиалогом()
//
// Параметры:
// Нет
//
// Возвращаемое значение:
// Нет
//
// Описание:
// Управление видимостью элементов формы.
//
Процедура УправлениеДиалогом()
Если Форма. Закладки. ТекущаяСтрока() = 1 Тогда
Форма. ИспользоватьСлой("Шапка, Подвал, Основной1,Основной2,Разделитель"+СокрЛП(ВидРазделителя));
Иначе
Форма. ИспользоватьСлой("Шапка, МФ, Подвал");
КонецЕсли;
КонецПроцедуры //УправлениеДиалогом()
//
// ИзменениеПорядкаГрупп(НаправлениеСдвига)
//
// Параметры:
// НаправлениеСдвига = -1 - вниз
// 1 - вверх
// Возвращаемое значение:
// Нет
//
// Вызывается из формул элементов диалога:
// кнопки "вверх" и "вниз" рядом со списком группировок
Процедура ИзменениеПорядкаГрупп(НаправлениеСдвига)
ТекСтр = Группировки. ТекущаяСтрока();
Группировки. СдвинутьЗначение(НаправлениеСдвига, ТекСтр);
КонецПроцедуры // ИзменениеПорядкаГрупп()
//
// УстановитьГруппировкиЗапроса(ТекстЗапроса, ТекстЗагол)
//
// Параметры: ТекстЗапроса - переданный по ссылке текст запроса
// ТекстЗагол - переданный по ссылке текст заголовка
//
// Возвращаемое значение:
// Нет
//
// Описание:
// Дополняет строку запроса и заголовка в соответствии с выбранными группировками.
//
Процедура УстановитьГруппировкиЗапроса(ТекстЗапроса, ТекстЗагол)
СписокГруппировок = СоздатьОбъект("СписокЗначений");
Для Сч=1 По Группировки. РазмерСписка() Цикл
Если Группировки. Пометка(Сч)=1 Тогда
ПредставлениеГрупп="";
ТекстГрупп=Группировки. ПолучитьЗначение(Сч, ПредставлениеГрупп);
Если (ТекстГрупп = "Покупатель") или (ТекстГрупп = "Номенклатура") Тогда
ТекстБезГрупп = " без групп";
Иначе
ТекстБезГрупп = "";
КонецЕсли;
ТекстЗапроса = ТекстЗапроса + "Группировка "+ТекстГрупп+ТекстБезГрупп+";";
ТекстЗагол = ТекстЗагол + ?(ТекстЗагол="",""," / ")+ПредставлениеГрупп;
СписокГруппировок. ДобавитьЗначение(ТекстГрупп, ПредставлениеГрупп);
Если ТекстГрупп = "Номенклатура" Тогда
НомерГруппировкиПоТМЦ = СписокГруппировок. РазмерСписка();
ИначеЕсли ТекстГрупп = "Договор" Тогда
НомерГруппировкиПоДоговору = СписокГруппировок. РазмерСписка();
ИначеЕсли ТекстГрупп = "Покупатель" Тогда
НомерГруппировкиПоПокупателю = СписокГруппировок. РазмерСписка();
ИначеЕсли ТекстГрупп = "Заявка" Тогда
НомерГруппировкиПоЗаявке = СписокГруппировок. РазмерСписка();
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры // УстановитьГруппировкиЗапроса()
//
// ПечатьСтроки(Запрос, Ном, НазваниеСекции, ПечТекстСтроки, ТекРасшифровка, ТекРасшифровкаНачало="")
//
// Параметры:
// Запрос - объект "Запрос", на основании которого строится отчет
// Ном - Номер группировки запроса (Число)
// НазваниеСекции - название секции, которую следует использовать (Строка)
// ПечТекстСтроки - текстовое представление текущей строки
// ТекРасшифровка - расшифровка текущей строки
// ТекРасшифровкаНачало - расшифровка начала тетекущей строки
//
// Возвращаемое значение:
// Нет
//
// Вызывается из формул элементов диалога:
//
// Описание:
// Производит вывод в печатную форму одной строки запроса.
//
Процедура ПечатьСтроки(Запрос, Ном, НазваниеСекции, ПечТекстСтроки, ТекРасшифровка, ТекРасшифровкаНачало="")
Если (Ном >= НомерГруппировкиПоДоговору) Тогда
ПечЗаявкаС = глФРМ(Запрос. КонОстЗаявкаС,"");
Вал = Запрос. Договор. ВалютаВзаиморасчетов;
//Если (Ном>= НомерГруппировкиПоТМЦ) и (Запрос. КонОстЗаказК<>0) Тогда
// ПечЗаказС = " ----- ";
//Иначе
// ПечЗаказС = "";
//КонецЕсли;
//
Секц = Таб. ПолучитьСекцию(НазваниеСекции);
Если ПустоеЗначение(ТекРасшифровка) = 1 Тогда
Секц. Область(1,1,1,1).Расшифровка("",2);
КонецЕсли;
Таб. ВывестиСекцию(Секц);
Иначе
Вал = "";
ПечЗаявкаС = "";
Секц = Таб. ПолучитьСекцию(НазваниеСекции);
Если Ном < НомерГруппировкиПоТМЦ Тогда
Секц. Область(1,1,1,6).Объединить();
КонецЕсли;
Если ПустоеЗначение(ТекРасшифровка) = 1 Тогда
Секц. Область(1,1,1,1).Расшифровка("",2);
КонецЕсли;
Таб. ВывестиСекцию(Секц);
КонецЕсли;
Если Ном>= НомерГруппировкиПоТМЦ Тогда
Если ВидЕдиницы = 1 Тогда
Ед = Запрос. Номенклатура. ОсновнаяЕдиница;
Иначе
Ед = Запрос. Номенклатура. БазоваяЕдиница;
КонецЕсли;
ПечЗаявкаК = глФРМКоличество(Запрос. КонОстЗаявкаК, Ед);
ПечРезервК = глФРМКоличество(Запрос. КонОстРезерв, Ед);
ПечЗаказК = глФРМКоличество(Запрос. КонОстЗаказК, Ед);
Секц = Таб. ПолучитьСекцию(НазваниеСекции+"К");
Секц. Область(1,1,1,6).Рамка(,0,,);
Если ПустоеЗначение(ТекРасшифровка) = 1 Тогда
Секц. Область(1,1,1,1).Расшифровка("",2);
КонецЕсли;
Таб. ВывестиСекцию(Секц);
КонецЕсли;
глОживить(1);
КонецПроцедуры // ПечатьСтроки()
//
// ПечатьОснований(Заявка)
//
// Параметры:
// Заявка - заявка покупателя, для которой надо вывести заявки введенные на основании
// НазваниеСекции - название выводимой секции
//
// Возвращаемое значение:
// Нет
//
// Вызывается из формул элементов диалога:
//
// Описание:
// Выводит на печать всю цепочку заявок-оснований для переданной заявки
//
Процедура ПечатьОснований(Заявка, НазваниеСекции)
ПечТекстСтрокиСтар = Заявка;
Если ТипЗначенияСтр(Заявка) <> "Документ" Тогда
Возврат;
КонецЕсли;
Если Заявка. Вид() <> "ЗаявкаПокупателя" Тогда
Возврат;
КонецЕсли;
СписокДокументов = СоздатьОбъект("СписокЗначений");
Пока 1 = 1 Цикл
ДокОсн = Заявка. ДокОснование;
Если (ДокОсн. Выбран() = 0) или (ДокОсн. Вид() <> "ЗаявкаПокупателя")
или (СписокДокументов. НайтиЗначение(ДокОсн) <> 0) Тогда
Прервать;
КонецЕсли;
СписокДокументов. ВставитьЗначение(1, ДокОсн);
Заявка = ДокОсн;
КонецЦикла;
Для к = 1 по СписокДокументов. РазмерСписка() Цикл
ТекРасшифровка = СписокДокументов. ПолучитьЗначение(к);
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 |


