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

04.03.23

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

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

Скачать файлы

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

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

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

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

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

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

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

Возможности

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

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

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

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

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

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

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

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

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

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

diff сравнение bsl

См. также

SALE! 20%

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

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

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

13000 10400 руб.

02.09.2020    122174    670    389    

714

SALE! 25%

Infostart PrintWizard

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

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

18000 15300 руб.

06.10.2023    7295    21    6    

39

SALE! 20%

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

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

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

10000 8000 руб.

10.11.2023    3542    11    1    

34

SALE! 30%

PowerTools

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

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

3600 2520 руб.

14.01.2013    177757    1073    0    

849

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

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

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

5000 руб.

07.02.2018    99347    239    97    

296

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

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

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

3000 руб.

27.08.2019    18116    6    8    

39

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

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

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

2040 руб.

27.12.2017    28110    3    10    

15

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

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

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

2400 руб.

24.09.2019    23604    15    15    

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

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

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

меняю на
//pw_СлужебныйКлиентСервер.ДобавитьПоляУсловногоОформления(ЭлементУО.Поля, "СтруктураМодуля");
#Область slawa
ДобавитьПоляУсловногоОформления(ЭлементУО.Поля, "СтруктураМодуля");
#КонецОбласти // slawa
7. vandalsvq 1537 27.02.23 11:08 Сейчас в теме
(5) ошибку поправлю сегодня, остались костыли, сорри ((((
8. vandalsvq 1537 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 1537 01.03.23 19:30 Сейчас в теме
(9) видимо НачСтроки+1 вышел за пределы длины самой строки. Завтра поправлю, постараюсь не забыть.
11. vandalsvq 1537 04.03.23 11:14 Сейчас в теме
(9) ошибка исправлена в версии 1.4, как всегда все на гитхаб если что
12. slawa 26 17.03.23 04:26 Сейчас в теме
Есть небольшая проблема
Нужно перезагружать обработку при каждом следующем сравнении

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

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