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