Последние сообщения

#1
7.7 / Re: Понять в каком режиме отк...
Последний ответ от Злоп - Сегодня в 14:34
я проще сделал
по умолчанию - все открывается в режиме просмотра (это штатно настраивается).
кому надо - не заломается нажать шифт+энтер (открыть в режиме редактирования).
блокировки/проблемы - практически ушли.
#2
7.7 / Re: Понять в каком режиме отк...
Последний ответ от sau - Сегодня в 12:36
Сделал так:

Процедура ОбработкаБлокировкиОбъекта(Объект,Повторить,ДополнительныйТекст)
    Если ТипЗначенияСтр(Объект)="Документ" Тогда
        Сервис.ВнешнееСобытие("Открыть","Объект",ЗначениеВСтрокуВнутр(глЗаблокированныйОбъект));
    КонецЕсли;
КонецПроцедуры

Процедура ОбработкаВнешнегоСобытия(Источник,Событие,Данные)
    Если Источник="Открыть" Тогда
        Если Событие="Объект" Тогда
            ОткрытьФорму(ЗначениеИзСтрокиВнутр(Данные),,1);
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Т.е. если документ открыт кем-то в режиме редактирования, то после сообщения о блокировке открывается документ в режиме просмотра (сама идея понравилась, спасибо автору)
#3
7.7 / Re: Понять в каком режиме отк...
Последний ответ от Злоп - Сегодня в 11:54
#23 - вроде ж работает...
#4
7.7 / Re: Понять в каком режиме отк...
Последний ответ от Харлампий Дымба - Вчера в 22:12
Цитата: Злоп от Вчера в 10:08Это еще один способ определить режим открытия формы?
Нуу, пока единственный мне известный. Не очень красивый, правда. А какие другие?

Есть ещё ПриОткрытииФормыДокумента() из Formex - тот что Эдуард показал. Но он работает только для документов же.

Решение от Александра - показывает как переоткрыть форму, а не как определить режим открытия. Если "Фабрика событий" уже вмонстрячена в конфу - хорошо.



#5
7.7 / Re: Понять в каком режиме отк...
Последний ответ от Злоп - Вчера в 10:08
Цитата: Харлампий Дымба от 13 апреля 2026, 22:03Если локально, то
НачатьТранзакцию();
ФормаОткрытаВРежимеРедактирования = Записать();
ОтменитьТранзакцию();

Это еще один способ определить режим открытия формы?
#6
7.7 / Re: Понять в каком режиме отк...
Последний ответ от Харлампий Дымба - 13 апреля 2026, 22:03
Если локально, то
НачатьТранзакцию();
ФормаОткрытаВРежимеРедактирования = Записать();
ОтменитьТранзакцию();
#7
7.7 / Re: Понять в каком режиме отк...
Последний ответ от Злоп - 09 апреля 2026, 11:13
Цитата: Харлампий Дымба от 08 апреля 2026, 22:54ПослеЗакрытия забирает с собой и переоткрытую форму.
вот это не понял...
#8
7.7 / Re: Понять в каком режиме отк...
Последний ответ от Злоп - 09 апреля 2026, 11:12
Цитата: Харлампий Дымба от 08 апреля 2026, 22:54сравнить с бумажным оригиналом и поставить "крыж" (нажатием кнопки реквизит "Сверка" Число 1.0 документа)
.
такие штуки можно делать по той же кнопке "сверено", только порождать событие, которое сработает (ГМ) после закрытия по этой кнопке, формы уже нет, просто меняешь документ и все.
#9
7.7 / Re: Понять в каком режиме отк...
Последний ответ от item - 09 апреля 2026, 01:03
Период закрывают, чтобы не полетели итоги при перепроведении. А что касается второстепенных реквизитов, различных статусов, комментов и прочих, есть смысл реализовать их изменение вне документа, например, в журнале, без перепроведения.
#10
7.7 / Re: Понять в каком режиме отк...
Последний ответ от Харлампий Дымба - 08 апреля 2026, 22:54
Разрывная - пораскинул мозгами Штирлиц.

Цитата: Злоп от 07 апреля 2026, 23:32Отпишись потом что получилось
Не получилось. Не проканало - ПослеЗакрытия забирает с собой и переоткрытую форму.

Тут ещё вот в чём заковыка: как оказалось, код в некоторых формах предполагает возможность изменения объекта, если Форма.ТолькоПрсомотр(1). Например, "крыж" - то есть рядовой бух может открыть документ из заблокированного периода ( форма открыта в режиме редактирования, но при этом встанет флаг Форма.ТолькоПросмотр(1), сравнить с бумажным оригиналом и поставить "крыж" (нажатием кнопки реквизит "Сверка" Число 1.0 документа) - при этом документ будет записан и закрыт. Так вот, если документ будет открыт/переоткрыт в режиме только чтения, то любые изменения реквизитов будут проигнорированы, поставить "крыж" не получится - надо будет менять подход. Мы недавно тут разбирались с этим.

Т.е. я хотел универсального решения, но если оно будет мешать работать уже работающему, то такое решение не подойдёт. Ну и плюс моргание на переоткрытие, и куча лишнего кода с проверками при открытии любой формы.

То что коллеги расписали, в любом случае пригодится - и для расширения кругозора, и как образец кода / подхода. Спасибо, а эту задачку я пока отложу в ящик.