Добавить возможность фильтрации по дате, на макете отчёта
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(5) Залез в код, там кроме двух запросов по выборке данных есть ещё один:
мне чёт кажется что с ним надо что-то делать. но как в шапку настроек добавить диапазон дат не понимаю. там мы ставим дату на которую выкручивается дебеторка...
Если Число(Долг) > 0 Тогда
времДолг = Долг;
ОрганизацияПоУмолчанию = БухгалтерскийУчетПереопределяемый.ПолучитьЗначениеПоУмолчанию("ОсновнаяОрганизация");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РеализацияТоваровУслуг.Ссылка
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| (РеализацияТоваровУслуг.Организация = &Организация) И
| (РеализацияТоваровУслуг.Контрагент = &Контрагент) И
| (РеализацияТоваровУслуг.Проведен = &Проведен) И
| (РеализацияТоваровУслуг.ДоговорКонтрагента = &ДоговорКонтрагента)
|УПОРЯДОЧИТЬ ПО
| РеализацияТоваровУслуг.Дата УБЫВ";
Запрос.УстановитьПараметр("Организация", ОрганизацияПоУмолчанию);
Запрос.УстановитьПараметр("Контрагент", спрконтр.Ссылка);
Запрос.УстановитьПараметр("ДоговорКонтрагента", СпрДоговор.Ссылка);
Запрос.УстановитьПараметр("Проведен", Истина);
Показатьмне чёт кажется что с ним надо что-то делать. но как в шапку настроек добавить диапазон дат не понимаю. там мы ставим дату на которую выкручивается дебеторка...
Прикрепленные файлы:
(6)
если нужен отбор по документам за период
Запрос = Новый Запрос("ВЫБРАТЬ
| РеализацияТоваровУслуг.Ссылка
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Дата Между &ДатаНач И &ДатаКон
| И РеализацияТоваровУслуг.ДоговорКонтрагента = &ДоговорКонтрагента
| И РеализацияТоваровУслуг.Проведен = ИСТИНА
|УПОРЯДОЧИТЬ ПО
| РеализацияТоваровУслуг.Дата УБЫВ");
Запрос.УстановитьПараметр("ДоговорКонтрагента", СпрДоговор.Ссылка);
Показатьесли нужен отбор по документам за период
(7)
даты вывел, но отчёт по этим данным не формируется, не выводит данные
Запрос = Новый Запрос("ВЫБРАТЬ
| РеализацияТоваровУслуг.Ссылка
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Дата Между &ДатаНач И &ДатаКон
| И РеализацияТоваровУслуг.ДоговорКонтрагента = &ДоговорКонтрагента
| И РеализацияТоваровУслуг.Проведен = ИСТИНА
|УПОРЯДОЧИТЬ ПО
| РеализацияТоваровУслуг.Дата УБЫВ");
Запрос.УстановитьПараметр("ДоговорКонтрагента", СпрДоговор.Ссылка);
| РеализацияТоваровУслуг.Ссылка
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Дата Между &ДатаНач И &ДатаКон
| И РеализацияТоваровУслуг.ДоговорКонтрагента = &ДоговорКонтрагента
| И РеализацияТоваровУслуг.Проведен = ИСТИНА
|УПОРЯДОЧИТЬ ПО
| РеализацияТоваровУслуг.Дата УБЫВ");
Запрос.УстановитьПараметр("ДоговорКонтрагента", СпрДоговор.Ссылка);
даты вывел, но отчёт по этим данным не формируется, не выводит данные
(8) вот это весь код со всеми запросами
&НаСервере
Процедура СформироватьОтчетНаСервере()
СписМен = Новый СписокЗначений;
Таб = Новый ТабличныйДокумент;
Обработка = РеквизитФормыВЗначение("Объект");
Макет = Обработка.ПолучитьМакет("Макет");
ОблШапка = Макет.ПолучитьОбласть("Шапка");
ОблМенеджер = Макет.ПолучитьОбласть("Менеджер");
ОблКонтрагент = Макет.ПолучитьОбласть("Контрагент");
ОблДоговор = Макет.ПолучитьОбласть("Договор");
ОблДокум = Макет.ПолучитьОбласть("Докум");
ОблИтог = Макет.ПолучитьОбласть("Итог");
// таблица со всеми данными
ТабРезВсе = Новый ТаблицаЗначений;
ТабРезВсе.Колонки.Добавить("Менеджер");
ТабРезВсе.Колонки.Добавить("Контрагент");
ТабРезВсе.Колонки.Добавить("Договор");
ТабРезВсе.Колонки.Добавить("СрокСтрока");
ТабРезВсе.Колонки.Добавить("СрокЧисло");
ТабРезВсе.Колонки.Добавить("ДолгВсего");
//ТабРезВсе.Колонки.Добавить("НепрДолг");
ТабРезВсе.Колонки.Добавить("ДокументДолга");
ТабРезВсе.Колонки.Добавить("ДокументСумма");
ТабРезВсе.Колонки.Добавить("ПросроченоСумма");
ТабРезВсе.Колонки.Добавить("ПросроченоДни");
// выбираем менеджеров
СпрКонтр = Справочники.Контрагенты.Выбрать(ГруппаКонтрагентов.Ссылка);
Пока СпрКонтр.Следующий() Цикл
Если (( НЕ СпрКонтр.ПометкаУдаления ) И (СпрКонтр.ЭтоГруппа)) Тогда
СписМен.Добавить(СпрКонтр.Ссылка,СпрКонтр.Наименование);
КонецЕсли;
КонецЦикла;
// цикл по менеджерам
Для Каждого СтрСписМен из СписМен Цикл
// выбираем подчиненных контрагентов
СпрКонтр = Справочники.Контрагенты.Выбрать(СтрСписМен.Значение);
Пока СпрКонтр.Следующий() Цикл
Если (( НЕ СпрКонтр.ПометкаУдаления ) И (не СпрКонтр.ЭтоГруппа)) Тогда
ОблКонтрагент.Параметры.Контрагент = СпрКонтр.Наименование;
// выбираем договора контрагентов
СпрДоговор = Справочники.ДоговорыКонтрагентов.Выбрать(,спрконтр.Ссылка);
Пока СпрДоговор.Следующий() Цикл
Если (( НЕ СпрДоговор.ПометкаУдаления ) И (НЕ СпрДоговор.ЭтоГруппа) и (СпрДоговор.ВидДоговора = ТипДоговора) ) Тогда
ОблДоговор.Параметры.Договор = СпрДоговор.Наименование;
ОблДоговор.Параметры.ВидДоговора = СпрДоговор.ВидДоговора;
Если Число(СпрДоговор.СрокОплаты) > 0 Тогда
ПечатьСрокОплаты = СпрДоговор.СрокОплаты;
реалСрок = СпрДоговор.СрокОплаты;
Иначе
ПечатьСрокОплаты = "НЕТ !!! (30)";
реалСрок = 30;
КонецЕсли;
Долг = 0;
Запрос = Новый Запрос;
Запрос.Текст = " ВЫБРАТЬ
|ХозрасчетныйОстатки.Субконто1 КАК Контрагент,
|ХозрасчетныйОстатки.Субконто2 КАК ДоговорКонтрагента,
|ХозрасчетныйОстатки.СуммаОстаток
| ИЗ
|РегистрБухгалтерии.Хозрасчетный.Остатки(ДобавитьКДате(&НачалоПериода,СЕКУНДА,1), Счет В ИЕРАРХИИ (&Счет62), , Организация = &Организация) КАК ХозрасчетныйОстатки
| ГДЕ ХозрасчетныйОстатки.Субконто1 = &Контрагент И ХозрасчетныйОстатки.Субконто2 = &ДоговорКонтрагента; ";
Запрос.УстановитьПараметр("Контрагент", спрконтр.Ссылка);
Запрос.УстановитьПараметр("ДоговорКонтрагента", СпрДоговор.Ссылка);
Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
Запрос.УстановитьПараметр("Организация", Справочники.Организации.НайтиПоКоду("000000001"));
Запрос.УстановитьПараметр("Счет62", ПланыСчетов.Хозрасчетный.НайтиПоКоду("62"));
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Для Каждого СтрРезультатЗапроса из РезультатЗапроса Цикл
Долг = СтрРезультатЗапроса.СуммаОстаток ;
КонецЦикла;
Если Число(Долг) > 0 Тогда
времДолг = Долг;
ОрганизацияПоУмолчанию = БухгалтерскийУчетПереопределяемый.ПолучитьЗначениеПоУмолчанию("ОсновнаяОрганизация");
Запрос = Новый Запрос;
Запрос = Новый Запрос("ВЫБРАТЬ
| РеализацияТоваровУслуг.Ссылка
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Дата Между &ДатаНач И &ДатаКон
| И РеализацияТоваровУслуг.ДоговорКонтрагента = &ДоговорКонтрагента
| И РеализацияТоваровУслуг.Проведен = ИСТИНА
|УПОРЯДОЧИТЬ ПО
| РеализацияТоваровУслуг.Дата УБЫВ");
Запрос.УстановитьПараметр("Организация", ОрганизацияПоУмолчанию);
Запрос.УстановитьПараметр("Контрагент", спрконтр.Ссылка);
Запрос.УстановитьПараметр("ДоговорКонтрагента", СпрДоговор.Ссылка);
Запрос.УстановитьПараметр("Проведен", Истина);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если времДолг > 0 Тогда
СтрТабРезВсе = ТабРезВсе.Добавить();
СтрТабРезВсе.Менеджер = СтрСписМен.Значение;
СтрТабРезВсе.Контрагент = спрконтр.Ссылка;
СтрТабРезВсе.Договор = СпрДоговор.Ссылка;
СтрТабРезВсе.СрокСтрока = ПечатьСрокОплаты;
СтрТабРезВсе.СрокЧисло = реалСрок;
//===========
Если СпрКонтр.Код = "000000288" Тогда
Долг = "1 925 186,69";
КонецЕсли;
//===========
СтрТабРезВсе.ДолгВсего = Долг;
СтрТабРезВсе.ДокументДолга = ВыборкаДетальныеЗаписи.Ссылка;
СтрТабРезВсе.ПросроченоДни = Цел( ((НачалоПериода - ВыборкаДетальныеЗаписи.Ссылка.Дата)/86400) - реалСрок)*(-1);
// СтрТабРезВсе.ДокументСумма = ВыборкаДетальныеЗаписи.Ссылка.СуммаДокумента;
Если (времДолг > ВыборкаДетальныеЗаписи.Ссылка.СуммаДокумента) Тогда
СтрТабРезВсе.ДокументСумма = ВыборкаДетальныеЗаписи.Ссылка.СуммаДокумента;
Иначе
СтрТабРезВсе.ДокументСумма = времДолг;
КонецЕсли;
Если СтрТабРезВсе.ПросроченоДни > 0 Тогда
СтрТабРезВсе.ПросроченоСумма = 0;
// СтрТабРезВсе.НепрДолг = СтрТабРезВсе.ДолгВсего - СтрТабРезВсе.ПросроченоСумма;
Иначе
Если (времДолг > ВыборкаДетальныеЗаписи.Ссылка.СуммаДокумента) Тогда
СтрТабРезВсе.ПросроченоСумма = ВыборкаДетальныеЗаписи.Ссылка.СуммаДокумента;
// СтрТабРезВсе.НепрДолг = СтрТабРезВсе.ДолгВсего - СтрТабРезВсе.ПросроченоСумма;
Иначе
СтрТабРезВсе.ПросроченоСумма = времДолг;
//СтрТабРезВсе.НепрДолг = СтрТабРезВсе.ДолгВсего - СтрТабРезВсе.ПросроченоСумма;
КонецЕсли;
КонецЕсли;
времДолг = времДолг - ВыборкаДетальныеЗаписи.Ссылка.СуммаДокумента;
Иначе
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ТабОбщ = ТабРезВсе.Скопировать();
ТабОбщ.Свернуть("Менеджер,Контрагент,Договор,ДолгВсего","");
ОбщДолгОрг = ТабОбщ.Итог("ДолгВсего") + 4886299.16;
ОбщПросрочка = ТабРезВсе.Итог("ПросроченоСумма") + 4886299.16;
//ОбщНепрДолг = ОбщДолгОрг - ОбщПросрочка;
ОблШапка.Параметры.СтрокаЗаголовок = "Дебеторская задолженность на " + Строка(НачалоПериода);
ОблШапка.Параметры.СтрокаДолг = "Общая дебеторская задолженность: " + Строка(ОбщДолгОрг) + ", из них просроченная составляет : " + Строка(ОбщПросрочка);
Таб.Вывести(ОблШапка);
// Обработка рез таблицы
Для Каждого СтрСписМен из СписМен Цикл
ОтборМенеджер = Новый Структура;
ОтборМенеджер.Вставить("Менеджер",СтрСписМен.Значение);
ТабРезВсеМенеджер = ТабРезВсе.Скопировать(ОтборМенеджер);
ИтогТабРезВсеМенеджер = ТабРезВсеМенеджер.Скопировать();
ИтогТабРезВсеМенеджер.Свернуть("Контрагент,Договор,ДолгВсего","");
Если (ТабРезВсеМенеджер.Количество() > 0) Тогда
ОблМенеджер.Параметры.Менеджер = СтрСписМен.Представление;
ОблМенеджер.Параметры.СуммаПросрочено = ТабРезВсеМенеджер.Итог("ПросроченоСумма");
//===========
Если СпрКонтр.Код = "000000288" Тогда
Долг = "1 925 186,69";
КонецЕсли;
//===========
ОблМенеджер.Параметры.ДолгВсего = ИтогТабРезВсеМенеджер.Итог("ДолгВсего");
ОблМенеджер.Параметры.НепрДолг = ИтогТабРезВсеМенеджер.Итог("ДолгВсего") - ТабРезВсеМенеджер.Итог("ПросроченоСумма");
Таб.Вывести(ОблМенеджер);
СпрКонтр = Справочники.Контрагенты.Выбрать(СтрСписМен.Значение);
Пока СпрКонтр.Следующий() Цикл
Если (( НЕ СпрКонтр.ПометкаУдаления ) И (не СпрКонтр.ЭтоГруппа)) Тогда
ОтборКонтрагент = Новый Структура;
ОтборКонтрагент.Вставить("Контрагент",СпрКонтр.Ссылка);
ТабРезВсеКонтрагент = ТабРезВсеМенеджер.Скопировать(ОтборКонтрагент);
ИтогТабРезВсеКонтрагент = ТабРезВсеКонтрагент.Скопировать();
ИтогТабРезВсеКонтрагент.Свернуть("Договор,ДолгВсего","");
Если (ТабРезВсеКонтрагент.Количество() > 0) Тогда
ОблКонтрагент.Параметры.Контрагент = СпрКонтр;
ОблКонтрагент.Параметры.СуммаПросрочено = ТабРезВсеКонтрагент.Итог("ПросроченоСумма");
//===========
Если СпрКонтр.Код = "000000288" Тогда
Долг = "1 925 186,69";
КонецЕсли;
//===========
ОблКонтрагент.Параметры.ДолгВсего = ИтогТабРезВсеКонтрагент.Итог("ДолгВсего");
ОблКонтрагент.Параметры.НепрДолг = ИтогТабРезВсеКонтрагент.Итог("ДолгВсего") - ТабРезВсеКонтрагент.Итог("ПросроченоСумма");
Таб.Вывести(ОблКонтрагент);
СпрДоговор = Справочники.ДоговорыКонтрагентов.Выбрать(,спрконтр.Ссылка);
Пока СпрДоговор.Следующий() Цикл
Если (( НЕ СпрДоговор.ПометкаУдаления ) И (НЕ СпрДоговор.ЭтоГруппа) и (СпрДоговор.ВидДоговора = ТипДоговора) ) Тогда
ОтборДоговор = Новый Структура;
ОтборДоговор.Вставить("Договор",СпрДоговор.Ссылка);
ТабРезВсеДоговор = ТабРезВсеКонтрагент.Скопировать(ОтборДоговор);
Если (ТабРезВсеДоговор.Количество() > 0) Тогда
ТекСтрДоговор = ТабРезВсеДоговор.Получить(0);
//ТабРезВсе.Колонки.Добавить("СрокСтрока");
//ТабРезВсе.Колонки.Добавить("СрокЧисло");
//ТабРезВсе.Колонки.Добавить("ДолгВсего");
//ТабРезВсе.Колонки.Добавить("ДокументДолга");
//ТабРезВсе.Колонки.Добавить("ДокументСумма");
//ТабРезВсе.Колонки.Добавить("ПросроченоСумма");
//ТабРезВсе.Колонки.Добавить("ПросроченоДни");
ОблДоговор.Параметры.СрокОплаты = ТекСтрДоговор.СрокСтрока;
ОблДоговор.Параметры.ДолгВсего = ТекСтрДоговор.ДолгВсего;
ОблДоговор.Параметры.Договор = СпрДоговор.Наименование;
ОблДоговор.Параметры.ВидДоговора = СпрДоговор.ВидДоговора;
ОблДоговор.Параметры.СуммаПросрочено = ТабРезВсеДоговор.Итог("ПросроченоСумма");
//===========
Если СпрКонтр.Код = "000000288" Тогда
Долг = "1 925 186,69";
КонецЕсли;
//===========
Таб.Вывести(ОблДоговор);
Для Каждого СтрДокДоговор из ТабРезВсеДоговор Цикл
ОблДокум.Параметры.Докум = "Реализация № " + СтрДокДоговор.ДокументДолга.Номер + " от " + формат(СтрДокДоговор.ДокументДолга.Дата,"ДЛФ=Д");
ОблДокум.Параметры.СумДок = СтрДокДоговор.ДокументСумма;
//===========
Если СпрКонтр.Код = "000000288" Тогда
Долг = "1 925 186,69";
КонецЕсли;
//===========
ОблДокум.Параметры.ДнейДоОплаты = СтрДокДоговор.ПросроченоДни;
ОблДокум.Параметры.СуммаПросрочено = СтрДокДоговор.ПросроченоСумма;
Если СпрКонтр.Код = "000000288" Тогда
Долг = "1 925 186,69";
КонецЕсли;
//===========
//==========================================
ОблДокум.Параметры.ПлановаяДатаПогашения = формат(СтрДокДоговор.ДокументДолга.Дата+(ТекСтрДоговор.СрокЧисло * 24*60*60),"ДЛФ=Д");
ОблДокум.Параметры.НепрДолг = СтрДокДоговор.ДокументСумма - СтрДокДоговор.ПросроченоСумма;
Таб.Вывести(ОблДокум);
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
// ОблИтог.Параметры.СтрокаДолг = "Общая дебеторская задолженность: " + Строка(ОбщДолгОрг) + ", из них просроченная составляет : " + Строка(ОбщПросрочка);
ОблИтог.Параметры.ОбщДолг = Строка(ОбщДолгОрг);
ОблИтог.Параметры.ПрДолг = Строка(ОбщПросрочка);
ОблИтог.Параметры.НепрДолг = Строка(ОбщДолгОрг - ОбщПросрочка);
Таб.Вывести(ОблИтог);
РезТаб = Таб;
КонецПроцедуры
&НаКлиенте
Процедура СформироватьОтчет(Команда)
СформироватьОтчетНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
НачалоПериода = ТекущаяДата();
КонецПроцедуры
&НаСервере
Процедура Команда1НаСервере()
// |ХозрасчетныйОстатки.СуммаОстаток КАК СуммаОстаток
Запрос = Новый Запрос;
Запрос.Текст = " ВЫБРАТЬ
|ХозрасчетныйОстатки.Субконто1 КАК Контрагент,
|ХозрасчетныйОстатки.Субконто2 КАК ДоговорКонтрагента,
|ХозрасчетныйОстатки.СуммаОстаток
| ИЗ
|РегистрБухгалтерии.Хозрасчетный.Остатки(ДобавитьКДате(&НачалоПериода,СЕКУНДА,1), Счет В ИЕРАРХИИ (&Счет62), , Организация = &Организация) КАК ХозрасчетныйОстатки;";
Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
Запрос.УстановитьПараметр("Организация", Справочники.Организации.НайтиПоКоду("000000001"));
Запрос.УстановитьПараметр("Счет62", ПланыСчетов.Хозрасчетный.НайтиПоКоду("62"));
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Для Каждого СтрРезультатЗапроса из РезультатЗапроса Цикл
Сообщить(СтрРезультатЗапроса.Контрагент );
Сообщить(СтрРезультатЗапроса.СуммаОстаток );
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура Команда1(Команда)
Команда1НаСервере();
КонецПроцедуры
Показать
Задать реквизит в форме типа Стандартный период и вывести его на форму. А его ДатаНачала и ДатаОкончания использовать в параметрах запроса перед его формированием, указав, выводить данные где Плановая дата между этими датами..
1) передать сюда значения ДобавитьКДате(&НачалоПериода,СЕКУНДА,1)
РегистрБухгалтерии.Хозрасчетный.Остатки(ДобавитьКДате(&НачалоПериода,СЕКУНДА,1), Счет В ИЕРАРХИИ (&Счет62), , Организация = &Организация) КАК ХозрасчетныйОстатки
2) передать сюда значения &ДатаНач И &ДатаКон
РеализацияТоваровУслуг.Дата Между &ДатаНач И &ДатаКон
РегистрБухгалтерии.Хозрасчетный.Остатки(ДобавитьКДате(&НачалоПериода,СЕКУНДА,1), Счет В ИЕРАРХИИ (&Счет62), , Организация = &Организация) КАК ХозрасчетныйОстатки
2) передать сюда значения &ДатаНач И &ДатаКон
РеализацияТоваровУслуг.Дата Между &ДатаНач И &ДатаКон
Альтернативный вариант - скрывать в табличном документе результата - строки, не соответствующие отбору по дате. Подобно фильтру в экселе.
Только минус в том, что итоговые поля в вышестоящих группировках пересчитываться не будут.
Только минус в том, что итоговые поля в вышестоящих группировках пересчитываться не будут.
(17)Ну так все в ваших руках.
При фильтрации по дате - обходить каждую строку табличного документа и проверять нужную колонку:
- если в ней не дата - ставим видимость = Истина.
- если в ней дата и она подходит под условия - ставим видимость = Истина (вдруг строка была скрыта прошлым условием).
- если в ней дата и она не подходит под условия - для строки ставим видимость = Ложь.
Вполне себе приемлемый костыль))
Если надо анализировать именно существующий табличный документ, который может быть очень большой, вместо того чтобы формировать отчет заново.
Работает относительно быстро.
При фильтрации по дате - обходить каждую строку табличного документа и проверять нужную колонку:
- если в ней не дата - ставим видимость = Истина.
- если в ней дата и она подходит под условия - ставим видимость = Истина (вдруг строка была скрыта прошлым условием).
- если в ней дата и она не подходит под условия - для строки ставим видимость = Ложь.
Вполне себе приемлемый костыль))
Если надо анализировать именно существующий табличный документ, который может быть очень большой, вместо того чтобы формировать отчет заново.
Работает относительно быстро.
(21) Да вы, сэр, костыли предложили автору.
Автор, я бы сначала разобрался, как работает отчет, что нужно заказчику\руководству, а потом все переписал по нормальному. А если нормалька не варит, то делай, как написал (21) и не парься. А если, руководство хочет разово получить результат, то вообще руками (запросом через консоль запросов) получи и выдай.
Автор, я бы сначала разобрался, как работает отчет, что нужно заказчику\руководству, а потом все переписал по нормальному. А если нормалька не варит, то делай, как написал (21) и не парься. А если, руководство хочет разово получить результат, то вообще руками (запросом через консоль запросов) получи и выдай.
(15) У нас в компании некоторые обработки написаны именно так. Ах-ха-ха. Если кратко, то история таких костылей в том, что руководство (или отдел продаж) сами не знают что хотят и по ходу пьесы начинают вставлять свои ремарки, а ты пилишь-пилишь-пилишь, а когда все готово, то времени нет заниматься рефакторингом, потому что у Них появились новые задачи...
На форме сделать два дополнительных поля ДатаНачала, ДатаОкончания
В этом месте сделать вместо Таб.Вывести(ОблДокум);
Если ДатаНачала >= СтрДокДоговор.ДокументДолга.Дата+(ТекСтрДоговор.СрокЧисло * 24*60*60) и СтрДокДоговор.ДокументДолга.Дата+(ТекСтрДоговор.СрокЧисло * 24*60*60 >= ДатаОкончания тогда
Таб.Вывести(ОблДокум);
КонецЕсли;
В результате выведутся только те записи в табличный документ, которые соответствуют условию.
ОблДокум.Параметры.ПлановаяДатаПогашения = формат(СтрДокДоговор.ДокументДолга.Дата+(ТекСтрДоговор.СрокЧисло * 24*60*60),"ДЛФ=Д");
ОблДокум.Параметры.НепрДолг = СтрДокДоговор.ДокументСумма - СтрДокДоговор.ПросроченоСумма;
Таб.Вывести(ОблДокум);
ОблДокум.Параметры.НепрДолг = СтрДокДоговор.ДокументСумма - СтрДокДоговор.ПросроченоСумма;
Таб.Вывести(ОблДокум);
В этом месте сделать вместо Таб.Вывести(ОблДокум);
Если ДатаНачала >= СтрДокДоговор.ДокументДолга.Дата+(ТекСтрДоговор.СрокЧисло * 24*60*60) и СтрДокДоговор.ДокументДолга.Дата+(ТекСтрДоговор.СрокЧисло * 24*60*60 >= ДатаОкончания тогда
Таб.Вывести(ОблДокум);
КонецЕсли;
В результате выведутся только те записи в табличный документ, которые соответствуют условию.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот