Динамический список и ПриПолученииДанныхНаСервере
Доброе время суток. Есть динамический список и в событии ПриПолученииДанныхНаСервере заполняется колонка "Отгрузка". Можно ли здесь же исключить (отфильтровать) строки из динамического списка, у которых колонка "Отгрузка" не заполнена?
&НаСервереБезКонтекста
Процедура СписокЗаказовПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
Для Каждого Стр ИЗ Строки Цикл
Отгрузка = "";
Контрагент = Стр.Значение.Данные.Контрагент;
Договор = Стр.Значение.Данные.Договор;
ПросроченнаяЗадолженность = Просрочка.РасчетПросроченнойЗадолженности(Контрагент, Контрагент.Отсрочка);
ПросроченнаяЗадолженностьПоДоговору = Просрочка.РасчетПросроченнойЗадолженности(Контрагент, Договор.Отсрочка, Договор);
Если ПросроченнаяЗадолженность > 0 Тогда
Отгрузка = "Просрочка(" + Контрагент.Отсрочка + "): " + ПросроченнаяЗадолженность;
КонецЕсли;
Если ПросроченнаяЗадолженностьПоДоговору > 0 Тогда
Отгрузка = Отгрузка + " Просрочка по договору(" + Договор.Отсрочка + "): " + ПросроченнаяЗадолженностьПоДоговору;
КонецЕсли;
Если Контрагент.СтопОтгрузка = Истина Тогда
Отгрузка = Отгрузка + " Стоп отгрузка";
КонецЕсли;
Если СтрДлина(Отгрузка) > 1 Тогда
Стр.Значение.Оформление["Отгрузка"].УстановитьЗначениеПараметра("ЦветФона", Новый Цвет(250, 171, 98));
КонецЕсли;
Стр.Значение.Данные.Отгрузка = Отгрузка;
КонецЦикла;
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Программное создание динамического списка на управляемой форме. (Динамическое создание динамического списка). Готовая процедура + обработка - демонстрационный пример
- Как приручить драконов. История построения экосистемы на основе 1С
- ПриПолученииДанныхНаСервере + Контекст формы. Лайфхак
- Использование флажков в динамических списках 2.0
- Прокачай список. Как добавить дополнительную информацию в динамический список с помощью расширения!
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Эта колонка заполняется только для выводимых в данный момент на экран данных. Её нет, точнее, она НЕ заполнена для всего динамического списка. Наоборот, методический совет отключать отбор и сортировку по такой колонки, чтобы не вводить пользователя в заблуждение. Хочешь отбор, заполняй колонку в запросе
и в событии ПриПолученииДанныхНаСервере заполняется колонка "Отгрузка".
Эта колонка заполняется только для выводимых в данный момент на экран данных. Её нет, точнее, она НЕ заполнена для всего динамического списка. Наоборот, методический совет отключать отбор и сортировку по такой колонки, чтобы не вводить пользователя в заблуждение. Хочешь отбор, заполняй колонку в запросе
(2) это я читал в документации, вопрос в другом, если возможность исключить строки в процедуре ПриПолученииДанныхНаСервере? В РасчетПросроченнойЗадолженности в запросе параметрами выступают значения из отобранных документов и я не знаю как объединить эти два запроса (запрос динамического списка и запрос функции РасчетПросроченнойЗадолженности).
(4) я наверное не полностью раскрыл общую задачу. Суть в том, что в динамический список выводятся заказы покупаталей. Вот такая портянка.
ДинамическийСписок
А вот так определяю просроченную задолженность. Мне надо вот эту функцию применить к результатам верхнего запроса и оставить в динамическом списке, только те заказы, по которым есть просроченная задолженность.
ДинамическийСписок
ВЫБРАТЬ
МаршрутыПоДням.НомерСтроки КАК ПорядокМаршрута,
МаршрутыПоДням.Маршрут КАК Маршрут
ПОМЕСТИТЬ МаршуртыПоДням
ИЗ
Справочник.МаршрутыПоДнямНедели.Маршруты КАК МаршрутыПоДням
ГДЕ
МаршрутыПоДням.Ссылка.Наименование = &ДеньНедели
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
МаршуртыПоДням.ПорядокМаршрута КАК ПорядокМаршрута,
МаршуртыПоДням.Маршрут КАК Маршрут,
ГруппаМаршрутов._Контрагент_Или_Маршрут КАК Контрагент,
ГруппаМаршрутов._Порядок КАК ПорядокКонтрагента
ПОМЕСТИТЬ МаршрутКонтрагенты
ИЗ
МаршуртыПоДням КАК МаршуртыПоДням
ЛЕВОЕ СОЕДИНЕНИЕ Справочник._tunesoft_ru_Маршруты._Контрагенты_И_Маршруты КАК ГруппаМаршрутов
ПО МаршуртыПоДням.Маршрут = ГруппаМаршрутов.Ссылка
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Заказ.Номер КАК НомерЗаказа,
Заказ.Дата КАК Дата,
Заказ.Ссылка КАК ЗаказПокупателя,
Заказ.Контрагент КАК Контрагент,
Заказ.ДоговорКонтрагента КАК Договор,
Заказ.ОтгрузкаБезПроверок КАК ОтгрузкаБезПроверок,
ВЫБОР
КОГДА Заказ.Самовывоз
ТОГДА 0
ИНАЧЕ ЕСТЬNULL(МаршрутКонтрагенты.ПорядокМаршрута, 10000)
КОНЕЦ КАК ПорядокМаршрута,
ВЫБОР
КОГДА Заказ.Самовывоз
ТОГДА 0
ИНАЧЕ ЕСТЬNULL(МаршрутКонтрагенты.ПорядокКонтрагента, 10000)
КОНЕЦ КАК ПорядокКонтрагента,
Заказ.Самовывоз КАК Самовывоз,
ВЫБОР
КОГДА ЗаказОстаткиИОбороты.КоличествоПриход = ЗаказОстаткиИОбороты.КоличествоКонечныйОстаток
ТОГДА ЛОЖЬ
ИНАЧЕ ИСТИНА
КОНЕЦ КАК Отгружен,
Заказ.Сборщик КАК Сборщик,
ВЫРАЗИТЬ("" КАК СТРОКА(100)) КАК Отгрузка
ПОМЕСТИТЬ Заказы
ИЗ
Документ.ЗаказПокупателя КАК Заказ
ЛЕВОЕ СОЕДИНЕНИЕ МаршрутКонтрагенты КАК МаршрутКонтрагенты
ПО Заказ.Контрагент = МаршрутКонтрагенты.Контрагент
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты(, , , , ) КАК ЗаказОстаткиИОбороты
ПО (ЗаказОстаткиИОбороты.ЗаказПокупателя = Заказ.Ссылка)
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Заказы.НомерЗаказа КАК НомерЗаказа,
Заказы.Дата КАК Дата,
Заказы.ЗаказПокупателя КАК ЗаказПокупателя,
Заказы.Контрагент КАК Контрагент,
Заказы.Договор КАК Договор,
Заказы.ОтгрузкаБезПроверок КАК ОтгрузкаБезПроверок,
Заказы.ПорядокМаршрута КАК ПорядокМаршрута,
Заказы.ПорядокКонтрагента КАК ПорядокКонтрагента,
Заказы.Самовывоз КАК Самовывоз,
Заказы.Отгружен КАК Отгружен,
Заказы.Сборщик КАК Сборщик,
Заказы.Отгрузка КАК Отгрузка
ИЗ
Заказы КАК Заказы
ГДЕ
Заказы.Отгружен = ЛОЖЬ И Заказы.ОтгрузкаБезПроверок = ЛОЖЬ
УПОРЯДОЧИТЬ ПО
Заказы.ПорядокМаршрута,
Заказы.Дата,
Заказы.ПорядокКонтрагента
ПоказатьА вот так определяю просроченную задолженность. Мне надо вот эту функцию применить к результатам верхнего запроса и оставить в динамическом списке, только те заказы, по которым есть просроченная задолженность.
Функция РасчетПросроченнойЗадолженности(Контрагент, МинусДней=0, Договор=Неопределено) Экспорт
ТекстЗапроса = "ВЫБРАТЬ
| Остатки.Контрагент КАК Контрагент,
| Остатки.ТекущийОстатокДолга КАК ТекущийОстатокДолга,
| Остатки.Договор КАК Договор,
| ЕСТЬNULL(Обороты.УвеличениеДолгаЗаПериод, 0) КАК УвеличениеДолгаЗаПериод
|ПОМЕСТИТЬ ОстатокИОбороты
|ИЗ
| (ВЫБРАТЬ
| ВзаиморасчетыСКонтрагентамиОстатки.Контрагент КАК Контрагент,
| ВзаиморасчетыСКонтрагентамиОстатки.Контрагент.Отсрочка КАК Отсрочка,
| ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента КАК Договор,
| ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток КАК ТекущийОстатокДолга
| ИЗ
| РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&Сегодня, ) КАК ВзаиморасчетыСКонтрагентамиОстатки
| ГДЕ
| ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток > 0 И Контрагент = &Контрагент "
+ ?(Договор = Неопределено, "", "
| И ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента = &Договор") + ") КАК Остатки
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| ВзаиморасчетыСКонтрагентамиОбороты.Контрагент КАК Контрагент,
| ВзаиморасчетыСКонтрагентамиОбороты.Контрагент.Отсрочка КАК Отсрочка,
| ВзаиморасчетыСКонтрагентамиОбороты.ДоговорКонтрагента КАК Договор,
| СУММА(ВЫБОР
| КОГДА ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовПриход > 0
| ТОГДА ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовПриход
| ИНАЧЕ 0
| КОНЕЦ) КАК УвеличениеДолгаЗаПериод
| ИЗ
| РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(ДОБАВИТЬКДАТЕ(&Сегодня, ДЕНЬ, &МинусДней), &Сегодня, Запись, ) КАК ВзаиморасчетыСКонтрагентамиОбороты "
+ ?(Договор = Неопределено, "", "
| ГДЕ ВзаиморасчетыСКонтрагентамиОбороты.ДоговорКонтрагента = &Договор") + "
| СГРУППИРОВАТЬ ПО
| ВзаиморасчетыСКонтрагентамиОбороты.Контрагент,
| ВзаиморасчетыСКонтрагентамиОбороты.Контрагент.Отсрочка,
| ВзаиморасчетыСКонтрагентамиОбороты.ДоговорКонтрагента ) КАК Обороты
| ПО Остатки.Контрагент = Обороты.Контрагент И Остатки.Договор = Обороты.Договор
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ОстатокИОбороты.Контрагент КАК Контрагент,
| ОстатокИОбороты.Договор КАК Договор,
| ОстатокИОбороты.ТекущийОстатокДолга КАК ТекущийОстатокДолга,
| ОстатокИОбороты.УвеличениеДолгаЗаПериод КАК УвеличениеДолгаЗаПериод,
| ВЫБОР
| КОГДА ОстатокИОбороты.ТекущийОстатокДолга - ОстатокИОбороты.УвеличениеДолгаЗаПериод > 0
| ТОГДА ОстатокИОбороты.ТекущийОстатокДолга - ОстатокИОбороты.УвеличениеДолгаЗаПериод
| ИНАЧЕ 0
| КОНЕЦ КАК ПросроченнаяЗадолженность
|ПОМЕСТИТЬ Задолженность
|ИЗ
| ОстатокИОбороты КАК ОстатокИОбороты
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Задолженность.Контрагент КАК Контрагент,
| Задолженность.Договор КАК Договор,
| Задолженность.ТекущийОстатокДолга КАК ТекущийОстатокДолга,
| Задолженность.УвеличениеДолгаЗаПериод КАК УвеличениеДолгаЗаПериод,
| Задолженность.ПросроченнаяЗадолженность,
| ДОБАВИТЬКДАТЕ(&Сегодня, ДЕНЬ, &МинусДней) КАК ДатаНачалаИнтервала
|ИЗ
| Задолженность";
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("Контрагент", Контрагент);
Запрос.УстановитьПараметр("МинусДней", -МинусДней);
Запрос.УстановитьПараметр("Сегодня", ТекущаяДата());
Запрос.УстановитьПараметр("Договор", Договор);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
ПросроченнаяЗадолженность = 0;
Пока Выборка.Следующий() Цикл
ПросроченнаяЗадолженность = ПросроченнаяЗадолженность + Выборка.ПросроченнаяЗадолженность;
КонецЦикла;
Возврат ПросроченнаяЗадолженность;
КонецФункции
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот