Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 17:27

Открыть форму элемента при снятии пометки

Автор Алексей_1985_06, 25 янв 2021, 17:33

0 Пользователей и 1 гость просматривают эту тему.

Алексей_1985_06

Всем привет! Не могу разобраться... необходимо при снятии пометки удаления (на форме списка) с элемента справочника "Сотрудники", программно открыть форму объекта, для корректировки.... Пробую так:
СсылкаНаЭлементСправочника = Элементы.Список.ТекущаяСтрока;
ПараметрыФормы = Новый Структура("Ключ", СсылкаНаЭлементСправочника);
ОткрытьФорму("Справочник.Сотрудники.ФормаОбъекта", ПараметрыФормы);


Сложность в выборе события....Подскажите как лучше сделать (какое событие необходимо выбрать на форме списка)???


LexaK

как вариант, пишите перехват команды ПометкаУдаления (может размещаться и в контекстном меню)
удаляете вызов стандартной команды, в конфе есть список стандартных команд, галочку убираете,
добавляете свою команду, можете еще горячую кнопку Del назначить и нужную картинку.
вот в обработке команды снимаете пометку и можете открыть форму (всего пяток команд)
если помогло нажмите: Спасибо!

Алексей_1985_06

Цитата: LexaK от 25 янв 2021, 17:48
как вариант, пишите перехват команды ПометкаУдаления (может размещаться и в контекстном меню)
удаляете вызов стандартной команды, в конфе есть список стандартных команд, галочку убираете,
добавляете свою команду, можете еще горячую кнопку Del назначить и нужную картинку.
вот в обработке команды снимаете пометку и можете открыть форму (всего пяток команд)
ОК, спасибо льшое LexaK , попробую....
Добавлено: 25 янв 2021, 22:17


Цитата: Алексей_1985_06 от 25 янв 2021, 21:08
Цитата: LexaK от 25 янв 2021, 17:48
как вариант, пишите перехват команды ПометкаУдаления (может размещаться и в контекстном меню)
удаляете вызов стандартной команды, в конфе есть список стандартных команд, галочку убираете,
добавляете свою команду, можете еще горячую кнопку Del назначить и нужную картинку.
вот в обработке команды снимаете пометку и можете открыть форму (всего пяток команд)
ОК, спасибо льшое LexaK , попробую....

LexaK если не затруднит, подскажите! вот отключил я на форме списка сотрудников стандартные команды, создал новую команду "ПометитьСнятьУдаление_Моя", теперь не получается следующие:
1. Как установить пометку удаления при нажатии на эту кнопку (и снять ее при повторном нажатии) при выборе элемента из списка (метод УстановитьПометкуУдаления - не работает)?
2. Как отработать открытие формы элемента справочника в случае если пометка удаления изменилась с Истина на Ложь?

Код размещен в модуле формы списка справочника "Сотрудники":

&НаКлиенте
Процедура ПометитьСнятьУдаление_Моя(Команда)

    // Как пометить элемент на удаление и как снять с удаления когда если был отмечен ?
    СсылкаНаЭлементСправочника.УстановитьПометкуУдаления(Истина); // Ошибка, метод не обнаружен !!!!  

Если ..... // элемент снят с удаления
Тогда
СсылкаНаЭлементСправочника= Элементы.Список.ТекущаяСтрока; // получим ссылку на элемент справочника
ПараметрыФормы = Новый Структура("Ключ", СсылкаНаЭлементСправочника); // установим параметры формы для открытия элемента справочника
ОткрытьФорму("Справочник.Сотрудники.ФормаОбъекта", ПараметрыФормы); // открываем форму с установленным параметрами
КонецЕсли;

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

antoneus

Во-первых, пометка удаления устанавливается на сервере.
Во-вторых, для установки пометки удаления нужно ПолучитьОбъект().

спрОбъект = Ссылка.ПолучитьОбъект();
спрОбъект.УстановитьПометкуУдаления(не спрОбъект.ПометкаУдаления)

LexaK

примерно так

&НаКлиенте
Процедура ПометитьСнятьУдаление_Моя(Команда)
БылУдален = Ложь;
СсылкаНаЭлементСправочника = Элементы.Список.ТекущаяСтрока; //
Если СсылкаНаЭлемент <> Неопределено Тогда
ИзменитьПометкуУдаленияНаСервере(СсылкаНаЭлемент, БылУдален);
Если БылУдален Тогда
//по условию, надо открыть если была снята пометка удаления
ПоказатьЗначение(,СсылкаНаЭлементСправочника);
КонецЕсли;
КонецЕсли;
КонецПроцедуры

&НаСеревереБезКонтекста
Процедура ИзменитьПометкуУдаленияНаСервере(Ссылка, БылУдален)
лкОбъект = Ссылка.ПолучитьОбъект();
БылУдален = лкОбъект.ПометкаУдаления;
//изменение пометки
лкОбъект.ПометкаУдаления = Не лкОбъект.ПометкаУдаления;
лкОбъект.Записать();
КонецПроцедуры
если помогло нажмите: Спасибо!

Алексей_1985_06

Цитата: LexaK от 26 янв 2021, 10:26
примерно так

&НаКлиенте
Процедура ПометитьСнятьУдаление_Моя(Команда)
БылУдален = Ложь;
СсылкаНаЭлементСправочника = Элементы.Список.ТекущаяСтрока; //
Если СсылкаНаЭлемент <> Неопределено Тогда
ИзменитьПометкуУдаленияНаСервере(СсылкаНаЭлемент, БылУдален);
Если БылУдален Тогда
//по условию, надо открыть если была снята пометка удаления
ПоказатьЗначение(,СсылкаНаЭлементСправочника);
КонецЕсли;
КонецЕсли;
КонецПроцедуры

&НаСеревереБезКонтекста
Процедура ИзменитьПометкуУдаленияНаСервере(Ссылка, БылУдален)
лкОбъект = Ссылка.ПолучитьОбъект();
БылУдален = лкОбъект.ПометкаУдаления;
//изменение пометки
лкОбъект.ПометкаУдаления = Не лкОбъект.ПометкаУдаления;
лкОбъект.Записать();
КонецПроцедуры


LexaK огромное ВАМ спасибо очередной раз ! Подскажите еще пожалуйста, как сделать чтоб при нажатии ПКМ на элемент справочника, не отображалась стандартная команда Пометить на удаление / Снять пометку (...добавляете свою команду, можете еще горячую кнопку Del назначить и нужную картинку...). Что-то не могу понять как это делается?

antoneus

ПКМ на списке в конфигураторе - Показать контекстное меню.
Снять у контекстного меню галку "Автозаполнение".
Добавить свои команды.

Алексей_1985_06

Цитата: antoneus от 26 янв 2021, 20:55
ПКМ на списке в конфигураторе - Показать контекстное меню.
Снять у контекстного меню галку "Автозаполнение".
Добавить свои команды.

Ага нашел..... Большое Вам спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск