#0
by SHAS
Не чувствую себя уверенно в RLS, поэтому прошу совета, как сделать наиболее оптимально, чтоб поменьше тормозило. Задача: Запретить чтение документов ПоступлениеТоваровУслуг, если табличная часть "Товары" не пустая. Работают, вроде как, такие варианты: 1. ПоступлениеТоваровУслуг ИЗ #ТекущаяТаблица КАК ПоступлениеТоваровУслуг ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары ПО ПоступлениеТоваровУслуг.Ссылка = ПоступлениеТоваровУслугТовары.Ссылка ГДЕ ПоступлениеТоваровУслугТовары.Номенклатура ЕСТЬ NULL 2. ПоступлениеТоваровУслуг ГДЕ НЕ ПоступлениеТоваровУслуг.Товары.Номенклатура.Наименование Подобно "%" ==== Нужен совет - какой вариант лучше, и может есть какой-то более правильный вариант. Мне казалось, что по аналогии со вторым вариантом, должен работать вариант: ПоступлениеТоваровУслуг ГДЕ ПоступлениеТоваровУслуг.Товары.Номенклатура ЕСТЬ NULL но в этом варианте пропадают все документы. Почему?
#2
by Cyberhawk
А еще лучше хранить признак того, пустая ТЧ или не пустая, в шапке документа или в регистре сведений
#4
by AlvlSpb
"но в этом варианте пропадают все документы. Почему?" Попробуй: ГДЕ ПоступлениеТоваровУслуг.Товары.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
#7
by Tateossian
То есть, предполагается, что документ - либо по услугам, либо по оборудованию? Самый простой и правильный вариант - добавь служебный реквизит в документ с булевом или перечислением, скажем, "ЕстьТовары", при записи документа его устанавливай. А потом просто в RLS проверяй этот реквизит. Вот, как киберсокол говорит. Есть вариант посложнее, проверять на первую строчку ТЧ, вот так: И ПоступлениеТоваровУслугТовары.НомерСтроки = 1) ГДЕ ПоступлениеТоваровУслугТовары.Ссылка ЕСТЬ NULL
#8
by SHAS
Спасибо всем за идеи! Возьму на вооружение доп. реквизит в шапке, спасибо Cyberhawk, курочить конфу больше, но всяко быстрее будет работать. Задача проста - не дать ни в коем случае увидеть документ, в котором есть заполненная часть "Товары". Но очень нужно видеть документы с услугами (если в них нет товаров). Спасибо за вариант, кажется тоже пошустрее моего. Но для понимания РЛС таки остался вопрос: Почему не работает вариант: ПоступлениеТоваровУслуг ГДЕ ПоступлениеТоваровУслуг.Товары.Номенклатура ЕСТЬ NULL ? Также не работает: ПоступлениеТоваровУслуг ГДЕ ПоступлениеТоваровУслуг.Товары.НомерСтроки Есть Null Это тоже не работает: ГДЕ ПоступлениеТоваровУслуг.Товары.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка), но это вроде как понятно. А вот пункт 2 из работает! Этот вариант отличается ещё одним джоином с Номенклатурой, конечно, но всё равно непонятно, что там, если не Нулл? Сейчас тестирую на файловой версии, доступа к СКЛ нет, даже профайлер не запустишь, чтоб на мысль натолкнул.
#9
by Cyberhawk
"для понимания РЛС таки остался вопрос" // Так консоль запросов тебе в помощь, там выполняешь запрос к таблице документов и смотришь, что в результате имеешь (какие документы видишь)
#10
by Tateossian
// А вот пункт 2 из работает! что там, если не Нулл Это равносильно ПоступлениеТоваровУслуг ГДЕ Истина Там - ложь
#11
by SHAS
Возможно, я что-то не догоняю в запросах... Как мне это: "ПоступлениеТоваровУслуг ГДЕ ПоступлениеТоваровУслуг.Товары.Номенклатура ЕСТЬ NULL" превратить в запрос? Если вот так: ВЫБРАТЬ ПоступлениеТоваровУслуг.Ссылка ИЗ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг ГДЕ ПоступлениеТоваровУслуг.Товары.Номенклатура Есть Null то запрос возвращает пустоту. а вот этот: ПоступлениеТоваровУслуг.Ссылка ИЗ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг ГДЕ НЕ ПоступлениеТоваровУслуг.Товары.Номенклатура.Наименование ПОДОБНО "%" выдаёт нужные мне документы без товаров. Т.е. ситуация повторяется с РЛС. Но ясности не добавляет. Я никогда раньше не использовала вот это обращение к табличной части через точку и не понимаю. На выходе получаем вложенный результат запроса и как его в запросе проверить на пустоту - хез. В общем, на просторах же Мисты обнаружено вот такое изящное решение: ПоступлениеТоваровУслуг ГДЕ НЕ ПоступлениеТоваровУслуг.Товары.НомерСтроки В Оно мне прям нравится, аж доп. реквизит добавлять не хочется.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- RLS на чтение записей регистра бухгалтерии
- Выгрузка табличной части и загрузка таб.части документа
- RLS - условие по табличной части
- RLS по реквизитам табличной части
- Обращение к табличной части справочника из табличной части документа
- Выбрать в табличной части документа элемент табличной части справочника
- почему в табличной части не выводится реквизит табличной части?
В этой группе 1С
- Вывод колонок макета не горизонтально, а вертикально
- Итог по колонке динамического списка
- отбор по параметру в запросе
- v.8. Штрих, нажал инициализация случайно. Как вернуть ИНН и номер кассы в кассу?
- Внешняя Печатная форма Эксель
- v7: Подключение к почте в семерке
- УФ: скопировать форму списка в закладку другой формы?
- Рарус Аптека Розница 2.0
- Слетают логические устройства
- Преобразование базы клиент-серверной в файловую
- ЗУП 3 КОРП. Механизм произвольных кадровых приказов.
- v7: эмулятор ФР
- Провайдер СБИС, EDIEDO.
- УТ 11.3 Обособленное обесепечение товаров. Возврат поставщику
- 1С Розница 2.2 - ошибка при печати чека "Невозможно начислить скидку"
- v.8. Windows 10 и онлайн чеки Атол
- Серверные вызовы при завершении работы, вот это все...
- Отключить ключи защиты 1С: СЛК
- v7: Как проверить существование глобальной переменной?
- передача данных из отчета в документ