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

ПередЗакрытием или Призакрытии документа

Автор Валерия00, 20 сен 2015, 12:03

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

Валерия00

Здравствуйте, мне нужно чтобы при нажатие кнопки закрыть в документе(или на крестик в верхнем углу) проверял, если этот документ проведен то закрыть иначе ошибка.

нельзя закрывать документ без его проведения!

Пожалуйста помогите

Дмитрий@

&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
ПередЗакрытиемНаСервере(Отказ);
Если Отказ Тогда
ПоказатьОповещениеПользователя("Нельзя закрыть непроведенный документ");
КонецЕсли;

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

&НаСервере
Процедура ПередЗакрытиемНаСервере(Отказ)

Если Не Объект.Ссылка.Пустая() Тогда
Если Не Объект.Проведен И Не Объект.Ссылка.ПолучитьОбъект().ЭтоНовый() Тогда
Отказ = Истина;
КонецЕсли;
КонецЕсли;

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

cska-fanat-kz

Цитата: Валерия00 от 20 сен 2015, 12:03
Здравствуйте, мне нужно чтобы при нажатие кнопки закрыть в документе(или на крестик в верхнем углу) проверял, если этот документ проведен то закрыть иначе ошибка.

нельзя закрывать документ без его проведения!

Пожалуйста помогите

Запись документа без проведения - вполне себе логичная операция.
Например в случае когда всех данных для проведения не хватает, но и желательно чтобы документ записался, т.е. появился в базе и чтобы к нему можно было вернуться в дальнейшем.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

KrivosheevEV

Объект.Ссылка.ПолучитьОбъект().ЭтоНовый()
Жесть ..
Текст на компьютере распечатать, затем отсканировать, чтобы был текст на компьютере.

Дмитрий@

ЦитироватьЖесть ..
Текст на компьютере распечатать, затем отсканировать, чтобы был текст на компьютере.

А такой код не срабатывает по каким то причинам, видимо потому, что это реквизит формы
Объект.ЭтоНовый()

vitasw

Вообще-то достаточно проверить
Объект.Ссылка.Пустая()
А вот это
Цитата: KrivosheevEV от 21 сен 2015, 07:48Объект.Ссылка.ПолучитьОбъект().ЭтоНовый()
примерно как доставать нижний горшок в стопке (Трус знал в этом толк)

Дмитрий@

ЦитироватьВообще-то достаточно проверить
Объект.Ссылка.Пустая()
Насколько я знаю есть методы которые позволяют создавать виртуальную ссылку, до записи объекта. А поскольку ссылка не пустая то Объект.Ссылка.Пустая()=Истина, хотя объект не записан в базе
Добавлено: 21 сен 2015, 15:22


Извиняюсь опечатка Объект.Ссылка.Пустая()=Ложь

Kironten

Цитата: Дмитрий@ от 21 сен 2015, 15:17
Насколько я знаю есть методы которые позволяют создавать виртуальную ссылку, до записи объекта

А можно имя такого метода?

vitasw

Типа намекает на ПолучитьСсылкуНового()

Kironten

С трудом верится.

Да, можно методом <Объект>.УстановитьСсылкуНового() установить ссылку для записи, но пока запись не произведена свойство объекта - ссылка так и останется пустым.
Да, можно методом <Объект>.ПолучитьСсылкуНового() получить эту временную ссылку, НО, если мы будем обращаться к свойству объекта - ссылка(а, именно так и проводится проверка в вышеизложенном коде) то свойство будет пустым до записи.

Поэтому, я могу ошибаться, но:
Цитата: Дмитрий@ от 21 сен 2015, 15:17
А поскольку ссылка не пустая то Объект.Ссылка.Пустая()=Ложь, хотя объект не записан в базе
не совсем корректное утверждение.
Установкой ссылки нового, мы не получим Объект.Ссылка.Пустая() = Ложь для не записанного объекта.

Во всяком случае, я сейчас это проверил, у меня так отработало.
Возможно имеется ввиду другой какой метод?

Теги:

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

Рейтинг@Mail.ru

Поиск