ТекРасшифровкаНачало = ТекРасшифровка;

ПечТекстСтроки = глПредставлениеДокумента(ТекРасшифровка);

Вал = "";

ПечЗаявкаС = "";

Таб. ВывестиСекцию(НазваниеСекции);

КонецЦикла;

Заявка = ПечТекстСтрокиСтар;

КонецПроцедуры

//

// ВывестиГруппировку(Запрос, Ном)

//

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

// Запрос - объект "Запрос"

// Ном - номер выводимой группировки

//

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

// Нет

//

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

//

// Описание:

// Выводит в печатную форму одну группировку запроса. Если

// Есть нижележащие группировки, они выводятся также с использованием рекурсивного

// вызова этой же процедуры.

//

Процедура ВывестиГруппировку(Запрос, Ном)

Если Ном <= КоличествоГруппировок Тогда

ИмяГруппировки = СписокГруппировок. ПолучитьЗначение(Ном);

Пока Запрос. Группировка(Ном) = 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