V8 Viewer. Открытие и сравнение внешних обработок в Проводнике + исходники






Вы хотите получить возможность быстро посмотреть содержимое внешнего отчета или обработки? А сравнить ее с другой? И все это без запуска 1С:Предприятия, только из оболочки ОС? Тогда мы идем к вам! 🙂
В конце заметки — ссылка на исходники.

О чем идет речь?

Вам приходилось отправлять внешнюю обработку по почте и в самый последний момент перепроверить — та ли это версия? Вам приходилось задаваться вопросом — какая из этих обработок с именами "Обработка1", "Обработка1 (новая)" и "Обработка1 (новая2)" является актуальной? А чем они отличаются? Если вы уже познакомились с системами контроля версий, то наверняка, сталкиваетесь с вопросом — какие изменения внесены между версиями обработки?

Вы хотите получить возможность быстро посмотреть содержимое внешней обработки и сравнить ее с другой? И все это без запуска 1С:Предприятия, только из оболочки ОС? Тогда мы идем к вам! 🙂

Благодарности

Толчком к созданию программы V8 Viewer стала публикация V8Reader (//infostart.ru/public/106310/) — внешняя обработка, отображающая содержимое файлов 1С и сравнивающая их. Огромное спасибо автору утилиты V8Unpack (//infostart.ru/public/15695/) за открытый исходный код. Это круто! Наличие исходников позволило перетащить логику чтения к себе и не включать в дистрибутив саму утилиту V8Unpack в первозданном виде. Кроме того, в отличие от V8Unpack чтение выполняется без распаковки во временный каталог, напрямую из файла 1С.

Задачи на разработку

Итак, я хотел чтобы у меня была возможность:

  • Просматривать историю изменений версий в хранилище SVN (Subversion), в котором у меня лежат все мои внешние обработки. Причем просматривать не просто как "Двоичные файлы", а видеть, что находится внутри.
  • Сравнивать изменения во внешних обработках
  • Открывать двойным щелчком в проводнике (и в любой другой программе) файлы внешних обработок
  • Просматривать содержимое "внутренних" файлов контейнера cf/epf.
    • Кстати, совсем недавно наткнулся на (//infostart.ru/public/124213/), когда собственный велосипед уже был написан 🙂
  • Все вышеперечисленное должно работать без установки 1С на машину.

Результат

Поставленные самому себе задачи были достигнуты. Написан инструмент "V8 Viewer".
Ниже располагается инструкция по применению.

Возможности программы

На данный момент, актуальная версия 1.0.2.6 умеет:

  1. Регистрироваться в системе, как обработчик открытия внешних отчетов и обработок. Это означает, что в любом месте системы, где есть возможность открыть файл на просмотр, можно открыть и посмотреть содержимое внешнего отчета(обработки).
  2. Просматривать содержимое файла, открывать макеты, модули форм и объектов. Для управляемых форм возможен просмотр элементов формы.
  3. Выполнять сравнение двух файлов, аналогично тому, как сделано в самой платформе. Имеется возможность сравнения дерева метаданных, содержимого макетов и модулей.
  4. Предусмотрен "отчет по свойствам" — в дереве сравнения можно отобразить отчет, похожий на стандартный "Отчет о сравнении объектов".
  5. В редакторе модуля есть возможность навигации по перечню процедур и функций, сворачивание/разворачивание всех блоков кода (по аналогии со стандартным редактором кода)
  6. Отображать внутреннее содержимое контейнера — низкоуровневый "просмотр" файла. Запускается правым щелчком на файле, пункт "Browse".
  7. Предусмотрено автоматическое обновление. При запуске проверяется наличие обновлений и выдается предложение об обновлении.

Tortoise SVN

Итак, основная задача — взаимодействие с системой контроля версий SVN, а главное — замечательной оболочки для нее — TortoiseSVN. Если вы еще не знакомы с системами контроля версий, то самое время этим заняться. На мой взгляд — жизненно необходимая вещь, когда вам нужно хранить всю свою работу и время от времени возвращаться к предыдущим версиям.

Программа TortoiseSVN — это графическая оболочка для системы контроля версий Subversion. Скачать можно с официального сайта — http://tortoisesvn.net/downloads.html.

Принципы работы с SVN.

Поскольку статья все-таки не про SVN, то подробно останавливаться не буду. Тем не менее, кажется, что пару слов сказать стоит.

При работе с SVN вы создаете где-нибудь репозитарий — хранилище, в котором будет лежать вся история версий. Это может быть каталог на компьютере, но лучше — где-то в сети Интернет. Допустим, мы хотим хранить версии просто на машине. Заходим в пустой каталог (пусть будет D:REPO) и в контекстном меню выбираем пункт TortoiseSVN->Create repository here. Теперь, этот каталог будет нашей базой данных со всей историей версий.

Далее, есть понятие "рабочего каталога". "Рабочий каталог", это то место, в котором вы ведете непосредственно разработку. Этот каталог "подключен" к репозиторию и может обмениваться с ним изменениями (фиксировать новые изменения, откатываться к предыдущим).

Заходим в любой пустой каталог, выбираем в контекстном меню "SVN Checkout" и указываем путь до репозитория. Теперь, каталог подключен к репозиторию.

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

Прелесть в том, что можно сравнивать 2 любые версии файла. Меню "Tortoise SVN->Show log->Compare with..".Кроме того, Tortoise позволяет сравнивать вообще любые 2 файла, не только в рабочем каталоге, а вообще везде.

В качестве объектов сравнения понимает текстовые файлы и картинки, но, разумеется, не понимает устройство внешних обработок 1С. Наша задача — научить его.

Настройка Tortoise SVN

1. Устанавливаем V8 Viewer
2. В любом каталоге щелкаем правой кнопкой и выбираем TortoiseSVN->Settings->Advanced

3. В окне Advanced добавляем расширение .epf и указываем командную строку запуска V8 Viewer C:Program Filesv8viewer.exe -diff %base %mine
Обратите внимание на параметры командной строки:

  • ключ -diff запускает программу в режиме сравнения
  • шаблоны %base и %mine — это ключевые слова Tortoise. Вместо них он подставит пути к выбранным Вами файлам.

По умолчанию, при сравнении модулей программа распаковывает их во временный каталог. При сравнении внешним diff-инструментом видны имена временных файлов, которые неинформативны.

В версии 1.0.1 и старше возможно указание дополнительных ключей -name1 и -name2. В этих аргументах можно передать заголовки сравниваемых файлов, которые будут отображены в интерфейсе. Для TortoiseMerge можно воспользоваться макросами %bname и %yname. В них Tortoise передает заголовки сравниваемых файлов, по которым их можно идентифицировать.

В конечном итоге, строка запуска сравнения может иметь следующий вид:

v8viewer.exe -diff %base %mine -name1%bname -name2%yname

символами процента (%) отмечены ключевые слова Tortoise вместо которых он подставляет конкретные значения имен сравниваемых файлов и заголовков к ним. Рекомендуется настроить ключи -name1 и -name2, чтобы повысить информативность сравнения двух файлов 1С, чтобы видеть — где какой. Примеры настройки командной строки можно прочесть ниже.

4. Сохраняем изменения.

Теперь, если мы войдем в каталог с внешними обработками и выделим две из них, то в контекстном меню "Tortoise SVN ->" появится пункт "Diff", который запустит сравнение файлов.

Особенности программы

Системные требования

Требуется Microsoft .NET Framework версии 4.0 или выше.

Вся работа со внутренними файлами 1С, такими как табличные документы и графические схемы, выполняется программой "1С:Работа с файлами". Ее наличие необязательно, но просмотреть и сравнить табличные макеты будет нельзя.

Настройка V8 Viewer

Какой-то специфической настройки не требуется, тем не менее, пару слов сказать хочется. Все настройки выполняются в соответствующем окне, назначение настроек описано там же:

Settings window
 

Для работы с файлами 1С, такими, как табличные документы и графические схемы требуется наличие программы "1С:Работа с файлами". Программа бесплатная, скачать можно с сайта 1С, перейдя по ссылке прямо из окна настроек. Сравнение табличных документов также выполняется этой утилитой. Без нее, нельзя будет просмотреть табличный макет, но при сравнении двух обработок все равно будет видно, что макеты различаются.

Для сравнения текстов используется любой сторонний diff-viewer. В настройках необходимо указать командную строку для запуска. Метки "%1" и "%2" замещают имена файлов, передаваемые для сравнения. Необязательные метки %name1 и %name2 используются в качестве заголовков файлов.

Ну и рекомендуется настроить соответствие типу файла — с помощью флажка "файловые ассоциации".

Примеры настройки командной строки для diff-просмотрщика

1. Путь к файлу *.exe должен быть заключен в кавычки. Это стандартное условие для запуска программ, если путь к ним содержит пробелы.

2. Подавляющее большинство инструментов для сравнения файлов понимают синтаксис:

 [путь к exe] [первый файл] [второй файл]

Строка запуска для такого случая должна иметь вид: "C:[путь к exe]" %1 %2

Многие современные программы для сравнения позволяют также указывать дополнительные опции, например — читабельный текст в заголовке сравниваемых файлов. Такие заголовки упрощают жизнь, т.к. видно — где какой файл в окне сравнения. Для TortoiseMerge строка запуска будет иметь следующий вид:

"C:[путь к exe]" /base:%1 /mine:%2 /bname:%name1 /yname:%name2

Более подробно о командных параметрах популярных diff программ можно прочитать здесь: http://ashamray.blog.ru/79251381.html

Гарантии производителя

Со своей стороны я гарантирую отсутствие в коде программы шпионских закладок и умышленно вредоносного кода. Тем не менее, программа поставляется "как есть" и Вы используете ее на свой страх и риск.

Исходные коды

Исходные коды Вы можете скачать по адресу http://sourceforge.net/p/v8reader/code/HEAD/tree/.

Вы можете использовать исходники по своему усмотрению, однако, обязаны обеспечить упоминание авторства. Исходный код предоставляется на условии лицензии GPL3. Если захотите поместить свой код в основной проект — напишите мне, я дам доступ к репозиторию на запись.

Благодарности

Хочется выразить искреннюю благодарность и большущее человеческое спасибо Виктории Дорохиной (//infostart.ru/community/profile/355360/) и Свирепому Бамбру (//infostart.ru/profile/128365/) за разработку V8Reader.epf, с которой все началось, указание на мои ошибки, ссылку на параметры diff-viewer-ов и чуткое тестирование программы V8Viewer.

Заключение

Мне хочется получить отзыв сообщества на тему полезности данного инструмента. Писался он, в основном, ночами, под косыми взглядами супруги. Осталось довольно много задач на реализацию, в частности, поддержка редактирования модулей и макетов, а также открытие файлов *.cf. Приглашаются желающие помочь в разработке.

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

От себя добавлю, что испытываю неподдельный восторг, когда, прикрепляя файл к письму в Outlook, я щелкаю по иконке вложения *.epf и получаю возможность перед отправкой посмотреть содержимое модулей, макетов и т.п.

P.S. Если понравится, не забывайте вернуться на эту страницу и поставить "плюсик" 🙂

Спасибо за внимание!

90 Comments

  1. Serj1C

    Посмотрел. Круто!

    Теперь в моем наборе «must have».

    Почему сразу не подвязаны файлы отчетов *.erf ?

    Не хватает просмотра макетов СКД)

    *.cf даже открывает, можно узнать название конфигурации и почитать глобальный модуль)

    Reply
  2. Evil Beaver

    (1) Serj1C, читаем статью: это предварительная версия. Отчеты намеренно не подвязаны, ради экономии времени. Обязательно будут. Макеты СКД должны открываться. Разве нет?

    Reply
  3. orefkov

    Внушает!

    Эх, когда ж ктонить уже на JavaScript сравнение форм портирует 🙁

    Reply
  4. Evil Beaver

    (3) orefkov, польщен, спасибо!

    Reply
  5. andrewks

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

    Требуется Microsoft .NET Framework версии 4.0 или выше. (Поставляется по умолчанию, начиная с WinXP SP3)

    4-го фрэймворка по умолчанию нет в WinXP SP3, по крайней мере, на оф.диске с СП3 у меня вшит только 2.0

    Reply
  6. Evil Beaver

    (5) andrewks, странно, у меня есть. Но у меня тестовый образ диска кхм… не совсем официальный…

    Вернее, у меня есть образ диска, на котором я тестировал «чистый запуск». Диск вроде родной, не «ремикс». Все запускается, работает.

    Reply
  7. Nio

    Вот ошибка выпала.

    При открытии формы в обработке под 8.2. Система win 7.

    System.ArgumentException: Folding must be within document boundary

    в ICSharpCode.AvalonEdit.Folding.FoldingManager.CreateFolding(Int32 startOffset, Int32 endOffset)

    в ICSharpCode.AvalonEdit.Folding.FoldingManager.UpdateFoldings(IEnumerable`1 newFoldings, Int32 firstErrorOffset)

    в V8Reader.Controls.CodeControl.foldingUpdateTimer_Tick(Object sender, EventArgs e)

    в System.Windows.Threading.DispatcherTimer.FireTick(Object unused)

    в System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)

    в MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)

    в System.Windows.Threading.Dispatcher.WrappedInvoke(Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

    в System.Windows.Threading.DispatcherOperation.InvokeImpl()

    в System.Threading.ExecutionContext.runTryCode(Object userData)

    в System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)

    в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)

    в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)

    в System.Windows.Threading.DispatcherOperation.Invoke()

    в System.Windows.Threading.Dispatcher.ProcessQueue()

    в System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)

    в MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)

    в MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)

    в System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)

    в MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)

    в System.Windows.Threading.Dispatcher.WrappedInvoke(Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

    в System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)

    в MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)

    в MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)

    в System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)

    в System.Windows.Application.RunInternal(Window window)

    в V8Reader.Program.<>c__DisplayClass7.<OpenFile>b__5()

    в V8Reader.Program.SafeMessageLoop(Action DoMessageLoop)

    Reply
  8. Evil Beaver

    (7) Nio, если не затруднит, приложите проблемный файл

    Reply
  9. Magister

    (0) Выглядит интересно, респект 🙂 Правда на .NET у меня аллергия, но это так, к слову.

    А чем сделан просмотр кода? Что за редактор? Подсветку, сворачивание сами делали, или готовое где-то взяли?

    Reply
  10. Nio

    (8)

    Вот. Но это честно был первый файл в который я ткнул.

    Reply
  11. pumbaE

    (0) Маленькое уточнение: не только SVN но и для всей линейки Tortoise применима данная настройка (git, mercurial, bzr).

    (3) orefkov, сравнение ведь это пол дела, захотите сразу же и merge форм 🙂

    Reply
  12. Evil Beaver

    (9) Magister, аллергия? И в чем она выражается? Скорее религиозные убеждения… А это очень спорный аргумент против .NET

    Редактор AvalonEdit. Но Вам им пользоваться нельзя, у вас аллергия :):):)

    Reply
  13. pumbaE

    (12) под линуксом не работает . Я надеюсь, что все-таки у Magister получиться доработать редактор и запустить его в linux версии конфигуратора.

    Reply
  14. Evil Beaver

    (13) pumbaE, под Линуксом, ага, не работает. и на Макоси тоже. Хотя есть Mono, можно вспомнить и пресловутый 1% компьютеров 🙂

    P.S. у самого дома — линукс, не стоит разводить старый, как мир холивар.

    Reply
  15. pumbaE

    (14) я не развожу, я просто уточняю.

    p.s.: вам скоро захочется делать merge для обработок ибо бранчи это удобно, еще захочется посмотреть историю изменения определенного куска модуля.

    Reply
  16. andrewks

    (13) pumbaE, а что за редактор?

    Reply
  17. pumbaE

    (16) andrewks, на базе SynEdit, альтернатива SciColorer — это в снегопате. Если партнеры продавят api в конфигураторе, то когда-нибудь думаю можно будет и без снегопата.

    Reply
  18. AlexO

    А зачем все это нужно?

    Текстовый файл с историей версий, описание, версии обработок в архиве.

    SVN — нужны только при групповой работе (и тогда да, ставить SVN какой-нить, просмоторщик вроде этого и т.д.), но никак не одному программисту.

    Все 🙂

    А сравнивать обработки можно вполне и типовыми средствами.

    Reply
  19. pumbaE

    (18) AlexO, хотел написать подробно, вот ваше

    Все 🙂

    отбило охоту кормить троля.

    Отвечу кратко — удобство.

    Reply
  20. ZLENKO

    Недосыпание очень вредит здоровью, а работа по вечерам вредит семейным отношениям. Поэтому хочу попросить автора все же поберечь себя и семью и работать в рабочее время 🙂 Я серьезно.

    Reply
  21. Evil Beaver

    (20) AlexO, кхм… история версий в архиве, а описание — в txt???

    Вопрос: Сколько кликов мышкой у вас получается от момента сохранения файла до момента регистрации новой версии?

    Ну или не кликов, а элементарных действий?

    А при откате к предыдущей версии? Короче, Вы либо тролль, либо системой контроля версий не пользовались ни разу. При всем уважении.

    Reply
  22. pumbaE

    (20) AlexO, прочтите (11) , автор предпочитает «громоздкий» svn (но svn развивается, посмотрите на версию 1.7 уже даже .svn в корне лежит, а не в каждой папке) , я использую bzr и git.

    Reply
  23. Evil Beaver

    (21) ZLENKO.PRO, Спасибо. Я уже берегу 🙂

    Reply
  24. s_a_r_u_m_a_n

    (0) зачётная штука ! было бы здорово научить её вносить и сохранять изменения. Т.е. по сути на компе с отсутствующей платформой можно было бы по-быстрому поправить обработку, отчёт или макет. А в дальнейшем переложить функционал и на cf/1cd..

    Reply
  25. AlexO

    (22)

    Сколько кликов мышкой у вас получается от момента сохранения файла

    все столько же, как и создавать-нажимать кнопки и писать описание в SVN.

    А при откате к предыдущей версии?

    кто вам делает откат? SVN? точно такой же «откат» — берете старую версию из архива и делаете с ней, что хотели.

    НО: зато все просто, всегда знаешь — как все устроено и где лежит, простейшая структура, возможность создания перекрестных «ссылок», виден размер всего и в частности, можно «подключать» любые файлы, компоновать все в какой душе угодно последовательности и структуре, могу поменять структуру как требуется, а не как заложили разработчики, если нужно по другому скопоновать файлы или время требует перемен, быстрое создание архива всей библиотеки и перенос и развертывание — в общем, полная свобода.

    И никаких ограничений 🙂

    Reply
  26. Evil Beaver

    Ок, флаг Вам, как говорится в руки! 😀

    Reply
  27. pumbaE

    Сдался. Я ожидал, что дойдет до обсуждения хранения обработок на дискетах и признания того что малый размер дискет дисциплинирует всякое Г не деражать.

    Reply
  28. Magister

    (12) В том, что он медленный, по сравнению с «родным» кодом. Вот 1С пишут почему-то на C++, а не на .NET. Как вы думаете, почему? 🙂

    Это сейчас уже не так критично, а вот помню свой Athlon 700 MHz с 320M RAM — там разница была, что называется, на лицо.

    (13) Пока что мешает доработать нехватка времени и отсутствие всего требуемого функционала в Снегопате. С Сашей по этому поводу общались, но у него времени мало сейчас — так что быстро не получится.

    Reply
  29. Evil Beaver

    (29) Magister, не только из-за скорости, думаю. Кажется, что независимость от MS не последнюю роль играет. Ну и конечно, более полный контроль над кодом.

    Reply
  30. Magister

    (31) Зря вы так, на самом деле платформа 1С (по моему непрофессиональному мнению) — это достаточно высокотехнологичная разработка, и «школьных знаний» для написания такого продукта явно не хватит.

    Для специалистов, способных написать приложение такого уровня, изучение C# не предоставит большого труда. Точно так же не составит труда фирме 1С нанять программистов, которые уже его знают 🙂

    Reply
  31. AlexO

    (31) sanches; kuntashov; srv7; Evil Beaver;

    Судя по массовым минусам — вы все согласны, т.е. вам тоже всем хватает только школьных знаний? 🙂

    Reply
  32. Magister

    (33) Потому что цель 1С — зарабатывать деньги. И пока что эта цель вполне достигается.

    Не поставили задачу программистам пофиксить что-то — вот и не пофиксили. Всё просто 🙂

    А вот [quote]Используют бесплатные компоненты, вместо написания своих.[/quote]это наоборот хорошо. Зачем изобретать велосипеды?

    Reply
  33. sanches

    (34) AlexO, а вы все зарабатываете стартмани троллингом )))

    Reply
  34. lustin

    (31) а меня в институте учили что Си и С++ это как бы не одно и тоже.

    И еще — а в какой это школе С++ дают или С ? Вы скажите — я постараюсь туда сына перевести, а то мы все по книжкам, да по книжкам и дома…

    Reply
  35. NosovK

    ура — наконец таки реализуем svn для внешних обработок 🙂

    Огромное спасибо.

    Reply
  36. N_aix

    Спасибо!

    Reply
  37. 1cmax

    AlexO вообще чересчур «красноречив»

    Reply
  38. flash2k
    Reply
  39. Evil Beaver

    (41) flash2k, Так на всех обработках или на конкретных? Правильно ли я понял, что падает при открытии какого-нибудь модуля, что просто окно обработки все-таки открывается?

    Reply
  40. flash2k

    окно открывается, ошибка возникает при открытии модуля обработки/формы

    пробовал на первых 5 попавшихся

    Reply
  41. Evil Beaver

    (43) flash2k, Спасибо. Пока записал в загадки. Какая версия XP?

    Reply
  42. flash2k

    xp sp3

    Reply
  43. gr0ck

    Разработка хорошая, надеюсь так и станется бесплатной, и будет радовать разработчиков исправлением багов и добавлением возможностей. За это плюс+

    Reply
  44. ivanov660

    Ставлю плюс за идею.

    Reply
  45. pumbaE

    (48) AlexO, расшифруйте плиз

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

    — при смене ссылок — найти их ВСЕ и обновить — какие ссылки, что менять и на что, что обновлять.

    Reply
  46. Evil Beaver

    (50) AlexO, дружище, может хватит троллить? Был задан довольно конкретный вопрос — расскажи что ты имеешь в виду, как организован твой супер-пупер рабочий процесс?

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

    Reply
  47. pumbaE

    (52) AlexO, может сподобитесь на публикацию «Как я у меня структурировано располагаются обработки».

    Потому как из (18) непонятно где вы храните ссылки на пустые каталог в текстовом файлике или же архиве.

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

    p.s.: мне реально интересен чужой опыт. Прошу именно публикацию или развернутый ответ с примером, потому как не могу понять как из (18) (26) (48) (50) получается конфетка.

    Reply
  48. bulpi

    Увы, но для Win XP SP3 с установленным Net Framework 4 не работает, выдает ошибку, как у (41) :

    System.IO.FileFormatException: The image format is unrecognized. —>

    и т.д.

    Reply
  49. dour-dead

    Установил, открыл, зашел в настройки.

    со второго раза нормально окрылась

    Reply
  50. Evil Beaver

    (55) dour-dead, ухты, как интересно. Знать бы еще что это, гыгы 🙂

    Reply
  51. AlexO

    (53) pumbaE,

    Хранение в обычных тестктовых файлах + структура каталогов.

    Главное — продуманная структура + структурированность в голове: не забывать делать пометки и краткие пояснения своих действий.

    И все.

    Тексты, обработки, картинки, пояснения — все хранится вместе (а можно и врозь).

    Только путь скопируй (или еще как пометь, это — смотреть там-то, главное, чтобы понятно было, хоть одним словом помечай), где лежит — и пусть оно там лежит, хоть у соседа.

    непонятно где вы храните ссылки на пустые каталог в текстовом файлике или же архиве.

    все хранится в открытом виде (или архивируется стандартно).

    И никаких лишних программ + можно рубить как хочешь контент (если большой слишком — взял, и по алфавиту разделил на равные части) + про исправление ссылок уже писал.

    Все делается ТИПОВЫМИ, СТАНДАРТНЫМИ, НЕ 1совыми средствами и прочей лабудой.

    Важнейший пункт — структурированность в голове.

    Reply
  52. AlexO

    (53) pumbaE,

    Как архиве лежат версии обработок и по описанию можно быстрой найти необходимую версию

    Версии обработок — помечаются v1, v2, v3…

    Рядом — файл истории: что, зачем, почему, какую версию смотреть.

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

    Обработки, во-первых, разделяются для разных клиентов (если дописки только для одного, но второму не нужны), а, во-вторых, все записывается — что, сколько, на сколько.

    Тут же пометка — базой является вот эта обработка, находится тут, версия базовая — такая-то, почему именно она принята за базу, а не последняя версия, которая лежит там-то.

    Если клиенты запутались в обработках — отдельный файл «Распределение обработок», где — дата, кто, чего отдано.

    И когда требуется на что заменить.

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

    И базу найду. Или наоброт, помня, где лежит базовая — по ссылке найду потомков с их историей.

    А то и просто — помечу в текстовике, что сделаны потомки, лежат там-то, обращаться к ним в случае таком-то. А нет — пусть и дальше лежат, трогать не надо.

    Главное — структурированность в голове. 🙂

    Reply
  53. AlexO

    (53) pumbaE,

    вы все это из (58 ) можете реализовать в жестких рамках, которые недорисовали разработчики SVN?

    Reply
  54. Evil Beaver

    (58) AlexO, спасибо, поржал. А сам-то понял, что сказал?

    Reply
  55. AlexO

    (60)

    спасибо, тоже поржал.

    А ты сам-то понимаешь вообще, что ты делаешь? или так, абы-что понаделать, а там и ладно?

    Ну тогда тебе никакой ни SVN, ни Билл Гейтс, ни Нуралиев, никто не поможет.

    Reply
  56. Evil Beaver

    (61) AlexO,

    абы-что понаделать, а там и ладно

    да-да, я имено так и делаю. Это вообще мое жизненное кредо 🙂

    Reply
  57. karakozov

    При открытии WIn 7 64bit Платформа 8.2.14.537

    пишет

    в V8Reader.Controls.CodeControl.foldingUpdateTimer_Tick(Object sender, EventArgs e)

    в System.Windows.Threading.DispatcherTimer.FireTick(Object unused)

    в System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)

    в MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)

    в System.Windows.Threading.Dispatcher.WrappedInvoke(Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

    в System.Windows.Threading.DispatcherOperation.InvokeImpl()

    в System.Threading.ExecutionContext.runTryCode(Object userData)

    в System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)

    в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)

    в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)

    в System.Windows.Threading.DispatcherOperation.Invoke()

    в System.Windows.Threading.Dispatcher.ProcessQueue()

    в System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)

    в MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)

    в MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)

    в System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)

    в MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)

    в System.Windows.Threading.Dispatcher.WrappedInvoke(Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

    в System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)

    в MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)

    Reply
  58. Evil Beaver

    (63) karakozov, на всех файлах или на некоторых? Если на некоторых, то это похоже на (7). У себя уже исправил, если можете дать файл, проверю еще и на нем.

    Reply
  59. alest

    (46) gr0ck, Сырцы автор пока не дает, хотя и признался, что непосредственно использовал чужие 🙁

    (3) orefkov, это для Снегопата?

    Reply
  60. orefkov

    (65)

    Для него, родимого.

    Reply
  61. xpym-xpym

    (63) karakozov, (66) orefkov,

    При открытии WIn 7 64bit и тд пока так и не работает?

    Замысел старый реализация посмотрим)

    Reply
  62. Evil Beaver

    (65) alest,

    Сырцы автор пока не дает, хотя и признался, что непосредственно использовал чужие 🙁

    Ну во-первых, непосредственно чужие я не использовал. Все сырцы написаны мной, хотя документация на формат epf и пример реализации да, брал в V8Unpack. Непонятно, почему недовольный смайлик? Это разве плохо? Тут как-бы признаваться мне не в чем, наоборот, все по-честному. Ну а во-вторых, сорцы я не даю, т.к. в них надо порядок навести, доделать кое что. Если есть желание попилить — милости прошу в личку, обсудим. Просто в открытое скачивание выкладывать пока не буду.

    Reply
  63. NittenRenegade

    Классная штука, развивать однозначно стоит.

    Кстати, сам кодил на .NET около года. Удобная среда для программирования, но как отправишь продукт в большое плавание, так и начинаются траблы: framework есть далеко не у всех и он реально много весит; MS постоянно придумывает новые, малоприспособленные для реальной разработки технологии, которые бросает в погоне за новыми призраками, так и не внедрив прежние. При этом на разных платформах независимая вроде бы среда начинает выдавать разные фокусы в поведении. В общем, у меня тоже на него аллергия осталась. Но это так, лирика.

    Evil Beaver, успехов и упорства в продолжении начатого.

    Reply
  64. Evil Beaver

    (69) AlexO, Трололошечки-трололо… еще какие идеи будут?

    Reply
  65. andrewks

    неплохо было бы в описании указывать — что именно было обновлено

    Reply
  66. Evil Beaver

    (72) andrewks, На Инфостарте не указал, но при автообновлении должно указываться. Вы на основании чего сделали вывод, что вообще есть обновление?

    Reply
  67. andrewks

    (73) ну так в свойствах публикации указано, что она была обновлена сегодня [17.03.2013 10:46]

    Reply
  68. Evil Beaver

    А вы внимательный 😉 Расчет был такой, что вновь скачивающие будут получать более свежий файл. А те кто уже скачали, получат его через автообновление, где и будет указано — что поменялось.

    Разумеется, при условии, что автообновление работает 🙂 Заодно и проверим.

    Reply
  69. PrinzOfMunchen

    (75)

    Классная вещь, но так хочется написать нечто подобное на 1с…

    Ну или хотя бы открыть из 1с свою внешнюю обработку с возможностью просмотра её кода…)))

    Reply
  70. andrewks

    (76) PrinzOfMunchen,

    Ну или хотя бы открыть из 1с свою внешнюю обработку с возможностью просмотра её кода

    эмм… а что мешает?

    если такое написать на чистом 1с — это будет безбожно тормозить. как минимум, нужна ВК.

    Reply
  71. pumbaE

    Хм, v8reader имхо для внешних обработок не тормозит. http://infostart.ru/public/106310/

    Reply
  72. Evil Beaver

    (76) PrinzOfMunchen, так уже есть! Ссылка в моей статье. Очень любопытная разработка.

    Reply
  73. PrinzOfMunchen

    (79) м-да? Благодарю!

    Reply
  74. flash2k

    проверил новую версию, работает 🙂

    текст модуля открывает, но при сравнении (когда делаешь показать различие в модулях) выдает

    Reply
  75. Evil Beaver

    (83) flash2k, судя по ошибке система не нашла внешний diff-viewer. Т.е. у Вас в настройках, скорее всего, указан путь к несуществующей программе сравнения. Я прав?

    Reply
  76. flash2k

    вроде все настроено, все есть

    Reply
  77. Evil Beaver

    (85) flash2k, Где же есть? В окне настроек указан путь к TortoiseMerge, а папку показываете с KDiff. если хотите сравнивать с помощью KDiff, так и путь пропишите к KDiff. И параметры командной строки для него.

    Reply
  78. flash2k

    за правым окном настройки окно с TortoiseMerge

    Reply
  79. Evil Beaver

    (87) flash2k, все, я понял. Путь к TortoiseMerge нужно заключить в кавычки.

    Reply
  80. flash2k

    ага, с кавычками разобрался

    только еще проблема 🙂

    при сравнении выдает



    ощущение, что он не видит параметров…

    Reply
  81. Evil Beaver

    Попробуйте параметры тоже в кавычки. Автоматом они не «кавычатся» пока. Хотя, у меня параметры в кавычках не работали, уже не помню почему. Разберусь.

    Какой у вас полный путь к каталогу Temp?

    Reply
  82. flash2k

    в параметрах кавычки не помогли

    %temp% = C:Documents and SettingsuserLocal SettingsTemp

    Reply
  83. fr.myha

    Интересная вещица. Но думаю платформа развивается и много нюансов которые можно не предусмотреть.

    А может в каких-то случаях испортить.

    Предпочитаю просматривать обработки через стандартные возможности предоставляемые платформой 1С:Предприятие.

    Reply
  84. AlexO

    (82) artbear,

    Тем, кто в теме, предлагаю тупо пропускать его посты

    Увы, 1С не дает пощады и не делает скидок… будь то мегатру1сник или простой новичок…

    Reply
  85. bulpi

    Новая версия работает на XP ! автор, спасибо!!!!

    Reply
  86. CratosX

    (17) pumbaE, а можно подробнее ? Есть определённые пожелания к api в конфигуратор? Давай составим петицию, главное чтобы она разумной была.

    (0) Evil Beaver, круто! Спасибо! Пожелания:

    1. Сравнение начинать не только правой кнопкой мыши — Показать различия в диалогах, а просто двойным щелчком. Ну или в настройках указать метод (возможно, при двойном ЛКМ открывать сам модуль).

    2. В сравнении SVN передавать не темповые файлы вида tmpCEE5.tmp, а нормальные названия. Я долго вкуривал, что файл слева — более поздняя версия ((. Или это зависит от настроек tortoise?

    3. В описании привели только англоязычный интерфейс SVN. 1С-ники к сожалению не все владеют английским, уточните что есть русификация

    Reply
  87. pumbaE

    (95) Cratos2, поподробней можете посмотреть в снегопате, я как скриптописатель могу показать мощь api снегопата и скриптов.

    Reply
  88. CratosX

    При попытке открыть файл 8.1 выдаёт ошибку:

    System.IO.FileNotFoundException: Не удалось найти указанный файл.

    в V8Reader.Core.MDFileItem..ctor(IImageLister imgLister, String itemName)

    в V8Reader.Core.MDReader.GetElement(String Name)

    в V8Reader.Core.MDDataProcessor.Create(String ImageFile)

    в V8Reader.Program.<>c__DisplayClass7.<OpenFile>b__5()

    в V8Reader.Program.SafeMessageLoop(Action DoMessageLoop)

    Сконвертировав под 8.2, всё проходит гладко.

    Reply
  89. Evil Beaver

    (95) Cratos2, спасибо за конструктив. По пунктам:

    1. Сравнение начинать не только правой кнопкой мыши — Показать различия в диалогах, а просто двойным щелчком. Ну или в настройках указать метод (возможно, при двойном ЛКМ открывать сам модуль)

    Поведение содрал с родного «одинэсовского». Ваше предложение интересно, подумаю.

    2. В сравнении SVN передавать не темповые файлы вида tmpCEE5.tmp, а нормальные названия. Я долго вкуривал, что файл слева — более поздняя версия ((. Или это зависит от настроек tortoise?

    Да, это самого напрягало. В новой версии сделано более умное именование. Новая версия готовится, но пока на работе завал, руки не доходят.

    3. В описании привели только англоязычный интерфейс SVN. 1С-ники к сожалению не все владеют английским, уточните что есть русификация

    У меня английский интерфейс, скриншоты с него и снимал. Руссификация есть, но когда я ее вижу, то как слепой котенок пытаюсь переводить с русского обратно на английский. Дело привычки. Хотя айтишник, имхо, должен владеть английским, даже если он пишет «Если Тогда» 🙂

    4. За ошибку спасибо. Посмотрю.

    Reply
  90. Evil Beaver

    (97) Cratos2, не знаю, как у Вас, а у меня при открытии обработки 8.1 в конфигураторе 8.1.15.14 просит конвертировать обработку. Может она от 8.0, а не от 8.1.

    Внутри у нее другая структура, я таких обработок не видел пока. Скорее всего, это все-таки 8.0, у меня нет ее дистрибутива и, честно говоря, не уверен, что стоит поддерживать такие обработки. Кто-то еще пользуется 8.0?

    Reply

Leave a Comment

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