Резервное копирование чеков во внешние файлы и их восстановление

21.10.11

База данных - Архивирование (backup)

Решение проблемы восстановления потерянных кассовых чеков после восстановления поврежденной базы розницы.

В сети розничных торговых точек установили неудачные фискальные регистраторы. При сбоях по питанию, иногда ведет базу. А после ее восстановления оказывается, что несколько последних чеков, пробитых через фискальник, в базе 1С потеряны. В базе ведется партионный учет товара, поэтому списать что попало для "выравнивания" продаж нельзя, нужно списывать только то, что реально продано. Естественно, что часто вспомнить не получается. Делать ревизию накладно. Поэтому, нужна профилактика. Нам с Павлом Григорьевым пришла мысль делать резервную копию чека перед отправкой на фискальный регистратор во внешний файл. При запуске 1С очищаем каталог от чеков, пролежавших более 30 дней. В случае потери чеков запускается процедура, которая показывает список чеков, находящихся в специалном каталоге, позволяет выбрать один из них и импортировать в интерфейс кассира. Пробивать его или нет решать кассиру. Ниже привожу текст функций и процедур.

Сохранение объектов 1С во внешний файл *.xml  и его последующее восстановление на примере резервного копирования каждого чека.

 

Процедура СохранитьЧек()

            КаталогНаДиске = Новый Файл(мВременнаяПапка+"\Чеки");

    Если  Не КаталогНаДиске.Существует() Тогда

                СоздатьКаталог(мВременнаяПапка+"\Чеки");

    КонецЕсли;

           

// XML сериализация текущего объекта

            ЗаписьXML = Новый ЗаписьXML;

            ЗаписьXML.ОткрытьФайл(мВременнаяПапка+"\Чеки\"+Формат( ТекущаяДата(),"ДФ=ddMMyyyyHHmmss")+".xml", "UTF-16");

            ЗаписатьXML(ЗаписьXML, ЭтотОбъект);

            ЗаписьXML.Закрыть();

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

 

 

Процедура КнопкаВосстановитьЧекНажатие(Элемент)

            Если РольДоступна("ПолныеПрава") Тогда

                        Режим = РежимДиалогаВыбораФайла.Открытие;

                        ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);

                        ДиалогОткрытияФайла.ПолноеИмяФайла = "";

                        Фильтр = "XML(*.xml)|*.xml";

                        ДиалогОткрытияФайла.Фильтр = Фильтр;

                        ДиалогОткрытияФайла.МножественныйВыбор = Ложь;

                        ДиалогОткрытияФайла.Заголовок = "Выберите файл";

        ДиалогОткрытияФайла.Каталог=мВременнаяПапка;

                        Если ДиалогОткрытияФайла.Выбрать() Тогда

                                  

                                   ФайлНаДиске = Новый Файл(ДиалогОткрытияФайла.ПолноеИмяФайла);

                                   Если ФайлНаДиске.Существует() Тогда

                                              

                                               ЧтениеXML = Новый ЧтениеXML;

                                               ЧтениеXML.ОткрытьФайл(ДиалогОткрытияФайла.ПолноеИмяФайла);

                                               Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл

                                                           Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента

                                                                       И   ЧтениеXML.Имя     = "DocumentObject.ЧекККМ" Тогда

                                                                       Попытка

                                                                                  ДокументОбъект = ПрочитатьXML(ЧтениеXML);

                                                                       Исключение

                                                                                  Результат = Неопределено;

                                                                       КонецПопытки;

                                                           КонецЕсли;

                                               КонецЦикла;

                                               ЧтениеXML.Закрыть();

                                              

                                   КонецЕсли;

                        Иначе

                                   Предупреждение("Файл не выбран!");

                        КонецЕсли;

            КонецЕсли;  

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


 

Процедура ДействияФормыДействиеЗакрытиеЧека(Кнопка)

            //…………………                

СохранитьЧек();

            //………………….

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

 

 

 

// Процедура выполняется перед нначалом работы системы

//

Процедура ПриНачалеРаботыСистемы()

            //………………………………………

            Если Не РольДоступна("РМК") Тогда

            //………………………………………        

            Иначе

                        Расш="*.xml";

                        НайденныеФайлы = Новый Массив;

                        НайденныеФайлы = НайтиФайлы(РаботаСФайлами.ПолучитьИмяКаталога()+"\Чеки", Расш);

                       

                        Для Каждого ТекСтрока Из НайденныеФайлы Цикл

                                   Если  ТекСтрока.ПолучитьВремяИзменения()<ДобавитьМесяц(ТекущаяДата(),-1) Тогда

                                               Сообщить("Удаление архивных чеков"+ТекСтрока.ПолноеИмя);

                                               УдалитьФайлы(ТекСтрока.ПолноеИмя);

                                   КонецЕсли;  

                        КонецЦикла;

                       

            КонецЕсли;

 

 

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

 

См. также

Журнал изменений с восстановлением состояния ссылочных объектов и архивацией по HTTP / COM (расширение + конфигурация, 8.3.14+, ЛЮБАЯ конфигурация)

Архивирование (backup) Журнал регистрации Поиск данных Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 1С:Управление торговлей 11 Платные (руб)

База данных «сама» меняет данные в документах/справочниках? Тогда данный журнал изменений для Вас! Практически не влияет на скорость записи объектов за счет быстрого алгоритма! Скорость работы почти в 2 раза выше типового механизма "История изменений"! Позволяет следить за изменениями и удалением в любых ссылочных объектах конфигурации, с возможностью архивации по HTTP(!) или COM, и сверткой данных. А так же, может восстановить состояние реквизитов (значения) до момента изменения или удаления объекта из базы. Есть ДЕМО-база где можно самостоятельно протестировать часть функционала! Работает на любых платформах выше 8.3.14+ и любых конфигурациях! Версия 3.1 от 24.08.2023!

19200 руб.

15.05.2017    42522    10    24    

38

BackUPv8 - система резервного копирования баз 1С

Архивирование (backup) Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Автоматическое создание копий файловых и серверных информационных баз 1С Предприятие 8 и размещение копий в облаке Яндекс.Диск, локальном или сетевом ресурсе.

1200 руб.

03.09.2014    14733    13    6    

18

Резервное копирование журнала транзакций, наконец-то!

Архивирование (backup) Администрирование СУБД Россия Бесплатно (free)

Постараюсь объяснить, зачем нужно резервное копирование именно журнала транзакций, а не только базы данных, и почему я словно сбросил груз, настроив его - как, покажу, естественно. Кстати, будут скрипты T-SQL (с подробными комментариями) - отличный способ сделать администрирование базы более уютным.

04.12.2023    5874    n_mezentsev    15    

25

Резервное копирование и восстановление 1С баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

Архивирование (backup) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данной инструкции будет описано, как с помощью pgAdmin, bat-файлов и планировщика заданий Windows организовать резервное копирование, восстановление и хранение копий баз данных.

07.10.2022    19827    sapervodichka    36    

142

Архивирование базы в dt и дамп postgres

Архивирование (backup) Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Захотелось клиентам выгрузку архива баз, и выгрузку в дт, готовые скрипты с сети не заработали. Может, кому-то поможет. Релиз 8.3.18.1741.

1 стартмани

25.08.2022    4718    2    Gnom-Gluck    6    

6

Утилита копирования баз данных 1С

Архивирование (backup) Платформа 1С v8.3 Абонемент ($m)

Небольшая утилита для копирования файловых баз данных 1С.

1 стартмани

02.06.2022    4236    3    Giblarium    12    

5
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Angeros 25.10.11 06:47 Сейчас в теме
А смысл их хранить?! Отчет по продажам выгрузить в главную базу и дело с концом. Максимум 1/2 дня.
2. elizarovs 83 25.10.11 06:54 Сейчас в теме
(1) Я же пишу: "Базу повело. После исправления потеряна информация о последних продажах". Нет этой информации в отчете о продажах, поскольку и чеков нет! Тем более нет Сменного Отчета о Розничных Продажах. За полгода на фирме такое раза 3 было. В основном, при сбоях по питанию на точках, где сдохли бесперебойники.
Оставьте свое сообщение