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