Сравнение текстов модулей (1С, oscript)

04.03.23

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

Построчное сравнение модулей 1С, OScript и других структурированных текстовых файлов. Без использования внешних программ (kdiff и т.п.). Без ограничений по типу клиента 1С:Предприятие.

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

Наименование Файл Версия Размер
Сравнение текстов модулей (1С, oscript):
.epf 132,67Kb
11
.epf 1.4 132,67Kb 11 Скачать

Постоянно я генерирую себе какие-то задачи. Ну вот надо мне сделать механизм сравнения текстов произвольных алгоритмов в программе. Сначала я сделал через Консоль кода (той самой, которая использует редактор Monaco). Там прекрасный встроенный механизм сравнения всем однозначно рекомендую. Кроме того есть метод, позволяющий получить различия.

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

  • Реализация сравнения текстовых файлов. Автор: Игорь Пашутин (тыц)
  • Сравнение и объединение модулей с возможностью редактирования результата. Автор: Андрей Овсянкин (тыц)

И сначала на основе первого примера, я решил свою задачу. А следом подумал, а почему бы не сделать сравнение модулей в режиме 1С:Предприятие. Не сказать что это имеет постоянную необходимость, да и у кого есть Visual Studio Code вряд ли вообще что-то еще надо. Открыл репозиторий и сравнивай ежей сутками. Но спортивный интерес было не остановить, ведь сразу захотелось:

  • структуру модуля (области)
  • фильтр изменений (изменено, добавлено, удалено и т.д.)
  • какие-то подсказки вроде Асинх, Экспорт, директива компиляции, тип метода (процедура, функция)

В общем "Остапа несло. Дело как будто налаживалось". Результат представлен в данной статье.

Возможности

  • отображение структуры модуля (дерево областей и методов)
  • фильтр изменений (нет фильтра, изменено, удалено, добавлено, без изменений)
  • переключение просмотра структуры модуля (дерево, таблица)
  • цветовая индикация изменений в структуре модуля
  • информация об Асинх, Экспорт, директиве компиляции, типе метода, строках в тексте модуля
  • построчное сравнение текстов методов
  • цветовая индикация текстов методов и изменений

Но в каждой бочке хорошего башкирского обязательно найдется ложка чего-то смолистого:

  • Код должен минимально соответствовать стандартам 1С, хотя бы в части объявления областей, методов, комментариев
  • Объявление нового метода в строке с окончанием другого метода недопустимо и приведет к ошибке разбора. Например:
    КонецПроцедуры Процедура НоваяПроцедура()
  • Сравнение построчное. Для более детального анализа расхождений рекомендую использовать сторонние средства
  • В некоторых случаях некорректно определяются блоки изменений. Но не так часто и не столь критично
  • Между левой и правой блоками кода синхронизация при прокрутке не происходит. Только при активизации строки
  • Неструктурированный код не анализируется (не вложенный в процедуры или функции)
  • Из-за особенностей реализации большое количество строк внутри метода вызывает желание у программы уйти в долгое раздумье. Много строк это более 200-300 наверное. Хотя я сомневаюсь в адекватности таких методов ))))

Немного о требованиях

  • Платформа 8.3.18+ (наличие Асинх методов)
  • БСП 3+. Список батареек
    • ОМ.ОбщегоНазначения

    • ОМ.ОбщегоНазначенияКлиент

    • ОМ.ОбщегоНазначенияКлиентСервер

    • ОМ.СтроковыеФункцииКлиентСервер

    • ОМ.ФайловаяСистемаКлиент

Пожалуй, на этом все. Используйте на здоровье, мне не жалко. А если кто дорабатывать будет, поделитесь что сделали. Ну и приходите ко мне в репозиторий на Github, там, возможно, вы найдете еще что-нибудь интересное.

diff сравнение bsl

См. также

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

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

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

10000 руб.

02.09.2020    131977    721    390    

763

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

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

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

18000 руб.

06.10.2023    9640    28    6    

51

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

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

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

10000 руб.

10.11.2023    5681    16    2    

39

PowerTools

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

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

3600 руб.

14.01.2013    180236    1097    0    

871

OneDebugger - инструмент для отладки кода без использования режима конфигуратора

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

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

5400 руб.

17.05.2024    6729    15    12    

42

Бустер Конвертации данных 3 (Infostart Toolkit)

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 руб.

07.10.2021    15511    3    12    

38

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

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

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

5000 руб.

07.02.2018    100444    240    97    

299

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

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

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

3000 руб.

27.08.2019    18959    7    8    

42
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. slawa 26 26.02.23 07:01 Сейчас в теме
Сравнение модулей (версия 1.1)

При сравнении файлов не выводит название методов
Прикрепленные файлы:
Новый1.txt
Новый2.txt
2. vandalsvq 1558 26.02.23 08:15 Сейчас в теме
(1) пофиксил. На гитхаб будет чуть позже
3. vandalsvq 1558 26.02.23 08:15 Сейчас в теме
(1) как проверишь, жду плюса 😂
4. vandalsvq 1558 26.02.23 08:48 Сейчас в теме
5. slawa 26 27.02.23 05:21 Сейчас в теме
Спасибо

Вот еще ошибка
Ошибка инициализации модуля: ВнешняяОбработка.СравнениеКода1С.Форма.Форма.Форма
по причине:
{ВнешняяОбработка.СравнениеКода1С.Форма.Форма.Форма(100,2)}: Переменная не определена (pw_СлужебныйКлиентСервер)
<<?>>pw_СлужебныйКлиентСервер.ДобавитьПоляУсловногоОформления(ЭлементУО.Поля, "СтруктураМодуля");

меняю на
//pw_СлужебныйКлиентСервер.ДобавитьПоляУсловногоОформления(ЭлементУО.Поля, "СтруктураМодуля");
#Область slawa
ДобавитьПоляУсловногоОформления(ЭлементУО.Поля, "СтруктураМодуля");
#КонецОбласти // slawa
7. vandalsvq 1558 27.02.23 11:08 Сейчас в теме
(5) ошибку поправлю сегодня, остались костыли, сорри ((((
8. vandalsvq 1558 27.02.23 12:12 Сейчас в теме
(5) пофиксил, проверил на какой-то сторонней конфе с БСП чтобы больше каких-то "не БСП-шных" хвостов не осталось
Интересно, что сам метод я перенес внутрь обработки, а вызов оставил из другого места. Торопыга
6. slawa 26 27.02.23 05:22 Сейчас в теме
9. slawa 26 01.03.23 18:22 Сейчас в теме
Еще проблема

Недопустимое значение параметра (параметр номер '4')
{ВнешняяОбработка.СравнениеКода1С.Форма.Форма.Форма(1456)}:КонСтроки = СтрНайти(СтрокаМодуля, """",, НачСтроки + 1);
{ВнешняяОбработка.СравнениеКода1С.Форма.Форма.Форма(328)}:ЭтотОбъект.ТекстПодготовленный1 = ПодготовитьТекстМодуля(ЭтотОбъект.ТекстМодуля1);
{ВнешняяОбработка.СравнениеКода1С.Форма.Форма.Форма(274)}:ПроверитьТекстПодготовленный();

по причине:
Недопустимое значение параметра (параметр номер '4')
Прикрепленные файлы:
Новый1.txt
Новый2.txt
vandalsvq; +1 Ответить
10. vandalsvq 1558 01.03.23 19:30 Сейчас в теме
(9) видимо НачСтроки+1 вышел за пределы длины самой строки. Завтра поправлю, постараюсь не забыть.
11. vandalsvq 1558 04.03.23 11:14 Сейчас в теме
(9) ошибка исправлена в версии 1.4, как всегда все на гитхаб если что
12. slawa 26 17.03.23 04:26 Сейчас в теме
Есть небольшая проблема
Нужно перезагружать обработку при каждом следующем сравнении

Например сейчас файлы различны на одну строку 2023-03-17_112046.jpg
Потом в Новый1 добавляю третью строку "Перем адоФС;" и заново "Выполнить сравнение"
результат не меняется
так-же с левой стороны одна строка отличий

Т.е. такое ощущение что файлы для сравнения не перезагружаются.
Мелочь конечно, но споткнулся.
Прикрепленные файлы:
13. vandalsvq 1558 17.03.23 23:14 Сейчас в теме
(12) файлы считываются при выборе один раз, далее уже не обновляется. Есть такое. Если не сложно в github issues засунь, может как найдутся пару минуток сделаю что-нибудь.
Оставьте свое сообщение