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

Очистка списка регистра сведений.

Автор Yurec66, 11 сен 2022, 19:22

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

Yurec66

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

&НаСервере
Процедура Очистка(Команда)
   НаборЗаписей = РегистрыСведений.ДвижениеТовара.СоздатьНаборЗаписей();
   НаборЗаписей.Записать();
КонецПроцедуры

Прошу пардона, но я еще не совсем понимаю когда нужно использовать в процедурах "На Сервере", а когда "На Клиенте"  :dfbsdfbsdf:

Код написан в модуле формы списка регистра.

Yurec66

Ок, с множественным выбором разобрался - в настройках нужно было включить. Почему не очищается командно - вопрос остался открытым. Т.к. эту операцию нужно ограничить в правах и предоставить только админу.

antoneus

Я так понимаю, в команде прописан вызов процедуры Очистка? До сервера она не дозовется, надо так:

&НаКлиенте
Процедура Очистка(Команда)
   ОчисткаНаСервере()
КонецПроцедуры

&НаСервере
Процедура ОчисткаНаСервере()
   НаборЗаписей = РегистрыСведений.ДвижениеТовара.СоздатьНаборЗаписей();
   НаборЗаписей.Записать();
КонецПроцедуры

Yurec66

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

Yurec66

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

&НаСервере
Процедура ОчисткаНаСервере()
   НаборЗаписей = РегистрыСведений.ДвижениеТовара.СоздатьНаборЗаписей();
   НаборЗаписей.Записать();
КонецПроцедуры

&НаКлиенте
Процедура Очистка(Команда)
    Если Вопрос("Вы действительно хотите очистить список ?",
                РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Да Тогда
      ОчисткаНаСервере();
    КонецЕсли; 
КонецПроцедуры

Хотел в качестве эксперимента кнопку очистки делать недоступной, если список пустой. Но проблема в том, что не могу обратиться к его свойству "Количество". И Объект и Элементы и просто название списка......  :fdbsdfbsd:

В подобной ситуации , но на другой форме доступ был

Если Объект.МестоХранения.Количество() = 0 Тогда
       Элементы.ГруппаКнопокОперации.Видимость = Ложь
    Иначе
   Элементы.ГруппаКнопокОперации.Видимость = Истина;
    КонецЕсли;

 :dfbsdfbsdf:

antoneus

Ну, например так:

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

А вообще, у списка есть свойства Автообновление и ПериодАвтообновления.

Видимостью можно так поиграться

&НаСервере
Процедура ВидимостьГруппыКнопокОпераций()
    Набор = РегистрыСведений.ДвижениеТовара.СоздатьНаборЗаписей();
    Набор.Прочитать();
    Элементы.ГруппаКнопокОперации.Видимость = Набор.Количество() <> 0
КонецПроцедуры

Yurec66

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

Теги:

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

Рейтинг@Mail.ru

Поиск