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

04.03.23

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Сравнение текстов модулей (1С, oscript):
.epf 132,67Kb ver:1.4
15
15 Скачать (5 SM) Купить за 3 050 руб.

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

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

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

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

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

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

Возможности

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

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

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

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

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

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

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

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

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

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

diff сравнение bsl

См. также

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

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

15500 руб.

02.09.2020    184729    1029    403    

968

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    24744    163    86    

161

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

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

22200 руб.

06.10.2023    20432    52    19    

86

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

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

15000 руб.

10.11.2023    13736    57    33    

77

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

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

9360 руб.

17.05.2024    30648    105    48    

148

Инструментарий разработчика Программист 8.3.14 Россия Платные (руб)

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

20000 руб.

07.10.2021    19145    7    32    

43

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

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

5000 руб.

07.02.2018    104942    246    100    

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

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

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

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

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

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