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


