Как поменять статус в 1с

Обновлено: 08.07.2024

Всем привет. Скажу сразу, я совсем новенький, так что сразу извиняюсь, если где-то сильно тупить буду. Прошу у вас помощи вот с таким заданием: есть пустая база,с одним документом, создано в целях тренировки, мне необходимо создать механизм проверки документов с тремя статусами, "Проверен", "Не проверен" и "На повторной проверке", которые берутся из перечисления.
Так же создан регистр сведений, в котором есть Измерение с ссылкой на документ, ресурсом "Статус", тип у которого ссылка на перечисление и реквизитами "Проверен"( ссылка на справочник Пользователи), Дата Проверки ( Тип "Дата"), Изменил( справочник.Пользователи) и Дата Изменения( Дата). Суть в том, что пользователь проверяет документ, нажимает на кнопку проверки и должна идти запись в регистр с правильным статусом, т.е. от проведения документа не зависит.
Только созданный документ попадает в регистр со статусом "Не проверен", при нажатии на кнопку должен быть статус "Проверен", а после ее снятия статус "К повторной проверке"
У меня было сделано так, что было 2 статуса проверки "Проверен" и "Не проверен", записи шли, но после проведения документа. Сейчас же появилось третье значение измерения "К повторной проверке"( После снятия кнопки, ставится этот статус) и задача записывать этот статус сразу после нажатия на кнопку, а не после проведения документа. Буду очень признателен, если кто поможет!

Код скидываю ниже:

Процедура ОбработкаПроведения(Документ, СтатусПроверки, ЭтоИзменениеДокумента = Истина) Экспорт
НаборЗаписей = РегистрыСведений.ЛП_СтатусыПроверкиДокументов.СоздатьНаборЗа писей(); // запись документов в регистр сведений
НаборЗаписей.Отбор.Документ.Установить(Документ);
//НаборЗаписей.Отбор.Регистратор.Установить(Ссылка);
НаборЗаписей.Прочитать();
Если НаборЗаписей.Количество() = 0 Тогда
Запись = НаборЗаписей.Добавить();
Иначе //запись уже существует
Запись = НаборЗаписей[0];
КонецЕсли;

Запись.Документ = Документ;
Запись.СтатусПроверки = СтатусПроверки;
ТекущийПользователь = Справочники.Пользователи.НайтиПоНаименованию(ПользователиИнф ормационнойБазы.ТекущийПользователь().Имя);
Запись.Проверил = ТекущийПользователь;
Запись.ДатаПроверки = ТекущаяДатаСеанса();
//ЭтоИзменениеДокумента =
//Если ЭтоИзменениеДокумента Тогда
Запись.Изменил = ТекущийПользователь;
Запись.ДатаИзменения = ТекущаяДатаСеанса();
//КонецЕсли;

&НаКлиенте
Процедура ИзменениеСтатусаПроверкиДокумента(Команда)

Если ЭтаФорма.СтатусДокумента = Истина Тогда //обработчик событий кнопки
ЭтаФорма.СтатусДокумента = Ложь ;
ИначеЕсли ЭтаФорма.СтатусДокумента = Ложь Тогда
ЭтаФорма.СтатусДокумента = Истина ;
КонецЕсли;

ЭтаФорма.Элементы.ДекорацияСтатус.Заголовок = ЭтаФорма.СтатусДокумента; //Показываем состояние кнопки на декорации форм
Если ЭтаФорма.СтатусДокумента = Истина Тогда
ЭтаФорма.Элементы.ДекорацияСтатус.Заголовок = " Статус проверки " + " Нажата";
ИначеЕсли ЭтаФорма.СтатусДокумента = Ложь Тогда
ЭтаФорма.Элементы.ДекорацияСтатус.Заголовок = " Статус проверки " + "Не нажата";
КонецЕсли;

//Делаем кнопку нажатой и не нажатой
Элементы.ИзменениеСтатусаПроверкиДокумента.Пометка = НЕ Элементы.ИзменениеСтатусаПроверкиДокумента.Пометка
КонецПроцедуры

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
//в обработчике ПередЗаписьюНаСервере в параметре ТекущийОбъект
//находится сам прикладной объект, а не данные формы.
//Соответственно доступны и ДополнительныеСвойства и
//экспортная переменная модуля объекта
ТекущийОбъект.ДополнительныеСвойства.Вставить("СтатусДокумен та",СтатусДокумента);

&НаСервере
Функция ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Экспорт

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЛП_СтатусыПроверкиДокументов.СтатусПроверки КАК СтатусПроверки
|ИЗ
| РегистрСведений.ЛП_СтатусыПроверкиДокументов КАК ЛП_СтатусыПроверкиДокументов
|ГДЕ
| ЛП_СтатусыПроверкиДокументов.Документ = &Документ";

РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат Ложь;
КонецЕсли;

Если ВыборкаДетальныеЗаписи.СтатусПроверки = Перечисления.ЛП_ЭтапыПроверкиДокументов.НеПроверен Тогда
Возврат Ложь;
Иначе
Возврат Истина;

При работе в 1С встречаются ситуации, когда сортировку динамического списка, предложенную по умолчанию, требуется изменить.

Рассмотрим случай, когда сортировка списка документов изменена на такую, которая обеспечивает вывод документов по дате в порядке, когда вверху списка находится последний документ.

При такой сортировке 1С, по умолчанию, переходит в конец списка, т.е. на первый созданный документ и список отображается с выделенной самой нижней строкой.

Как сделать, чтобы список был позиционирован вверх?

В режиме конфигуратора достаточно в свойствах элемента формы Список найти параметр НачальноеОтображениеСписка и перевести его из состояния Авто в состояние Начало.

Переместить в начало списка 1С

Если вам недоступна по тем или иным причинам возможность редактирования конфигурации, то подобную настройку можно выполнить и в режиме Предприятия

Настроить форму 1С

И, затем выделяем в справа нужный нам список и изменяем соответствующее свойство Начальное отображение списка также на Начало

Начальное отображение списка 1С

После указанных действий наш список будет позиционироваться вверху, а не по умолчанию на первом документе.

Ответ на вопросы:

Как установить выделенную строку в списке 1С?

Как перейти вверх списка при открытии 1С?

Как установить позицию вверху списка при открытии формы списка 1С?

Как открывать журнал документов в 1с на последнем документе при сортировке по убыванию?

Как настроить журнал документов так, чтобы при открытии курсор был на последней строке?

Как настроить начальное отображение списка?

Если у Вас появились вопросы по статье или остались нерешенные проблемы обсудить их Вы можете на Форуме 1С Вопросы и ответы

Читайте также: