Показано с 1 по 3 из 3
Древовидный режим
-
15.09.2021, 16:16 #1
- Регистрация
- 15.09.2021
- Сообщений
- 2
- Сказал(а) спасибо
- 0
- Поблагодарили 0 раз(а) в 0 сообщениях
Смена "Статуса проверки документа" после нажатия на кнопку формы
Всем привет. Скажу сразу, я совсем новенький, так что сразу извиняюсь, если где-то сильно тупить буду. Прошу у вас помощи вот с таким заданием: есть пустая база,с одним документом, создано в целях тренировки, мне необходимо создать механизм проверки документов с тремя статусами, "Проверен", "Не проверен" и "На повторной проверке", которые берутся из перечисления. Цель задания учебная, я только учусь, пытаюсь разбираться в программировании.
Так же создан регистр сведений, в котором есть Измерение с ссылкой на документ, ресурсом "Статус", тип у которого ссылка на перечисление и реквизитами "Проверен"( ссылка на справочник Пользователи), Дата Проверки ( Тип "Дата"), Изменил( справочник.Пользователи) и Дата Изменения( Дата). Суть в том, что пользователь проверяет документ, нажимает на кнопку проверки и должна идти запись в регистр с правильным статусом, т.е. от проведения документа не зависит. Так же есть сама кнопка на форме "ИзменениеСтатусаПроверки� �окумента(Команда)"
Только созданный документ попадает в регистр со статусом "Не проверен", при нажатии на кнопку должен быть статус "Проверен", а после ее снятия статус "К повторной проверке". Это все сделано. Теперь необходимо, чтобы статус в регистре менялся не при перепроведении документа, а после нажатия на кнопку. Подскажите, пожалуйста, как реализовать это? Скидываю модуль формы документа
Код:&НаКлиенте Процедура ИзменениеСтатусаПроверкиДокумента(Команда) Элементы.КнопкаИзменениеСтатусаПроверкиДокумента.Пометка = НЕ Элементы.КнопкаИзменениеСтатусаПроверкиДокумента.Пометка; Если Элементы.КнопкаИзменениеСтатусаПроверкиДокумента.Пометка Тогда //обработчик событий кнопки //ЭтаФорма.СтатусДокумента = ПредопределенноеЗначение("Перечисление.ЛП_ЭтапыПроверкиДокументов.Проверен"); ОбновитьСтатусДокумента(ПредопределенноеЗначение("Перечисление.ЛП_ЭтапыПроверкиДокументов.Проверен")); СтатусДокумента=ПредопределенноеЗначение("Перечисление.ЛП_ЭтапыПроверкиДокументов.КПовторнойПроверке"); //Обновили реквизит формы со статусом на новый. ИначеЕсли НЕ Элементы.КнопкаИзменениеСтатусаПроверкиДокумента.Пометка Тогда ЭтаФорма.СтатусДокумента = ПредопределенноеЗначение("Перечисление.ЛП_ЭтапыПроверкиДокументов.КПовторнойПроверке"); ИначеЕсли НЕ Элементы.КнопкаИзменениеСтатусаПроверкиДокумента.Пометка Тогда ЭтаФорма.СтатусДокумента = ПредопределенноеЗначение("Перечисление.ЛП_ЭтапыПроверкиДокументов.НеПроверен"); КонецЕсли; Если ЭтаФорма.СтатусДокумента = ПредопределенноеЗначение("Перечисление.ЛП_ЭтапыПроверкиДокументов.Проверен") И Элементы.КнопкаИзменениеСтатусаПроверкиДокумента.Пометка Тогда ЭтаФорма.СтатусДокумента = ПредопределенноеЗначение("Перечисление.ЛП_ЭтапыПроверкиДокументов.Проверен"); ЭтаФорма.Элементы.ДекорацияСтатус.Заголовок = " Статус проверки " + " Нажата"; ИначеЕсли ЭтаФорма.СтатусДокумента = ПредопределенноеЗначение("Перечисление.ЛП_ЭтапыПроверкиДокументов.Проверен") И НЕ Элементы.КнопкаИзменениеСтатусаПроверкиДокумента.Пометка Тогда ЭтаФорма.СтатусДокумента = ПредопределенноеЗначение("Перечисление.ЛП_ЭтапыПроверкиДокументов.КПовторнойПроверке"); ЭтаФорма.Элементы.ДекорацияСтатус.Заголовок = " Статус проверки " + " Не нажата"; ИначеЕсли ЭтаФорма.СтатусДокумента = ПредопределенноеЗначение("Перечисление.ЛП_ЭтапыПроверкиДокументов.НеПроверен") И НЕ Элементы.КнопкаИзменениеСтатусаПроверкиДокумента.Пометка Тогда ЭтаФорма.СтатусДокумента = ПредопределенноеЗначение("Перечисление.ЛП_ЭтапыПроверкиДокументов.НеПроверен"); ЭтаФорма.Элементы.ДекорацияСтатус.Заголовок = " Статус проверки " + "Не нажата"; ИначеЕсли ЭтаФорма.СтатусДокумента = Неопределено И НЕ Элементы.КнопкаИзменениеСтатусаПроверкиДокумента.Пометка И НЕ Элементы.КнопкаИзменениеСтатусаПроверкиДокумента.Пометка Тогда ЭтаФорма.СтатусДокумента = ПредопределенноеЗначение("Перечисление.ЛП_ЭтапыПроверкиДокументов.КПовторнойПроверке"); ЭтаФорма.Элементы.ДекорацияСтатус.Заголовок = " Статус проверки " + "Не нажата"; КонецЕсли; Если ЭтаФорма.Открыта() Тогда КонецЕсли; КонецПроцедуры &НаСервере Процедура ОбновитьСтатусДокумента(Проверен); МенеджерЗаписи = РегистрыСведений.ЛП_СтатусыПроверкиДокументов.СоздатьМенеджерЗаписи(); //МенеджерЗаписи = НоваяЗапись.Добавить(); МенеджерЗаписи.Документ = Объект.Ссылка; МенеджерЗаписи.Отбор.Документ.Установить(Объект.Ссылка); Если СтатусДокумента = ПредопределенноеЗначение("Перечисление.ЛП_ЭтапыПроверкиДокументов.НеПроверен") Тогда МенеджерЗаписи.СтатусПроверки = Перечисления.ЛП_ЭтапыПроверкиДокументов.НеПроверен; ИначеЕсли СтатусДокумента = ПредопределенноеЗначение("Перечисление.ЛП_ЭтапыПроверкиДокументов.Проверен")Тогда МенеджерЗаписи.СтатусПроверки = Перечисления.ЛП_ЭтапыПроверкиДокументов.Проверен; ИначеЕсли СтатусДокумента = ПредопределенноеЗначение("Перечисление.ЛП_ЭтапыПроверкиДокументов.КПовторнойПроверке") Тогда МенеджерЗаписи.СтатусПроверки = Перечисления.ЛП_ЭтапыПроверкиДокументов.КПовторнойПроверке; КонецЕсли; МенеджерЗаписи.СтатусПроверки = Проверен; Пользователь = Справочники.Пользователи.НайтиПоНаименованию(ПользователиИнформационнойБазы.ТекущийПользователь().Имя); МенеджерЗаписи.Проверил = Пользователь; МенеджерЗаписи.ДатаПроверки = ТекущаяДатаСеанса(); МенеджерЗаписи.Изменил = Пользователь; МенеджерЗаписи.ДатаИзменения = ТекущаяДатаСеанса(); МенеджерЗаписи.Записать(Истина); КонецПроцедуры &НаСервере Процедура ЗаписьВРегистр(Статус) СписокСтрок = РегистрыСведений.ЛП_СтатусыПроверкиДокументов.СоздатьНаборЗаписей(); СписокСтрок.Отбор.Регистратор.Значение = Объект.Ссылка; СписокСтрок.Отбор.Регистратор.Использование = Истина; СписокСтрок.Прочитать(); Для каждого Строчка Из СписокСтрок Цикл Строчка.Статус= СтатусДокумента; КонецЦикла; СписокСтрок.Записать(); КонецПроцедуры &НаСервере Функция ОпределитьСтатус() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СтатусыПроверкиДокументов.Статус КАК Статус |ИЗ | РегистрСведений.СтатусыПроверкиДокументов КАК СтатусыПроверкиДокументов |ГДЕ | СтатусыПроверкиДокументов.ДокументСсылка= &Документ"; Запрос.УстановитьПараметр("Документ", Объект.Ссылка); Результат = Запрос.Выполнить(); Если Результат.Пустой() Тогда СтатусДокумента = Перечисления.ЛП_ЭтапыПроверкиДокументов.НеПроверен; Иначе ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл СтатусДокумента = ВыборкаДетальныеЗаписи.СтатусДокумента; КонецЦикла; КонецЕсли; Если НЕ ЗначениеЗаполнено(СтатусДокумента) Тогда СтатусДокумента = Перечисления.ЛП_ЭтапыПроверкиДокументов.НеПроверен; КонецЕсли; Если СтатусДокумента = Перечисления.ЛП_ЭтапыПроверкиДокументов.Проверен Тогда СтатусДокумента = Перечисления.ЛП_ЭтапыПроверкиДокументов.КПовторнойПроверке; КонецЕсли; Если СтатусДокумента = Перечисления.ЛП_ЭтапыПроверкиДокументов.КПовторнойПроверке Тогда СтатусДокумента = Перечисления.ЛП_ЭтапыПроверкиДокументов.КПовторнойПроверке; КонецЕсли; Возврат СтатусДокумента; КонецФункции &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) //в обработчике ПередЗаписьюНаСервере в параметре ТекущийОбъект //находится сам прикладной объект, а не данные формы. //Соответственно доступны и ДополнительныеСвойства и //экспортная переменная модуля объекта ТекущийОбъект.ДополнительныеСвойства.Вставить("СтатусДокумента",СтатусДокумента); КонецПроцедуры &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Экспорт Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЛП_СтатусыПроверкиДокументов.СтатусПроверки КАК СтатусПроверки |ИЗ | РегистрСведений.ЛП_СтатусыПроверкиДокументов КАК ЛП_СтатусыПроверкиДокументов |ГДЕ | ЛП_СтатусыПроверкиДокументов.Документ = &Документ | |УПОРЯДОЧИТЬ ПО | ЛП_СтатусыПроверкиДокументов.ДатаПроверки УБЫВ"; Запрос.УстановитьПараметр("Документ", Объект.Ссылка); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Если ВыборкаДетальныеЗаписи.Следующий() Тогда Если Объект.Ссылка=Неопределено Тогда ЭтаФорма.СтатусДокумента = Перечисления.ЛП_ЭтапыПроверкиДокументов.НеПроверен; КонецЕсли; КонецЕсли; Если ВыборкаДетальныеЗаписи.СтатусПроверки = Перечисления.ЛП_ЭтапыПроверкиДокументов.Проверен Тогда ЭтаФорма.Элементы.ДекорацияСтатус.Заголовок = " Статус проверки " + " Нажата"; ЭтаФорма.СтатусДокумента = Перечисления.ЛП_ЭтапыПроверкиДокументов.Проверен ; Элементы.КнопкаИзменениеСтатусаПроверкиДокумента.Пометка = Истина; ИначеЕсли ВыборкаДетальныеЗаписи.СтатусПроверки = Перечисления.ЛП_ЭтапыПроверкиДокументов.КПовторнойПроверке Тогда ЭтаФорма.Элементы.ДекорацияСтатус.Заголовок = " Статус проверки " + " Нажата"; ЭтаФорма.СтатусДокумента = Перечисления.ЛП_ЭтапыПроверкиДокументов.КПовторнойПроверке ; Элементы.КнопкаИзменениеСтатусаПроверкиДокумента.Пометка = Истина; ИначеЕсли ВыборкаДетальныеЗаписи.СтатусПроверки = Перечисления.ЛП_ЭтапыПроверкиДокументов.НеПроверен Тогда ЭтаФорма.Элементы.ДекорацияСтатус.Заголовок = " Статус проверки " + " Не нажата"; ЭтаФорма.СтатусДокумента = Перечисления.ЛП_ЭтапыПроверкиДокументов.НеПроверен ; Элементы.КнопкаИзменениеСтатусаПроверкиДокумента.Пометка = Ложь; КонецЕсли; Если НЕ РольДоступна("ЛП_ИзменениеСтатусыПроверкиДокументов") Тогда Элементы.КнопкаИзменениеСтатусаПроверкиДокумента.Доступность = Ложь; КонецЕсли; Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда ЭтаФорма.СтатусДокумента = Перечисления.ЛП_ЭтапыПроверкиДокументов.НеПроверен; КонецЕсли; КонецПроцедуры
Код HTML:Процедура ОбработкаПроведения(Отказ, РежимПроведения) НаборЗаписей = РегистрыСведений.ЛП_СтатусыПроверкиДокументов.СоздатьНаборЗаписей(); // запись документов в регистр сведений НаборЗаписей.Отбор.Документ.Установить(Ссылка); НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись.Документ = Ссылка; Если ДополнительныеСвойства.Свойство("СтатусДокумента") Тогда РеквизитФормы = ДополнительныеСвойства.СтатусДокумента; Сообщить("Проведение: " + РеквизитФормы); КонецЕсли; НоваяЗапись.СтатусПроверки = РеквизитФормы; Пользователь = Справочники.Пользователи.НайтиПоНаименованию(ПользователиИнформационнойБазы.ТекущийПользователь().Имя); НоваяЗапись.Проверил = Пользователь; НоваяЗапись.ДатаПроверки = ТекущаяДатаСеанса(); НоваяЗапись.Изменил = Пользователь; НоваяЗапись.ДатаИзменения = ТекущаяДатаСеанса(); НаборЗаписей.Записать(Истина); КонецПроцедуры Процедура ОбработкаУдаленияПроведения(Отказ) НаборЗаписей =РегистрыСведений.ЛП_СтатусыПроверкиДокументов.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Документ.Установить(Ссылка); НаборЗаписей.Прочитать(); НаборЗаписей.Очистить(); НаборЗаписей.Записать(); Если НЕ РольДоступна("ЛП_ИзменениеСтатусыПроверкиДокументов") Тогда Если Документы.ПеремещениеТоваров = Проведен и (Не Документы.ПеремещениеТоваров.ПометкаУдаления) Тогда ТолькоПросмотр = Проведен; КонецЕсли; КонецЕсли; КонецПроцедуры
Похожие темы
-
ошибка при открытии документа "Приказ на пересчёт товаров" (Розница 2.2)
от Alexisonfire в разделе 1С - Предприятие 8.0, 8.1, 8.2, 8.3Ответов: 1Последнее сообщение: 22.06.2019, 13:21 -
Запретить кнопку "Записать объект".
от skillful в разделе 1С - Предприятие 8.0, 8.1, 8.2, 8.3Ответов: 7Последнее сообщение: 18.04.2019, 02:32 -
Создал для Документа РТиУ в БП 2.0 обработка табличной части "Товары"
от Touch_of_soul в разделе 1С - Предприятие 8.0, 8.1, 8.2, 8.3Ответов: 0Последнее сообщение: 12.07.2016, 16:47
Социальные закладки