helpf.pro
Регистрация

v8: Отбор по документам

Ermak
01.09.2011 15:25Прочитано: 7551
Добрый день! Я еще новичок в программировании 1С.У меня такая проблема. Есть документ "Внутренний заказ " Есть пользователи которые относятся к своим организация. Каждый пользователь при заполнении документа "Внутренний заказ "ставит свою организацию. Надо сделать отбор по организации, чтобы пользователи когда открывают форму списка "Внутренний заказ " видели только свои документы и не могли изменить отбор, т.е отбор был не активных для них. А у пользователя имеющему "Полные права" отбор был активен. Помогите пожалуйста.
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
01.09.2011 15:50Ответ № 1
(0) Ermak, посмотриОтбор документов в списке по установленному значению реквизита , соответсвенно для себя замени Статус на Организацию

Еще можно задавать период - Как установить период в списке документов?

Запретит отбор или сделать отбор недоступным можно так:
Для управления видимостью отборов служит фиксированая коллекция "НастройкаОтбора", которая имеется у табличного поля которое связано с источником данных.
Коллекция состоит из "ЭлементУправленияОтбором" у которого имеются свойства "Доступность" и "Имя".
Нас интересует свойство "Доступность". С помошью этого свойства можно управлять видимостью конкретного отбора для пользователя.
Пример - С помошью этого кода производится отключение для пользователя возможности управлять настройками отбора по контрагенту.
Код 1C v 8.х
 ЭлементыФормы.Список.НастройкаОтбора.Контрагент.Доступность = Ложь;   


Ограничение для всех польщователей с НЕ Полные права, устанавливается так:
Код 1C v 8.х
 Если НЕ РольДоступна("ПолныеПрава") Тогда
// Установим отбор
ЭтаФорма.Отбор.Сотрудник.Использование = Истина;
ЭтаФорма.Отбор.Сотрудник.ВидСравнения = ВидСравнения.Равно;
ЭтаФорма.Отбор.Сотрудник.Значение = глТекущийПользователь;
//Сделаем настройку отбора недоступной
Для каждого ЭлОтбора из ЭлементыФормы.ДокументыСписок.НастройкаОтбора Цикл
ЭлОтбора.Доступность = Ложь;
КонецЦикла;
КонецЕсли;
Ermak
01.09.2011 16:33Ответ № 2
Попробовал я сделать как здесь "Отбор документов в списке по установленному значению реквизита" но выдает ошибку

{Документ.ВнутреннийЗаказ.Форма.ФормаСписка.Форма(50)}: Ошибка при установке значения атрибута контекста (ВидСравнения)
ДокументСписок.Отбор.Организация.ВидСравнения=ВидСравнения.Содержит;
по причине:
Недопустимый тип сравнения
Ermak
01.09.2011 16:36Ответ № 3
Как отбор сделать у меня получилось, но я не понимаю как сделать, если например:

Пользователь: Петька, он состоит в организации ОАО "Бобер"
а пользователь Вова, состоит в организации ОАО "Зайцы"
как сделать отбор чтобы когда заходит Петька он видел только свои документы "Внутрений заказа" , а Вова свои.
Ermak
01.09.2011 17:00Ответ № 4
Какое здесь значения если я использую "Организацию"

Код 1C v 8.х
  ЭтаФорма.Отбор.Организация.Значение =?????;   
E_Migachev
01.09.2011 17:45Ответ № 5
Проще всего тебе сделать так:
Код 1C v 8.х
 СпрОрган = Справочники.Организации;
Если глТекущийПользователь.Имя = "Петька" Тогда
ЭтаФорма.Отбор.Организация.Значение = СпрОрган.НайтиПоНаименованию("ОАО Бобер");
ИначеЕсли глТекущийПользователь.Имя = "Вова" Тогда
ЭтаФорма.Отбор.Организация.Значение = СпрОрган.НайтиПоНаименованию("ОАО Зайцы");
КонецЕсли;
Ermak
02.09.2011 08:27Ответ № 6
(5) E_Migachev, Сначала выдала ошибку:

{Документ.ВнутреннийЗаказ.Форма.ФормаСписка.Форма(50,6)}: Переменная не определена (глТекущийПользователь)
Если <<?>>глТекущийПользователь.Имя = "Петька" Тогда (Проверка: Толстый клиент (обычное приложение))

Я исправил, так:

Код 1C v 8.х
 Если ПараметрыСеанса.ТекущийПользователь.Имя = "Петька" Тогда   

Программа запустилась, но когда открыл документ (форму списка) выдает ошибку

{Документ.ВнутреннийЗаказ.Форма.ФормаСписка.Форма(50)}: Поле объекта не обнаружено (Имя)
Если ПараметрыСеанса.ТекущийПользователь.Имя = "Петька" Тогда

Что не так?
Ermak
02.09.2011 09:58Ответ № 7
Все получилось, СПАСИБО БОЛЬШОЕ ЗА ПОМОЩЬ!!!!
Только я переделал "Заказчик"
Вот исходник

Код 1C v 8.х
 Процедура ПриОткрытии()

СпрОрган = Справочники.Склады;
Если ПараметрыСеанса.ТекущийПользователь.Наименование = "Петька" Тогда
ЭтаФорма.Отбор.Заказчик.Значение = СпрОрган.НайтиПоНаименованию("ОАО Бобер");
ЭтаФорма.Отбор.Заказчик.Использование = Истина;
ИначеЕсли ПараметрыСеанса.ТекущийПользователь.Наименование = "Вова" Тогда
ЭтаФорма.Отбор.Заказчик.Значение = СпрОрган.НайтиПоНаименованию("ОАО Зайцы");
ЭтаФорма.Отбор.Заказчик.Использование = Истина;
КонецЕсли;
ЭлементыФормы.Список.НастройкаОтбора.Заказчик.Доступность = Ложь;

КонецПроцедуры
Ermak
05.09.2011 17:10Ответ № 8
Добрый день! Подниму еще раз эту тему!

Выдает ошибку не могу понять почему:
Делаю отбор по "Ответственный"

Код 1C v 8.2 УП
 
Процедура ПриОткрытии()

СпрОрган = Справочники.Пользователи;
Если ПараметрыСеанса.ТекущийПользователь.Наименование = "Петька" Тогда
ЭтаФорма.Отбор.Ответственный.Значение = СпрОрган.НайтиПоКоду("Петр Ильич");
ЭтаФорма.Отбор.Ответственный.Использование = Истина;
КонецЕсли;
ЭлементыФормы.Список.НастройкаОтбора.Ответственный.Доступность = Ложь;

КонецПроцедуры



Выдает ошибку

{Документ.ПоступлениеТоваровУслуг.Форма.ФормаСписка.Форма(53)}: Поле объекта не обнаружено (Список)
ЭлементыФормы.Список.НастройкаОтбора.Ответственный.Доступность = Ложь;
Изменено 05.09.11 17:11:54
E_Migachev
06.09.2011 10:46Ответ № 9
(8) Ermak, замени список на имя табличного поля на форме
Mokey
06.09.2011 12:25Ответ № 10
Мне кажется, если пользователь принадлежит какой-то одной организации, то это должно быть зафиксировано в базе. Тогда и проблемы при отборе не должно возникнуть. И выставлять в документах организацию можно по умолчанию. А сравнение текстовых полей... это некрасиво и неправильно, исправят "Петька" на "Петро" и всё, лезь и снова исправляй код.
Ermak
06.09.2011 17:15Ответ № 11
(9) E_Migachev, Я не понял вас
Я заменил
Код 1C v 8.2 УП
 ЭлементыФормы.Ответственный.НастройкаОтбора.Ответственный.Доступность = Ложь;   

Получилась какая та ерунда
Изменено 06.09.11 17:16:13
E_Migachev
06.09.2011 18:07Ответ № 12
почему ответсвенный? как называет табличное поле/список в котором делаешь отбор?
Ermak
07.09.2011 08:46Ответ № 13
Я так понимаю вы имеет ввиду Табличные части? Я работаю надо документом "Поступление товар услуг", делаю отбор по "Ответственный", но в табличной части нет этого реквизита, как быть?
E_Migachev
07.09.2011 09:58Ответ № 14
(13) Ermak, я имею ввиду ИМЯ этой табличной части с которой ты работаешь
Ermak
07.09.2011 11:54Ответ № 15
Че та я не понимаю, наверное ушел в другую степь с мыслями. Есть табличные части, там у меня их 5 штук Товары, Возвратная Тара, Услуги, Серийные Номера, Документы Расчетов С Контрагентом. Но в них почему то нет реквизита "Ответственный", по нему я и делаю отбор. А в форме Документа и Списка есть этот реквизит. как быть?
E_Migachev
07.09.2011 12:10Ответ № 16
(15) Ermak, так а где ты делаешь отбор? тебе нужно имя табличного поля в котором ты и делаешь отбор!
Ermak
07.09.2011 12:27Ответ № 17
Я не понимаю почему в форме есть а в табличной части нет его
E_Migachev
07.09.2011 12:41Ответ № 18
в форме может быть ответсвенный, как ответсвенный за документ и в этом случае он к табличной части никакого отношения не имеет
Ermak
08.09.2011 08:08Ответ № 19
КАК тогда быть? Напишите как тогда может быть я не понимаю!
E_Migachev
08.09.2011 10:27Ответ № 20
приложи сюда снимок своей формы, посмотрим
Ermak
08.09.2011 10:37Ответ № 21
Вот title
E_Migachev
08.09.2011 11:38Ответ № 22
(21) Ermak, ну и, как называется табличная часть, в которую выводится список документов? ИМЯ?
Ermak
08.09.2011 11:58Ответ № 23
Внутренние заказы? или форма списка, я пробовал то и то но не чего не получается
E_Migachev
08.09.2011 14:24Ответ № 24
(23) Ermak, табличное поле, где дата, номер организация и т.д- ее имя?
Ermak
08.09.2011 14:35Ответ № 25
Таблица что ли?
E_Migachev
08.09.2011 16:45Ответ № 26
да
Изменено 08.09.11 16:45:26
Ermak
08.09.2011 17:45Ответ № 27
Написал

Код 1C v 8.х
 ЭлементыФормы.Таблица.НастройкаОтбора.Ответственный.Доступность = Ложь;   


Выдает ошибку

{Документ.ПоступлениеТоваровУслуг.Форма.ФормаСписка.Форма(65)}: Поле объекта не обнаружено (Таблица)
ЭлементыФормы.Таблица.НастройкаОтбора.Ответственный.Доступность = Ложь;
Изменено 08.09.11 17:46:13
E_Migachev
09.09.2011 10:34Ответ № 28
(27) Ermak, Врядли она называется таблица! Щелкни на ней правой клавишей мыши и выбери свойства и посмотри что стоит в поле ИМЯ
Mokey
09.09.2011 12:17Ответ № 29
(28) E_Migachev, +100 за терпеливость!
Ermak
09.09.2011 12:30Ответ № 30
*06 СПАСИБО БОЛЬШОЕ ЗА ВАШЕ ТЕРПЕНИЕ, ВСЕ ПОЛУЧИЛОСЬ!!!!
Вопрос закрыт.
Ermak
09.09.2011 12:41Ответ № 31
Вот появился еще вопрос по отбору.
В форме документа "Внутренний заказ" есть "Основная Панель" с вкладкой "Дополнительно", можно сделать чтобы когда пользователь Петя с организации ОАО Бобры открывает документ "Внутренний заказ" не видел вкладки "Дополнительно" , а когда заходит Вася с организации ОАО Суслики он видел вкладку "Дополнительно".
E_Migachev
09.09.2011 14:14Ответ № 32
да, делаешь отбор по имени как выше и пишешь что-то типо:
Код 1C v 8.х
 Элементыформы.ОсновнаяПанель.Страницы.Дополнительно.Видимость = Ложь;   
Ermak
09.09.2011 14:32Ответ № 33
Спасибо большое!
Ermak
09.09.2011 14:32Ответ № 34
Вопрос закрыт!
Ermak
15.09.2011 16:57Ответ № 35
Можно сделать чтобы когда пользователь Петя с организации ОАО Бобры открывает документ "Внутренний заказ" чтобы Заказчик уже стоял и нельзя было изменить его.
Прикладываю картинку.

title
E_Migachev
15.09.2011 17:00Ответ № 36
можно в процедура ПриОткрытии добавить проверку и подстановку если необходимо
Ermak
15.09.2011 17:28Ответ № 37
Можно пример!
Ermak
15.09.2011 19:47Ответ № 38
Посмотрел процедуру ПриОткрытии(), там есть такой код

Код 1C v 8.х
 Заказчик = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию( глЗначениеПеременной("глТекущийПользователь"), "ОсновнойСклад");

Я так понимаю это условия по умолчанию, а почему не работает у меня не понимаю.
DJ_Serega
16.09.2011 12:22Ответ № 39
а в настройках пользователя данный реквизит заполнен?
DJ_Serega
16.09.2011 12:23Ответ № 40
есть вопрос, а почему закрыто? ;)

открываю ;)
Изменено 16.09.11 12:23:55
Ermak
16.09.2011 16:14Ответ № 41
(39) DJ_Serega, Заполнено. А как программно сделать отбор такой.
Ermak
16.09.2011 16:14Ответ № 42
(40) DJ_Serega, Новый вопрос открылся
E_Migachev
16.09.2011 17:24Ответ № 43
(38) Ermak, какой-то старанный код *09, как это в Заказчика вставляется значение Основного склада и настроек пользователя!? это и не будет работать, так как типы справочников разные!
Ermak
19.09.2011 08:57Ответ № 44
(43) E_Migachev, Это типовой код, не знаю откуда он берет "ОсновнойСклад", но когда я заменил на "Склад" , то выдала ошибку

{ОбщийМодуль.УправлениеПользователями.Модуль(174)}: Поле объекта не обнаружено (Склад)
НастройкаСсылка = ПланыВидовХарактеристик.НастройкиПользователей[Настройка];


В чем дело тогда?
DJ_Serega
20.09.2011 12:30Ответ № 45
Ermak, в настройках пользователя есть реквизит: "основной покупатель"?

(44) Ermak, видимо есть контрагент "ОсновнойСклад" *17
DJ_Serega
20.09.2011 12:30Ответ № 46
Ermak, в настройках пользователя есть реквизит: "основной покупатель"?

(44) Ermak, видимо есть контрагент "ОсновнойСклад" *17
Ermak
20.09.2011 15:58Ответ № 47
(46) DJ_Serega, Спасибо большое!!!
Ermak
20.09.2011 15:58Ответ № 48
Вопрос закрыт!
Подсказка: Для выделения Кода используйте (в редакторе).
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.