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

Работа с таблицей и обработка события при нажатии на кнопку

Автор Резеда, 23 янв 2023, 18:02

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

Резеда

Доброго времени суток. Почему не срабатывает процедура при нажатии на кнопку? Есть таблица есть кнопки "Согласовать", "Отклонить" В соотвествии с нажатием в таблице колонке  "Статус" в строку вносится "Согласовано" или"отклонено". Дайте пожалуйста совет по данному вопросу (только учусь и при поиске информации в интернете не могу найти ответа по моему вопросу, может слепой котик)

&НаКлиенте
Процедура Согласованов(Команда)
Если Объект.СогласованиеСправки.Объект.СогласованиеСправки.Статус = NULL Тогда
Объект.СогласованиеСправки.Объект.СогласованиеСправки.Статус  = "Согласовано";
Иначе Сообщение = "Не заполнено"
конецЕсли;

КонецПроцедуры

Максим75

Резеда, кнопок две, а обработчик один. каждой кнопке сделай свой обработчик.

теперь Статус - это что такое? Это колонка таблицы значений? Если да, то надо ловить активную строку таблицы значений и ей уже менять колонку Статус. Если это просто реквизит формы, то обратись к нему и поменяй.
и вот это: Объект.СогласованиеСправки.Объект.СогласованиеСправки.Статус - это что?

Afinogen

1.  почему такая конструкция "Объект.СогласованиеСправки.Объект.СогласованиеСправки.Статус"? Проверьте скорее всего  у вас достаткочно "Объект.Статус"
2. вы сравниваете с NULL,  а потом приравниваете к строке, сделайте проще
Если НЕ ЗначениеЗаполнено(Объект.Статус)
3.вы пишете
ЦитироватьВ соотвествии с нажатием в таблице колонке  "Статус" в строку вносится "Согласовано" или"отклонено"
Я так понимаю что у вас есть таблица с колонкой "Статус" в которой вы по кнопке заполняете текст?
Проще было бы сделать эту колонку с типом "булево" (флажок), но раз  у вас строка то вам нужно делать  примерно так

&НаКлиенте
Процедура Согласованов(Команда)
     ТекДанные = Объект.[имя вашей таблицы].ТекущиеДанные   //текущая строка вашей таблицы с колонкой "Статус", которую надо  заполнить

     Если НЕ ТекДанные = Неопределено Тогда                 //проверка, что  строка выделена
       
         Если ЗначениеЗаполнено(ТекДанные.Статус) Тогда
                                                            //

         Иначе
             ТекДанные.Статус = "Согласовано";
         КонецЕсли;
     Конецесли;

КонецПроцедуры

Резеда

Выдает ошибку если:
&НаКлиенте
Процедура Согласованов(Команда)

   
     ТекДанные = Объект.СогласованиеСправки.ТекущиеДанные;   //текущая строка вашей таблицы с колонкой "Статус", которую надо  заполнить

     Если НЕ ТекДанные = Неопределено Тогда                 //проверка, что  строка выделена
       
         Если ЗначениеЗаполнено(ТекДанные.Статус) Тогда
                                                            //

         Иначе
             ТекДанные.Статус = "Согласовано";
         КонецЕсли;
     Конецесли;

КонецПроцедуры

{Документ.СогласованиеСправки.Форма.ФормаДокумента.Форма(6)}: Поле объекта не обнаружено (ТекущиеДанные)
     ТекДанные = Объект.СогласованиеСправки.ТекущиеДанные;
На форме да, две кнопки отдельныеСогласование форум.png



Резеда

Если: ТекДанные = Объект.СогласованиеСправки.Статус;
То ошибка: {Документ.СогласованиеСправки.Форма.ФормаДокумента.Форма(6)}: Поле объекта не обнаружено (Статус)
     ТекДанные = Объект.СогласованиеСправки.Статус; 

Afinogen

извиняюсь надо так писать

Элементы.СогласованиеСправки.Текущиеданные

Максим75

эта ошибка вылетает, потому что в данных самой обработки нет табличной части, эта табличная часть реализована как реквизит.
поэтому правильно написали, надо обращаться через Элементы.СогласованиеСправки.ТекущиеДанные

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

Резеда

Afinogen, Спасибо большое, даже получилось отчистку сделать

Теги:

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

Рейтинг@Mail.ru

Поиск