Имя: Пароль:
1C
1С v8
Редактирование реквизита документа в закрытом периоде
0 varyag
 
07.08.13
08:05
Всем здрасте)
Короче есть в бухгалтерии 2.0 в документе "Реализация товаров и услуг" добавленный реквизит Пометка (Булево). Его необходимо разрешить редактировать любому пользователю независимо от закрытости периода, при этом без нарушения последовательности проведения. Программно создан элемент Флажок. Сразу приведу код:
Процедура ЛксПередОткрытием(Отказ, СтандартнаяОбработка)
    
    Выполнить(ЛксПолучитьСтароеДействиеФормы(ЭтаФорма, "ПередОткрытием"));
    
    // вставка флажка Пометка
    элФлажокП = ЭлементыФормы.Добавить(тип("Флажок"),"Пометка",Истина,ЭлементыФормы.ПанельОрганизация);
    элФлажокП.Заголовок    = "Пометка";
    //Необходимо дать возможность изменения пометки без перепроведения, причем при закрытом периоде
    элФлажокП.Значение = Пометка;
    элФлажокПриИзменении = Новый Действие("ФлажокПометкаПриИзменении");
    элФлажокП.УстановитьДействие("ПриИзменении",элФлажокПриИзменении);
    элФлажокП.Лево = 241;
    элФлажокП.Верх = 24;
    элФлажокП.Ширина = 65;
    элФлажокП.Высота = 19;
    элФлажокП.УстановитьПривязку(ГраницаЭлементаУправления.Лево,    ЭлементыФормы.ПанельОрганизация,    ГраницаЭлементаУправления.Право);
    элФлажокП.УстановитьПривязку(ГраницаЭлементаУправления.Право,    элФлажокП,    ГраницаЭлементаУправления.Лево);
КонецПроцедуры

Процедура ФлажокПометкаПриИзменении(Элемент)
    Пометка = Элемент.Значение;
    ЭтаФорма.Модифицированность = Ложь;
    ЗаписатьНаСервере();
Конецпроцедуры

&НаСервере
Процедура ЗаписатьНаСервере()
    //Необходимо выполнять в привилегированном режиме для обхода даты запрета изменения данных
    УстановитьПривилегированныйРежим(Истина);
    Сообщить("Привилегированный:"+ПривилегированныйРежим());
    ЭтотОбъект.Записать();
    УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры


Всё вроде обошёл и форма только просмотр, и перепроведение, осталось одно - записать не дает в закрытом периоде.
1 Галахад
 
гуру
07.08.13
08:07
На подписке, наверное затыкается.
2 varyag
 
07.08.13
08:07
(1) подскажи как обойти плиз?
3 Cyberhawk
 
07.08.13
08:08
"записать не дает в закрытом периоде" на глаз определяешь это?
4 varyag
 
07.08.13
08:09
(3) на глаз - это как? Ну да глазами вижу сообщение такое: Редактирование данных этого периода запрещено. Изменения не могут быть записаны...
5 Галахад
 
гуру
07.08.13
08:12
(2) Ну посмотреть подписку ПередЗаписьюДокумента...
Поправить как тебе нужно.
6 Cyberhawk
 
07.08.13
08:12
Ну так пройдись отладчиком или найди это сообщение в конфигурации
7 banco
 
07.08.13
08:16
(0) а не легче было бы просто свойство добавить?
8 varyag
 
07.08.13
08:16
В обработчике код с условием если на клиенте, а я вроде как на сервере запись выполняю..
Процедура ПередЗаписьюДокументовПроверкаДоступностиПериода(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
    Если Отказ ИЛИ Источник.ОбменДанными.Загрузка Тогда
        Возврат;
    КонецЕсли;
    ПроверкаПериодаДокумента(Источник, Отказ, РежимЗаписи);
    #Если Клиент Тогда
        Если Отказ Тогда
            Сообщить("Редактирование данных этого периода запрещено. Изменения не могут быть записаны...", СтатусСообщения.Важное);
        КонецЕсли;
    #КонецЕсли
КонецПроцедуры    // ПередЗаписьюДокументовПроверкаДоступностиПериода

почему туда попадает, где туплю?
9 varyag
 
07.08.13
08:18
(7) не хочу менять владельцев плана видов характеристик, чтоб при обновлении свести к минимуму возможность затирки изменений.. Или я зря опасаюсь?
10 varyag
 
07.08.13
08:21
может сделать как обмен данными?)
11 Cyberhawk
 
07.08.13
08:22
(0) убери из функции на сервере сообщение и добавь туда ЭтотОбъект.ОбменДанными.Загрузка = Истина
12 banco
 
07.08.13
08:23
(9) для "реализации товаров и услуг" уже есть свойства, ничего менять не надо
13 varyag
 
07.08.13
08:28
(12) неа) нету у меня.. щас сравню с типовой.
(11) Ага спасибо, щас так и попробую
14 varyag
 
07.08.13
08:30
(11) В процессе дискуссии рождаются идеи)

Всем спасибо, сделал как обмен данными
15 varyag
 
07.08.13
08:31
(12) и в типовой нету, только для справочников есть свойства.
16 George Wheels
 
07.08.13
08:32
(15) А дополнительные реквизиты не подойдут?
17 varyag
 
07.08.13
08:34
(16) уже это обсудили в (7) (9) (12) (13)  :)
18 Cyberhawk
 
07.08.13
08:34
(15) 2.0.42, ПВХ "Дополнительные реквизиты".
(16) это оно и есть в БП 2.0
19 varyag
 
07.08.13
08:34
или ты о чем то другом?
20 varyag
 
07.08.13
08:36
(18) 2.0.49.15 - нет там свойств для документов говорю же. Да всё итак отлично, чисто кодом всё сделал. Вроде норм. Спасибо еще раз
21 Cyberhawk
 
07.08.13
08:37
22 varyag
 
07.08.13
08:38
Ой, прошу прощения, через конфигуратор смотрел, а так то оказывается для всех доков есть... (21)  ок)
23 varyag
 
07.08.13
08:39
24 Starhan
 
07.08.13
08:41
(20) не правильно это методологически
25 varyag
 
07.08.13
08:41
тут ещё руководствуюсь тем что предыдущий программист эту пометку добавлял, все привыкли так делать, и в форме списка видно, поэтому сделал чтоб визуально для юзеров ниче не поменялось
26 varyag
 
07.08.13
08:41
(24) почему?(((
27 Starhan
 
07.08.13
08:42
(26) ну ты разрешил юзверю перепроводить документ
28 Starhan
 
07.08.13
08:43
вместо того что бы просто поставить пометку
29 varyag
 
07.08.13
08:43
(27) ниче не разрешил вроде, не перепроводится он... в обработку проведения не попадает. Проверил. Если жму записать попадает, а если программно сразу при установке флажка то нет
30 varyag
 
07.08.13
08:49
или ошибаюсь?
31 Starhan
 
07.08.13
08:49
(30) ну попробуй под юзером щелкнуть правой в списке документа и провести.
32 varyag
 
07.08.13
08:53
(31) да хоть под юзеров хот с полными правами - не даёт
33 Галахад
 
гуру
07.08.13
08:54
(31) Не проведется.

(30) Посмотри в журнале регистрации.
34 varyag
 
07.08.13
08:58
(33)Две записи в журнале создаётся:
Регистр сведений. Данные первичных документов - Данные. Изменение
Документ. Реализация товаров и услуг - Данные. Изменение

Это же нормально, да?
35 Галахад
 
гуру
07.08.13
08:59
(34) Нормально.
36 George Wheels
 
07.08.13
09:00
А как на последовательности влияет?
37 varyag
 
07.08.13
09:09
(36) Так если не проводится то и последовательность не нарушается.
38 PCcomCat
 
07.08.13
09:16
(37) Коли уж пользователи привыкли (привычка пользователя - страшная штука), сделай не как реквизит, а как элемент формы, который при открытии заполняется из дополнительных реквизитов, а при окончании редактирования этого элемента записывается новое значение в дополнительный реквизит.
39 varyag
 
07.08.13
09:26
(38) а смысл?) ну есть в базе уже этот реквизит давно, уже куча документов с ним, зачем изобретать что-то, переносить данные в доп реквизиты? при обновлении этот добавленный реквизит всё равно проблем никаких не вызывает..
40 PCcomCat
 
07.08.13
09:30
(39)Ну как хочешь! Как проблемы будут, тогда и переделаешь.
41 John83
 
07.08.13
11:28
можно на форме списка создать кнопку, которая будет изменять нужный реквизит и при записи делать ОбменДанными.Загрузка = Истина