Created
March 14, 2019 18:40
-
-
Save PlugFox/ef692cfd790f2ce346339b5e7ddb68b3 to your computer and use it in GitHub Desktop.
Программное формирование дат в динамическом списке
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//////////////////////////////////////////////////////////////////////////////// | |
#Область Отбор_в_платежном_календаре | |
&НаКлиенте | |
Процедура УстановитьОтборНаКлиенте(Элемент) | |
// Нельзя выбирать слишком большие периоды | |
Период.ДатаОкончания = Мин(ДобавитьМесяц(Период.ДатаНачала, 1), Период.ДатаОкончания); | |
СформироватьПлатежныйКалендарь(); | |
КонецПроцедуры // УстановитьОтборНаКлиенте() | |
#КонецОбласти | |
//////////////////////////////////////////////////////////////////////////////// | |
//////////////////////////////////////////////////////////////////////////////// | |
#Область Сформировать_платежный_календарь | |
&НаСервере | |
Процедура СформироватьПлатежныйКалендарь() | |
ПлатежныйКалендарь.ТекстЗапроса = СформироватьТекстЗапросаПлатежногоКалендаря(Период.ДатаНачала, Период.ДатаОкончания); | |
УстановитьОтбор(); | |
ВынестиКолонкиДинамическогоСписка(Период.ДатаНачала, Период.ДатаОкончания); | |
КонецПроцедуры // СформироватьПлатежныйКалендарь() | |
&НаСервереБезКонтекста | |
Функция СформироватьТекстЗапросаПлатежногоКалендаря(ДатаНачала, ДатаОкончания) | |
ТекстЗапроса = " | |
|ВЫБРАТЬ | |
| Статьи.Ссылка КАК Ссылка | |
| , Сумма(ВЫБОР КОГДА График.ПоступлениеСписание = ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияДенежныхСредств.Поступление) | |
| ТОГДА График.Сумма * КурсыВалют.Курс | |
| ИНАЧЕ -График.Сумма * КурсыВалют.Курс | |
| КОНЕЦ) КАК Сумма | |
| , Количество(1) КАК Количество | |
| %1 | |
|ИЗ | |
| Справочник.СтатьиДвиженияДенежныхСредств КАК Статьи | |
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГрафикПлатежей КАК График | |
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют | |
| ПО КурсыВалют.Валюта = График.Валюта | |
| ПО График.СтатьяДвиженияДенежныхСредств = Статьи.Ссылка | |
|ГДЕ | |
| График.ДатаПлатежа МЕЖДУ &ДатаН И &ДатаО | |
|{ГДЕ | |
| ВЫБОР КОГДА &Юнит = ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка) | |
| ТОГДА ИСТИНА ИНАЧЕ График.Подразделение = &Юнит КОНЕЦ | |
| И ВЫБОР КОГДА &Счет = ЗНАЧЕНИЕ(Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка) | |
| ТОГДА ИСТИНА ИНАЧЕ График.БанковскийСчетКасса = &Счет КОНЕЦ | |
|} | |
|СГРУППИРОВАТЬ ПО | |
| Статьи.Ссылка"; | |
// Сформируем поля даты + | |
Дата = ДатаНачала; | |
ПоляПоДням = ""; | |
Пока Дата < ДатаОкончания Цикл | |
ПоляПоДням = ПоляПоДням + СтрШаблон("// День: %1.%2.%3 | |
| , ДАТАВРЕМЯ(%3, %2, %1) КАК Дата%3%2%1 | |
| , Сумма(ВЫБОР | |
| КОГДА График.ДатаПлатежа <> ДАТАВРЕМЯ(%3, %2, %1) | |
| ТОГДА 0 | |
| КОГДА График.ПоступлениеСписание = ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияДенежныхСредств.Поступление) | |
| ТОГДА График.Сумма * КурсыВалют.Курс | |
| ИНАЧЕ -График.Сумма * КурсыВалют.Курс | |
| КОНЕЦ) КАК Сумма%3%2%1 | |
| , Сумма(ВЫБОР | |
| КОГДА График.ДатаПлатежа = ДАТАВРЕМЯ(%3, %2, %1) | |
| ТОГДА 1 | |
| ИНАЧЕ 0 | |
| КОНЕЦ) КАК Количество%3%2%1 | |
|" | |
, Формат(Дата, "ДФ=dd") | |
, Формат(Дата, "ДФ=MM") | |
, Формат(Дата, "ДФ=yyyy")); | |
Дата = Дата + 86400; // Добавим день | |
КонецЦикла; | |
// Сформируем поля даты - | |
ТекстЗапроса = СтрШаблон(ТекстЗапроса, ПоляПоДням); | |
Возврат ТекстЗапроса; | |
КонецФункции // СформироватьТекстЗапросаПлатежногоКалендаря() | |
&НаСервере | |
Процедура УстановитьОтбор() | |
ПлатежныйКалендарь.Параметры.УстановитьЗначениеПараметра("ДатаН", Период.ДатаНачала); | |
ПлатежныйКалендарь.Параметры.УстановитьЗначениеПараметра("ДатаО", Период.ДатаОкончания); | |
ПлатежныйКалендарь.Параметры.УстановитьЗначениеПараметра("Юнит", Юнит); | |
ПлатежныйКалендарь.Параметры.УстановитьЗначениеПараметра("Счет", Счет); | |
КонецПроцедуры // УстановитьОтбор() | |
&НаСервере | |
Процедура ВынестиКолонкиДинамическогоСписка(ДатаНачала, ДатаОкончания) | |
// Сформируем колонки даты + | |
КорневаяГруппа = Элементы.ПлатежныйКалендарьПоДням; | |
Дата = ДатаНачала; | |
ПоляПоДням = ""; | |
НастройкиГруппы = Новый Структура("Группировка,ОтображатьВШапке,ОтображатьЗаголовок,ГоризонтальноеПоложениеВШапке,РастягиватьПоГоризонтали,Ширина,Группировка" | |
, ГруппировкаКолонок.Вертикальная | |
, Истина | |
, Истина | |
, ГоризонтальноеПоложениеЭлемента.Центр | |
, Ложь | |
, 3 | |
, ГруппировкаКолонок.Горизонтальная); | |
НастройкиПоля = Новый Структура("ОтображатьВШапке,ОтображатьВПодвале,ПоложениеЗаголовка,РастягиватьПоГоризонтали,Ширина" | |
, Ложь | |
, Ложь | |
, ПоложениеЗаголовкаЭлементаФормы.Нет | |
, Ложь | |
, 3); | |
ЦветБуднего = Новый Цвет(255, 255, 255); | |
ЦветВыходного = Новый Цвет(255, 200, 200); | |
Пока Дата < ДатаОкончания Цикл | |
ШаблонПоля = Формат(Дата, "ДФ=yyyyMMdd"); | |
ПредставлениеГруппы = СтрШаблон("%1 г. (%2)" | |
, Формат(Дата, "ДФ='d MMM yyyy'") // Число | |
, Формат(Дата, "ДФ=ддд")); // День недели | |
Группа = Элементы.Добавить("Группа" + ШаблонПоля, Тип("ГруппаФормы"), КорневаяГруппа); | |
Группа.Заголовок = ПредставлениеГруппы; | |
Группа.ЦветФонаЗаголовка = ?(ДеньНедели(Дата) > 5, ЦветВыходного, ЦветБуднего); | |
ЗаполнитьЗначенияСвойств(Группа, НастройкиГруппы); | |
//ПолеКоличество = Элементы.Добавить("Количество" + ШаблонПоля, Тип("ПолеФормы"), Группа); | |
//ПолеКоличество.ПутьКДанным = "ПлатежныйКалендарь.Количество" + ШаблонПоля; | |
//ЗаполнитьЗначенияСвойств(ПолеКоличество, НастройкиПоля); | |
ПолеСумма = Элементы.Добавить("Сумма" + ШаблонПоля, Тип("ПолеФормы"), Группа); | |
ПолеСумма.ПутьКДанным = "ПлатежныйКалендарь.Сумма" + ШаблонПоля; | |
ПолеСумма.ЦветФона = ?(ДеньНедели(Дата) > 5, ЦветВыходного, ЦветБуднего); | |
ЗаполнитьЗначенияСвойств(ПолеСумма, НастройкиПоля); | |
Дата = Дата + 86400; // Добавим день | |
КонецЦикла; | |
// Сформируем колонки даты - | |
КонецПроцедуры // ВынестиКолонкиДинамическогоСписка() | |
#КонецОбласти | |
//////////////////////////////////////////////////////////////////////////////// |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment