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

04.03.23

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Сравнение текстов модулей (1С, oscript):
.epf 132,67Kb ver:1.4
13
13 Скачать (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С.

12000 руб.

02.09.2020    171873    962    403    

924

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

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

8400 руб.

20.08.2024    14367    109    46    

108

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

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

22200 руб.

06.10.2023    17312    43    15    

75

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

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

9360 руб.

17.05.2024    27301    96    48    

138

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

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

15000 руб.

10.11.2023    11915    45    27    

67

SALE! %

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

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

4800 3840 руб.

14.01.2013    191279    1152    0    

920

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

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

20000 руб.

07.10.2021    18098    7    32    

42

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

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    1134    2    0    

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

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

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

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

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

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