Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   RLS к табличной части документа (http://forums.kuban.ru/f1040/rls_k_tablichnoj_chasti_dokumenta-7316038.html)

Serg435 13.11.2015 16:28

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

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

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

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

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

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

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

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

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

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

GariPortman 13.11.2015 17:33

Может проще подпиской?

roma n 13.11.2015 17:51

В первом RLS в самом глубоком запросе выбираются документы, содержащие хотя бы одну строку с НЕ помеченной на удаление номенклатурой. "ГДЕ(НЕ" применённое к этой выборке даст выборку документов, не содержащих ничего кроме строк с помеченной на удаление номенклатурой. Это несколько противоречит постановке "один из товаров"
ЗЫ (1) +100

bma1 13.11.2015 22:37

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

reanimator 15.11.2015 18:25

(0) Это нафига ж над системой так издеваться, если подписки есть?

Reaper 16.11.2015 01:24

А самое главное, что и пользователь, глядя на сообщение "не достаточно прав", и админ ,глядя в журнал регистрации на запись "ошибка доступа" для события "изменение", очень быстро поймут, что же с системой не так.

Отличный способ выстрелить себе в колено. Такого в моей коллекции еще не было.

qweqwe123123 16.11.2015 03:44

может запись только нового документа

qweqwe123123 16.11.2015 03:47

но тогда обходится юзером без проблем: выбрал не помеченную номенклатуру, записал, зашёл, поменял на помеченную, опять записал.

всё-таки на этапе подбора номенклатуры надо отсеивать, имхо

Serg435 16.11.2015 12:25

3-bma1 > НЕ сохраняет табличную часть в обоих случаях (есть пометка у номенклатуры или нет)

roma n 16.11.2015 12:30

(8) ещё раз: не делай RLS. Помедитируй над (5).
Твоя задача - это классическая проверка заполнения с нормальным информативным сообщением пользователю (и отказом от записи, если уж так припёрло).

Serg435 16.11.2015 13:21

9-roma n >делаю через события, но просто стало интересно, как же этот чудный RLS запрос строить-то

roma n 16.11.2015 15:30

В первом примере из (0) убери НЕ из самого глубоко вложенного запроса

bma1 16.11.2015 15:33

2(8) ГДЕ
НЕ РеализацияТоваровУслугТовары.Номенклатура.ПометкаУ даления И РеализацияТоваровУслугТовары.Ссылка = РеализацияТоваровУслуг.Ссылка
)
Читать как
ГДЕ
РеализацияТоваровУслугТовары.Номенклатура.ПометкаУ даления И РеализацияТоваровУслугТовары.Ссылка = РеализацияТоваровУслуг.Ссылка
)

Serg435 16.11.2015 15:49

12-bma1 >неа, всё равно НЕ хочет в обоих случаях

Serg435 16.11.2015 15:53

11-roma n >убрал не хочет записывать в любом случае (есть номенклатура с пометкойуд, нету - отказ)

Serg435 16.11.2015 15:59

3-bma1 >мне нравится ход твоих мыслей, но кажется надо упорядочить выборку по значению пометка удаления, чтобы "Истина" была вверху. но как это сделать я не знаю. а конструктор твой запрос не может разобрать.

bma1 16.11.2015 16:15

2(15) не надо никого упорядочивать. надо попытаться получить хоть одну строку, удовлетворяющую условию, что в ней есть номенклатура с пометкой удаления. И если есть хоть одна такая строка - ВЫБРАТЬ ПЕРВЫЕ 1, проверить на вхождение значения 1 в результата этой выборки - 1. Если таких строк нет - в выборке пусто и условие НЕ 1 В ( - срабатывает как НЕ ЛОЖЬ = ИСТИНА.
Такой запрос у меня работает на проверку табличной части документа из самописной конфы, где требуется, что если хоть одно значение входит в определенный список - тогда документ не подлежит чтению.

Serg435 16.11.2015 18:33

сделал через подписку на событие с сообщением причины всё кошерно как хотели:
1-GariPortman >
5-Reaper >9-roma n >

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


Текущее время: 01:24. Часовой пояс GMT +3.