Помогите с оброботкой

Форум 1С: Одинэс.Ру

Найти!

Помогите с оброботкой

itt5082
13.05.2009 - 11:19
Есть оброботка не могу понят как вставить интервал
плиз помогите
вод код
 
Функция ПолучитьБлокУсловийВыборки()
БлокУсловийРеализаций="";
Если Не Организация.Пустая() Тогда
БлокУсловийРеализаций=БлокУсловийРеализаций+"
| И РеализацияТоваровУслуг.Организация = &Организация";
КонецЕсли;
Если Не Контрагент.Пустая() Тогда
БлокУсловийРеализаций=БлокУсловийРеализаций+"
| И РеализацияТоваровУслуг.Контрагент = &Контрагент";
КонецЕсли;
Если Не ДоговорКонтрагента.Пустая() Тогда
БлокУсловийРеализаций=БлокУсловийРеализаций+"
| И РеализацияТоваровУслуг.ДоговорКонтрагента = &ДоговорКонтрагента";
КонецЕсли;
БлокУсловийПлатежей="";
Если Не Организация.Пустая() Тогда
БлокУсловийПлатежей=БлокУсловийПлатежей+"
| И Организация = &Организация";
КонецЕсли;
Если Не Контрагент.Пустая() Тогда
БлокУсловийПлатежей=БлокУсловийПлатежей+"
| И Контрагент = &Контрагент";
КонецЕсли;
Если Не ДоговорКонтрагента.Пустая() Тогда
БлокУсловийПлатежей=БлокУсловийПлатежей+"
| И ДоговорКонтрагента = &ДоговорКонтрагента";
КонецЕсли;
 
Возврат Новый Структура("БлокУсловийРеализаций, БлокУсловийПлатежей", БлокУсловийРеализаций, БлокУсловийПлатежей);
КонецФункции
 
Процедура КнопкаСформироватьНажатие(Кнопка)
ДатаНачала=?(ДатаНач=Дата("00010101"), Дата("20081201"), НачалоДня(ДатаНач));
ДатаКонца=?(ДатаКон=Дата("00010101"), КонецДня(ТекущаяДата()), КонецДня(ДатаКон));
ТабДок=ЭлементыФормы.ПолеТД;
ТабДок.Очистить();
Макет=ПолучитьМакет("Макет");
ОбластьШапка=Макет.ПолучитьОбласть("Шапка");
ТабДок.Вывести(ОбластьШапка);
ОбластьШапкаТаблицы=Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьКонтрагент=Макет.ПолучитьОбласть("Контрагент");
ОбластьДанные=Макет.ПолучитьОбласть("Данные");
 
СтруктураУсловийВыборки=ПолучитьБлокУсловийВыборки();
 
ЗапросРеализации=Новый Запрос;
ЗапросРеализации.УстановитьПараметр("ДатаНач", ДатаНачала);
ЗапросРеализации.УстановитьПараметр("ДатаКон", ДатаКонца);
ЗапросРеализации.УстановитьПараметр("Организация", Организация);
ЗапросРеализации.УстановитьПараметр("Контрагент", Контрагент);
ЗапросРеализации.УстановитьПараметр("ДоговорКонтрагента", ДоговорКонтрагента);
ЗапросРеализации.УстановитьПараметр("ВалютаРегл", Константы.ВалютаРегламентированногоУчета.Получить());
ЗапросРеализации.Текст=
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| РеализацияТоваровУслуг.Контрагент КАК Контрагент,
| РеализацияТоваровУслуг.Ссылка КАК ДокументОтгрузки,
| РеализацияТоваровУслуг.Номер КАК ДокументОтгрузкиНомер,
| РеализацияТоваровУслуг.ДатаОтгрузки КАК ДокументОтгрузкиДата,
| ВЫБОР
| КОГДА РеализацияТоваровУслуг.ВалютаДокумента = &ВалютаРегл
| ТОГДА РеализацияТоваровУслуг.СуммаДокумента
| ИНАЧЕ ВЫБОР
| КОГДА КурсыВалют.Курс ЕСТЬ NULL
| ТОГДА РеализацияТоваровУслуг.СуммаДокумента
| ИНАЧЕ РеализацияТоваровУслуг.СуммаДокумента * КурсыВалют.Курс / КурсыВалют.Кратность
| КОНЕЦ
| КОНЕЦ КАК ДокументОтгрузкиСумма
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
| ПО РеализацияТоваровУслуг.ВалютаДокумента = КурсыВалют.Валюта
| И (НАЧАЛОПЕРИОДА(РеализацияТоваровУслуг.ДатаОтгрузки, ДЕНЬ) = НАЧАЛОПЕРИОДА(КурсыВалют.Период, ДЕНЬ))
|ГДЕ
| РеализацияТоваровУслуг.ОтражатьВУправленческомУчете = ИСТИНА
| И РеализацияТоваровУслуг.Проведен = ИСТИНА
| И РеализацияТоваровУслуг.СуммаДокумента <> 0
| И РеализацияТоваровУслуг.ДоговорКонтрагента.КонтролироватьЧислоДнейЗадолженности=ИСТИНА
| И РеализацияТоваровУслуг.ДатаОтгрузки МЕЖДУ &ДатаНач И &ДатаКон"+
СтруктураУсловийВыборки.БлокУсловийРеализаций+"
|
|УПОРЯДОЧИТЬ ПО
| РеализацияТоваровУслуг.Контрагент.Наименование,
| ДокументОтгрузкиДата
|ИТОГИ
| СУММА(ДокументОтгрузкиСумма)
|ПО
| Контрагент";
 
ЗапросПлатежи=Новый Запрос;
ЗапросПлатежи.УстановитьПараметр("ДатаНач", ДатаНачала);
ЗапросПлатежи.УстановитьПараметр("ДатаКон", ДатаКонца);
ЗапросПлатежи.УстановитьПараметр("Организация", Организация);
ЗапросПлатежи.УстановитьПараметр("Контрагент", Контрагент);
ЗапросПлатежи.УстановитьПараметр("ДоговорКонтрагента", ДоговорКонтрагента);
ЗапросПлатежи.УстановитьПараметр("ВалютаРегл", Константы.ВалютаРегламентированногоУчета.Получить());
ЗапросПлатежи.Текст=
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ВзаиморасчетыСКонтрагентамиОбороты.Контрагент,
| ВзаиморасчетыСКонтрагентамиОбороты.Регистратор КАК ПлатежныйДокумент,
| ВзаиморасчетыСКонтрагентамиОбороты.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом,
| СУММА(ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовРасход * ВЫБОР
| КОГДА ВзаиморасчетыСКонтрагентамиОбороты.ДоговорКонтрагента.ВалютаВзаиморасчетов = &ВалютаРегл
| ТОГДА 1
| ИНАЧЕ ВЫБОР
| КОГДА КурсыВалют.Курс ЕСТЬ NULL
| ТОГДА 1
| ИНАЧЕ КурсыВалют.Курс / КурсыВалют.Кратность
| КОНЕЦ
| КОНЕЦ) КАК ПлатежныйДокументСумма,
| ВзаиморасчетыСКонтрагентамиОбороты.Период КАК Период
|ИЗ
| РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Обороты(
| &ДатаНач,
| &ДатаКон,
| Регистратор,
| ДоговорКонтрагента.КонтролироватьЧислоДнейЗадолженности=ИСТИНА И
| ДоговорКонтрагента.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СПокупателем)
| "+
СтруктураУсловийВыборки.БлокУсловийПлатежей+") КАК ВзаиморасчетыСКонтрагентамиОбороты
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
| ПО ВзаиморасчетыСКонтрагентамиОбороты.ДоговорКонтрагента.ВалютаВзаиморасчетов = КурсыВалют.Валюта
| И (НАЧАЛОПЕРИОДА(ВзаиморасчетыСКонтрагентамиОбороты.Период, ДЕНЬ) = НАЧАЛОПЕРИОДА(КурсыВалют.Период, ДЕНЬ))
|
|СГРУППИРОВАТЬ ПО
| ВзаиморасчетыСКонтрагентамиОбороты.Контрагент,
| ВзаиморасчетыСКонтрагентамиОбороты.Регистратор,
| ВзаиморасчетыСКонтрагентамиОбороты.ДокументРасчетовСКонтрагентом,
| ВзаиморасчетыСКонтрагентамиОбороты.Период
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ВзаиморасчетыСКонтрагентамиОбороты.Контрагент,
| ВзаиморасчетыСКонтрагентамиОбороты.Регистратор,
| ВзаиморасчетыСКонтрагентамиОбороты.ДокументРасчетовСКонтрагентом,
| СУММА((-1)*ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовПриход * ВЫБОР
| КОГДА ВзаиморасчетыСКонтрагентамиОбороты.ДоговорКонтрагента.ВалютаВзаиморасчетов = &ВалютаРегл
| ТОГДА 1
| ИНАЧЕ ВЫБОР
| КОГДА КурсыВалют.Курс ЕСТЬ NULL
| ТОГДА 1
| ИНАЧЕ КурсыВалют.Курс / КурсыВалют.Кратность
| КОНЕЦ
| КОНЕЦ),
| ВзаиморасчетыСКонтрагентамиОбороты.Период
|ИЗ
| РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Обороты(
| &ДатаНач,
| &ДатаКон,
| Регистратор,
| ДоговорКонтрагента.КонтролироватьЧислоДнейЗадолженности=ИСТИНА И
| ДоговорКонтрагента.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СПокупателем)
| "+
СтруктураУсловийВыборки.БлокУсловийПлатежей+") КАК ВзаиморасчетыСКонтрагентамиОбороты
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
| ПО ВзаиморасчетыСКонтрагентамиОбороты.ДоговорКонтрагента.ВалютаВзаиморасчетов = КурсыВалют.Валюта
| И (НАЧАЛОПЕРИОДА(ВзаиморасчетыСКонтрагентамиОбороты.Период, ДЕНЬ) = НАЧАЛОПЕРИОДА(КурсыВалют.Период, ДЕНЬ))
|
|ГДЕ
| ВзаиморасчетыСКонтрагентамиОбороты.Регистратор Ссылка Документ.ВозвратТоваровОтПокупателя
    |
|СГРУППИРОВАТЬ ПО
| ВзаиморасчетыСКонтрагентамиОбороты.Контрагент,
| ВзаиморасчетыСКонтрагентамиОбороты.Регистратор,
| ВзаиморасчетыСКонтрагентамиОбороты.ДокументРасчетовСКонтрагентом,
| ВзаиморасчетыСКонтрагентамиОбороты.Период
|
|УПОРЯДОЧИТЬ ПО
| Период";
ТаблицаПлатежей=ЗапросПлатежи.Выполнить().Выгрузить(ОбходРезультатаЗапроса.Прямой);
 
ВыборкаКонтрагент=ЗапросРеализации.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаКонтрагент.Следующий() Цикл
ТабДок.Вывести(ОбластьШапкаТаблицы);
ОбластьКонтрагент.Параметры.КонтрагентНаименование=?(ТипЗнч(ВыборкаКонтрагент.Контрагент)=Тип("СправочникСсылка.Контрагенты"), ВыборкаКонтрагент.Контрагент.НаименованиеПолное, "");
ОбластьКонтрагент.Параметры.Контрагент=ВыборкаКонтрагент.Контрагент;
Долг=0;
СуммаПлатежа=0;
Просрочка=0;
ТабДок.Вывести(ОбластьКонтрагент);
КолРеализаций=0;
ВыборкаДанные=ВыборкаКонтрагент.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаДанные.Следующий() Цикл
у0=ТабДок.ВысотаТаблицы+1;
СуммаДокумента=ВыборкаДанные.ДокументОтгрузкиСумма;
ОбластьДанные.Параметры.Заполнить(ВыборкаДанные);
ОбластьДанные.Параметры.ДатаПлатежа="";
ОбластьДанные.Параметры.СуммаПлатежа="";
ОбластьДанные.Параметры.Просрочка="";
ОбластьДанные.Параметры.Долг="";
ОбластьДанные.Параметры.ПлатежныйДокумент="";
ОжидаемыйСрокОплаты=Неопределено;
СуммаДнейПросрочки=0;
КолРеализаций=КолРеализаций+1;
Запрос=Новый Запрос;
Если ВыборкаДанные.ДокументОтгрузки.ДоговорКонтрагента.КонтролироватьЧислоДнейЗадолженности Тогда
Если ВыборкаДанные.ДокументОтгрузки.ДоговорКонтрагента.лаСпособыКонтроляДнейЗадолженности=Перечисления.СпособыКонтроляДнейЗадолженности.ПоКалендарнымДням Тогда
ОжидаемыйСрокОплаты=ВыборкаДанные.ДокументОтгрузкиДата+86400*ВыборкаДанные.ДокументОтгрузки.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности;
Иначе
ОжидаемыйСрокОплаты=ЗаполнениеДокументов.ОпределитьДату(ВыборкаДанные.ДокументОтгрузкиДата, ВыборкаДанные.ДокументОтгрузки.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности);
КонецЕсли;
КонецЕсли;
ОбластьДанные.Параметры.ОжидаемыйСрокОплаты=ОжидаемыйСрокОплаты;
Структура=Новый Структура("Контрагент, ДокументРасчетовСКонтрагентом", ВыборкаДанные.Контрагент, ВыборкаДанные.ДокументОтгрузки);
Таб=ТаблицаПлатежей.НайтиСтроки(Структура);
Если Таб.Количество()>0 Тогда
СуммаДнейПросрочки=0;
Для каждого Элемент Из Таб Цикл
СуммаДокумента=СуммаДокумента-Элемент.ПлатежныйДокументСумма;
СуммаПлатежа=СуммаПлатежа+Элемент.ПлатежныйДокументСумма;
ОбластьДанные.Параметры.ПлатежныйДокумент=Элемент.ПлатежныйДокумент;
ОбластьДанные.Параметры.ДатаПлатежа=Элемент.Период;
ОбластьДанные.Параметры.СуммаПлатежа=Элемент.ПлатежныйДокументСумма;
ОбластьДанные.Параметры.Долг=СуммаДокумента;
Если НачалоДня(ОжидаемыйСрокОплаты)<НачалоДня(Элемент.Период) Тогда
СуммаДнейПросрочки=(НачалоДня(Элемент.Период)-НачалоДня(ОжидаемыйСрокОплаты))/86400;
Иначе
СуммаДнейПросрочки=0;
КонецЕсли;
ОбластьДанные.Параметры.Просрочка=СуммаДнейПросрочки;
    ТабДок.Вывести(ОбластьДанные);
КонецЦикла;
Иначе
ОбластьДанные.Параметры.Долг=СуммаДокумента;
Если НачалоДня(ОжидаемыйСрокОплаты)<НачалоДня(ДатаКонца) Тогда
СуммаДнейПросрочки=(НачалоДня(ДатаКонца)-НачалоДня(ОжидаемыйСрокОплаты))/86400;
Иначе
СуммаДнейПросрочки=0;
КонецЕсли;
ОбластьДанные.Параметры.Просрочка=СуммаДнейПросрочки;
ТабДок.Вывести(ОбластьДанные);
КонецЕсли;
Просрочка=Просрочка+СуммаДнейПросрочки;
Долг=СуммаДокумента;
у1=ТабДок.ВысотаТаблицы;
Если у0<>у1 Тогда
ТабДок.Область(у0, 2, у1, 2).Объединить();
ТабДок.Область(у0, 3, у1, 3).Объединить();
ТабДок.Область(у0, 4, у1, 4).Объединить();
ТабДок.Область(у0, 5, у1, 5).Объединить();
КонецЕсли;
КонецЦикла;
 
ОбластьДанные.Параметры.ДокументОтгрузки="";
ОбластьДанные.Параметры.ДокументОтгрузкиНомер="Итого";
ОбластьДанные.Параметры.ДокументОтгрузкиСумма=ВыборкаКонтрагент.ДокументОтгрузкиСумма;
ОбластьДанные.Параметры.ДокументОтгрузкиДата="";
ОбластьДанные.Параметры.ОжидаемыйСрокОплаты="";
ОбластьДанные.Параметры.ПлатежныйДокумент="";
ОбластьДанные.Параметры.ДатаПлатежа="";
ОбластьДанные.Параметры.СуммаПлатежа=СуммаПлатежа;
ОбластьДанные.Параметры.Долг=Долг;
ОбластьДанные.Параметры.Просрочка=Окр(Просрочка/КолРеализаций, 1);
ТабДок.Вывести(ОбластьДанные);
 
ОбластьДанные.Параметры.ДокументОтгрузки="";
ОбластьДанные.Параметры.ДокументОтгрузкиНомер="Коэффициент инкассации, %";
ОбластьДанные.Параметры.ДокументОтгрузкиСумма=Окр(СуммаПлатежа*100/ВыборкаКонтрагент.ДокументОтгрузкиСумма, 0);
ОбластьДанные.Параметры.ДокументОтгрузкиДата="";
ОбластьДанные.Параметры.ОжидаемыйСрокОплаты="";
ОбластьДанные.Параметры.ПлатежныйДокумент="";
ОбластьДанные.Параметры.ДатаПлатежа="";
ОбластьДанные.Параметры.СуммаПлатежа="";
ОбластьДанные.Параметры.Долг="";
ОбластьДанные.Параметры.Просрочка="";
ТабДок.Вывести(ОбластьДанные);
КонецЦикла;
КонецПроцедуры
 
Процедура КнопкаНастройкаПериодаНажатие(Элемент)
НастройкаПериода = Новый НастройкаПериода;
НастройкаПериода.УстановитьПериод(ДатаНач, ?(ДатаКон='0001-01-01', ДатаКон, КонецДня(ДатаКон)));
НастройкаПериода.РедактироватьКакИнтервал = Истина;
НастройкаПериода.РедактироватьКакПериод = Истина;
НастройкаПериода.ВариантНастройки = ВариантНастройкиПериода.Период;
Если НастройкаПериода.Редактировать() Тогда
ДатаНач = НастройкаПериода.ПолучитьДатуНачала();
ДатаКон = НастройкаПериода.ПолучитьДатуОкончания();
КонецЕсли;
КонецПроцедуры
К списку тем 1 > К списку форумов

Интересные темы

odines.ru
24.11.2024 - 02:10
Смотри также:
v8: Конфигурация "Самопал"
Почему не работает простой запрос?
Подскажите про нулевые остатки запросом через КурсыВалют

Re: Помогите с оброботкой

Друзья зовут меня Курулай
1 - 13.05.2009 - 11:23
Андроид, ты?
зачем шифруешься?

Re: Помогите с оброботкой

Arden
2 - 13.05.2009 - 11:25
(0) где интервал ? какой интервал ?  зачем интервал ?

Re: Помогите с оброботкой

Reaper
3 - 13.05.2009 - 11:43
1-Друзья зовут меня Курулай > это походу он сегодня VIN-номером подписался. И еще, он нарушает первый закон робототехники - это безумное море букоф мне мозг вынесло и тем самым вред причинило...

Re: Помогите с оброботкой

Друзья зовут меня Курулай
4 - 13.05.2009 - 11:48
3-Reaper > я уже в какой-то ветке неделю назад призывал модеров забанить его на год, в целях выживания человечества :)
к сожалению, не положено :(

Re: Помогите с оброботкой

itt5082
5 - 13.05.2009 - 11:52
(2) интервал времени

Интересные темы

odines.ru
24.11.2024 - 02:10
Смотри также:
Очень простенький вопрос!
Максимальная длина наименования Должности
запрос

Re: Помогите с оброботкой

Arden
6 - 13.05.2009 - 11:55
(5) угу, стало намного понятней.
у тебя вот уже задается интервал
ЗапросРеализации.УстановитьПараметр("ДатаНач", ДатаНачала);
ЗапросРеализации.УстановитьПараметр("ДатаКон", ДатаКонца);
что еще надо ?
 
и тут интервал задается.
ЗапросПлатежи.УстановитьПараметр("ДатаНач", ДатаНачала);
ЗапросПлатежи.УстановитьПараметр("ДатаКон", ДатаКонца);

Re: Помогите с оброботкой

itt5082
7 - 13.05.2009 - 12:07
(6) а как упорядочеть даты

Re: Помогите с оброботкой

Arden
8 - 13.05.2009 - 12:12
(7) задай вопрос по русски. что у тебя получается сейчас и что ты хочешь?

Re: Помогите с оброботкой

itt5082
9 - 13.05.2009 - 12:26
(8) Да выводить, колонку дата, в ней пишет дату, а мне надо к примеру установил интервал в справочнике интервалов и чтобы он по этом интервалам вибрал все остальное

Re: Помогите с оброботкой

roma n
10 - 13.05.2009 - 12:34
(8)
- Хорошо излагает, собака,- шепнул Остап на ухо Ипполиту Матвеевичу,- учитесь. © Ильф И. Петров.Е. Двенадцать стульев 1956

Re: Помогите с оброботкой

itt5082
11 - 13.05.2009 - 12:39
(10)народ пожалуйста по существу, а то меня застрелят сейчас

Re: Помогите с оброботкой

Reaper
12 - 13.05.2009 - 12:47
Не надо его стрелять, проблемы это не решит...

Re: Помогите с оброботкой

itt5082
13 - 13.05.2009 - 12:49
ну да, а я уже чувствую холод дулу

Re: Помогите с оброботкой

itt5082
14 - 13.05.2009 - 12:56
ну все завтра всех приглашаю на похороны

Re: Помогите с оброботкой

roma n
15 - 13.05.2009 - 13:04
(11) не могу не процитировать. Прошу прощения за OFF
- Кстати, о детстве,- сказал первый сын,- в детстве таких, как вы, я убивал на месте. Из рогатки.
- Почему?- радостно спросил второй сын знаменитого отца.
- Таковы суровые законы жизни. Или, короче выражаясь, жизнь диктует нам свои суровые законы. Вы зачем полезли в кабинет? Разве вы не видели, что председатель не один?
- Я думал...
- Ах, вы думали? Вы, значит, иногда думаете? Вы мыслитель. Как ваша фамилия, мыслитель? Спиноза? Жан Жак Руссо? Марк Аврелий?
© Те же Ильф и Петров. Золотой теленок.
======
Успокойся. Сделай глубокий вдох. И сформулируй уже вопрос

Re: Помогите с оброботкой

Reaper
16 - 13.05.2009 - 13:06
15-roma n > Не спасет. Кажется паленым запахло. Будем надеяться что это антикризисные дятлы запах распространяют...
К списку тем 1 > К списку форумов

Добавить новое сообщение

Ваше имя:
Тема сообщения:
Сообщение:
« Управление автотранспортом 8 (Рарус) о о расчете нормы расхода горючего на спец-механизмы Помогите настроить права пользователей в ЗУП »
© 2009 Форум 1С: Одинэс.Ру