Имя: Пароль:
1C
 
Предоставление пользователю доступа на редактирование строки ЗаказаКлиента
,
0 Tolstiy Beremenniy
 
31.07.20
05:58
УТ 11.2.3.95. Менеджер создает ЗаказКлиента. Добавляет туда 2 строки. А одной строке в действиях отгрузить, в другой к обеспечению.
Затем, другой пользователь с более полными правами, на основании этого заказа создает реализацию. В реализацию, попадает 1 строка, у которой в действии было отгрузить.
После менеджеру требуется изменить данные в заказе, в строке у которой в действии стоит у обеспечению. Но уже заказ, на основании которого создана реализация, редактировать нельзя.

Подскажите пожалуйста, как сделать, что бы менеджер, в заказе клиента, на основании которого создан документ реализация товаров услуг, мог редактировать данные в строке в действиях которой указано к обеспечению?
1 Злопчинский
 
31.07.20
07:33
разбей на два заказа. в одном - все к обеспечению, в другом - все к отгрузке.
2 Tolstiy Beremenniy
 
31.07.20
12:45
(1) Задачу поставил пользователь. Вбивает в документ все подряд. Может такая особенность?
Вот только то что не к отгрузке, потом необходимо править.

Можно ли вообще такое делать? Там как я понял, весь документ же, на основе которого создана реализация, переведен в режим только чтение.

Можно ли одну строку давать редактировать, другую нет?

Этот пример, был создан, специально, что бы выявить вот эту проблему. Спрошу могут ли они так работать. А если нет, как тогда это можно сделать?
3 lodger
 
31.07.20
13:17
@Можно ли одну строку давать редактировать, другую нет@

можно. можно даже управлять это по колонкам. например, цены зафиксированы, а количество можешь тыркать.
4 Tolstiy Beremenniy
 
31.07.20
16:52
(3) Подскажите пожалуйста какими средствами это можно делать?
А то я подумал, что установка только чтение на весь документ или нет.
Как то с подобным не сталкивался, по этому не совсем все ясно.
Подскажите пожалуйста, как это можно попробовать делать?

Необходимо сделать в зависимости от выбранного значения, действия. Редактировать строку или нет.
5 ZDenis
 
31.07.20
16:58
(4) можно условие в "ПередНачаломИзменения" ТЧ впихнуть и там где нельзя редактировать Возврат.
Не проверял, но должно работать
6 Tolstiy Beremenniy
 
31.07.20
17:09
(5) То есть что бы пользователь, даже не мог ничего поменять, не то что сохранить?
Сейчас там при открытии заказа, он как замороженный. Ничего не меняется вообще.
Как это отменить сейчас? Что бы задавать пробовать новую настройку?
7 Tolstiy Beremenniy
 
31.07.20
17:11
(5) То есть один из вариантов, разрешения редактирования строки, или запрет на её редактирование, использование метода ПередНачаломИзменения.
Строки, или табличной части пока плохо себе представляю. Какие ещё возможны варианты?
Как вообще накладывается запрет на изменение всего документа? После как на его основании создали другой документ.
8 lodger
 
31.07.20
17:24
(6) "как замороженный" - это простая блокировка Толькочтение на весь документ.
(4) чтобы реализовать кастомный подход придётся выключить блокировку всего документа.
а потом открыть Форму в конфигураторе, в свойствах Формы - "Условное оформление".
там найдется мини-СКД с блоком условий и накладываемым эффектом.
например
[оформление ТолькоПросмотр
условие заказано=отгружено
область ТаблицаТовары]
в результате не отгруженные строки будут доступны к редактированию.
9 Tolstiy Beremenniy
 
31.07.20
18:10
(8)  То есть подход только такой?
А как в (5) советовали? ПередНачаломИзменения, отлавливать значение действия в строке, и позволять редактировать или нет?

Ясно, буду искать как отключить только чтение на весь документ.

И нужно будет разобраться с условным оформлением.
10 Tolstiy Beremenniy
 
03.08.20
04:43
Подскажите пожалуйста, как будет правильнее сделать. У формы документа ЗаказКлиента, я в условном оформлении устанавливаю такое условие

Объект.Товары.ВариантОбеспечения Равно "Перечисление.ВариантыОбеспечения.Отгрузить"

http://joxi.ru/bmoyBOni9JjRPA

Как что бы это условие работало на строку документа. Что если значение ВариантОбеспечения отгрузить. То нельзя редактировать строку. Иначе можно.

И как что бы это влияло только на строки, у которых значение варианта обеспечения не равно отгрузить, а все остальное было только для просмотра?
Не работал так с условным обеспечением, недопонимаю. Подскажите пожалуйста.

Где снимать свойство только чтение на всю форму документа, что работает сейчас? Видимо это делается программно, при создании реализации на основании заказа?
11 hhhh
 
03.08.20
05:43
(10) не надо там ничего редактировать, чего вы чудите? там есть специальная отгрузить сверху. или установить действие
12 Tolstiy Beremenniy
 
03.08.20
06:04
(11) О чем вы пишете? Скажите пожалуйста, а то ничего не понял (.
13 Tolstiy Beremenniy
 
03.08.20
06:29
Я сделал так http://joxi.ru/eAO854GCpBZ4Yr
Что если Объект.Товары.ВариантОбеспечения Не равно "Перечисление.ВариантыОбеспечения.Отгрузить", то доступность для поля ТоварыКоличествоУпаковок .
Но это не работает. Я не знаю как правильно сделать.

Подскажите пожалуйста.

Общая формулировка такая. На основании ЗаказаКлиента создают реализацию. После, под менеджером становится не доступно изменять ЗаказКлиента.
Ему нужно менять данные в строках ЗаказаКлиента в которых в поле ВариантОбеспечения (Действия) стоит значение отличное от отгрузить.

Как это правильно можно сделать через условное оформление ? Менять нужно разрешить только данные строк где вариант обеспечения (действие) содержит значение отличное от отгрузить .
14 hhhh
 
03.08.20
06:38
(13) нельзя менять строки, если уже были документы по заказу. будет бардак в базе
15 Tolstiy Beremenniy
 
03.08.20
06:52
(14) Задача поставлена, если в поле вариант обеспечения стоит значение отличное от отгрузить, то менеджеру нужно дать доступ на изменение, там что то меняют
нельзя менять где стоит отгрузить
а так он заходит под другим пользователем и меняет, нужно что бы работало под ним
вопрос как это сделать?!
16 Tolstiy Beremenniy
 
05.08.20
06:46
Подскажите пожалуйста, если документу ЗаказКлиента при открытии задается вот это свойство ЭтаФорма.ТолькоПросмотр=Истина;
То можно ли после сделать доступной для редактирования строку в документе? В табличной части товары. Или нужно вообще убирать это свойство?
17 ДенисЧ
 
05.08.20
06:50
(16) Нет. Если форма.ТолькоПРосмотр - остальное изменить нельзя.
18 Tolstiy Beremenniy
 
05.08.20
07:00
(17) Ясно. Спасибо! То есть, сначала нужно поставить это свойство в Ложь.

ЭтаФорма.ТолькоПросмотр = Ложь;

Подскажите пожалуйста, как лучше и правильнее дальше сделать. Нужно Определенной строке, строкам.
В которых действие отличное от "Отгрузить", предоставить доступ для редактирования.

В (8) подсказали, что делать это нужно через условное оформление.
Сейчас пытаюсь понять как это сделать, что бы в документе были доступными для редактирования только строки у которых действие не равно "Отгрузить".

А остальное было бы только чтение. Пытаюсь понять какой набор условий правильно задать.
19 Tolstiy Beremenniy
 
05.08.20
08:34
Подскажите пожалуйста. К%ак правильнее будет сделать? Не работал ранее с условным оформлением.

Нужно что бы в документе был достп только на строки у которых действие <> Отгружено .
20 Tolstiy Beremenniy
 
05.08.20
08:58
почему это не работает? http://joxi.ru/KAx0g5NU1aOeDA

все доступно для редактирования, как нужно правильно ?
21 Tolstiy Beremenniy
 
05.08.20
09:07
Не работает условное оформление http://joxi.ru/DrlxEORH0lBXzr

Что я не так делаю? Как нужно?
22 ZDenis
 
05.08.20
09:11
(21) Тебе в полях (3 колонка) надо укзаать "колонки" табличной части. А так ты пытаешься всю ТЧ на просмотр сделать. У тебя ведь не все строки должны быть недоступны
23 Tolstiy Beremenniy
 
05.08.20
09:12
(22) Ок, оформляемые поля то есть нужно задать
24 Tolstiy Beremenniy
 
05.08.20
09:21
накидал что то http://joxi.ru/4AkXZOaHXzawnr

должно сработать? как увидеть что работает?
25 Tolstiy Beremenniy
 
05.08.20
09:25
(22) не работает! можно редактировать все что угодно
26 ZDenis
 
05.08.20
09:28
(25) должно работать, может программно где-то очищается оформление?
27 Tolstiy Beremenniy
 
05.08.20
09:30
(26) В типовом механизме

&НаСервере
Процедура УстановитьУсловноеОформление()

    УсловноеОформление.Элементы.Очистить();


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    УстановитьУсловноеОформление();


Тогда программно это нужно создавать?
А как это по коду будет? Что бы хоть попробовать?!!!
28 Tolstiy Beremenniy
 
05.08.20
09:37
Подскажите пожалуйста, как сделать аналог программно, этой настройки?

http://joxi.ru/Y2L18qBCQB40pA
29 ZDenis
 
05.08.20
09:51
(27) Что-то типо так

Элемент = Список.УсловноеОформление.Элементы.Добавить();

ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Товары.Цена);
//тут все перечислить
    
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ВариантОбеспечения");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ВариантыОбеспечения.Отгрузить;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
30 Tolstiy Beremenniy
 
05.08.20
10:03
(29) То есть данный пример должен блокировать ячейку цена в табличной части товары?

А как правильно?

    ПолеЭлемента.Поле             = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена);
    ПолеЭлемента.Поле             = Новый ПолеКомпоновкиДанных(Элементы.Товары.Цена);

?
31 ZDenis
 
05.08.20
10:07
(30) Скорее даже вот так
ПолеЭлемента.Поле             = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);

Давно не делал, не помню точно
32 Tolstiy Beremenniy
 
05.08.20
10:20
(31) Хочу попробовать сейчас такой код, в конце процедуры условное оформление , типового механизма

    Элемент                      = УсловноеОформление.Элементы.Добавить();
    ПолеЭлемента                  = Элемент.Поля.Элементы.Добавить();
    ПолеЭлемента.Поле              = Новый ПолеКомпоновкиДанных(Элементы.ТоварыВариантОбеспечения.Имя);
    //
    ОтборЭлемента                = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ОтборЭлемента.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("Объект.Товары.ВариантОбеспечения");
    ОтборЭлемента.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;
    ОтборЭлемента.ПравоеЗначение = Перечисления.ВариантыОбеспечения.Отгрузить;
    Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);    



как думаете, рабочий ли код?
33 Tolstiy Beremenniy
 
05.08.20
10:23
подскажите почему не работает (32) ?
34 ZDenis
 
05.08.20
10:29
(33) Тут только вариант обеспечения он не может менять и это не работает, когда там значение "Отгрузить"?
35 Tolstiy Beremenniy
 
05.08.20
10:31
(34) Дя я пробую сделать пример, что бы понять как работает.
В коде (32) если в строке в варианте обеспечения отгрузить, то поле вариант обеспечения должно быть не доступно для редактирования.
Но оно доступно для редактирования.
36 Tolstiy Beremenniy
 
05.08.20
10:50
Вот, так смотрю. Поле Цена в табличной части Товары заблокировано, где в варианте обеспечения стоит отгрузхить.

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


То есть, сейчас по всей форме документа, нужно делать управление на каждое поле и на каждую ячейку табличной части?

Почему (32) тогда не работало?
37 Tolstiy Beremenniy
 
05.08.20
11:17
Подскажите как правильно задавать только чтение для нескольких полей строки программно ?
38 ZDenis
 
05.08.20
11:24
(37) я же писал

    Элемент                      = УсловноеОформление.Элементы.Добавить();

    ПолеЭлемента                  = Элемент.Поля.Элементы.Добавить();
    ПолеЭлемента.Поле              = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);
    ПолеЭлемента                  = Элемент.Поля.Элементы.Добавить();
    ПолеЭлемента.Поле              = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКоличество.Имя);

    // и т.д.

    ОтборЭлемента                = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    .....
39 Tolstiy Beremenniy
 
05.08.20
11:30
(38) Спасибо! Извините если не внимателен. Да я пробую сейчас так настраивать.

Один вопрос. Сейчас мне нужно это делать для каждого элемента формы?

Спасибо. Разбираюсь.
40 Tolstiy Beremenniy
 
05.08.20
12:40
Почему я не могу закрыть редактирование поля на форме.? Что я не так делаю? Это уже на странице формы, реквизит шапки документа.

    ЭлементыФормы                  = УсловноеОформление.Элементы.Добавить();
    //
    ПолеЭлемента                  = ЭлементыФормы.Поля.Элементы.Добавить();
    ПолеЭлемента.Поле              = Новый ПолеКомпоновкиДанных(Элементы.Статус.Имя);
    //
    ЭлементыФормы.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);    


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