Откат в документе
10.04.2006
15:37
#1
Подскажите, пожалуйста. Можно ли при заполнении документа сделать откат на одно действие назад. Это очень необходимо, т.к. наш ОК может нечайно удалить строку в табличной части заполненного документа и не вспомнить, что в ней было. (маразм). Как это можно реализовать программно - код?
10.04.2006
15:56
#2
Ну мона попробовать добавить процедуру ПриУдаленииСтроки(), где перебирая реквизиты таб части дока заносить их в таб.значений например, а при необходимости возвращать эти рекв.
12.04.2006
11:03
#5
"Первое, что приходит в голову для 7.7))
Сделай глобальую переменную для документа "Откат" - тип "СписокЗначений". В нужные события дописать
//-------------------------
ТабЧасть = СоздатьОбъект("ТаблицаЗначений");
ВыгрузитьТабличнуюЧасть(ТабЧасть);
//можно ограничить число шагов отката - в итоге ровно МаксЗнач возможностей отката назад
//Если Откат.РазмерСписка() > МаксЗнач Тогда
// Откат.УдалитьЗначение(1);
//КонецЕсли;
Откат.ДобавитьЗначение(ТабЧасть);
//-------------------------
Далее добавляем на форму кнопку "<=" (угадай, зачем))) и вешаем на нее событие, например Откатить()
//-------------------------
Процедура Откатить()
//здесь нужно указать, какой по порядку вариант нужно вернуть, в простейшем случае:
ПозОтката = Откат.РазмерСписка();
ТабЧасть = Откат.ПолучитьЗначение(ПозОтката);
ЗагрузитьТабличнуюЧасть(ТабЧасть);
Откат.УдалитьЗначение(ПозОтката);
КонецПроцедуры
//-------------------------
более интересен вариант с возможностью вернуть назад состояния табличной части, имевшие место быть до начала отката, но он несколько более сложен в реализации. Только вот нужно следить за изменениями после отката и вычищать неактуальные значения после хотя бы какого-нить изменения. И будет как в ворде)))
З.Ы. Это тока мысли - на деле я не пробовал, мож че и криво будет - строго не судите))
"
Сделай глобальую переменную для документа "Откат" - тип "СписокЗначений". В нужные события дописать
//-------------------------
ТабЧасть = СоздатьОбъект("ТаблицаЗначений");
ВыгрузитьТабличнуюЧасть(ТабЧасть);
//можно ограничить число шагов отката - в итоге ровно МаксЗнач возможностей отката назад
//Если Откат.РазмерСписка() > МаксЗнач Тогда
// Откат.УдалитьЗначение(1);
//КонецЕсли;
Откат.ДобавитьЗначение(ТабЧасть);
//-------------------------
Далее добавляем на форму кнопку "<=" (угадай, зачем))) и вешаем на нее событие, например Откатить()
//-------------------------
Процедура Откатить()
//здесь нужно указать, какой по порядку вариант нужно вернуть, в простейшем случае:
ПозОтката = Откат.РазмерСписка();
ТабЧасть = Откат.ПолучитьЗначение(ПозОтката);
ЗагрузитьТабличнуюЧасть(ТабЧасть);
Откат.УдалитьЗначение(ПозОтката);
КонецПроцедуры
//-------------------------
более интересен вариант с возможностью вернуть назад состояния табличной части, имевшие место быть до начала отката, но он несколько более сложен в реализации. Только вот нужно следить за изменениями после отката и вычищать неактуальные значения после хотя бы какого-нить изменения. И будет как в ворде)))
З.Ы. Это тока мысли - на деле я не пробовал, мож че и криво будет - строго не судите))
"
Ошибка при заполнении 3-НДФЛ за 2005 г. 1С-ПредпринимательПрограммное редактирование элементов справочника
Читают тему
(гостей: 1)