|
Самописный отбор в списке документов | ☑ | ||
---|---|---|---|---|
0
Vladislava-smile
14.08.15
✎
10:14
|
Люди помогите, ничего придумать не могу .. (((.
Итак, список документов Заказ покупателя. При получении данных заполняется еще 2 поля в списке на форме - суммаОплаты и СуммаОтгрузки, их нет в документеСписке отбора. Нужно сделать, чтобы отображались документы, где СуммаОплаты>СуммыОтгрузки. В реквизит эти данные не запихаешь, чтобы сделать стандартный отбор (. Я думала сначала по кнопке записать в список значений номера документов, где условие выполняется, а потом прописывать программно отбор, но так как список динамический наверно так нельзя сделать, по крайней мере я не нашла ... (. Потом была мысль на форме поставить флаг "Отобрать доки, где оплата>отгрузка" и при олучении данных проверять эту галку и ставить видимость строки = ложь в оформлении, но так тоже говорят не сделаешь, можно скрыть только ячейку ... (( Что делать??? // Выберем суммы оплат и отгрузок Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок) МассивЗаказов = Новый Массив; Для каждого ОформлениеСтроки из ОформленияСтрок Цикл МассивЗаказов.Добавить(ОформлениеСтроки.ДанныеСтроки.Ссылка); КонецЦикла; ЗапросОплатыОтгрузки = Новый Запрос(" |ВЫБРАТЬ РАЗРЕШЕННЫЕ | ЕСТЬNULL(Взаиморасчеты.Сделка, Продажи.ЗаказПокупателя) КАК Заказ, | ЕСТЬNULL(Продажи.СтоимостьОборот, 0) КАК СуммаОтгрузки, | ЕСТЬNULL(Взаиморасчеты.СуммаВзаиморасчетовРасход, 0) КАК СуммаОплаты |ИЗ | РегистрНакопления.Продажи.Обороты(,,,ЗаказПокупателя В (&МассивЗаказов)) КАК Продажи | ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(,,,Сделка В (&МассивЗаказов)) КАК Взаиморасчеты | ПО Продажи.ЗаказПокупателя = Взаиморасчеты.Сделка"); ЗапросОплатыОтгрузки.УстановитьПараметр("МассивЗаказов", МассивЗаказов); ТаблицаОплатыОтгрузки = ЗапросОплатыОтгрузки.Выполнить().Выгрузить(); Для каждого ОформлениеСтроки из ОформленияСтрок Цикл СтрокаОплатыОтгрузки = ТаблицаОплатыОтгрузки.Найти(ОформлениеСтроки.ДанныеСтроки.Ссылка); Если СтрокаОплатыОтгрузки = Неопределено Тогда СуммаОплаты = 0; СуммаОтгрузки = 0; Иначе СуммаОплаты = СтрокаОплатыОтгрузки.СуммаОплаты; СуммаОтгрузки = СтрокаОплатыОтгрузки.СуммаОтгрузки; КонецЕсли; // оплата ОформлениеСтроки.Ячейки.СуммаОплаты.Значение = СуммаОплаты; Если СуммаОплаты = ОформлениеСтроки.ДанныеСтроки.СуммаДокумента или СуммаОплаты = 0 Тогда ОформлениеСтроки.Ячейки.СуммаОплаты.ЦветФона = Новый Цвет; ИначеЕсли СуммаОплаты < ОформлениеСтроки.ДанныеСтроки.СуммаДокумента Тогда ОформлениеСтроки.Ячейки.СуммаОплаты.ЦветФона = Новый Цвет(255, 192, 192); Иначе ОформлениеСтроки.Ячейки.СуммаОплаты.ЦветФона = Новый Цвет(192, 255, 192); КонецЕсли; // отгрузки ОформлениеСтроки.Ячейки.СуммаОтгрузки.Значение = СуммаОтгрузки; Если СуммаОтгрузки = СуммаОплаты Тогда ОформлениеСтроки.Ячейки.СуммаОтгрузки.ЦветФона = Новый Цвет; ИначеЕсли СуммаОтгрузки > СуммаОплаты Тогда ОформлениеСтроки.Ячейки.СуммаОтгрузки.ЦветФона = Новый Цвет(255, 192, 192); Иначе ОформлениеСтроки.Ячейки.СуммаОтгрузки.ЦветФона = Новый Цвет(192, 255, 192); КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
1
mzelensky
14.08.15
✎
10:16
|
(0) Сделай отчетом и не ипи мозг.
Знаем мы все эти хотелки "сделайте мне в журнале документов". Хотите чтобы нормально работало - не придумывайте сами себе костыли |
|||
2
shuhard_серый
14.08.15
✎
10:18
|
(0) нет проблемы с таким отбором, запросом находишь список нужных документов и ставишь отбор в Списке, это если толстый клиент или делаешь отдельную управляемую форму и в ней подкладываешь под список нужный запрос
|
|||
3
Vladislava-smile
14.08.15
✎
10:25
|
(1) не хотят отчет (((
(2) Запрос делать к динамическому списку? |
|||
4
shuhard_серый
14.08.15
✎
10:28
|
(3)[ Запрос делать к динамическому списку?]
динамический список строить на основании произвольного запроса для управляемой формы у тебя же УТ 10.3 или УПП делаешь кнопку в журнале/списке заказов и открываешь управляемую форму если в лом, то делай через отбор в списке - нет красиво, но работает на раз |
|||
5
mzelensky
14.08.15
✎
10:28
|
(3) Судя по (0) у тебя обычные формы. Какой динамический список?
или все-таки Управляемые? Но тогда решение будет несколько другое! |
|||
6
Леха Дум
14.08.15
✎
10:33
|
Включай в конфе разрешение на управляемые формы и делай новую форму для списка управляемой - это будет намного лучше "хитросделанных" обычных форм
|
|||
7
shuhard_серый
14.08.15
✎
10:35
|
(4) +1
если через список , то как то так Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | FIT_ОтветственноеХранениеОстатки.КоличествоОстаток, | FIT_ОтветственноеХранениеОстатки.ДокументОтгрузки КАК Ссылка |ИЗ | РегистрНакопления.FIT_ОтветственноеХранение.Остатки() КАК FIT_ОтветственноеХранениеОстатки"; ТЗ = Запрос.Выполнить().Выгрузить(); МассивОтв=ТЗ.ВыгрузитьКолонку("ссылка"); СписокОтв=Новый СписокЗначений; СписокОтв.ЗагрузитьЗначения(МассивОтв); Если МассивОтв.Количество()>0 Тогда ДокументСписок.Отбор.Ссылка.ВидСравнения=ВидСравнения.ВСписке; ДокументСписок.Отбор.Ссылка.Использование=Истина; ДокументСписок.Отбор.Ссылка.Значение=СписокОтв; КонецЕсли; |
|||
8
Vladislava-smile
14.08.15
✎
10:36
|
(4) Обычная форма, УТ 10.3.
Спасибо, попробую и так и так. |
|||
9
shuhard_серый
14.08.15
✎
10:38
|
(8) а чё там пробовать - прыгай =)
для списка код в 10 строчек и он на экране |
|||
10
Vladislava-smile
14.08.15
✎
10:46
|
(9) - да не прыгается чего-то ... ошибка
{Документ.ЗаказПокупателя.Форма.ФормаСписка.Форма(190)}: Ошибка при вызове метода контекста (Выполнить) ТЗ = Запрос.Выполнить().Выгрузить(); по причине: {(5, 5)}: Таблица не найдена "РегистрНакопления.FIT_ОтветственноеХранение.Остатки" <<?>>РегистрНакопления.FIT_ОтветственноеХранение.Остатки() КАК FIT_ОтветственноеХранениеОстатки |
|||
11
Vladislava-smile
14.08.15
✎
10:46
|
Что за регистр такой?
|
|||
12
shuhard_серый
14.08.15
✎
12:10
|
(11) мать, а мой Рг тебе зачем ?
ты пишешь свой запрос со своими условиями и получаешь отбор по документам |ВЫБРАТЬ РАЗРЕШЕННЫЕ | ЕСТЬNULL(Взаиморасчеты.Сделка, Продажи.ЗаказПокупателя) КАК Ссылка, | ЕСТЬNULL(Продажи.СтоимостьОборот, 0) КАК СуммаОтгрузки, | ЕСТЬNULL(Взаиморасчеты.СуммаВзаиморасчетовРасход, 0) КАК СуммаОплаты |ИЗ | РегистрНакопления.Продажи.Обороты(,,,ЗаказПокупателя В (&МассивЗаказов)) КАК Продажи | ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(,,,Сделка В (&МассивЗаказов)) КАК Взаиморасчеты | ПО Продажи.ЗаказПокупателя = Взаиморасчеты.Сделка"); ЗапросОплатыОтгрузки.УстановитьПараметр("МассивЗаказов", МассивЗаказов); ТЗ = ЗапросОплатыОтгрузки.Выполнить().Выгрузить(); МассивОтв=ТЗ.ВыгрузитьКолонку("ссылка"); СписокОтв=Новый СписокЗначений; СписокОтв.ЗагрузитьЗначения(МассивОтв); Если МассивОтв.Количество()>0 Тогда ДокументСписок.Отбор.Ссылка.ВидСравнения=ВидСравнения.ВСписке; ДокументСписок.Отбор.Ссылка.Использование=Истина; ДокументСписок.Отбор.Ссылка.Значение=СписокОтв; КонецЕсли; |
|||
13
Vladislava-smile
16.08.15
✎
15:50
|
(12) - спасибо, сделала и усе заработало.
Тут у меня следом еще вопрос нарисовался - вставить дополнительное поле для отбора в стандартную настройку. Отбор по реквизиту таб части. Форма обычная как писала выше. Добавляю новый объект критерии отбора - там устанавливаю тип и данные. При запуске предприятия этот отбор появляется в списке отборов, но действия неверные выполняет. Куда копать? |
|||
14
Vladislava-smile
16.08.15
✎
16:01
|
Тоже запрос надо будет писать, да? И стандартным методом так не сделать?
|
|||
15
shuhard_серый
16.08.15
✎
16:10
|
(13)
(14) критерий нормально работает из документа(справочника), который является его параметром, что ты сделал и что за [ействия неверные выполняет] тайна великая |
|||
16
shuhard_серый
16.08.15
✎
16:19
|
(15) +1
т.е. если создать критерий по ТЧ и номенклатуре, то в отбор он попадёт в списке/журнале документов , которые вошли в критерий в справочнике номенклатуры критерия в отборе не будет, он будет в перейти так понятно ? |
|||
17
Vladislava-smile
17.08.15
✎
01:55
|
(15) Есть реквизит таб части ДефицитНаСкладе тип число, 10, 0. Создаю критерий отбора. Там указываю тип такой число 10, 0 и состав Документ.ЗаказПокупателя.ТабличнаяЧасть.Товары.Реквизит.ДефицитНаСкладе. В отборе появляется этот отбор с типом число, но отбор не выполняется верно. Мне нужно в общем чтобы этот реквизит проверялся у каждого документа в таб части, и если есть хотся бы одна строка, где ДефицитНаСкладе не =0, тогда выводить в список.
(16) - не совсем понятно если честно, при чем тут справочник? |
|||
18
Vladislava-smile
17.08.15
✎
03:20
|
У меня подобное по номенклатуре есть уже, работает. Тоже самое делаю, но по другому полю - нет и все. Только при отборе номенклатуры есть еще форма списка в критериях отбора зачем-то, ставлю там точки останова на каждую функцию - при отборе нигде не стопорится. Не понимаю как это работает ((
|
|||
19
Vladislava-smile
17.08.15
✎
04:21
|
Вопрос снимается, в этот реквизит таб части запись не идет оказывается. А при открытии документа каждый раз при получении данных идет обращение к регистру и заполняется табличное поле. Это жесть конечно.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |