CfProject – декомпиляция/компиляция конфигураций 1С:Предприятие

05.11.14

Разработка - Инструментарий разработчика

CfProject выгружает CF-файлы в удобочитаемые Xml и текстовые файлы, а также загружает их обратно. Утилита предназначена для организации контроля версий через SVN, GIT, Mercurial , для помощи при восстановлении испорченных файлов конфигураций, а также для изучения внутренней структуры cf-совместимых файлов. Самым близким аналогом утилиты является V8Unpack.

Скачать исходный код

Наименование Файл Версия Размер
Elisy.CfProject.epf v1.2
.epf 66,58Kb
100
.epf 1.2 66,58Kb 100 Скачать
Elisy.CfProject.epf v1.1
.epf 56,56Kb
81
.epf 56,56Kb 81 Скачать
Утилита Elisy.CfProject.epf v1.0 (8.2.14)
.epf 59,49Kb
201
.epf 59,49Kb 201 Скачать
Тестовая конфигурация 8.2.14
.cf 645,53Kb
51
.cf 645,53Kb 51 Скачать

Новое в Elisy.CfInspector v1.2:

Добавлено распознавание форматов epf/erf/cfu дополнительно к cf
В объекте Configuration поддерживаются свойства BriefInformation, DetailedInformation, Copyright, VendorInformationAddress, ConfigurationInformationAddress, разделение по видам объектов
Распознавание объекта Enum без расшифровки свойств

 

Новое в Elisy.CfInspector v1.1:

  • Распаковка image-объектов в виде подкаталога с файлами;
  • Распознавание имен для общих модулей, отчетов и обработок;
  • Переименование известных свойств согласно именам 1С;
  • Исправлена ошибка чтения cf-записи с нулевой длиной;

Утилита Elisy CfProject выгружает файлы в формате, совместимом с CF-файлами 1С:Предприятие, в удобочитаемые Xml и текстовые файлы, а также загружает их обратно. Утилита оформлена в виде внешней обработки 1С:Предприятие 8.2 и требует предустановленного .Net framework 4.0 и Elisy .Net Bridge 4.0.3. Самым близким аналогом утилиты является V8Unpack.

Утилита предназначена для организации контроля версий через SVN, GIT, Mercurial , для помощи при восстановлении испорченных файлов конфигураций, а также для изучения внутренней структуры cf-совместимых файлов.

Здесь представлен прототип Elisy CfProject CTP для всеобщего ознакомления с технологией. Условия распространения еще не определены. В основу утилиты положен проект Elisy MdInternals, предназначенный для программного доступа к объектам конфигураций.

На входе в утилиту поступает cf-файл, на выходе – cfproj-файл и дерево каталогов с выгруженными файлами. Распознанные файлы помещаются в соответствующие подкаталоги. Нераспознанные – в каталог Unresolved. Распознанные файлы преобразуются в xml-формат, в то время как нераспознанные записываются «как есть».

Основные возможности

Проект написан на C# и .Net framework и оформлен в виде сборок. Это позволяет без особых проблем обращаться ко всем свойствам и методам объектов из кода 1С через Elisy .Net Bridge.

Распознанные файлы записываются в дерево каталогов по видам объектов:

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

Распознанные свойства перемещаются в соответствующие разделы (атрибуты или тэги) XML-структуры:

Нераспознанные текстовые файлы во внутреннем формате, совместимом с 1С, переформатируются в удобочитаемый вид для будущего анализа:

Была предпринята попытка увеличить быстродействие за счет многопоточности

Что не реализовано в данной версии

В данной версии реализовано распознавание только файлов конфигураций, не реализовано распознавание внешних отчетов/обработок и CFU-файлов.

Утилита распознает только объекты конфигурации 1го уровня, помещая их по подкаталогам. Не распознает все остальное: формы, макеты, помещая все в каталог Unresolved

В каталоге Unresolved не распаковываются составные объекты с расширением img.

Для примера реализовано распознавание свойств только одного объекта: Функциональная Опция с отражением в Xml-структуре

Работа проверялась только на одной конфигурации.

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    125087    683    389    

732

Infostart PrintWizard - создание и редактирование печатных форм в 1С 8.3

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 руб.

06.10.2023    7799    24    6    

42

Infostart УДиФ: Управление данными и формами 1С

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

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

10000 руб.

10.11.2023    4301    12    2    

36

SALE! %

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

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

3600 2280 руб.

14.01.2013    178682    1084    0    

862

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99657    239    97    

298

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18410    6    8    

40

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23867    16    15    

33

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28332    3    10    

16
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
99. ADirks 186 31.01.13 09:57 Сейчас в теме
Жизнеспособность проекта, как мне кажется, не связана с типом лицензирования. Именно что нужна в первую очередь команда, а во вторую (как ни странно) целевая аудитория.
С V8Unpack, равно как и с остальными подобными, потому так и получилось, что не сложилось ни первое, ни второе. Сейчас вроде бы целевая аудитория какая-никакая появляется, несмотря на то, что адинэснеги в подавляющем большинстве не ведают, что такое коллективная разработка и версионный контроль. Команда у вас есть. Так что, надеюсь проект будет жить. Когда-то же и мне придётся на восьмёрку переезжать.

Что касается открытости кода, и вообще лицензирования, то это не более чем мои предпочтения, решать что и как конечно же вам (т.е. команде). В данном случае я за открытость проекта потому что целевая аудитория наверное человек 100, и в основном эти люди вполне способны подключиться к проекту. Даже если один человек подключится, уже заметная польза.

Про Снегопат. Мне кажется, что проект стал платным именно потому, что появилась достаточная ЦА, и платность стала целесообразной. Саша ведь и OpenConf собирался сделать коммерческим - да так и не собрался, подозреваю потому что гемора было бы больше чем дохода :) А развивался проект не менее бурно. И кстати, в развитии Снегопата учавствуют всё те же люди, как я погляжу :)


P.S.
Искренне желаю проекту успеха, желательно коммерческого! И удачи команде!
ret-Phoenix; pumbaE; +2 Ответить
101. Elisy 948 02.02.13 08:33 Сейчас в теме
(99) ADirks,
Спасибо за обстоятельные комментарии. Очень приятно вести беседу со «старожилами» и узнавать, что было в истории до 1С 8. Какие проекты сопутствовали 7ке, и как они развивались. Мнение очевидцев и непосредственных участников прошлых и настоящих успешных проектов очень важно и интересно многим.
102. ADirks 186 02.02.13 18:36 Сейчас в теме
(101) Ну раз интересно, то добавлю пару ложек дёгтю.
В настоящий момент любой подобный проект может держаться только на энтузиазме. Ну нет достаточного количества людей, готовых за это платить.
Но. Энтузиазм - это великая сила. Если вам (или кому-то ещё) это надо, то вы и будете делать. Вечерами и ночами. Причём "надо" - это вот когда лично мне надо, а не дяде, работодателю, кому-то ещё. Потом, возможно, это "надо" осознают и другие, но это будет сильно потом. А пока - только личный энтузиазм. Такие проекты как Rainbow, FormEx, 1С++, gcomp, OpenConf именно так и возникли. И открытые проекты (1С++, OpnenConf, отчасти gcomp) неслабо получили именно за счет поддержки других таких же энтузиастов.
И ещё. Людей, готовых платить нет, а вот готовые поучавствовать - есть. Это стоит учесть. В этом долбаном коммерциализированном мире, не сбрасывайте со счетов Энтузиазм!
lustin; pumbaE; +2 Ответить
105. Elisy 948 07.02.13 12:42 Сейчас в теме
(102)(103) ADirks,

В принципе ни для кого не секрет, что все стартапы держатся на энтузиазме и весьма мала вероятность их коммерциализации.
В данном случае есть обнадеживающие моменты: число скачавших обработку 172 человека за год - значит небольшой интерес есть.
Решил не форсировать процесс. Продукт оставить бесплатным или с символической оплатой 10$m/10EUR для использования совместно с .Net Bridge внутри 1С (с демо-версией .Net Bridge работает). Дальше видно будет.
100. pumbaE 31.01.13 10:47 Сейчас в теме
Даже если один человек подключится, уже заметная польза.
Истинная правда.
103. ADirks 186 02.02.13 19:19 Сейчас в теме
А, забыл :)
короче вывод: как ни крути, вjobывать притётся до х.я
104. AlexWhite 194 05.02.13 12:42 Сейчас в теме
Ну нет достаточного количества людей, готовых за это платить.

Есть, как минимум, 1 человек, готовый за это платить :-) Но, сначала, готов заплатить Дельфисту за некоторые правки того, что уже сделано и используется.
106. Elisy 948 07.02.13 12:44 Сейчас в теме
(104) AlexWhite,
Вы бы озвучили требуемый функционал. Рано или поздно он будет реализован в CfProject. После этого я постараюсь дать вам знать.
107. daho 8 07.03.13 15:39 Сейчас в теме
Интересно а можно так сделать чтобы этот xml файл воспринимался стандартной Конвертацией для загрузки?
108. Elisy 948 05.11.14 08:43 Сейчас в теме
Выпущено обновление CfProject v.1.2
Добавлено распознавание форматов epf/erf/cfu дополнительно к cf
В объекте Configuration поддерживаются свойства BriefInformation, DetailedInformation, Copyright, VendorInformationAddress, ConfigurationInformationAddress, разделение по видам объектов
Распознавание объекта Enum без расшифровки свойств
109. eeeio 123 14.11.14 16:47 Сейчас в теме
110. Elisy 948 15.11.14 07:39 Сейчас в теме
(109) eeeio,
Выложил в файлы для скачивания - версия 1.2
112. AlexWhite 194 11.12.14 21:21 Сейчас в теме
Расскажите о граблях более подробно

Ни чего особенного. Просто некоторые символы внутри файла xml каким-то волшебным образом подменялись при коммите на аналогичные, соответствующие той ОС, на которой был установлен сервер системы управления версиями. Визуально какой-то только 1 дифф показал отличия, остальные не показывали.
113. skyboy13 13 21.10.20 11:57 Сейчас в теме
Произошла исключительная ситуация (Elisy.NetBridge.dll): System.Reflection.TargetInvocationException: Адресат вызова создал исключение. ---> System.AggregateException: Произошла одна или несколько ошибок. ---> System.InvalidOperationException: Section Guid is invalid
в Elisy.MdInternals.CfPackage.(Type , Collection )
в Elisy.MdInternals.CfPackage.(KeyValuePair`2 )
в System.Linq.Parallel.ForAllOperator`1.ForAllEnumerator`1.MoveNext(TInput& currentElement, Int32& currentKey)
в System.Linq.Parallel.ForAllSpoolingTask`2.SpoolingWork()
в System.Linq.Parallel.SpoolingTaskBase.Work()
в System.Linq.Parallel.QueryTask.BaseWork(Object unused)
в System.Linq.Parallel.QueryTask.RunTaskSynchronously(Object o)
в System.Threading.Tasks.Task.InnerInvoke()
в System.Threading.Tasks.Task.Execute()
--- Конец трассировки внутреннего стека исключений ---
в System.Linq.Parallel.QueryTaskGroupState.QueryEnd(Boolean userInitiatedDispose)
в System.Linq.Parallel.SpoolingTask.SpoolForAll[TInputOutput,TIgnoreKey](QueryTaskGroupState groupState, PartitionedStream`2 partitions, TaskScheduler taskScheduler)
в System.Linq.Parallel.DefaultMergeHelper`2.System.Linq.Parallel.IMergeHelper<TInputOutput>.Execute()
в System.Linq.Parallel.MergeExecutor`1.Execute()
в System.Linq.Parallel.MergeExecutor`1.Execute[TKey](PartitionedStream`2 partitions, Boolean ignoreOutput, ParallelMergeOptions options, TaskScheduler taskScheduler, Boolean isOrdered, CancellationState cancellationState, Int32 queryId)
в System.Linq.Parallel.PartitionedStreamMerger`1.Receive[TKey](PartitionedStream`2 partitionedStream)
в System.Linq.Parallel.ForAllOperator`1.WrapPartitionedStream[TKey](PartitionedStream`2 inputStream, IPartitionedStreamRecipient`1 recipient, Boolean preferStriping, QuerySettings settings)
в System.Linq.Parallel.UnaryQueryOperator`2.UnaryQueryOperatorResults.ChildResultsRecipient.Receive[TKey](PartitionedStream`2 inputStream)
в System.Linq.Parallel.ScanQueryOperator`1.ScanEnumerableQueryOperatorResults.GivePartitionedStream(IPartitionedStreamRecipient`1 recipient)
в System.Linq.Parallel.UnaryQueryOperator`2.UnaryQueryOperatorResults.GivePartitionedStream(IPartitionedStreamRecipient`1 recipient)
в System.Linq.Parallel.QueryOperator`1.GetOpenedEnumerator(Nullable`1 mergeOptions, Boolean suppressOrder, Boolean forEffect, QuerySettings querySettings)
в System.Linq.Parallel.ForAllOperator`1.RunSynchronously()
в System.Linq.ParallelEnumerable.ForAll[TSource](ParallelQuery`1 source, Action`1 action)
в Elisy.MdInternals.CfPackage.()
в Elisy.MdInternals.CfPackage.ReadMetadataPartsFromImage()
в Elisy.MdInternals.MetadataPackage.Open(Stream stream)
в Elisy.MdInternals.MetadataPackage.Open(String path)
--- Конец трассировки внутреннего стека исключений ---
в System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
в System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
в System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
в System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
в Elisy.ElisyNetBridge.InvokeMethod_Internal(Object instance, String method, Object[] args)
в CDispatchExWrapper.InvokeEx(CDispatchExWrapper* , Int32 id, UInt32 __unnamed001, UInt16 wFlags, tagDISPPARAMS* pdp, tagVARIANT* pVarRes, tagEXCEPINFO* pei, IServiceProvider* __unnamed006)
{ВнешняяОбработка.CfProject.Форма.Форма.Форма(114)}: mp.Open(ВыгрузитьФайл);

по причине:
Произошла исключительная ситуация (Elisy.NetBridge.dll): System.Reflection.TargetInvocationException: Адресат вызова создал исключение. ---> System.AggregateException: Произошла одна или несколько ошибок. ---> System.InvalidOperationException: Section Guid is invalid
в Elisy.MdInternals.CfPackage.(Type , Collection )
в Elisy.MdInternals.CfPackage.(KeyValuePair`2 )
в System.Linq.Parallel.ForAllOperator`1.ForAllEnumerator`1.MoveNext(TInput& currentElement, Int32& currentKey)
в System.Linq.Parallel.ForAllSpoolingTask`2.SpoolingWork()
в System.Linq.Parallel.SpoolingTaskBase.Work()
в System.Linq.Parallel.QueryTask.BaseWork(Object unused)
в System.Linq.Parallel.QueryTask.RunTaskSynchronously(Object o)
в System.Threading.Tasks.Task.InnerInvoke()
в System.Threading.Tasks.Task.Execute()
--- Конец трассировки внутреннего стека исключений ---
в System.Linq.Parallel.QueryTaskGroupState.QueryEnd(Boolean userInitiatedDispose)
в System.Linq.Parallel.SpoolingTask.SpoolForAll[TInputOutput,TIgnoreKey](QueryTaskGroupState groupState, PartitionedStream`2 partitions, TaskScheduler taskScheduler)
в System.Linq.Parallel.DefaultMergeHelper`2.System.Linq.Parallel.IMergeHelper<TInputOutput>.Execute()
в System.Linq.Parallel.MergeExecutor`1.Execute()
в System.Linq.Parallel.MergeExecutor`1.Execute[TKey](PartitionedStream`2 partitions, Boolean ignoreOutput, ParallelMergeOptions options, TaskScheduler taskScheduler, Boolean isOrdered, CancellationState cancellationState, Int32 queryId)
в System.Linq.Parallel.PartitionedStreamMerger`1.Receive[TKey](PartitionedStream`2 partitionedStream)
в System.Linq.Parallel.ForAllOperator`1.WrapPartitionedStream[TKey](PartitionedStream`2 inputStream, IPartitionedStreamRecipient`1 recipient, Boolean preferStriping, QuerySettings settings)
в System.Linq.Parallel.UnaryQueryOperator`2.UnaryQueryOperatorResults.ChildResultsRecipient.Receive[TKey](PartitionedStream`2 inputStream)
в System.Linq.Parallel.ScanQueryOperator`1.ScanEnumerableQueryOperatorResults.GivePartitionedStream(IPartitionedStreamRecipient`1 recipient)
в System.Linq.Parallel.UnaryQueryOperator`2.UnaryQueryOperatorResults.GivePartitionedStream(IPartitionedStreamRecipient`1 recipient)
в System.Linq.Parallel.QueryOperator`1.GetOpenedEnumerator(Nullable`1 mergeOptions, Boolean suppressOrder, Boolean forEffect, QuerySettings querySettings)
в System.Linq.Parallel.ForAllOperator`1.RunSynchronously()
в System.Linq.ParallelEnumerable.ForAll[TSource](ParallelQuery`1 source, Action`1 action)
в Elisy.MdInternals.CfPackage.()
в Elisy.MdInternals.CfPackage.ReadMetadataPartsFromImage()
в Elisy.MdInternals.MetadataPackage.Open(Stream stream)
в Elisy.MdInternals.MetadataPackage.Open(String path)
--- Конец трассировки внутреннего стека исключений ---
в System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
в System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
в System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
в System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
в Elisy.ElisyNetBridge.InvokeMethod_Internal(Object instance, String method, Object[] args)
в CDispatchExWrapper.InvokeEx(CDispatchExWrapper* , Int32 id, UInt32 __unnamed001, UInt16 wFlags, tagDISPPARAMS* pdp, tagVARIANT* pVarRes, tagEXCEPINFO* pei, IServiceProvider* __unnamed006)
115. Elisy 948 21.10.20 13:50 Сейчас в теме
(113)
исключение

Обработку давно не поддерживаю. Выргузка в XML появилась в штатных средствах 1С.
Выложена на git в открытом исходном коде
https://github.com/elisy/MdInternals
116. skyboy13 13 21.10.20 15:30 Сейчас в теме
114. AlexWhite 194 21.10.20 12:52 Сейчас в теме
(113) научились пользоваться Ctrl^C Ctrl^V ? :-)
117. skyboy13 13 21.10.20 15:31 Сейчас в теме
(114) в чем смысл этого сообщения? какую смысловую нагрузку оно несет в мир?
118. AlexWhite 194 21.10.20 15:44 Сейчас в теме
(117)
какую смысловую нагрузку оно несет в мир?

Смысловая нагрузка = "Фу - быть таким (копипастером)!" :-) Научились КопиПастить, научитесь лаконичности формулировок, пример в (115) .
119. skyboy13 13 21.10.20 17:10 Сейчас в теме
(118) Я выложил весь код ошибки для разработчика. Это практика правильной разработки и тестирования, выкладывать максимум информации. Значительно сокращает время реакции и поиска ошибок.
Если у вас другой подход, сочувствую вашим клиентам и коллегам, им приходиться тратить много лишнего времени. Рекомендую обратиться к лучшим практикам программирования, там этом учат.
И почитайте определения слова "копипастер", прежде чем его использовать в тексте. Его контекст совершенного другой, авторских прав я не затрагивал.
120. AlexWhite 194 21.10.20 18:44 Сейчас в теме
(119)
Это практика правильной разработки и тестирования

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

"Копипастер" в контексте (113) - человек, продемонстрировавший недюжинные способности Copy+Paste.

(119)
Рекомендую обратиться к лучшим практикам программирования

Думаю, вы путаете "практики программирования" с принципами конструктивного письменного общения (КПО) - тема моего доклада на прошлогоднем Infostart Event. Оформлю в ближайшее время в статью, рекомендую прочесть.

С моей колокольни этот пост выглядит так, будто вас раньше заставляли соблюдать практику правильной разработки и тестирования - сообщать разработчику весь текст всех ошибок, набирая его с клавиатуры и, вдруг, кто-то вам открыл глаза на функции "Копировать" и "Вставить". Теперь используете любую возможность, чтобы скопировать побольше и вставить побольше - продолжайте, если вам это приносит удовольствие. Страшно представить, что произойдет, когда вам продемонстрируют функцию Print Screen :-)
121. artbear 1524 21.10.20 19:00 Сейчас в теме
(120) Александр, я за тебя, коллега не прав с длинным листингом, конечно.
но ты также что-то резковато начал свое общение в (114) )
123. skyboy13 13 21.10.20 19:11 Сейчас в теме
(121) Длинновато конечно получилось. Обычно длинные сообщения сокращаются на форумах через "..." и визуально это выглядит нормально.
А, Александр, наверно, решил, что быть учителем лучше, и все ждут этой трансформации, хотя его об этом и не просили.
122. AlexWhite 194 21.10.20 19:06 Сейчас в теме
(121) ой, да ладно, где там резковато? Хихикнул, просто и смайлик поставил :-)
Если задел чьи-то чувства, извините, Христа ради, не смог сдержать эмоцию :-)
124. skyboy13 13 21.10.20 19:15 Сейчас в теме
(122) К сожалению, размер сообщения уменьшить не возможно. На данной площадке нет такой возможности.
125. artbear 1524 21.10.20 19:17 Сейчас в теме
(124) Почему нет?
Скрытый текст
127. skyboy13 13 21.10.20 19:17 Сейчас в теме
(125) пишет, что прошло более 30 минут и отредактировать нельзя. Только свежие сообщения
130. artbear 1524 21.10.20 19:18 Сейчас в теме
(127) на будущее длинные логи прячьте - в спойлер или в файл
126. AlexWhite 194 21.10.20 19:17 Сейчас в теме
(123) вы в бутылку полезли первым "лучшие практики...", я ответил :-)
(122) есть кнопка "Прикрепить файл".
128. artbear 1524 21.10.20 19:17 Сейчас в теме
(126) а еще есть спойлер, самая правая кнопка )
132. skyboy13 13 21.10.20 19:29 Сейчас в теме
(130)
(126) я не комментировал ни ctrl-c, ни чего другого. я лучше работой займусь.
И учили меня профи программирования, там другая практика и сейчас так к сожалению не пишут. Я бы посмотрел, как сейчас на ассемблере, так работать.
Пишут, как вы написали, миллионы строк кода, куда-то выложенные, кликни там, посмотри здесь и т.д. Еще видео снимут на 10 минут и аудио-сообщение приложат. Все по лучшим практикам увеличения бюджета и времени разработки.
ps. А Print Screen всего экрана, вообще решает 80% все ошибок.
129. пользователь 21.10.20 19:18
Сообщение было скрыто модератором.
...
131. AlexWhite 194 21.10.20 19:22 Сейчас в теме
Весело с вами, спасибо за участие, откланиваюсь :-)
133. AlexWhite 194 21.10.20 19:47 Сейчас в теме
(132) а своим "коротеньким" сообщением вы меня просто напугали. Когда я увидел его в Телеге (и в почте), подумал, что сайту Инфостарта кирдык - шлёт какие-то кишки вместо уведомлений. Если бы просто суть ошибки написали человеческими языком, я бы промолчал, скорее всего :-)
Оставьте свое сообщение