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

Проблема с обработкой выбранного документа в форме списка

Автор lhf826, 07 мар 2025, 13:27

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

lhf826

У меня есть документ, который называется "Заказ". Раньше он отображался на одной форме, но я решила изменить форму списка и разделила её на две страницы: "Основные" и "В работе". На каждой странице я создала таблицы:

На странице "Основные" — ТаблицаОсновные.

На странице "В работе" — ТаблицаВРаботе, где отображаются документы "Заказ" со статусом "Черновик".

Для фильтрации документов по статусам я создала два реквизита формы списка: РеквизитОсновные и РеквизитВРаботе. Эти реквизиты настроены на отображение данных из документа "Заказ" с помощью произвольных запросов. Каждый реквизит показывает только документы с нужными статусами.

Теперь я хочу добавить кнопку "Завершить обработку", которая будет удалять документ со статусом "Черновик", выбранный из ТаблицыВРаботе. Однако у меня возникают сложности с реализацией этой функциональности.


Поставлены требования именно удалять из отдельной кнопки документ из списка, и чтобы выходило сообщение об удалении.
 
Я не могу корректно реализовать удаление документа со статусом "Черновик". Когда я пытаюсь получить выбранный документ из ТаблицыВРаботе, возникает ошибка, связанная с тем, что поле объекта не обнаружено или что-то пошло не так при проверке статуса документа.
Если есть варианты легче пожалуйста поделитесь :trhregerhg:

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

    ЗавершитьОбработкуСервер(ВыбранныйДокумент);

    ЭтаФорма.Обновить();
КонецПроцедуры

&НаСервере
Процедура ЗавершитьОбработкуСервер(ВыбранныйДокумент)
    Если ВыбранныйДокумент = Неопределено Тогда
        Сообщить("Документ не найден!", СтатусСообщения.Важно);
        Возврат;
    КонецЕсли;
   
    Попытка
        ДокументОбъект = ВыбранныйДокумент.ПолучитьОбъект();
        Если ДокументОбъект = Неопределено Тогда
            Сообщить("Документ не найден!", СтатусСообщения.Важно);
            Возврат;
        КонецЕсли;
        Если ДокументОбъект.Статус <> "Черновик" Тогда
            Сообщить("Можно завершить обработку только для документов со статусом 'Черновик'!", СтатусСообщения.Внимание);
            Возврат;
        КонецЕсли;
        ДокументОбъект.Удалить();
        Сообщить("Документ успешно удален.", СтатусСообщения.Информация);
    Исключение
        Сообщить("Ошибка удаления документа: " + ОписаниеОшибки(), СтатусСообщения.Важно);
    КонецПопытки;
КонецПроцедуры

LexaK

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

И ВСЕ

не надо ни где не удалять ни перемещать строчку с документом,
он автоматически отобразится в нужном списке (в соответствии с отбором)
для убыстрения отображения, можно выполнить команду Обновления дин.списмков.
если помогло нажмите: Спасибо!

Теги:

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

Рейтинг@Mail.ru

Поиск