Создание резервной копии обработки при её открытии

Иногда внешняя обработка при работе вылетает из 1С с ошибкой. Ещё реже встречается ситуация, что после такого вылета эту обработку невозможно открыть даже конфигуратором. Данная обработка содержит код, который будет копировать файл обработки при её открытии.

Часто программисты не имеют копий таких создаваемых обработок, а просто постепенно дописывают туда код и снова тестируют. Это может привести к ситуации, что всю обработку нужно будет переписывать заново.

Данная обработка позволяет делать резервную копию файла обработки при её открытии и содержит 2 кода:

  • Первый вставляется в саму тестируемую обработку — представляет из себя короткое обращение к процедуре общего модуля.
  • Второй (закомментированный) вставляется в общий модуль 1С и содержит команду для копирования файла обработки.

Тем самым, вставив один раз второй код в общий модуль, мы можем из любой внешней обработки обратиться к нему, для резервного копирования.

14 Comments

  1. karpik666

    Никогда не слышал, чтобы обработка портилась от открытия в базе, даже, если база вылетает, приведите пример, может обсуждение на форуме, где проблема стоит остро, что разработчик все потерял, когда обработка сломалась.

    Reply
  2. NatalyaVP

    (1) karpik666, бывает такое.

    В конфигураторе, когда когда пишешь модуль внешней обработки, вдруг свет отключили, и всё обработка не открывается нигде. Неоднократно такое было, однажды пришлось заново обработку писать, потому что копии не было.

    Reply
  3. NatalyaVP

    А в какой папке сохраняется копия обработки? В той где была сама обработка?

    Reply
  4. karpik666

    (2) NatalyaVP, вы недостаточно точно прочли суть данной обработки.

    Данная обработка позволяет делать резервную копию файла обработки при её открытии

    то есть не вовремя написания данной обработки, а когда мы ее написали, и просто хотим открыть, вот я и не припомню таких случаев, когда обработка ломалась именно на этом этапе.

    Reply
  5. ilyam23

    Обработка была написана после нескольких жалоб программиста на синий экран при тестировании и невозможности открытия обработки после перезагрузки. Сначала мы обновляли ему железо, но проблема иногда вновь возникала. В связи с этим и была написана обработка. Копирование идет во временную папку, но никто не мешает её Вам сменить.

    Reply
  6. ilyam23

    Небольшое уточнение для karpik666. Обработка может испортится не при её открытии, а при её работе. Т.е. запустили в своей обработке например проведение документов и в середине процесса получили синий экран…

    Reply
  7. dmt

    (4) karpik666, во время написания, время от времени, обработка запускается.

    По идее очень даже неплохо, если при каждом запуске будет бекап.

    Можно будет даже откатиться до N-1 версии.

    Reply
  8. ardn

    Переходите на Git.

    8.3.8 вышла в релиз, теперь обработки можно хранить в гите не в виде двоичных файлов, а в виде исходных кодов.

    Reply
  9. ilyam23

    Для dmt.

    Я поначалу так и сделал, но потом передумал и обработка сохраняется под именем самой обработки. Если к имени файла бэкапа добавлять дата/время, то получится помоечка из кучи таких бэкапов. Каждому своё, но моя идея в гарантии не потерять обработку при сбое.

    Reply
  10. ekaruk

    А в чем именно суть обработки и зачем еще и общий модуль?

    Задача копирования обработки при каждом открытии решается одной строчкой в модуле объекта.

    КопироватьФайл(ЭтотОбъект.ИспользуемоеИмяФайла,»c:	empМояОбработка»+Формат(ТекущаяДата(),»ДФ=yyyyMMddhhmm»)+».epf»);
    Reply
  11. ilyam23

    (10) ekaruk,

    Конечно, можно и так решить.

    Но написать «ОбщийМодуль.К(ЭтаФорма);» Короче

    Но плодиться эти обработки не будут, а будет сохранена только последняя

    Но путь для таких копий будет всегда один.

    Объявил всем прогерам чтоб в модуле открытия всегда писали такую строку и всё.

    Reply
  12. ekaruk

    (11) А завтра ты запустишь свою обработку в базе без этого общего модуля и она нафиг вылетит с ошибкой.

    Смысл внешних обработок именно в том, что они разрабатываются без привязки к конкретной конфигурации. Или с минимальной привязкой.

    Делать обработку внешней и без необходимости привязывать ее к своему личному общему модуля как-то нелогично.

    Reply
  13. Yashazz

    (11) за предложение курочить конфу путём вставки каких-то ненужных общих модулей, когда можно обойтись лаконичной внешкой, точно надо влепить минус. Да и за процедуры из одной буквы.

    Reply
  14. ilyam23

    Клёва! Какая то мизерная обработка и такое обсуждение! 🙂

    Мальчишки и девчёнки, да я просто хотел помочь своим прогерам. И подсказать другим, что можно сделать в такой ситуации.

    Ну не нравится она Вам, ну и пропустите мимо глаз.

    Откуда у Вас тока времени хватает, такую мелочь обсуждать. 🙂

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *