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

запрет пустых строк

Автор Тари, 26 июл 2020, 15:39

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

Тари

Добрый день.
Подскажите, при нажатии на кнопку "Добавить", добавляется новая строка, хочу сделать следующее: если в строке есть данные, то строка добавляется, если в первую строку никаких данных не вели, то новые строки не добавляются.

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

Поля все равно добавляются.

1С:Предприятие 8.3. Конфигурация Зарплата и кадры высшего учебного заведения, редакция 1.0

alexandr_ll

Цитата: Тари от 26 июл 2020, 15:39
Добрый день.
Подскажите, при нажатии на кнопку "Добавить", добавляется новая строка, хочу сделать следующее: если в строке есть данные, то строка добавляется, если в первую строку никаких данных не вели, то новые строки не добавляются.

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

Поля все равно добавляются.

1С:Предприятие 8.3. Конфигурация Зарплата и кадры высшего учебного заведения, редакция 1.0
https://helpf.pro/faq8/view/492.html

LexaK

Тари, попробуйте использовать событие ПередНачаломДобавления
вот пример (для упр форм), свои имена реквизитов проверьте/подставьте
Внимание: не забудьте прописать/назначить эту процедуру обработчику данного события

&НаКлиенте
Процедура РасчетСтажаПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
//ищем пустую строку, можно изменить условия поиска
лкСтроки = Объект.РасчетСтажа.НайтиСтроки(Новый Структура("ДатаНачала",Дата(1,1,1)));
Если лкСтроки.Количество() > 0 Тогда
//есть строка с пустой датой, становимся на нее
Отказ = Истина;
Элементы.РасчетСтажа.ТекущаяСтрока = лкСтроки[0].ПолучитьИдентификатор();
КонецЕсли;

КонецПроцедуры
если помогло нажмите: Спасибо!

Тари

Цитата: LexaK от 27 июл 2020, 14:24
Тари, попробуйте использовать событие ПередНачаломДобавления
вот пример (для упр форм), свои имена реквизитов проверьте/подставьте
Внимание: не забудьте прописать/назначить эту процедуру обработчику данного события

&НаКлиенте
Процедура РасчетСтажаПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
//ищем пустую строку, можно изменить условия поиска
лкСтроки = Объект.РасчетСтажа.НайтиСтроки(Новый Структура("ДатаНачала",Дата(1,1,1)));
Если лкСтроки.Количество() > 0 Тогда
//есть строка с пустой датой, становимся на нее
Отказ = Истина;
Элементы.РасчетСтажа.ТекущаяСтрока = лкСтроки[0].ПолучитьИдентификатор();
КонецЕсли;

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


Спасибо за совет) немного сделала по-другому
&НаКлиенте
Процедура РасчетСтажаПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
ТекСтрока = Элементы.РасчетСтажа.ТекущиеДанные;
Для каждого лкСтр Из РасчетСтажа Цикл //из таблицы формы
        Если лкСтр <> ТекСтрока Тогда //кроме самой себя
    Если НЕ ЗначениеЗаполнено(лкСтр.ДатаНачала)
        и НЕ ЗначениеЗаполнено(лкСтр.ДатаОкончания) Тогда
  Отказ = ИСТИНА;
       Предупреждение("не ведены данные");
  КонецЕсли;
        КонецЕсли;
    КонецЦикла;

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

LexaK

Тари, этот код мы для другой задачи использовали, в применении к этой задачи это Гов-код!
1.проверка условия - если хоть одна дата заполнена - то она не сработает
например ДатаНачала - пустая, ДатаОкончания - Заполнена (по идее это ошибка) ваша проверка не сработает,
2.что за сообщение: не введены данные  ??? какие данные? в какой строке?
3.перебор данных в цикле???
4.Пердупреждение - при НЕ модальном режиме будет сообщение об ошибке

Вывод: не все задачи можно решать с помощью КопиПаста
если помогло нажмите: Спасибо!

Тари

Цитата: LexaK от 31 июл 2020, 11:59
Тари, этот код мы для другой задачи использовали, в применении к этой задачи это Гов-код!
1.проверка условия - если хоть одна дата заполнена - то она не сработает
например ДатаНачала - пустая, ДатаОкончания - Заполнена (по идее это ошибка) ваша проверка не сработает,
2.что за сообщение: не введены данные  ??? какие данные? в какой строке?
3.перебор данных в цикле???
4.Пердупреждение - при НЕ модальном режиме будет сообщение об ошибке

Вывод: не все задачи можно решать с помощью КопиПаста

Да, тут Вы правы.
Мне надо было сделать, чтоб не было добавлять возможности бесконечно много полей и вывести ошибку, о том что не ведены данные.
При том коде, получается вот так (рисунки).

Теги:

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

Рейтинг@Mail.ru

Поиск