gifts2017

Автосохранение документа в 1С 7.7

Опубликовал Анатолий (aagubarev) в раздел Программирование - Практика программирования

В данной статье мы рассмотрим автосохранение документа в 1С 7.7!

Доброго всем времени суток. Иногда (может и частенько) возникает потребность в автосохранении документа. Бывают ситуации, когда набили кучу инфы в документ и бац... вырубили электричество, а у вас нет ИБП (источник бесперебойного питания). И вот начинается ВЕЛИКИЙ и МОГУЧИЙ РУССКИЙ ЯЗЫК! Возможны конечно другие, прочие потребности в автосохранении, но это уже у каждого свое. Итак,... приступим.

Мне была поставлена задача написать автосохранение документа на 1С 7.7 (Сельхозка). Имеется документ: Продажа товаров в розницу, его мы и будем автосохранять. (принцип одинаков, практически для всех конфиг на 7.7, возможны некоторые отличия, но не значительные).

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


//Общая переменная

Перем НадоЗаписать;


//Изменения в предопределенную процедуру, для сохранения

Процедура ПриЗакрытии()

Если НадоЗаписать=1 Тогда

Записать();

СтатусВозврата(0);

ОчиститьОкноСообщений();

Сообщить("Документ Автосохранен "+ТекущееВремя());

Возврат;

ИначеЕсли НадоЗаписать=0 Тогда

ОчиститьОкноСообщений();

глОткрытьЖурнал(Контекст, Новый);

КонецЕсли;

КонецПроцедуры // ПриЗакрытии()


 // Для корректного закрытия документа

Процедура ЗакрытьДокумент()

НадоЗаписать=0;

Форма.Закрыть(1);

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

  

//Процедура проверки на модификацию

Процедура АвтоЗапись()

Если (Модифицированность()=1) Тогда

НадоЗаписать=1;

Форма.Закрыть(0);

Иначе НадоЗаписать=0;

КонецЕсли;

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


//Вызов процедуры, через определнный интервал времени

Форма.ОбработкаОжидания("АвтоЗапись",180); //время в секундах 180 секунд

 

Повторюсь, в других конфигурациях аналогичные действия, может за исключением нескольких ньюансов, если таковые имеются!

 


См. также

Подписаться Добавить вознаграждение

Комментарии

1. andrewks 22.03.13 10:19
для чего запись реализована в ПриЗакрытии()?
2. Дмитрий Литовченко (kompas-dm) 22.03.13 10:46
(0)Мой компьютер- свойства - диспетчер устройств - дисковые устройства - нужный диск -
свойства - политика - разрешить кеширование " снять ".
3. Анатолий (aagubarev) 22.03.13 16:13
(1) andrewks, Процедура ПриЗакрытии - это предопределенная процедура закрывающая документ. Т.к. мы не можем использовать метод Записать() в 1С 7.7 в любом месте кода, как в 1С 8, приходится извращаться. А использовать метод Записать() в процедуре ПриЗакрытии() срабатывает несколько не удобно, скорее не так как хотелось бы.
4. Наталия Степанова (Степанова Н.) 22.03.13 17:03
А мы перешли на 8-ку и забыли про 7-ку
5. andrewks 22.03.13 17:06
(3) aagubarev,
Т.к. мы не можем использовать метод Записать() в 1С 7.7 в любом месте кода


это кто такое сказал? расшифруйте, может, я чего-то не так понял
6. Иваныч Иванов (Иваныч) 22.03.13 17:47
Решение правильное. Сам попадал в подобных ситуациях. Спасибо
7. Анатолий (aagubarev) 22.03.13 20:46
andrewks, попробуйте выполнить метод Записать() в форме документа в любом месте или своей процедуре в модуле формы. у меня не получилось.
8. Анатолий (aagubarev) 22.03.13 20:50
Иваныч, пользуйтесь. спасибо.
9. andrewks 22.03.13 22:48
(7) aagubarev, не только пробую, но и пользуюсь в своих конфах уже несколько лет. а вот в коде, вызываемом из ОбработкаОжидания() - действительно болт, поэтому выход - через ложное закрытие
10. Анатолий (aagubarev) 23.03.13 06:39
andrewks, приведите пример своего кода пожалуйста, где используете в модуле формы метод Записать(). интересно как вы реализовали!
11. andrewks 23.03.13 07:59
(10) aagubarev, да чего приводить, создайте кнопку, и в её обработчике сразу напишите Записать(); - всё работает. а вот если этот же обработчик назначить в ОбработкаОжидания() - будет выдавать ошибку
12. Анатолий (aagubarev) 23.03.13 12:24
По кнопке то понятно, тут имеется ввиду запись через определенное время.
13. Анатолий (aagubarev) 23.03.13 12:26
Если бы можно было бы сделать так ОбработкаОжидания(Записать(),180) - это другое дело
14. Alex Petunov (pan76) 23.03.13 17:34
(13) А если форма документа открыта модально или человек ушел курить при открытом окне вопроса,предупреждения и т.п.? Штатная ОбработкаОжидания тогда не сработает. Лучше, мне кажется, вызывать метод Записать() в процедуре
ПриОкончанииРедактированияСтроки(), причем можно не в каждой строке, а через установленное количество.
15. Анатолий (aagubarev) 23.03.13 20:19
1. это не критично.
2. можно много чего нагородить
3. у каждого условия и требования определенные.
16. Dmitry Dmitry (Dimasik2007) 24.03.13 18:43
Делал подобное, правда в обработке загрузки данных с банк-клиента, не в документе. Причем сериализовал данные в XML, и его сохранял локально у пользователя, не дергая каждый раз сервер на запись. При сбое питания/сервера/etc пользователь открывает заново обработку и ему систем подсказывает, что есть бэкап данных.
17. Анатолий (aagubarev) 25.03.13 07:35
18. Максим Кречетов (piloturs) 02.04.13 05:01
(0)
вырубили электричество, а у вас нет ИБП


м-да... это садо-мазо

Возможны конечно другие, прочие потребности в автосохранении


интересно, какие еще потребности , кроме приведенного Вами садо-мазо, возможны?
19. Анатолий (aagubarev) 02.04.13 06:41
Специально для Вас, ЛЕНЬ к примеру.
20. Анатолий (aagubarev) 02.04.13 06:42
Если не интересна тема или что-то не устраивает. Лучше не пишите ерунды!)
21. Роман Сафонов (mt111) 30.07.14 13:53
автор молодец, иногда нужно сохранить изменения в конфигурации, а бухгалтер оставил наполовину заполненый приходник и ушел на обед. ты его кышнул а потом выслушиваешь, но это все в прошлом)
22. Епрст (Ёпрст) 30.07.14 13:01
Метод скорее вредный, чем полезный.
Если и сохранять - то отдельно куда угодно - в файло, в стороннюю базу и т.д. Но только не записать() в обработке ожидания.

Открыли документ, что-то изминили, сохранять не собирались при этом, а тут такой п...ц с этим "автосохранением"
23. Епрст (Ёпрст) 30.07.14 13:02
+ при использовании ложного закрытия, сбивается фокус с ТЧ дока.. + если набивали текст, он тоже в проё..бе будет, ну и т.д.
24. Епрст (Ёпрст) 30.07.14 13:03
тьфу мля, тема то баян.. реинкорнаторы на
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа