К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

RLS к табличной части документа

Гость
0 - 13.11.2015 - 16:28
Необходимо:
1.если хоть один из товаров имеет пометку удаления - не разрешать запись документа.
2.это должно действовать с определенной даты

управляемые формы (хотя для RLS это не сильно важно).

Текст ниже НЕ работает

РеализацияТоваровУслуг ГДЕ (НЕ РеализацияТоваровУслуг.Ссылка В
(ВЫБРАТЬ
РеализацияТоваровУслугТовары.Ссылка
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ГДЕ
НЕ РеализацияТоваровУслугТовары.Номенклатура.ПометкаУ даления ))

(подглядел в каком-то FAQ по RLS)

пробовал через левое соединение - что типа такого:

РеализацияТоваровУслуг ИЗ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
РеализацияТоваровУслугТовары.Ссылка КАК Ссылка
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ГДЕ
НЕ РеализацияТоваровУслугТовары.Номенклатура.ПометкаУ даления) КАК ВложенныйЗапрос
ПО РеализацияТоваровУслуг.Ссылка = ВложенныйЗапрос.Ссылка

тоже не работает.

Вариантов перепробовал массу вариантов.

вот это работает
РеализацияТоваровУслуг ГДЕ НЕ РеализацияТоваровУслуг.ПометкаУдаления
если принять, что задание - НЕ сохранять помеченные на удаление документы.
До даты даже не добрался. Но это может и смогу сам. А вот обращение к табличной части. Понимаю, что надо отсортировать выборку из табличной части по пометке удаления, так, чтобы помеченные были вверху и ВЫБРАТЬ 1, но всё что я не строил или было с ошибкой или не работало. Как правило спокойно сохраняло документ с двумя товарами - у одного есть пометка, у другого нет.
З.ы. и да я знаю, что: кртксть - сстр, тлнт.



1 - 13.11.2015 - 17:33
Может проще подпиской?
Гость
2 - 13.11.2015 - 17:51
В первом RLS в самом глубоком запросе выбираются документы, содержащие хотя бы одну строку с НЕ помеченной на удаление номенклатурой. "ГДЕ(НЕ" применённое к этой выборке даст выборку документов, не содержащих ничего кроме строк с помеченной на удаление номенклатурой. Это несколько противоречит постановке "один из товаров"
ЗЫ (1) +100
3 - 13.11.2015 - 22:37
РеализацияТоваровУслуг ГДЕ НЕ 1 В (
ВЫБРАТЬ ПЕРВЫЕ 1
1
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ГДЕ
НЕ РеализацияТоваровУслугТовары.Номенклатура.ПометкаУ даления И РеализацияТоваровУслугТовары.Ссылка = РеализацияТоваровУслуг.Ссылка
)
4 - 15.11.2015 - 18:25
(0) Это нафига ж над системой так издеваться, если подписки есть?
Гость
5 - 16.11.2015 - 01:24
А самое главное, что и пользователь, глядя на сообщение "не достаточно прав", и админ ,глядя в журнал регистрации на запись "ошибка доступа" для события "изменение", очень быстро поймут, что же с системой не так.

Отличный способ выстрелить себе в колено. Такого в моей коллекции еще не было.
Гость
6 - 16.11.2015 - 03:44
может запись только нового документа
Гость
7 - 16.11.2015 - 03:47
но тогда обходится юзером без проблем: выбрал не помеченную номенклатуру, записал, зашёл, поменял на помеченную, опять записал.

всё-таки на этапе подбора номенклатуры надо отсеивать, имхо
Гость
8 - 16.11.2015 - 12:25
3-bma1 > НЕ сохраняет табличную часть в обоих случаях (есть пометка у номенклатуры или нет)
Гость
9 - 16.11.2015 - 12:30
(8) ещё раз: не делай RLS. Помедитируй над (5).
Твоя задача - это классическая проверка заполнения с нормальным информативным сообщением пользователю (и отказом от записи, если уж так припёрло).
Гость
10 - 16.11.2015 - 13:21
9-roma n >делаю через события, но просто стало интересно, как же этот чудный RLS запрос строить-то
Гость
11 - 16.11.2015 - 15:30
В первом примере из (0) убери НЕ из самого глубоко вложенного запроса
12 - 16.11.2015 - 15:33
2(8) ГДЕ
НЕ РеализацияТоваровУслугТовары.Номенклатура.ПометкаУ даления И РеализацияТоваровУслугТовары.Ссылка = РеализацияТоваровУслуг.Ссылка
)
Читать как
ГДЕ
РеализацияТоваровУслугТовары.Номенклатура.ПометкаУ даления И РеализацияТоваровУслугТовары.Ссылка = РеализацияТоваровУслуг.Ссылка
)
Гость
13 - 16.11.2015 - 15:49
12-bma1 >неа, всё равно НЕ хочет в обоих случаях
Гость
14 - 16.11.2015 - 15:53
11-roma n >убрал не хочет записывать в любом случае (есть номенклатура с пометкойуд, нету - отказ)
Гость
15 - 16.11.2015 - 15:59
3-bma1 >мне нравится ход твоих мыслей, но кажется надо упорядочить выборку по значению пометка удаления, чтобы "Истина" была вверху. но как это сделать я не знаю. а конструктор твой запрос не может разобрать.
16 - 16.11.2015 - 16:15
2(15) не надо никого упорядочивать. надо попытаться получить хоть одну строку, удовлетворяющую условию, что в ней есть номенклатура с пометкой удаления. И если есть хоть одна такая строка - ВЫБРАТЬ ПЕРВЫЕ 1, проверить на вхождение значения 1 в результата этой выборки - 1. Если таких строк нет - в выборке пусто и условие НЕ 1 В ( - срабатывает как НЕ ЛОЖЬ = ИСТИНА.
Такой запрос у меня работает на проверку табличной части документа из самописной конфы, где требуется, что если хоть одно значение входит в определенный список - тогда документ не подлежит чтению.
Гость
17 - 16.11.2015 - 18:33
сделал через подписку на событие с сообщением причины всё кошерно как хотели:
1-GariPortman >
5-Reaper >9-roma n >

но блин запрос всё равно не отработал


К списку вопросов






Copyright ©, Все права защищены