СтрокаДанных.ОтказИзменений (DataRow.RejectChanges) Метод

Синтаксис

ОтказИзменений()

Параметры

Возвращаемое значение

Описание

Отменяет все изменения, внесенные в строку после последнего вызова метода СтрокаДанных.ПринятьИзменения (DataRow.AcceptChanges).

Примечание

При вызове метода СтрокаДанных.ОтказИзменений (DataRow.RejectChanges) метод СтрокаДанных.ОтменаРедактирования (DataRow.CancelEdit) неявно вызывается для отмены любых изменений. Если свойство СтрокаДанных.Состояние (DataRow.RowState) равно Удалена (Deleted) или Изменена (Modified), строка возвращается к своим предыдущим значениям, а свойство СтрокаДанных.Состояние (DataRow.RowState) становится неизменным. Если свойство СтрокаДанных.Состояние (DataRow.RowState) равно Добавлена (Added), то строка удаляется.

Пример

СтрокаДанных1.ОтказИзменений();
Полный пример кода

Копировать     Выделить всё

Перем Ф, СеткаДанных1; Процедура Кнопка1_Нажатие() Экспорт // Получите выбранную строку и колонку через СеткаДанных1.ТекущаяЯчейка. НомерКолонки = СеткаДанных1.ТекущаяЯчейка.НомерКолонки; НомерСтроки = СеткаДанных1.ТекущаяЯчейка.НомерСтроки; // Получите выбранный стиль СтильКолонкиСеткиДанных. СтильКолонкиСеткиДанных1 = СеткаДанных1.СтилиТаблицы.Элемент(0).СтилиКолонкиСеткиДанных.Элемент(НомерКолонки); Если СеткаДанных1.ИсточникДанных.Колонки.Элемент(НомерКолонки).ТипДанных = 1 Тогда // Вызовите метод НачатьРедактирование, чтобы узнать, можно ли начать редактирование. Если (СеткаДанных1.НачатьРедактирование(СтильКолонкиСеткиДанных1, НомерСтроки)) Тогда // Измените значение строки. Получите ТаблицаДанных1 и выбранную строку. // Предположим, что СеткаДанных1 привязан к ТаблицаДанных1. ТаблицаДанных1 = СеткаДанных1.ИсточникДанных; СтрокаДанных1 = ТаблицаДанных1.Строки.Элемент(НомерСтроки); // Вызовите метод НачатьРедактирование объекта СтрокаДанных1. СтрокаДанных1.НачатьРедактирование(); СтрокаДанных1.УстановитьЭлемент(НомерКолонки, 155); // Вы должны принять изменения как в СтрокаДанных1, так и в ТаблицаДанных1. СтрокаДанных1.ЗавершитьРедактирование(); Если Не (СтрокаДанных1.Состояние = 4) Тогда СтрокаДанных1.ОтказИзменений(); КонецЕсли; Попытка СтрокаДанных1.ПринятьИзменения(); Исключение КонецПопытки; ТаблицаДанных1.ПринятьИзменения(); СеткаДанных1.ЗавершитьРедактирование(СтильКолонкиСеткиДанных1 , НомерСтроки, Истина); Иначе Сообщить("Редактировать нельзя"); КонецЕсли; Иначе Ф.ОкноСообщений().Показать("В колонке " + НомерКолонки + " тип данных не Число.", "", Ф.КнопкиОкнаСообщений.ОКОтмена, Ф.ЗначокОкнаСообщений.Восклицание); КонецЕсли; КонецПроцедуры ПодключитьВнешнююКомпоненту("C:\444\111\OneScriptForms\OneScriptForms\bin\Debug\OneScriptForms.dll"); Ф = Новый ФормыДляОдноСкрипта(); Форма1 = Ф.Форма(); Форма1.Ширина = 900; Форма1.Высота = 400; Форма1.Отображать = Истина; Форма1.Показать(); Форма1.Активизировать(); СеткаДанных1 = Ф.СеткаДанных(); СеткаДанных1.Родитель = Форма1; СеткаДанных1.ТекстЗаголовка = "Сетка данных"; СеткаДанных1.Ширина = Форма1.Ширина - 100; СеткаДанных1.Высота = Форма1.КлиентВысота - 10; ТаблицаДанных1 = Ф.ТаблицаДанных("ТД1"); КолонкиТаб = ТаблицаДанных1.Колонки; Колонка0 = КолонкиТаб.Добавить(Ф.КолонкаДанных("№ н/п", Ф.ТипДанных.Число)); Колонка1 = КолонкиТаб.Добавить(Ф.КолонкаДанных("ФИО", Ф.ТипДанных.Строка)); Колонка2 = КолонкиТаб.Добавить(Ф.КолонкаДанных("ДатаРождения", Ф.ТипДанных.Дата)); Колонка3 = КолонкиТаб.Добавить(Ф.КолонкаДанных("Высшее образование", Ф.ТипДанных.Булево)); Колонка4 = КолонкиТаб.Добавить(Ф.КолонкаДанных("PostCount", Ф.ТипДанных.Число)); Колонка5 = КолонкиТаб.Добавить(Ф.КолонкаДанных("Инкремент", Ф.ТипДанных.Число)); Колонка5.АвтоПриращение = Истина; Колонка5.НачальноеЧисло = 25; Колонка5.ШагПриращения = 5; Стр13 = "Трифонов Юрий Никифорович,19990607,Истина,61.80 |Шигаев Агап Денисович,19991001,Ложь,48.99 |Сочеванова Анфиса Георгиевна,19970909,Истина,31.08 |Врунгель Христофор Бонифатьевич,19901010,Истина,53.22 |Шикалов Игнатий Маркович,19901010,Истина,53.22 |Сергеевич Аристарх Изяславович,19950621,Ложь,25.97 |Бондарчук Александр Ермолаевич,19930713,Истина,89.53 |Ефремова Ева Степановна,19990105,Ложь,12.11 |Моисеева Зинаида Никитевна,19930616,Истина,33.66 |Кузьмова Лиана Игнатиевна,19930621,Ложь,40.70 |Ковшутина Алина Игоревна,19911122,Истина,77.50 |Чемериса Дина Глебовна,19901206,Истина,35.00 |Сухоруков Давид Александрович,19930811,Истина,71.31 |Шагидзянова Наталия Николаевна,19950330,Истина,17.46 |Игошина Влада Емельяновна,19970731,Ложь,57.09 |Бортник Борис Федосиевич,19911101,Истина,41.48 |Заболотный Евсей Фролович,19931013,Истина,74.24 |Сонин Викентий Мечиславович,19970310,Истина,91.52 |Коваленко Злата Фомевна,19921215,Истина,11.38 |Шатохина Людмила Александровна,19920604,Ложь,83.06 |Пряхин Владислав Владимирович,19910304,Истина,28.36"; Для А = 1 По СтрЧислоСтрок(Стр13) Цикл ТаблицаДанных1.Строки.Добавить(ТаблицаДанных1.НоваяСтрока()); КонецЦикла; М_Счетчик = Ф.МассивСписок(); М_ФИО = Ф.МассивСписок(); М_ДатаРождения = Ф.МассивСписок(); М_ВысшееОбразование = Ф.МассивСписок(); М_КоличествоБонусов = Ф.МассивСписок(); Для А = 1 По СтрЧислоСтрок(Стр13) Цикл Стр14 = СтрПолучитьСтроку(Стр13, А); М9 = СтрРазделить(Стр14, ","); М_Счетчик.Добавить(А); М_ФИО.Добавить(М9[0]); М_ДатаРождения.Добавить(Дата("" + М9[1])); М_ВысшееОбразование.Добавить(?(М9[2] = "Истина", Истина, Ложь)); М_КоличествоБонусов.Добавить(Число(М9[3])); КонецЦикла; ТаблицаДанных1.ЗагрузитьКолонку(М_Счетчик, 0); ТаблицаДанных1.ЗагрузитьКолонку(М_ФИО, 1); ТаблицаДанных1.ЗагрузитьКолонку(М_ДатаРождения, "ДатаРождения"); ТаблицаДанных1.ЗагрузитьКолонку(М_ВысшееОбразование, Колонка3); ТаблицаДанных1.ЗагрузитьКолонку(М_КоличествоБонусов, Колонка4); СтильТаблицыСеткиДанных1 = Ф.СтильТаблицыСеткиДанных(); СтильТаблицыСеткиДанных1.ИмяОтображаемого = "ТД1"; ИндексСтильТаблицыСеткиДанных1 = СеткаДанных1.СтилиТаблицы.Добавить(СтильТаблицыСеткиДанных1); СтильКолонки1 = Ф.СтильКолонкиПолеВвода(); СтильКолонки1.ИмяОтображаемого = "№ н/п"; СтильКолонки1.ТекстЗаголовка = "№ н/п"; СтильКолонки1.Ширина = 50; СтильКолонки1.Выравнивание = Ф.ГоризонтальноеВыравнивание.Центр; СтильТаблицыСеткиДанных1.СтилиКолонкиСеткиДанных.Добавить(СтильКолонки1); СтильКолонки2 = Ф.СтильКолонкиПолеВвода(); СтильКолонки2.ИмяОтображаемого = "ФИО"; СтильКолонки2.ТекстЗаголовка = "ФИО"; СтильКолонки2.Ширина = 250; СтильТаблицыСеткиДанных1.СтилиКолонкиСеткиДанных.Добавить(СтильКолонки2); СтильКолонки3 = Ф.СтильКолонкиПолеВвода(); СтильКолонки3.ИмяОтображаемого = "ДатаРождения"; СтильКолонки3.ТекстЗаголовка = "Дата рождения"; СтильКолонки3.Ширина = 120; СтильКолонки3.Выравнивание = Ф.ГоризонтальноеВыравнивание.Центр; СтильТаблицыСеткиДанных1.СтилиКолонкиСеткиДанных.Добавить(СтильКолонки3); СтильКолонки4 = Ф.СтильКолонкиБулево(); СтильКолонки4.ИмяОтображаемого = "Высшее образование"; СтильКолонки4.ТекстЗаголовка = "Высшее образование"; СтильКолонки4.Ширина = 160; СтильТаблицыСеткиДанных1.СтилиКолонкиСеткиДанных.Добавить(СтильКолонки4); СтильКолонки5 = Ф.СтильКолонкиПолеВвода(); СтильКолонки5.ИмяОтображаемого = "PostCount"; СтильКолонки5.ТекстЗаголовка = "Счетчик"; СтильКолонки5.Ширина = 80; СтильКолонки5.Выравнивание = Ф.ГоризонтальноеВыравнивание.Центр; СтильТаблицыСеткиДанных1.СтилиКолонкиСеткиДанных.Добавить(СтильКолонки5); СтильКолонки6 = Ф.СтильКолонкиПолеВвода(); СтильКолонки6.ИмяОтображаемого = "Инкремент"; СтильКолонки6.ТекстЗаголовка = "Инкремент"; СтильКолонки6.Ширина = 90; СтильКолонки6.Выравнивание = Ф.ГоризонтальноеВыравнивание.Центр; СтильТаблицыСеткиДанных1.СтилиКолонкиСеткиДанных.Добавить(СтильКолонки6); СеткаДанных1.ИсточникДанных = ТаблицаДанных1; Кнопка1 = Форма1.ЭлементыУправления.Добавить(Ф.Кнопка()); Кнопка1.Правее(СеткаДанных1, 10); Кнопка1.Верх = 10; Кнопка1.Нажатие = Ф.Действие(ЭтотОбъект, "Кнопка1_Нажатие"); Кнопка1.Текст = "Установить в ячейке значение 155"; Кнопка1.Высота = Кнопка1.Высота * 4; Ф.ЗапуститьОбработкуСобытий();

Тестовый код

Копировать     Выделить всё

Перем Ф, СеткаДанных1; Процедура Кнопка1_Нажатие() Экспорт // Получите выбранную строку и колонку через СеткаДанных1.ТекущаяЯчейка. НомерКолонки = СеткаДанных1.ТекущаяЯчейка.НомерКолонки; НомерСтроки = СеткаДанных1.ТекущаяЯчейка.НомерСтроки; // Получите выбранный стиль СтильКолонкиСеткиДанных. СтильКолонкиСеткиДанных1 = СеткаДанных1.СтилиТаблицы.Элемент(0).СтилиКолонкиСеткиДанных.Элемент(НомерКолонки); Если СеткаДанных1.ИсточникДанных.Колонки.Элемент(НомерКолонки).ТипДанных = 1 Тогда // Вызовите метод НачатьРедактирование, чтобы узнать, можно ли начать редактирование. Если (СеткаДанных1.НачатьРедактирование(СтильКолонкиСеткиДанных1, НомерСтроки)) Тогда // Измените значение строки. Получите ТаблицаДанных1 и выбранную строку. // Предположим, что СеткаДанных1 привязан к ТаблицаДанных1. ТаблицаДанных1 = СеткаДанных1.ИсточникДанных; СтрокаДанных1 = ТаблицаДанных1.Строки.Элемент(НомерСтроки); // Вызовите метод НачатьРедактирование объекта СтрокаДанных1. СтрокаДанных1.НачатьРедактирование(); СтрокаДанных1.УстановитьЭлемент(НомерКолонки, 155); // Вы должны принять изменения как в СтрокаДанных1, так и в ТаблицаДанных1. СтрокаДанных1.ЗавершитьРедактирование(); Если Не (СтрокаДанных1.Состояние = 4) Тогда СтрокаДанных1.ОтказИзменений(); КонецЕсли; Попытка СтрокаДанных1.ПринятьИзменения(); Исключение КонецПопытки; ТаблицаДанных1.ПринятьИзменения(); СеткаДанных1.ЗавершитьРедактирование(СтильКолонкиСеткиДанных1 , НомерСтроки, Истина); Иначе Сообщить("Редактировать нельзя"); КонецЕсли; Иначе Ф.ОкноСообщений().Показать("В колонке " + НомерКолонки + " тип данных не Число.", "", Ф.КнопкиОкнаСообщений.ОКОтмена, Ф.ЗначокОкнаСообщений.Восклицание); КонецЕсли; КонецПроцедуры ПодключитьВнешнююКомпоненту("C:\444\111\OneScriptForms\OneScriptForms\bin\Debug\OneScriptForms.dll"); Ф = Новый ФормыДляОдноСкрипта(); Форма1 = Ф.Форма(); Форма1.Ширина = 900; Форма1.Высота = 400; Форма1.Отображать = Истина; Форма1.Показать(); Форма1.Активизировать(); СеткаДанных1 = Ф.СеткаДанных(); СеткаДанных1.Родитель = Форма1; СеткаДанных1.ТекстЗаголовка = "Сетка данных"; СеткаДанных1.Ширина = Форма1.Ширина - 100; СеткаДанных1.Высота = Форма1.КлиентВысота - 10; ТаблицаДанных1 = Ф.ТаблицаДанных("ТД1"); КолонкиТаб = ТаблицаДанных1.Колонки; Колонка0 = КолонкиТаб.Добавить(Ф.КолонкаДанных("№ н/п", Ф.ТипДанных.Число)); Колонка1 = КолонкиТаб.Добавить(Ф.КолонкаДанных("ФИО", Ф.ТипДанных.Строка)); Колонка2 = КолонкиТаб.Добавить(Ф.КолонкаДанных("ДатаРождения", Ф.ТипДанных.Дата)); Колонка3 = КолонкиТаб.Добавить(Ф.КолонкаДанных("Высшее образование", Ф.ТипДанных.Булево)); Колонка4 = КолонкиТаб.Добавить(Ф.КолонкаДанных("PostCount", Ф.ТипДанных.Число)); Колонка5 = КолонкиТаб.Добавить(Ф.КолонкаДанных("Инкремент", Ф.ТипДанных.Число)); Колонка5.АвтоПриращение = Истина; Колонка5.НачальноеЧисло = 25; Колонка5.ШагПриращения = 5; Стр13 = "Трифонов Юрий Никифорович,19990607,Истина,61.80 |Шигаев Агап Денисович,19991001,Ложь,48.99 |Сочеванова Анфиса Георгиевна,19970909,Истина,31.08 |Врунгель Христофор Бонифатьевич,19901010,Истина,53.22 |Шикалов Игнатий Маркович,19901010,Истина,53.22 |Сергеевич Аристарх Изяславович,19950621,Ложь,25.97 |Бондарчук Александр Ермолаевич,19930713,Истина,89.53 |Ефремова Ева Степановна,19990105,Ложь,12.11 |Моисеева Зинаида Никитевна,19930616,Истина,33.66 |Кузьмова Лиана Игнатиевна,19930621,Ложь,40.70 |Ковшутина Алина Игоревна,19911122,Истина,77.50 |Чемериса Дина Глебовна,19901206,Истина,35.00 |Сухоруков Давид Александрович,19930811,Истина,71.31 |Шагидзянова Наталия Николаевна,19950330,Истина,17.46 |Игошина Влада Емельяновна,19970731,Ложь,57.09 |Бортник Борис Федосиевич,19911101,Истина,41.48 |Заболотный Евсей Фролович,19931013,Истина,74.24 |Сонин Викентий Мечиславович,19970310,Истина,91.52 |Коваленко Злата Фомевна,19921215,Истина,11.38 |Шатохина Людмила Александровна,19920604,Ложь,83.06 |Пряхин Владислав Владимирович,19910304,Истина,28.36"; Для А = 1 По СтрЧислоСтрок(Стр13) Цикл ТаблицаДанных1.Строки.Добавить(ТаблицаДанных1.НоваяСтрока()); КонецЦикла; М_Счетчик = Ф.МассивСписок(); М_ФИО = Ф.МассивСписок(); М_ДатаРождения = Ф.МассивСписок(); М_ВысшееОбразование = Ф.МассивСписок(); М_КоличествоБонусов = Ф.МассивСписок(); Для А = 1 По СтрЧислоСтрок(Стр13) Цикл Стр14 = СтрПолучитьСтроку(Стр13, А); М9 = СтрРазделить(Стр14, ","); М_Счетчик.Добавить(А); М_ФИО.Добавить(М9[0]); М_ДатаРождения.Добавить(Дата("" + М9[1])); М_ВысшееОбразование.Добавить(?(М9[2] = "Истина", Истина, Ложь)); М_КоличествоБонусов.Добавить(Число(М9[3])); КонецЦикла; ТаблицаДанных1.ЗагрузитьКолонку(М_Счетчик, 0); ТаблицаДанных1.ЗагрузитьКолонку(М_ФИО, 1); ТаблицаДанных1.ЗагрузитьКолонку(М_ДатаРождения, "ДатаРождения"); ТаблицаДанных1.ЗагрузитьКолонку(М_ВысшееОбразование, Колонка3); ТаблицаДанных1.ЗагрузитьКолонку(М_КоличествоБонусов, Колонка4); СтильТаблицыСеткиДанных1 = Ф.СтильТаблицыСеткиДанных(); СтильТаблицыСеткиДанных1.ИмяОтображаемого = "ТД1"; ИндексСтильТаблицыСеткиДанных1 = СеткаДанных1.СтилиТаблицы.Добавить(СтильТаблицыСеткиДанных1); СтильКолонки1 = Ф.СтильКолонкиПолеВвода(); СтильКолонки1.ИмяОтображаемого = "№ н/п"; СтильКолонки1.ТекстЗаголовка = "№ н/п"; СтильКолонки1.Ширина = 50; СтильКолонки1.Выравнивание = Ф.ГоризонтальноеВыравнивание.Центр; СтильТаблицыСеткиДанных1.СтилиКолонкиСеткиДанных.Добавить(СтильКолонки1); СтильКолонки2 = Ф.СтильКолонкиПолеВвода(); СтильКолонки2.ИмяОтображаемого = "ФИО"; СтильКолонки2.ТекстЗаголовка = "ФИО"; СтильКолонки2.Ширина = 250; СтильТаблицыСеткиДанных1.СтилиКолонкиСеткиДанных.Добавить(СтильКолонки2); СтильКолонки3 = Ф.СтильКолонкиПолеВвода(); СтильКолонки3.ИмяОтображаемого = "ДатаРождения"; СтильКолонки3.ТекстЗаголовка = "Дата рождения"; СтильКолонки3.Ширина = 120; СтильКолонки3.Выравнивание = Ф.ГоризонтальноеВыравнивание.Центр; СтильТаблицыСеткиДанных1.СтилиКолонкиСеткиДанных.Добавить(СтильКолонки3); СтильКолонки4 = Ф.СтильКолонкиБулево(); СтильКолонки4.ИмяОтображаемого = "Высшее образование"; СтильКолонки4.ТекстЗаголовка = "Высшее образование"; СтильКолонки4.Ширина = 160; СтильТаблицыСеткиДанных1.СтилиКолонкиСеткиДанных.Добавить(СтильКолонки4); СтильКолонки5 = Ф.СтильКолонкиПолеВвода(); СтильКолонки5.ИмяОтображаемого = "PostCount"; СтильКолонки5.ТекстЗаголовка = "Счетчик"; СтильКолонки5.Ширина = 80; СтильКолонки5.Выравнивание = Ф.ГоризонтальноеВыравнивание.Центр; СтильТаблицыСеткиДанных1.СтилиКолонкиСеткиДанных.Добавить(СтильКолонки5); СтильКолонки6 = Ф.СтильКолонкиПолеВвода(); СтильКолонки6.ИмяОтображаемого = "Инкремент"; СтильКолонки6.ТекстЗаголовка = "Инкремент"; СтильКолонки6.Ширина = 90; СтильКолонки6.Выравнивание = Ф.ГоризонтальноеВыравнивание.Центр; СтильТаблицыСеткиДанных1.СтилиКолонкиСеткиДанных.Добавить(СтильКолонки6); СеткаДанных1.ИсточникДанных = ТаблицаДанных1; Кнопка1 = Форма1.ЭлементыУправления.Добавить(Ф.Кнопка()); Кнопка1.Правее(СеткаДанных1, 10); Кнопка1.Верх = 10; Кнопка1.Нажатие = Ф.Действие(ЭтотОбъект, "Кнопка1_Нажатие"); Кнопка1.Текст = "Установить в ячейке значение 155"; Кнопка1.Высота = Кнопка1.Высота * 4; НомерКолонки = СеткаДанных1.ТекущаяЯчейка.НомерКолонки; НомерСтроки = СеткаДанных1.ТекущаяЯчейка.НомерСтроки; СтрокаДанных1 = ТаблицаДанных1.Строки.Элемент(НомерСтроки); Сообщить(?( Истина , "", "!!! ") + "СтрокаДанных.ОтказИзменений (DataRow.RejectChanges) Метод" + " " + ТекущаяДата());

Смотрите также

СтрокаДанных (DataRow) Класс | Библиотека OneScriptForms