Доброго времени суток!
Стоит задача, запретить пользователям проводить документ "ЗаказКлиента" не со своего склада, конфигурация УТ 11 (11.4.14.164) типовая.
Реализация через расширение: добавил справочник Пользователи + добавил к нему табличную часть с реквизитом "Склад" у которого тип "СправочникСсылка.Склады", затем эту табл часть вынес на форму справочника "Пользователи" и в ней указываю для каждого пользователя его склады(максимум два склада). Далее, хочу в модуле объекта документа "ЗаказКлиента" прописать условие, что если пользователь "такой-то" пытается указать склад в документе к которому он не относится (а не относится он если не добавил склад для него в табличную часть справочника "пользователи") тогда запретить проведение.Только вот в модуле объекта документа "ЗаказКлиента" никак не могу увидеть программно данную табличную часть.Программа ругается что такого реквизита нет.Что я делаю не так и как можно решить эту проблему?
P.S. просьба строго не судить, новичок..
---
ПараметрыСеанса.ТекущийПользователь.Склады.НайтиСтроки(Новый Структура("Склад", ЭтотОбъект.Склад)).Количество > 0
---
Программа ругается что такого реквизита нет.
И правильно делает.
Что я делаю не так
не правильно обращаетесь к реквизиту табличной части.
.... и как можно решить эту проблему?
Правильно обратится к реквизиту ТЧ.

В данном конкретном случае, так понимаю, нужны все строки ТЧ и значения в них, каким образом вы собрались выполнить проверку, обращаясь напрямую к реквизиту - не совсем понятно.

Чтобы обратится к ТЧ конкретного справочника, нужно сначала получить нужный элемент этого справочника.
Дальше уже можно делать

<ЭлементСправочника>.<ИмяТабличнойЧасти>

Чтобы обратится к реквизиту табличной части, нужно сначала получить строку табличной части.
Дальше уже можно делать

<СтрокаТабличнойЧасти>.<ИмяРеквизита>

Но как уже сказано выше, нужны все строки табличной части, поэтому нужны другие способы получения набора значений из ТЧ документа
---
Чтобы обратится к ТЧ конкретного справочника, нужно сначала получить нужный элемент этого справочника.
Дальше уже можно делать
То есть следующим образом:

1. СкладП = Справочники.Пользователи.НайтиПоНаименованию("Склад"); получаю нужный элемент справочника
    СкладП = Справочники.Пользователи.НайтиПоРеквизиту("Склад"); либо так

2. Склад = СкладП.РазрешенныеСклады.Найти("Склад"); получаю табл часть справочника

3. СкладПользователя = Склад.Склад; получаю сам реквизит
после как прописал условие и пытаюсь провести документ с другим складом выдает ошибку:
Неверно указан реквизит
{ОбщийМодуль.ОбщегоНазначенияУТКлиент.Модуль(1974)}: Результат = Форма.Записать(ПараметрыЗаписи);
{Документ.ЗаказКлиента.Форма.ФормаДокумента.Форма(6375)}: ОбщегоНазначенияУТКлиент.ОбработатьЗаписьОбъектаВФорме(ЭтотОбъект, ПараметрыДляЗаписи);

по причине:
Ошибка при выполнении обработчика - 'ПередЗаписью'
по причине:
Неверно указан реквизит
по причине:
Неверно указан реквизит
---
То есть метод Найти() для табличной части мы изучать никак не хотим?
---
хочу, Склад = СкладП.РазрешенныеСклады.Найти("Склад", "Склад");
В качестве значения что передаю "Склад"?а колонка это ведь реквизит табл части,правильно понимаю, т.е. тот самый "склад" который добавлял?
Мне бы последовательность разъяснить с синтаксисом написания, в СП все вроде бы и легко и в тоже время непонятно.
---
Тип какой у склада?
---
СправочникСсылка.Склады
---
А ты в поиск что передаёшь? Подумай.
---
ПараметрыСеанса.ТекущийПользователь.Склады.НайтиСтроки(Новый Структура("Склад", ЭтотОбъект.Склад)).Количество > 0
---
Из-за утомительного дня соображалка вчера была на спаде и что-то не понял суть метода правильным образом,думаю мне он как раз подходит, спасибо большое!!