БП 3.0
Добавлена нетиповая роль пользователю (выписка счетов + редактирование номенклатуры и контрагентов).

Документ "счет на оплату".
В счете при нажатии надписи "ндс и цены" открывается форма, где можно указать тип цен и ставку ндс.
По какой-то причине именно в этой форме тип цен не выбирается и не отображается.
Хотя, например, из договора всё отлично выбирается и подставляется в документы. Т.е. прав хватает.

Если поставить цену в договор и перевыбрать в счете договор, то документ заполняется. В надписи появляется используемый тип цен. Но если зайти в надпись, то открывается форма и в ней тип цен не указан.

Опять же на форме не отображается кнопка "ок", только "отмена".

По модулю прошёлся: не нашёл ограничения доступности и пр. Подписок не нашёл.
Может не то ищу?
---
VitalyKepov, ну раз вы нам не показали ни скриншотов, ни ошибок, то о чем речь?)
---
VitalyKepov, заходим в журнал регистрации и смотрим где отказано этому пользователю.
---
Сообщение было скрыто модератором.
---
У пользователя есть право просмотра на справочник виды цен номенклатуры ?
---
Да, на ТипыЦенНоменклатуры есть
Под этими правами можно зайти в договор контрагента и выбрать там тип цен.
После этого в счете заполнятся цены.

Проблема только с общей формой ФормаЦеныИВалюта
---
VitalyKepov, А у кнопки Ок, в свойствах "Использование" на твоей роли стоит галка?
---
VitalyKepov, И еще, после создания твоей роли, ты запускал "Обновление Вспомогательных Данных" ?
---
Обновление Вспомогательных Данных - да, иначе бы профиль вообще не сработал.
На кнопку нет отдельного назначения права, это обычная кнопка общей формы; не общая команда.
---
VitalyKepov, А если внимательней посмотреть? То, можно увидеть, что это не общая кнопка....)))
---
deniseek77,
действительно команда от обработки

(11) Xershi,
отказ на пару документов по ЭДО
попробую включить их вправа
---
VitalyKepov, ну вот, если этого будет не достаточно. Еще раз смотрим журнал регистрации или ошибку сообщите какую пишет. И про кэш не забывайте!
---
Xershi,
ошибок в журнале больше нет, но и на форме ничего не изменилось
кэш почистил
---
VitalyKepov, так покажи скрин, что ты заполнил и ндс и тип цен.
---
Не вижу ничего(( обычная кнопка формы
---
не томите, скажите
опять же она нужна уже после выбора цены, а её сначала надо выбрать
---
Кэш не забыли почистить?
---
В конфигураторе проверить - свойства кнопки - видимость.
В предприятии - изменить форму - проверить настройки для этой кнопки.
---
ilya_i,
кнопку вытащил уже, она появилась с правом на обработку
---
VitalyKepov, так заполни в чем проблема?
---
И из конфигуратора форму было бы не плохо посмотреть на скрине.
---
По идее у тебя в договоре не указан тип цен! Вот и форма открывается с пустым типом.
---
```1c
    &НаСервере
    // Процедура заполняет параметры формы.
    //
    Процедура ПолучитьЗначенияПараметровФормы()

    ЕстьВалютныйУчет = БухгалтерскийУчетПереопределяемый.ИспользоватьВалютныйУчет();

    // Тип цен.
    Если Параметры.Свойство("ТипЦен") Тогда
    // Вид цены.
    ТипЦен = Параметры.ТипЦен;
    ТипЦенПриОткрытии = Параметры.ТипЦен;
    ТипЦенЕстьРеквизит = Истина;
    Иначе
    // Доступность вида цены, флаг - перезаполнить цены.
    Элементы.ТипЦен.Видимость = Ложь;
    Элементы.ПерезаполнитьЦены.Видимость = Ложь;
    ТипЦенЕстьРеквизит = Ложь;
    КонецЕсли;

    Если Параметры.Свойство("ПерезаполнитьЦены") Тогда
    ПерезаполнитьЦены = Параметры.ПерезаполнитьЦены;
    Иначе
    ПерезаполнитьЦены = Ложь;
    Элементы.ПерезаполнитьЦены.Видимость = Ложь;
    КонецЕсли;

    // Валюта документа.
    Если Параметры.Свойство("ВалютаДокумента") Тогда
    ВалютаДокумента = Параметры.ВалютаДокумента;
    ВалютаДокументаПриОткрытии = Параметры.ВалютаДокумента;
    ВалютаДокументаЕстьРеквизит = Истина;
    Иначе
    Элементы.ВалютаДокумента.Видимость = Ложь;
    Элементы.Курс.Видимость = Ложь;
    Элементы.Кратность.Видимость = Ложь;
    Элементы.ПересчитатьЦены.Видимость = Ложь;
    ВалютаДокументаЕстьРеквизит = Ложь;
    КонецЕсли;

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

    // НДС включать в стоимость.
    РаздельныйУчетНДСНаСчете19 = Ложь;
    Если Параметры.Свойство("Организация") И Параметры.Свойство("ДатаДокумента") Тогда
    РаздельныйУчетНДСНаСчете19 = УчетнаяПолитика.РаздельныйУчетНДСНаСчете19(Параметры.Организация, Параметры.ДатаДокумента);
    КонецЕсли;

    Если Параметры.Свойство("НДСВключенВСтоимость") И НЕ РаздельныйУчетНДСНаСчете19 Тогда
    НДСВключенВСтоимость = Параметры.НДСВключенВСтоимость;
    НДСВключенВСтоимостьПриОткрытии = Параметры.НДСВключенВСтоимость;
    НДСВключенВСтоимостьЕстьРеквизит = Истина;
    Иначе
    Элементы.НДСВключенВСтоимость.Видимость = Ложь;
    НДСВключенВСтоимостьЕстьРеквизит = Ложь;
    КонецЕсли;

    КурсДокументаЕстьРеквизит = Параметры.Свойство("КурсДокумента");
    КратностьДокументаЕстьРеквизит = Параметры.Свойство("КратностьДокумента");
    КурсЕстьРеквизит = Параметры.Свойство("Курс");
    КратностьЕстьРеквизит = Параметры.Свойство("Кратность");

    // Валюта расчетов.
    Если Параметры.Свойство("Договор") Тогда

    РеквизитыДоговор = БухгалтерскийУчетПереопределяемый.ПолучитьРеквизитыДоговораКонтрагента(Параметры.Договор);
    ВалютаРасчетов = РеквизитыДоговор.ВалютаВзаиморасчетов;
    РасчетыВУЕ = РеквизитыДоговор.РасчетыВУсловныхЕдиницах;

    // Если есть параметр "валюта документа" и он равен валюте из договора
    МассивКурсКратность = КурсыВалют.НайтиСтроки(Новый Структура("Валюта", ВалютаРасчетов));

    Если (ВалютаРасчетов <> ВалютаУчета) Тогда // Не рубли
    // Если валюту передали не рубли, а курс всё равно = 1, то подставить из таблицы
    Если КурсЕстьРеквизит Тогда
    КурсРасчетов = Параметры.Курс;
    Если КурсРасчетов = 1 Тогда
    Если ЗначениеЗаполнено(МассивКурсКратность) Тогда
    КурсРасчетов = МассивКурсКратность[0].Курс;
    КонецЕсли;
    КонецЕсли;
    Иначе
    Если ЗначениеЗаполнено(МассивКурсКратность) Тогда
    КурсРасчетов = МассивКурсКратность[0].Курс;
    Иначе
    КурсРасчетов = 1;
    КонецЕсли;
    КонецЕсли;
    Если КратностьЕстьРеквизит Тогда
    КратностьРасчетов = Параметры.Кратность;
    Иначе
    Если ЗначениеЗаполнено(МассивКурсКратность) Тогда
    КратностьРасчетов = МассивКурсКратность[0].Кратность;
    Иначе
    КратностьРасчетов = 1;
    КонецЕсли;
    КонецЕсли;
    Иначе
    Если ЗначениеЗаполнено(МассивКурсКратность) Тогда
    КурсРасчетов = МассивКурсКратность[0].Курс;
    КратностьРасчетов = МассивКурсКратность[0].Кратность;
    Иначе
    КурсРасчетов = 1;
    КратностьРасчетов = 1;
    КонецЕсли;
    КонецЕсли;

    КурсРасчетовПриОткрытии = КурсРасчетов;
    КратностьРасчетовПриОткрытии = КратностьРасчетов;

    ДоговорЕстьРеквизит = Истина;

    Иначе

    Элементы.ВалютаРасчетов.Видимость = Ложь;
    Элементы.КурсРасчетов.Видимость = Ложь;
    Элементы.КратностьРасчетов.Видимость = Ложь;

    ДоговорЕстьРеквизит = Ложь;

    КонецЕсли;

    ПересчитатьЦены = Параметры.ПересчитатьЦены;

    Если ЗначениеЗаполнено(ВалютаДокумента) Тогда
    МассивКурсКратность = КурсыВалют.НайтиСтроки(Новый Структура("Валюта", ВалютаДокумента));
    Если ВалютаДокумента = ВалютаРасчетов
    И КурсРасчетов <> 0
    И КратностьРасчетов <> 0
    И (НЕ КурсДокументаЕстьРеквизит) Тогда
    Курс = КурсРасчетов;
    Кратность = КратностьРасчетов;
    ИначеЕсли КурсДокументаЕстьРеквизит Тогда
    Курс = Параметры.КурсДокумента;
    Кратность = Параметры.КратностьДокумента;
    Если Курс = 0
    И Кратность = 0
    И ЗначениеЗаполнено(МассивКурсКратность) Тогда
    Курс = МассивКурсКратность[0].Курс;
    Кратность = МассивКурсКратность[0].Кратность;
    КонецЕсли;
    Иначе
    Если ЗначениеЗаполнено(МассивКурсКратность) Тогда
    Курс = МассивКурсКратность[0].Курс;
    Кратность = МассивКурсКратность[0].Кратность;
    Иначе
    Курс = 0;
    Кратность = 0;
    КонецЕсли;
    КонецЕсли;

    КурсПриОткрытии = Курс;
    КратностьПриОткрытии = Кратность;

    КонецЕсли;

    Если НЕ ЕстьВалютныйУчет Тогда
    Элементы.ВалютаКурсКратностьДокумента.Видимость = Ложь;
    Элементы.ВалютаКурсКратностьРасчетов.Видимость = Ложь;
    КонецЕсли;

    ДатаДокумента = Параметры.ДатаДокумента;

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

Т.е. если в форму ничего не пердали или передали пусто, то так и будет:
```1c
    Если Параметры.Свойство("ТипЦен") Тогда
    // Вид цены.
    ТипЦен = Параметры.ТипЦен;
```
---
даже если в договоре пусто, то на этой форме должна быть возможность выбора

опять же у объекта (у самого документа) на скрине видно что тип цен установлен, однако он не отобразился на форме "ФормаЦеныИВалюта"
---
VitalyKepov, тогда меняй этот код
```1c
    // Тип цен.
    Если Параметры.Свойство("ТипЦен") Тогда
    // Вид цены.
    ТипЦен = Параметры.ТипЦен;
    ТипЦенПриОткрытии = Параметры.ТипЦен;
    ТипЦенЕстьРеквизит = Истина;
    Иначе
    // Доступность вида цены, флаг - перезаполнить цены.
    Элементы.ТипЦен.Видимость = Ложь;
    Элементы.ПерезаполнитьЦены.Видимость = Ложь;
    ТипЦенЕстьРеквизит = Ложь;
    КонецЕсли;
```

Т.е. ты на форму не передал значение, вот и не дает тебе менять. Значит нужно либо передать свойство с типом цен или изменить код в форме! Решать тебе.
---
VitalyKepov, так договор могли потом изменить. Удалив тип цен. Логика программы понятна. А вот ваш бизнес-процесс не очень.
---
Xershi, увы, но логика не понятна.
Если вы посмотрите скрин из первой записи, то увидите что та выбрано всё: организация, контрагент, договор (а в договоре ти цен).
Кроме того всё это срабатывает: заполняются цены в ТЧ. А вот открываю эту злополучную форму и там пусто.

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

Научите как посмотреть. Я прохожу отладкой и не вижу обращения к объектам на которые нет прав. Вообще не вижу обращения к другим формам, а между тем происходит обращение к общей форме отображения списка. Как отладить?
---
VitalyKepov, напишите вашу версию БП. Я пока могу на своей посмотреть.
---
VitalyKepov, при нажатии на цены и валюта вызывается процедура:
```1c
    &НаКлиенте
    Процедура ЦеныИВалютаНажатие(Элемент, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;
    ОбработатьИзмененияПоКнопкеЦеныИВалюты();

    КонецПроцедуры
```
---
VitalyKepov, при выборе типа цен вообще ничего не происходит или открывается пустой список типов?
---
VitalyKepov,ну и так на всякий случай глупая версия: а может у тебя есть права на сам объект, будь то справочник "Типы цен" или "Счет на оплату", но не унаследовались права на реквизиты объекта - например "ТипЦен" у счета или какие-нибудь поля у справочника. Нужно проверить в ролях, раскрыть эти объекты до уровня реквизитов
---
VitalyKepov,

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

Это не трудно.
---
всем спасибо
буду дальше завтра тупить
---
Далее заполняется вот так это все:

```1c
    // Обслуживание типа цен - валюты - НДС:

    &НаКлиенте
    Процедура ОбработатьИзмененияПоКнопкеЦеныИВалюты(ПересчитатьЦены = Ложь, ПерезаполнитьЦены = Ложь)

    // 1. Формируем структуру параметров для заполнения формы "Цены и Валюта".
    СтруктураПараметров = Новый Структура;
    СтруктураПараметров.Вставить("ВалютаДокумента", Объект.ВалютаДокумента);
    СтруктураПараметров.Вставить("Курс", Объект.КурсВзаиморасчетов);
    СтруктураПараметров.Вставить("Кратность", Объект.КратностьВзаиморасчетов);
    СтруктураПараметров.Вставить("СуммаВключаетНДС", Объект.СуммаВключаетНДС);
    СтруктураПараметров.Вставить("Контрагент", Объект.Контрагент);
    СтруктураПараметров.Вставить("Договор", Объект.ДоговорКонтрагента);
    СтруктураПараметров.Вставить("Организация", Объект.Организация);
    СтруктураПараметров.Вставить("ДатаДокумента", Объект.Дата);
    СтруктураПараметров.Вставить("ПерезаполнитьЦены", ПерезаполнитьЦены);
    СтруктураПараметров.Вставить("ПересчитатьЦены", ПересчитатьЦены);
    СтруктураПараметров.Вставить("БылиВнесеныИзменения", Ложь);
    СтруктураПараметров.Вставить("ТипЦен", Объект.ТипЦен);

    // 2. Открываем форму "Цены и Валюта".
    ОповещениеОЗакрытии = Новый ОписаниеОповещения("ОбработатьИзмененияПоКнопкеЦеныИВалютыЗавершение", ЭтотОбъект);

    ОткрытьФорму("ОбщаяФорма.ФормаЦеныИВалюта", СтруктураПараметров,,,,,ОповещениеОЗакрытии);

    КонецПроцедуры
```
---
Так вот ставим точку останова на
```1c
    ОткрытьФорму("ОбщаяФорма.ФормаЦеныИВалюта", СтруктураПараметров,,,,,ОповещениеОЗакрытии);
```

И смотрим чем заполнена СтруктураПараметров в типе цен.
---
Возможно у тебя проблемы с доступом Объект.ТипЦен. Тоже посмотри что у тебя показывает отладчик. И желательно если не получится все эти параметры покажи скринами.
---
Дружище про вознаграждение не забывай))
---
Xershi, коллега, не работает ни в какую
все параметры есть, доступ на объект есть
тип цен - верные и пр.

(34) konstruktiv, ничего не происходит, кнопка выбора (раскрывающийся список) не доступна

(35) konstruktiv, проверил, все права есть

(36) TVA_11, метод, но в бп роли ну очень общие, если включить доступ к стандартной роли в профиле, то всё работает
но в этом профиле доступ к сотне объектов и какой конкретно нужен - загадка.

В целом сабж не мешает жить: просто менеджер выбирает для клиенты цены на этапе заведения договора. На форме счёта не приходится ничего выбирать.
Как решить вопрос я не знаю. Если есть желающие, то могу выдать dt после обфускации (в личку).
---
VitalyKepov, ну раз вы нам не показали ни скриншотов, ни ошибок, то о чем речь?)
---
VitalyKepov, ну и отпляши от роли с которой всё работает может и сам дойдёшь на каком регистре(возможно справочнике) затык...
самый верный метод- тыка
---
всем спасибо
---
VitalyKepov, вопрос хоть решили?
---
VitalyKepov,
Расскажите как решили данный вопрос?
---
sergb1979, данная форма полноценно доступна только для типовой роли. При создании своей роли из типовой право на элементы (кнопки) в этой форме, естественно, не распространяется. Давать права на элементы в форме для своей роли - значит менять конфу. Как вариант, воспользоваться механизмом расширения конфигурации (изменить видимость/доступность кнопок в этой форме для своей роли).
PS
Привет разработчикам конфы =)