Снегопат

Обсуждение Снегопата
Текущее время: 19 июл 2019, 12:02

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2, 3  След.
Автор Сообщение
СообщениеДобавлено: 05 авг 2014, 11:22 
Не в сети

Зарегистрирован: 26 май 2014, 15:53
Сообщения: 83
Одна из самых нужных мне вещей - средства рефакторинга в 8.2, как известно, отсутствуют.
Был неприятно удивлен наличием детских багов в скрипте refactoring.js.
Например, если выделяем метод и говорим, что параметры передавать надо по "Знач", то само место вызова тоже получает добавки "Знач", что, понятно, ошибочно.

Код:
А = 1;
Б = 2;

НовыйМетод(Знач Б, Знач А); // здесь не должно быть "Знач" у параметров

// этот метод выделен скриптом рефакторинга
Процедура НовыйМетод(Знач Б, Знач А)
    ;
КонецПроцедуры



Это из самого страшного, но есть и другие сырости.
В целом скрипт больше похож на демонстрацию концепта, а не на рабочий вариант. Им кто-то пользуется?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 авг 2014, 10:56 
Не в сети

Зарегистрирован: 26 май 2014, 15:53
Сообщения: 83
Похоже, что никто не пользуется. А если я его перепишу - будете пользоваться?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 авг 2014, 14:41 
Не в сети

Зарегистрирован: 19 сен 2011, 13:14
Сообщения: 103
EvilBeaver писал(а):
Похоже, что никто не пользуется. А если я его перепишу - будете пользоваться?


Конечно будем. И даже готовы генерировать новые идеи по функционалу скрипта


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 06 авг 2014, 18:25 
Не в сети
Аватара пользователя

Зарегистрирован: 24 авг 2011, 17:36
Сообщения: 1077
EvilBeaver писал(а):
Похоже, что никто не пользуется. А если я его перепишу - будете пользоваться?

Пользуемся как раз выделением метода.
Но ошибки есть, но не так часто, чтобы взяться и самому переписать :)
Если перепишешь, будем рады.
Тестовых кейсов могу накидать.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 авг 2014, 12:39 
Не в сети

Зарегистрирован: 24 авг 2011, 17:32
Сообщения: 709
Конечно будем. Текущий скрипт у меня не взлетел по причине периодических конфликтов и недопониманий со SciColorer-ом. Потом про него вообще забыл.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 08 авг 2014, 13:33 
Не в сети

Зарегистрирован: 26 май 2014, 15:53
Сообщения: 83
artbear писал(а):
EvilBeaver писал(а):
Похоже, что никто не пользуется. А если я его перепишу - будете пользоваться?

Тестовых кейсов могу накидать.


Да, сделай, пожалуйста.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 11 сен 2014, 13:38 
Не в сети

Зарегистрирован: 19 фев 2013, 12:29
Сообщения: 64
На вике страницы скрипта не нашел, здесь вроде тестов хотели - вот некорректно обрабатывающаяся ситуация (код приведен не полностью):
Код:
Процедура ВосстановитьЗначенияРучныхКорректировокТабличнойЧасти(ИмяТЧ, СкорректированныеСтроки)
   Перем НеобходимоПредупредитьОбИзмененияхБУ, СтрокаДляКорректировки, МассивСтрокДляКорректировки, СкорректированнаяСтрока;
   Перем СписокКорректируемыхКолонок;//список колонок, которые могут корректироваться пользователем, их корректируем, остальные сверяем
   Перем СпецСумма;//Сумма долгосрочного и краткосрочного для 91, 99, потом для проценнтов и тд
   
   МассивКорректируемыхКолонок = ПолучитьМассивКорректируемыхКолонок();
   #Если _ Тогда
      МассивКорректируемыхКолонок = Новый Массив;
   #КонецЕсли
   Для каждого  СкорректированнаяСтрока Из СкорректированныеСтроки Цикл
      НеобходимоПредупредитьОбИзмененияхБУ = Ложь;
      Отбор = ПолучитьКлючСтроки(СкорректированнаяСтрока);
      МассивСтрокДляКорректировки = ЭтотОбъект[ИмяТЧ].НайтиСтроки(Отбор);
      Если МассивСтрокДляКорректировки.Количество() = 0 тогда
         СтрокаДляКорректировки = ЭтотОбъект[ИмяТЧ].Добавить();
      ИначеЕсли МассивСтрокДляКорректировки.Количество() = 1 тогда
         СтрокаДляКорректировки = МассивСтрокДляКорректировки[0];
      Иначе
         ВызватьИсключение "201409101233 Нашлось несколько строк с одним ключем";
      КонецЕсли;   

Выделяю строки с "отбор =" до конца блока. Автоматом получается
Код:
Функция ПолучитьСтрокуДляКорректировки(ИмяТЧ)
   Отбор = ПолучитьКлючСтроки(СкорректированнаяСтрока);
   МассивСтрокДляКорректировки = ЭтотОбъект[ИмяТЧ].НайтиСтроки(Отбор);
   Если МассивСтрокДляКорректировки.Количество() = 0 тогда
      СтрокаДляКорректировки = ЭтотОбъект[ИмяТЧ].Добавить();
   ИначеЕсли МассивСтрокДляКорректировки.Количество() = 1 тогда
      СтрокаДляКорректировки = МассивСтрокДляКорректировки[0];
   Иначе
      ВызватьИсключение "201409101233 Нашлось несколько строк с одним ключем";
   КонецЕсли;   
   Возврат СтрокаДляКорректировки;
КонецФункции

То есть теряется параметр "СкорректированнаяСтрока" несмотря на то, что выше эта переменная явно объявлена как локальная переменная модуля (в первой строке "Перем").


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 окт 2014, 08:50 
Не в сети

Зарегистрирован: 14 май 2014, 14:17
Сообщения: 64
Добавил по аналогии с выделением метода - выделение переменной;


Вложения:
Image 2.png
Image 2.png [ 9.09 КБ | Просмотров: 8706 ]
Image 3.png
Image 3.png [ 3.82 КБ | Просмотров: 8706 ]
refactoring1.zip [6.81 КБ]
Скачиваний: 167
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 окт 2014, 13:01 
Не в сети

Зарегистрирован: 26 май 2014, 15:53
Сообщения: 83
alonehobo писал(а):
Добавил по аналогии с выделением метода - выделение переменной;

Отлично. Добавьте в основной репозиторий, пожалуйста.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 09 окт 2014, 13:11 
Не в сети

Зарегистрирован: 14 май 2014, 14:17
Сообщения: 64
Не имею возможности


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB