![]() |
|
v7: Ведомость По Контрагентам с условием | ☑ | ||
---|---|---|---|---|
0
Popkorm
26.09.11
✎
12:51
|
Хочу вывести в отчетов только по новым контрагентам начиная с 2010 года.Хочу реализовать условие(строю еще один Запрос до 2010):когда в отчет задаю Период с 01.01.2010 по 30.08.2011,то я иду в ЗапросДо2010 и проверяю нет ли у меня записей по Контрагенту до 2010,если есть,то пропускаю этого Контрагента и иду дальше.Только вот в какой процедуре строить это условие не понимаю,Запрос2010 лежит в Процедуре Сформировать.Кидаю всю обработку:
// ПЕРЕМЕННЫЕ МОДУЛЯ // Перем ТекСтрокаВТаблице; // текущая строка в таблице значений МФ // используются для стандартного механизма кнопок "Обновить" и "Настройка" Перем Таб; Перем Обновить; Перем Расшифровка; Перем СписокГруппировок; Перем КоличествоГруппировок; Перем НомерГруппировкиПоДоговору; Перем НомерГруппировкиПоКонтрагенту; // списки значений, в которых определены возможные типы операций Перем СписокОперДебет, СписокОперКредит; Перем ВалютаОтчета; Процедура ВывестиГруппировку(Запрос,Ном) Далее //////////////////////////////////////////////////////////////////////////////// // ПРОЦЕДУРЫ И ФУНКЦИИ МОДУЛЯ //****************************************************************************** // ВыбратьПоФильтру() // // Параметры: // Нет // // Описание: // Открывает обработку отбора элементов по произвольному фильтру // Процедура ВыбратьПоФильтру() Перем ВидЗначенияПодбора; ВидЗначенияПодбора=СокрЛП(ТаблицаМФ.Вид); Если ПустоеЗначение(ВидЗначенияПодбора)=1 Тогда Возврат; КонецЕсли; СписокПараметров=СоздатьОбъект("СписокЗначений"); СписокПараметров.ДобавитьЗначение("", "ИмяВызвавшейФормы"); СписокПараметров.ДобавитьЗначение(ТаблицаМФ.Тип, "Тип"); СписокПараметров.ДобавитьЗначение(ВидЗначенияПодбора,"Вид"); СписокПараметров.ДобавитьЗначение(СписокЭлементовМФ, "Объекты"); ТаблицаМФ.ФлВкл=2; ОткрытьФорму("Обработка.ПодборОбъектов#",СписокПараметров); КонецПроцедуры // ВыбратьПоФильтру //****************************************************************************** // ПерерисовкаНазванийЗакладок // // Параметры: // Нет // // Описание: // Добавляет "(!)" в заголовок закладки с множественным фильтром, когда этот фильтр задан // Функция ПерерисовкаНазванийЗакладок() Форма.Закладки.УстановитьЗначение(2,?(глМножественныйФильтрЗадан(ТаблицаМФ)=1,"(!) ","")+"Множественный фильтр"); КонецФункции // ПерерисовкаНазванийЗакладок //****************************************************************************** // УправлениеДиалогом() // // Параметры: // Нет // // Возвращаемое значение: // Нет // // Описание: // Управление доступностью элементов диалога. // Процедура УправлениеДиалогом() Если Форма.Закладки.ТекущаяСтрока() = 1 Тогда Форма.ИспользоватьСлой("Шапка,Подвал,Основной1,Основной2,Разделитель"+СокрЛП(ВидРазделителя)); Иначе Форма.ИспользоватьСлой("Шапка,МФ,Подвал"); КонецЕсли; КонецПроцедуры //УправлениеДиалогом() //****************************************************************************** // РасшифровкаОбновить(Обновить) // // Параметры: // Обновить = 1 - нажата кнопка "Обновить" // 2 - нажата кнопка "Настройка" // // Возвращаемое значение: // Расшифровка (список значений) // // Вызывается из формул элементов диалога: // из таблицы, кнопки "Обновить" и "Настройка" // // Описание: // функция для стандартного механизма кнопок ""Обновить" и "Настройка"" // помещает значение параметра в список Расшифровка и возвращает этот список // Функция РасшифровкаОбновить(Обновить) Расшифровка.Установить("Обновить", Обновить); Возврат Расшифровка; КонецФункции //РасшифровкаОбновить() //****************************************************************************** // ИзменениеПорядкаГрупп(НаправлениеСдвига) // // Параметры: // НаправлениеСдвига = -1 - вниз // 1 - вверх // Возвращаемое значение: // Нет // // Вызывается из формул элементов диалога: // кнопки "вверх" и "вниз" рядом со списком группировок // // Описание: // Процедура производит сдвиг текущей группировки в общем // списке группировок на "НаправлениеСдвига" позиций // Процедура ИзменениеПорядкаГрупп(НаправлениеСдвига) ТекСтр = Группировки.ТекущаяСтрока(); ПослСдвигСтр = Группировки.РазмерСписка() - 1; Если ТекСтр <= ПослСдвигСтр Тогда Если не((НаправлениеСдвига = 1) и (ТекСтр = ПослСдвигСтр)) Тогда Группировки.СдвинутьЗначение(НаправлениеСдвига, ТекСтр); КонецЕсли; Иначе Предупреждение("Группировка ""По документам движения"" всегда находится |в конце списка и не перемещается.",60); КонецЕсли; КонецПроцедуры // ИзменениеПорядкаГрупп() //****************************************************************************** // УстановитьГруппировкиЗапроса(ТекстЗапроса, ТекстЗагол) // // Параметры: ТекстЗапроса - переданный по ссылке текст запроса // ТекстЗагол - переданный по ссылке текст заголовка // // Возвращаемое значение: // Нет // // Описание: // Дополняет строку запроса и заголовка в соответствии с выбранными группировками. // Процедура УстановитьГруппировкиЗапроса(ТекстЗапроса, ТекстЗагол) СписокГруппировок = СоздатьОбъект("СписокЗначений"); Для Сч=1 По Группировки.РазмерСписка() Цикл Если Группировки.Пометка(Сч)=1 Тогда ПредставлениеГрупп=""; ТекстГрупп=Группировки.ПолучитьЗначение(Сч,ПредставлениеГрупп); Если (ТекстГрупп = "Контрагент") Тогда ТекстБезГрупп = " без групп"; Иначе ТекстБезГрупп = ""; КонецЕсли; Если (ТекстГрупп = "СтавкаНП") и (СписокВидовОтчетов.ТекущаяСтрока()<>1) Тогда Предупреждение("Группировка по ставкам НП возможна только в отчете по покупателям!",60); Продолжить; КонецЕсли; ТекстЗапроса = ТекстЗапроса + "Группировка "+ТекстГрупп+ТекстБезГрупп+";"; ТекстЗагол = ТекстЗагол + ?(ТекстЗагол="",""," / ")+ПредставлениеГрупп; СписокГруппировок.ДобавитьЗначение(ТекстГрупп,ПредставлениеГрупп); Если ТекстГрупп = "Договор" Тогда НомерГруппировкиПоДоговору = СписокГруппировок.РазмерСписка(); ИначеЕсли ТекстГрупп = "Контрагент" Тогда НомерГруппировкиПоКонтрагенту = СписокГруппировок.РазмерСписка(); КонецЕсли; КонецЕсли; КонецЦикла; КонецПроцедуры //УстановитьГруппировкиЗапроса() //****************************************************************************** // ПечатьСтроки(Запрос,Ном,НазваниеСекции,ПечТекстСтроки,ТекРасшифровка) // // Параметры: // Запрос - объект "Запрос", на основании которого строится отчет // Ном - Номер группировки запроса (Число) // НазваниеСекции - название секции, которую следует использовать (Строка) // ПечТекстСтроки - текстовое представление текущей строки // ТекРасшифровка - расшифровка текущей строки // // Возвращаемое значение: // Нет // // Вызывается из формул элементов диалога: // // Описание: // Производит вывод в печатную форму одной строки запроса. // Процедура ПечатьСтроки(Запрос,Ном,НазваниеСекции,ПечТекстСтроки,ТекРасшифровка) Если (Ном >= НомерГруппировкиПоДоговору) Тогда ПечВал = Запрос.Договор.ВалютаВзаиморасчетов; Иначе ПечВал = ""; КонецЕсли; ПечТип = ВалютаОтчета; //начальный остаток ПечНачОст = глФРМ(Запрос.НачОст); ПечНачОстВ = глФРМ(Запрос.НачОстВ); Таб.ВывестиСекцию(НазваниеСекции+"|Начало"); // приходы (по операциям) Приход = Запрос.Приход; ПриходВ = Запрос.ПриходВ; ВсегоСтрок = СписокОперДебет.РазмерСписка(); Для СчЦикла =1 по ВсегоСтрок Цикл НазвОперации = СписокОперДебет.ПолучитьЗначение(ВсегоСтрок - СчЦикла + 1).Идентификатор(); ТекПриход = Запрос.ПолучитьАтрибут(НазвОперации+"Приход"); ТекПриходВ = Запрос.ПолучитьАтрибут(НазвОперации+"ПриходВ"); Приход = Приход - ТекПриход; ПриходВ = ПриходВ - ТекПриходВ; ПечПриход = глФРМ(ТекПриход); ПечПриходВ = глФРМ(ТекПриходВ); Таб.ПрисоединитьСекцию(НазваниеСекции+"|Приход"); КонецЦикла; Если ПоОперациям = 0 Тогда Приход = Приход - Запрос.ВозвратОтПокупателя-Запрос.ВозвратПоставщику; ПриходВ = ПриходВ - Запрос.ВозвратОтПокупателяВ-Запрос.ВозвратПоставщикуВ; Иначе КонецЕсли; ПечПриход = глФРМ(Приход); ПечПриходВ = глФРМ(ПриходВ); Таб.ПрисоединитьСекцию(НазваниеСекции+"|Приход"); // расходы (по операциям) Расход = Запрос.Расход; РасходВ = Запрос.РасходВ; ВсегоСтрок = СписокОперКредит.РазмерСписка(); Для СчЦикла=1 по ВсегоСтрок Цикл НазвОперации = СписокОперКредит.ПолучитьЗначение(ВсегоСтрок - СчЦикла + 1).Идентификатор(); ТекРасход = Запрос.ПолучитьАтрибут(НазвОперации+"Расход"); ТекРасходВ = Запрос.ПолучитьАтрибут(НазвОперации+"РасходВ"); Расход = Расход - ТекРасход; РасходВ = РасходВ - ТекРасходВ; ПечРасход = глФРМ(ТекРасход); ПечРасходВ = глФРМ(ТекРасходВ); Таб.ПрисоединитьСекцию(НазваниеСекции+"|Расход"); КонецЦикла; Если ПоОперациям = 0 Тогда Расход = Расход - Запрос.ВозвратПоставщику-Запрос.ВозвратОтПокупателя; РасходВ = РасходВ - Запрос.ВозвратПоставщикуВ - Запрос.ВозвратОтПокупателяВ; КонецЕсли; ПечРасход = глФРМ(Расход); ПечРасходВ = глФРМ(РасходВ); Таб.ПрисоединитьСекцию(НазваниеСекции+"|Расход"); // конечный остаток ПечКонДолгНаш = ?(Запрос.КонОст <0, глФРМ(-Запрос.КонОст ),""); ПечКонДолгНашВ = ?(Запрос.КонОстВ <0, глФРМ(-Запрос.КонОстВ ),""); ПечКонДолгКлиента = ?(Запрос.КонОст >0, глФРМ(Запрос.КонОст ),""); ПечКонДолгКлиентаВ = ?(Запрос.КонОстВ >0, глФРМ(Запрос.КонОстВ ),""); Таб.ПрисоединитьСекцию(НазваниеСекции+"|КонечныйОстаток"); глОживить(1); КонецПроцедуры // ПечатьСтроки() //****************************************************************************** // ПечатьСтрокиДокумента(Запрос,Ном,НазваниеСекции,ПечТекстСтроки,ТекРасшифровка, ТекОст,ТекОстВ) // // Параметры: // Запрос - объект "Запрос", на основании которого строится отчет // Ном - Номер группировки запроса (Число) // НазваниеСекции - название секции, которую следует использовать (Строка) // ПечТекстСтроки - текстовое представление текущей строки // ТекРасшифровка - расшифровка текущей строки // ТекОст - // ТекОстВ - // // Возвращаемое значение: // Нет // // Вызывается из формул элементов диалога: // // Описание: // Производит вывод в печатную форму одной строки запроса по группировке "Документ". // Процедура ПечатьСтрокиДокумента(Запрос,Ном,НазваниеСекции,ПечТекстСтроки,ТекРасшифровка, ТекОст,ТекОстВ) Если (Ном >= НомерГруппировкиПоДоговору) Тогда ПечВал = Запрос.Договор.ВалютаВзаиморасчетов; Иначе ПечВал = ""; КонецЕсли; ПечТип = ВалютаОтчета; //начальный остаток Таб.ВывестиСекцию(НазваниеСекции+"|Начало"); // приходы (по операциям) Приход = Запрос.Приход; ПриходВ = Запрос.ПриходВ; ТекОст = ТекОст + Приход; ТекОстВ = ТекОстВ + ПриходВ; ВсегоСтрок = СписокОперДебет.РазмерСписка(); Для СчЦикла =1 по ВсегоСтрок Цикл НазвОперации = СписокОперДебет.ПолучитьЗначение(ВсегоСтрок - СчЦикла + 1).Идентификатор(); ТекПриход = Запрос.ПолучитьАтрибут(НазвОперации+"Приход"); ТекПриходВ = Запрос.ПолучитьАтрибут(НазвОперации+"ПриходВ"); Приход = Приход - ТекПриход; ПриходВ = ПриходВ - ТекПриходВ; ПечПриход = глФРМ(ТекПриход); ПечПриходВ = глФРМ(ТекПриходВ); Таб.ПрисоединитьСекцию(НазваниеСекции+"|Приход"); КонецЦикла; ПечПриход = глФРМ(Приход); ПечПриходВ = глФРМ(ПриходВ); Таб.ПрисоединитьСекцию(НазваниеСекции+"|Приход"); // расходы (по операциям) Расход = Запрос.Расход; РасходВ = Запрос.РасходВ; ТекОст = ТекОст - Расход; ТекОстВ = ТекОстВ - РасходВ; ВсегоСтрок = СписокОперКредит.РазмерСписка(); Для СчЦикла =1 по ВсегоСтрок Цикл НазвОперации = СписокОперКредит.ПолучитьЗначение(ВсегоСтрок - СчЦикла + 1).Идентификатор(); ТекРасход = Запрос.ПолучитьАтрибут(НазвОперации+"Расход"); ТекРасходВ = Запрос.ПолучитьАтрибут(НазвОперации+"РасходВ"); Расход = Расход - ТекРасход; РасходВ = РасходВ - ТекРасходВ; ПечРасход = глФРМ(ТекРасход); ПечРасходВ = глФРМ(ТекРасходВ); Таб.ПрисоединитьСекцию(НазваниеСекции+"|Расход"); КонецЦикла; ПечРасход = глФРМ(Расход); ПечРасходВ = глФРМ(РасходВ); Таб.ПрисоединитьСекцию(НазваниеСекции+"|Расход"); // конечный остаток ПечКонДолгНаш = ?(ТекОст <0, глФРМ(-ТекОст ),""); ПечКонДолгНашВ = ?(ТекОстВ <0, глФРМ(-ТекОстВ ),""); ПечКонДолгКлиента = ?(ТекОст >0, глФРМ( ТекОст ),""); ПечКонДолгКлиентаВ = ?(ТекОстВ >0, глФРМ( ТекОстВ ),""); Таб.ПрисоединитьСекцию(НазваниеСекции+"|КонечныйОстаток"); глОживить(1); КонецПроцедуры // ПечатьСтрокиДокумента() //****************************************************************************** // ВывестиГруппировку(Запрос,Ном) // // Параметры: // Запрос - объект "Запрос" // Ном - номер выводимой группировки // // Возвращаемое значение: // Нет // // Вызывается из формул элементов диалога: // // Описание: // Выводит в печатную форму одну группировку запроса. Если // Есть нижележащие группировки, они выводятся также с использованием рекурсивного // вызова этой же процедуры. // Процедура ВывестиГруппировку(Запрос,Ном) Если Ном <= КоличествоГруппировок Тогда НазваниеГруппировки = СписокГруппировок.ПолучитьЗначение(Ном); Если НазваниеГруппировки = "Документ" Тогда ТекОст = Запрос.НачОст; ТекОстВ = Запрос.НачОстВ; КонецЕсли; Пока Запрос.Группировка(Ном) = 1 Цикл Если НазваниеГруппировки = "Документ" Тогда НазваниеСекции="Документ"; Иначе НазваниеСекции="Строка"+Ном; КонецЕсли; Если (Ном >= НомерГруппировкиПоДоговору) Тогда Если Запрос.Договор.ВалютаВзаиморасчетов<>ВалютаОтчета Тогда НазваниеСекции = НазваниеСекции + "В"; КонецЕсли; КонецЕсли; ПечТекстСтроки = Запрос.ПолучитьАтрибут(НазваниеГруппировки); Если (ТипЗначенияСтр(ПечТекстСтроки) = "Документ") или (ТипЗначенияСтр(ПечТекстСтроки) = "Справочник") Тогда ТекРасшифровка = ПечТекстСтроки; Иначе ТекРасшифровка = ""; КонецЕсли; ПечТекстСтроки = ?(ПустоеЗначение(ПечТекстСтроки)=1,глПредставлениеПустогоЗначения(НазваниеГруппировки),ПечТекстСтроки); Если (НазваниеГруппировки = "Договор") и (Ном < НомерГруппировкиПоКонтрагенту) Тогда ПечТекстСтроки = ""+СокрП(ТекРасшифровка.Владелец.Наименование)+"; "+ПечТекстСтроки; ИначеЕсли НазваниеГруппировки = "Документ" Тогда ПечТекстСтроки = ""+глНазваниеДокументаВЖурнале(ПечТекстСтроки)+" № "+ПечТекстСтроки.НомерДок; Если глЕстьРеквизитШапки("НомерДокВходящий",Запрос.Документ.Вид()) = 1 Тогда ПечТекстСтроки = ПечТекстСтроки + РазделительСтрок + "Вх.№ " + сокрлп(Запрос.Документ.НомерДокВходящий) + " от " + Запрос.Документ.ДатаДокВходящий; // Климов 02.04.2003 КонецЕсли; ИначеЕсли НазваниеГруппировки = "КредДокумент" Тогда ПечТекстСтроки = глПредставлениеДокумента(ПечТекстСтроки); КонецЕсли; Если НазваниеГруппировки = "Документ" Тогда ПечатьСтрокиДокумента(Запрос,Ном,НазваниеСекции,ПечТекстСтроки,ТекРасшифровка,ТекОст,ТекОстВ); Иначе ПечатьСтроки(Запрос,Ном,НазваниеСекции,ПечТекстСтроки,ТекРасшифровка); КонецЕсли; // если есть более детальная группировка - выведем ее Если КоличествоГруппировок > Ном Тогда ВывестиГруппировку(Запрос,Ном+1); КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры // ВывестиГруппировку() //****************************************************************************** // ЗаполнитьСпискиОпераций() // // Параметры: // Нет // // Возвращаемое значение: // Нет // // Вызывается из формул элементов диалога: // // Описание: // В этой процедуры в списки операций прописываются значения кодов операций, // движения по которым мы хотели бы показать в отдельных колонках. // Операции задаются раздельно по дебету и кредиту // Процедура ЗаполнитьСпискиОпераций() СписокОперДебет = СоздатьОбъект("СписокЗначений"); СписокОперКредит= СоздатьОбъект("СписокЗначений"); Если ПоОперациям = 1 Тогда СписокОперДебет.ДобавитьЗначение(глКО.Продажа); СписокОперДебет.ДобавитьЗначение(глКО.ВозвратПоставщику); СписокОперДебет.ДобавитьЗначение(глКО.ОтчетРеализатора); СписокОперДебет.ДобавитьЗначение(глКО.ОплатаПоставщику); СписокОперДебет.ДобавитьЗначение(глКО.ВозвратОплатыПокупателю); СписокОперДебет.ДобавитьЗначение(глКО.СуммоваяРазница); СписокОперДебет.ДобавитьЗначение(глКО.КурсоваяРазница); СписокОперКредит.ДобавитьЗначение(глКО.Закупка); СписокОперКредит.ДобавитьЗначение(глКО.ДополнительныеРасходы); СписокОперКредит.ДобавитьЗначение(глКО.ВозвратОтПокупателя); СписокОперКредит.ДобавитьЗначение(глКО.ВозвратОтПокупателяЕНВД); СписокОперКредит.ДобавитьЗначение(глКО.ВозвратОплатыОтПоставщика); СписокОперКредит.ДобавитьЗначение(глКО.ОплатаОтПокупателя); СписокОперКредит.ДобавитьЗначение(глКО.ОтчетКомитенту); СписокОперКредит.ДобавитьЗначение(глКО.СуммоваяРазница); СписокОперКредит.ДобавитьЗначение(глКО.КурсоваяРазница); КонецЕсли; КонецПроцедуры // ЗаполнитьСпискиОпераций() //****************************************************************************** // ДобПеремЗапроса(ТекстЗапроса,НазвПерем,НазвПеремРег) // // Параметры: ТекстЗапроса - текст запроса // НазвПерем - название переменной запроса // НазвПеремРег - название ресурса, измерения запроса // // Возвращаемое значение: // Нет // // Описание: // Добавляет в текст запроса описание переменных запроса. // Процедура ДобПеремЗапроса(ТекстЗапроса,НазвПерем,НазвПеремРег) ТекстЗапроса = ТекстЗапроса + РазделительСтрок; ВидОтчета = СписокВидовОтчетов.ТекущаяСтрока(); Если (ВидОтчета=1) Тогда // покупатели ТекстЗапроса = ТекстЗапроса + НазвПерем+" = Регистр.Покупатели."+НазвПеремРег+";"; КонецЕсли; Если (ВидОтчета=2) Тогда // поставщики ТекстЗапроса = ТекстЗапроса + НазвПерем+" = Регистр.Поставщики."+НазвПеремРег+";"; КонецЕсли; Если (ВидОтчета=3) Тогда // оба ТекстЗапроса = ТекстЗапроса + НазвПерем + "= Регистр.Покупатели."+НазвПеремРег+","+ "Регистр.Поставщики."+НазвПеремРег+";"; КонецЕсли; КонецПроцедуры //ДобПеремЗапроса() //****************************************************** // Процедура Сформировать(ЗакрытьДиалог=0) Перем Запрос, ТекстЗапроса,Запросов,ТекстЗапросов; Если глПроверкаДаты(ДатаНачала,ДатаКонца)=0 Тогда Возврат; КонецЕсли; // Здесь формируется отчет, который использует регистры, критичные к // последовательности проведения документов // поэтому сравним установленные даты периода формируемого отчета с ГП Если глПроверкаАктуальностиОтчета(ДатаНачала,ДатаКонца,Последовательность.ОсновнаяПоследовательность)=0 Тогда Возврат; КонецЕсли; Если (ТипЗначенияСтр(Таб) <> "Таблица") ИЛИ (Обновить = 0) Тогда Таб = СоздатьОбъект("Таблица"); Иначе Таб.Очистить(); КонецЕсли; ВалютаОтчета = ?(ВыбВидВалюты = 1, глРубли, глДоллары); Таб.ИсходнаяТаблица( "ВедомостьПоКонтрагентам" ); ЗаполнитьСпискиОпераций(); Расшифровка = СоздатьОбъект("СписокЗначений"); Расшифровка.Установить("Отчет", "ВедомостьПоКонтрагентам"); // все настройки помещаем в список Расшифровка.Установить("ДатаНачала", ДатаНачала); Расшифровка.Установить("ДатаКонца", ДатаКонца); Расшифровка.Установить("ДатаНачалаПер", ДатаНачалаПер); Расшифровка.Установить("ДатаКонецПер", ДатаКонецПер); Расшифровка.Установить("ВыбРазделитель1",ВыбРазделитель1); Расшифровка.Установить("ВыбРазделитель2",ВыбРазделитель2); Расшифровка.Установить("ВыбРазделитель3",ВыбРазделитель3); Расшифровка.Установить("ВидРазделителя",ВидРазделителя); Расшифровка.Установить("ВыбКонтрагент", ВыбКонтрагент); Расшифровка.Установить("ВыбМенеджер", ВыбМенеджер); // Климов 18.07.2002 Расшифровка.Установить("ВыбМенеджерКанц",ВыбМенеджерКанц); // Климов 19.04.2003 Расшифровка.Установить("ВыбАналитика", ВыбАналитика); // Климов 02.04.2003 Расшифровка.Установить("ВыбДоговор", ВыбДоговор); Расшифровка.Установить("ПоОперациям", ПоОперациям); Расшифровка.Установить("ВыбВидВалюты", ВыбВидВалюты); Расшифровка.Установить("СписокВидовОтчетов",СписокВидовОтчетов.ТекущаяСтрока()); Расшифровка.Установить("Группировки", Группировки); глПриСменеСтрокиТаблицыМФ(1,ТекСтрокаВТаблице,Контекст); // записываем изменения если они были // запомним МФ только если он задан Если глМножественныйФильтрЗадан(ТаблицаМФ) = 1 Тогда Расшифровка.Установить("ТаблицаМФ", ТаблицаМФ); КонецЕсли; //до 2010 Запросов = СоздатьОбъект("Запрос"); ТекстЗапросов = "//{{ЗАПРОС(Сформировать) |Период с ДатаНачалаПер по ДатаКонецПер;"; ДобПеремЗапроса(ТекстЗапросов,"Фирма", "Фирма"); ДобПеремЗапроса(ТекстЗапросов,"УпрАналитика","Фирма.УпрАналитика"); ДобПеремЗапроса(ТекстЗапросов,"ЮрЛицо", "Фирма.ЮрЛицо"); ДобПеремЗапроса(ТекстЗапросов,"Контрагент", "Договор.Владелец"); ДобПеремЗапроса(ТекстЗапросов,"СвойствоКонтр","Договор.Владелец.ОсновноеСвойство.ЗначениеСвойства"); ДобПеремЗапроса(ТекстЗапросов,"Договор", "Договор"); ДобПеремЗапроса(ТекстЗапросов,"КодОперации", "КодОперации"); ДобПеремЗапроса(ТекстЗапросов,"Менеджер", "Договор.Владелец.Менеджер"); ДобПеремЗапроса(ТекстЗапросов,"МенеджерКанц","Договор.Владелец.МенеджерКанц"); // Климов 16.04.2003 //ДобПеремЗапроса(ТекстЗапроса,"Менеджер", "Менеджер"); ДобПеремЗапроса(ТекстЗапросов,"Аналитика", "Аналитика"); // Климов 02.04.2003 Если СписокВидовОтчетов.ТекущаяСтрока()=1 Тогда // по покупателям ДобПеремЗапроса(ТекстЗапросов,"СтавкаНП","СтавкаНП"); КонецЕсли; ДобПеремЗапроса(ТекстЗапросов,"ВидДолга","ВидДолга"); ДобПеремЗапроса(ТекстЗапросов,"КредДокумент","КредДокумент"); ДобПеремЗапроса(ТекстЗапросов,"СуммаВ","СуммаВал"); Если ВыбВидВалюты = 1 Тогда ДобПеремЗапроса(ТекстЗапросов,"Сумма","СуммаРуб"); Иначе ДобПеремЗапроса(ТекстЗапросов,"Сумма","СуммаУпр"); КонецЕсли; ТекстЗапросов = ТекстЗапросов + "Функция НачОст = НачОст(Сумма); |Функция Приход = Приход(Сумма); |Функция Расход = Расход(Сумма); |Функция ВозвратОтПокупателя = Расход(Сумма)Когда (КодОперации = глКО.ВозвратОтПокупателя); |Функция ВозвратПоставщику = Приход(Сумма)Когда (КодОперации = глКО.ВозвратПоставщику); |Функция КонОст = КонОст(Сумма);"; ТекстЗапросов = ТекстЗапросов + "Функция НачОстВ = НачОст(СуммаВ); |Функция ПриходВ = Приход(СуммаВ); |Функция РасходВ = Расход(СуммаВ); |Функция КонОстВ = КонОст(СуммаВ); |Функция ВозвратОтПокупателяВ = Расход(Сумма)Когда( КодОперации = глКО.ВозвратОтПокупателя); |Функция ВозвратПоставщикуВ = Приход(Сумма)Когда (КодОперации = глКО.ВозвратПоставщику); |Условие (КодОперации <> глКО.ЗачтенАвансПоставщику); |Условие (КодОперации <> глКО.ЗачтенАвансПокупателя); |Условие (КодОперации <> глКО.СторнированАванс); |Условие (КодОперации <> глКО.ЗачтенВозвратПокупателя); |Условие (КодОперации <> глКО.СторнированВозврат);"; Если Запросов.Выполнить(ТекстЗапросов) = 0 Тогда Возврат; КонецЕсли; //Пока Запросов.Группировка(1) = 1 Цикл // Контрагенты=Запросов.Контрагент; //до 2010 (Конец) //Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ДатаНачала по ДатаКонца;"; ДобПеремЗапроса(ТекстЗапроса,"Фирма", "Фирма"); ДобПеремЗапроса(ТекстЗапроса,"УпрАналитика","Фирма.УпрАналитика"); ДобПеремЗапроса(ТекстЗапроса,"ЮрЛицо", "Фирма.ЮрЛицо"); ДобПеремЗапроса(ТекстЗапроса,"Контрагент", "Договор.Владелец"); ДобПеремЗапроса(ТекстЗапроса,"СвойствоКонтр","Договор.Владелец.ОсновноеСвойство.ЗначениеСвойства"); ДобПеремЗапроса(ТекстЗапроса,"Договор", "Договор"); ДобПеремЗапроса(ТекстЗапроса,"КодОперации", "КодОперации"); ДобПеремЗапроса(ТекстЗапроса,"Менеджер", "Договор.Владелец.Менеджер"); ДобПеремЗапроса(ТекстЗапроса,"МенеджерКанц","Договор.Владелец.МенеджерКанц"); // Климов 16.04.2003 //ДобПеремЗапроса(ТекстЗапроса,"Менеджер", "Менеджер"); ДобПеремЗапроса(ТекстЗапроса,"Аналитика", "Аналитика"); // Климов 02.04.2003 Если СписокВидовОтчетов.ТекущаяСтрока()=1 Тогда // по покупателям ДобПеремЗапроса(ТекстЗапроса,"СтавкаНП","СтавкаНП"); КонецЕсли; ДобПеремЗапроса(ТекстЗапроса,"ВидДолга","ВидДолга"); ДобПеремЗапроса(ТекстЗапроса,"КредДокумент","КредДокумент"); ДобПеремЗапроса(ТекстЗапроса,"СуммаВ","СуммаВал"); Если ВыбВидВалюты = 1 Тогда ДобПеремЗапроса(ТекстЗапроса,"Сумма","СуммаРуб"); Иначе ДобПеремЗапроса(ТекстЗапроса,"Сумма","СуммаУпр"); КонецЕсли; ТекстЗапроса = ТекстЗапроса + "Функция НачОст = НачОст(Сумма); |Функция Приход = Приход(Сумма); |Функция Расход = Расход(Сумма); |Функция ВозвратОтПокупателя = Расход(Сумма)Когда (КодОперации = глКО.ВозвратОтПокупателя); |Функция ВозвратПоставщику = Приход(Сумма)Когда (КодОперации = глКО.ВозвратПоставщику); |Функция КонОст = КонОст(Сумма);"; ТекстЗапроса = ТекстЗапроса + "Функция НачОстВ = НачОст(СуммаВ); |Функция ПриходВ = Приход(СуммаВ); |Функция РасходВ = Расход(СуммаВ); |Функция КонОстВ = КонОст(СуммаВ); |Функция ВозвратОтПокупателяВ = Расход(Сумма)Когда( КодОперации = глКО.ВозвратОтПокупателя); |Функция ВозвратПоставщикуВ = Приход(Сумма)Когда (КодОперации = глКО.ВозвратПоставщику); |Условие (КодОперации <> глКО.ЗачтенАвансПоставщику); |Условие (КодОперации <> глКО.ЗачтенАвансПокупателя); |Условие (КодОперации <> глКО.СторнированАванс); |Условие (КодОперации <> глКО.ЗачтенВозвратПокупателя); |Условие (КодОперации <> глКО.СторнированВозврат);"; Для СчЦикла =1 по СписокОперДебет.РазмерСписка() Цикл НазвОперации = СписокОперДебет.ПолучитьЗначение(СчЦикла).Идентификатор(); ТекстЗапроса = ТекстЗапроса + РазделительСтрок+ "Функция "+НазвОперации+"Приход = Приход(Сумма) когда (КодОперации = глКО."+НазвОперации+");"+ "Функция "+НазвОперации+"ПриходВ = Приход(СуммаВ) когда (КодОперации = глКО."+НазвОперации+");"; КонецЦикла; Для СчЦикла=1 по СписокОперКредит.РазмерСписка() Цикл НазвОперации = СписокОперКредит.ПолучитьЗначение(СчЦикла).Идентификатор(); ТекстЗапроса = ТекстЗапроса + РазделительСтрок+ "Функция "+НазвОперации+"Расход = Расход(Сумма) когда (КодОперации = глКО."+НазвОперации+");"+ "Функция "+НазвОперации+"РасходВ = Расход(СуммаВ) когда (КодОперации = глКО."+НазвОперации+");"; КонецЦикла; Загол=""; НетОш = 1; // нет ошибок при наложении фильтров Если ВидРазделителя = 1 Тогда НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "Фирма",ВыбРазделитель1,"ВыбРазделитель1",ТекстЗапроса,Загол); ИначеЕсли ВидРазделителя = 2 Тогда НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "ЮрЛицо",ВыбРазделитель2,"ВыбРазделитель2",ТекстЗапроса,Загол); ИначеЕсли ВидРазделителя = 3 Тогда НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "УпрАналитика",ВыбРазделитель3,"ВыбРазделитель3",ТекстЗапроса,Загол); КонецЕсли; НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "Менеджер",ВыбМенеджер,"ВыбМенеджер",ТекстЗапроса,Загол,"СвойстваКонтрагентов"); // Климов 18.07.2002 НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "МенеджерКанц",ВыбМенеджерКанц,"ВыбМенеджерКанц",ТекстЗапроса,Загол,"СвойстваКонтрагентов"); // Климов 19.04.2003 НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "Аналитика",ВыбАналитика,"ВыбАналитика",ТекстЗапроса,Загол,"Аналитика"); // Климов 02.04.2003 НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "Контрагент",ВыбКонтрагент,"ВыбКонтрагент",ТекстЗапроса,Загол,"СвойстваКонтрагентов"); НетОш = НетОш * глФильтрПоПеременнойЗапроса(ТаблицаМФ, "Договор",ВыбДоговор,"ВыбДоговор",ТекстЗапроса,Загол); Если НетОш = 0 Тогда Возврат; КонецЕсли; НомерГруппировкиПоДоговору = 9999; // невозможно большое значение НомерГруппировкиПоКонтрагенту = 9999; // невозможно большое зна |
|||
1
zak555
26.09.11
✎
12:53
|
новые это по которым не было никогда движений ?
|
|||
2
zak555
26.09.11
✎
12:53
|
если да, то нужно смотреть на справочник договоры и скать там реквизит дата начала договора
и условие в запросе написать |
|||
3
Popkorm
26.09.11
✎
13:15
|
(2)у договора нет помоему Реквизит дата,есть у Контрагент Дата Создания,я по нему делал,но у меня куча контрагентов у которых Дата Создания пустой.По этому по записям хочу пойти
|
|||
4
Eugeneer
26.09.11
✎
13:16
|
(3) Есть!
|
|||
5
FIXXXL
26.09.11
✎
13:17
|
(3) не проще дату проставить по самому первому доку в базе?
|
|||
6
Eugeneer
26.09.11
✎
13:17
|
Если там пусто. Напиши обработку которая по всем заполнит. Например по первому доку по контрагенту установит дату.
|
|||
7
Eugeneer
26.09.11
✎
13:20
|
Или сделай запрос с условием.
Ляляля ИЗ Между Начало КОнец. ГДЕ Контр В (выбрать ляляляля из движенийвзаиморасчетов МЕЖДУ НачалоПрошлогоПериода КОнецПрошлогопериолда ГДЕ Рег.Суммаоборот <> 0) |
|||
8
Eugeneer
26.09.11
✎
13:22
|
епт. у тебя семерка. а в теме стоит восьмерка
|
|||
9
Popkorm
26.09.11
✎
13:24
|
(8)Упс....по умолчанию стоит 8-ка походу,
|
|||
10
Popkorm
26.09.11
✎
13:26
|
(5)что та не понял, что имеешь ввиду:"по самому первому доку в базе?"
|
|||
11
zak555
26.09.11
✎
13:39
|
(5) фигня
вдруг базу обрезали, а движения раньше были |
|||
12
zak555
26.09.11
✎
13:42
|
добавить реквизит в договор или контрагента
|
|||
13
zak555
26.09.11
✎
13:43
|
(7) что за "между" ?
ты про параметры виртуальной таблицы обороты сьлыхал ? |
|||
14
Eugeneer
26.09.11
✎
13:46
|
(13) я от балды написал чтобы только суть была. Но у автора семерка.
|
|||
15
Popkorm
26.09.11
✎
13:48
|
так,по моему у меня в 7.7 в теме
|
|||
16
Popkorm
26.09.11
✎
13:50
|
(12)еще самое интересное что ДатаСоздания 01.02.2010 а доки есть с этим Контрагентом на 12.11.2009(лазяли в прошлом периодом)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |