Как проверить создан ли документ на основании?
Здравствуйте, уважаемые программисты.
Вопрос такой: Как проверить создан ли документ на основании?
Есть задача: если был создан документ на основании текущего, то, запретить возможность редактирования текущего.
Пока в голову толком ничего не приходит, только перебор всех возможных документов по реквизиту документ-основание, но это как-то не корректно
1С 8.3, обычные формы
Вопрос такой: Как проверить создан ли документ на основании?
Есть задача: если был создан документ на основании текущего, то, запретить возможность редактирования текущего.
Пока в голову толком ничего не приходит, только перебор всех возможных документов по реквизиту документ-основание, но это как-то не корректно
1С 8.3, обычные формы
По теме из базы знаний
Найденные решения
Если ЭтоНовый() Тогда
Если НЕ ПараметрОбъектКопирования = НЕОПРЕДЕЛЕНО Тогда // Проверка на копирование
Предупреждение("Запрещено копировать Договора!");
Закрыть();
КонецЕсли;
КонецЕсли;
А для документа использовать БСП:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// СтандартныеПодсистемы.ВерсионированиеОбъектов
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтаФорма);
// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов
Если Объект.Номер = "" Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СвязанныеДокументы.Ссылка
|ИЗ
| КритерийОтбора.СвязанныеДокументы(&ТекущийДокумент) КАК СвязанныеДокументы";
Запрос.УстановитьПараметр("ТекущийДокумент", Объект.Основание);
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Это выполнение ЗАКРЫТО " + ВыборкаДетальныеЗаписи.Ссылка;
Сообщение.Поле = "";
Сообщение.УстановитьДанные(ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект());
Сообщение.Сообщить();
Отказ = Истина;
КонецЦикла;
Возврат;
КонецЕсли;
Если Объект.Основание.ДатаВыполнения <> '00010101' Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Закрывать можно только выполненную заявку";
Сообщение.Сообщить();
Отказ = Истина;
Возврат;
КонецЕсли;
КонецЕсли;
// Если документ введен на основании, то запретим редактировать основание
Если Не Объект.Основание.Пустая() И Объект.Проведен Тогда
Элементы.Основание.ТолькоПросмотр = Истина;
Иначе
Элементы.Основание.ТолькоПросмотр = Ложь;
КонецЕсли;
Если Объект.Ответственный = Справочники.Пользователи.ПустаяСсылка() Тогда
Объект.Ответственный = ПараметрыСеанса.ТекущийПользователь;
КонецЕсли;
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Если ЭтоНовый() Тогда
Если НЕ ПараметрОбъектКопирования = НЕОПРЕДЕЛЕНО Тогда // Проверка на копирование
Предупреждение("Запрещено копировать Договора!");
Закрыть();
КонецЕсли;
КонецЕсли;
А для документа использовать БСП:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// СтандартныеПодсистемы.ВерсионированиеОбъектов
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтаФорма);
// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов
Если Объект.Номер = "" Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СвязанныеДокументы.Ссылка
|ИЗ
| КритерийОтбора.СвязанныеДокументы(&ТекущийДокумент) КАК СвязанныеДокументы";
Запрос.УстановитьПараметр("ТекущийДокумент", Объект.Основание);
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Это выполнение ЗАКРЫТО " + ВыборкаДетальныеЗаписи.Ссылка;
Сообщение.Поле = "";
Сообщение.УстановитьДанные(ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект());
Сообщение.Сообщить();
Отказ = Истина;
КонецЦикла;
Возврат;
КонецЕсли;
Если Объект.Основание.ДатаВыполнения <> '00010101' Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Закрывать можно только выполненную заявку";
Сообщение.Сообщить();
Отказ = Истина;
Возврат;
КонецЕсли;
КонецЕсли;
// Если документ введен на основании, то запретим редактировать основание
Если Не Объект.Основание.Пустая() И Объект.Проведен Тогда
Элементы.Основание.ТолькоПросмотр = Истина;
Иначе
Элементы.Основание.ТолькоПросмотр = Ложь;
КонецЕсли;
Если Объект.Ответственный = Справочники.Пользователи.ПустаяСсылка() Тогда
Объект.Ответственный = ПараметрыСеанса.ТекущийПользователь;
КонецЕсли;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот