Рефа́кторинг (англ. refactoring), или перепроектирование кода, переработка кода, равносильное преобразование алгоритмов — процесс изменения внутренней структуры программы, не затрагивающий её внешнего поведения и имеющий целью облегчить понимание её работы.
Во многом при рефакторинге лучше полагаться на интуицию, основанную на опыте. Тем не менее имеются некоторые видимые проблемы в коде (англ. code smells), требующие рефакторинга:
«жадные» функции — это метод, который чрезмерно обращается к данным другого объекта;
избыточные временные переменные;
классы данных;
несгруппированные данные.
Один из основных приемов "Выделение метода".
Выделение метода заключается в выделении из длинного и/или требующего комментариев кода отдельных фрагментов и преобразовании их в отдельные методы, с подстановкой подходящих вызовов в местах использования. В этом случае действует правило: если фрагмент кода требует комментария о том, что он делает, то он должен быть выделен в отдельный метод. Также правило: один метод не должен занимать более чем один экран (25-50 строк, в зависимости от условий редактирования), в противном случае некоторые его фрагменты имеют самостоятельную ценность и подлежат выделению. Из анализа связей выделяемого фрагмента с окружающим контекстом делается вывод о перечне параметров нового метода и его локальных переменных.
Для отображения нескольких строк (значений) в одной ячейке надо использовать агрегатный функции Массив([Различные] Выражение) и СоединитьСтроки (Значение, РазделительЭлементов, РазделителиКолонок).
Так же есть агрегатная функция ТаблицаЗначений([Различные] Выражение1 [КАК ИмяКолонки1][, Выражение2 [КАК ИмяКолонки2],...]), но при её использовании не получиться вывести таблицу внутри ячейки.
Если возможностей встроенных функций не достаточно, то можно написать свою функцию в общем модуле и использовать её, для формирования массива или многострочной строки.
При обновлении платформы на сервере могут вылезти следующие косяки:
1. Отвалилась консоль.
Чтобы исправить надо перерегистрировать в реестре новый путь для консоли. Так же надо не забыть установить "Администрирование сервера 1С: Предприятия"
2. Отвалились веб-сервисы.
Лечится установкой нового клиента на IIS. Так же в настройках IIS надо проверить обработчик ("Сопоставление обработчиков" в разделе IIS для сайта Default Web Site)
Для обработчика 1C Web-service Extension надо прописать путь C:\Program Files\1cv8\<правильная версия>\bin\wsisapi.dll
3. Отвалилась отладка.
Если ранее была отладка по HTTP, то она может отвалиться. Для того, чтобы отладка заработала надо проверить строку запуска службы агента сервера 1С.
В строке запуска должны стоять ключи -debug -http . Первый говорит, что отладка должна быть, а второй указывает, что отладка по http.
Если этих ключей нет, то их можно добавить через regedit. После перезапуска службы должен появиться процесс dbgs с указанием портов, на которых работает отладка.
Новый ОписаниеТипов(<Типы>, <КвалификаторыЧисла>, <КвалификаторыСтроки>, <КвалификаторыДаты>, <КвалификаторыДвоичныхДанных>)
Примеры:
Массив = Новый Массив;
Массив.Добавить(Тип("СправочникСсылка.Методы"));
Массив.Добавить(Тип("Число"));
Знак = ДопустимыйЗнак.Неотрицательный;
КвЧисла = Новый КвалификаторыЧисла(10, 2, Знак);
ДопустимыеТипы = Новый ОписаниеТипов(Массив, КвЧисла);
Далее алгоритмы будут похожими. Для УО нам нужно задать условие отбора, задать значение свойства УО и добавить оформляемые поля.
// Создаем условие отбора
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяПоля); // имя поля
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; // либо задаем свой
//**** Значение для отбора
ЭлементОтбора.ПравоеЗначение = ЗначениеДляОтбора;
// следует заметить что правым значением может выступать ПолеКомпоновкиДанных формы или списка
ЭлементОтбора.ПравоеЗначение = Новый ПолеКомпоновкиДанных(ИмяПоля);
//****
ЭлементОтбора.Использование = Истина;
Значение свойства УО:
// Установка значения элемента УО
// Возможно обращение как по индексу так и установка через метод
//1.
Элемент = ЭлементОформления.Оформление.Элементы[0];
Элемент.Значение = Цвет;
//2.
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.СеребристоСерый);
Элемент.Использование = Истина;
Добавим поля оформления, если ничего не добавлять, то система применит оформления ко всей строке:
// Создаем поля оформления
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных(ПолеДляОформления);
ПолеОформления.Использование = Истина;
В качестве ИменПолей нужно передавать строковое представление ИМЕНИ реквизита.
Если требуется выводить только количество в итогах, а в детальных записях ничего не выводить, тогда в настройках выбираем ветку <Детальные записи>, на вкладке "Выбранные поля", разворачиваем <Авто> и убираем галку с того поля, которое не должно отображаться.
Если надо чтобы в группировке выходила не сумма всех записей, а только одно значение (например когда есть общий остаток по абоненту и остатки в разрезе услуг в 2 разных столбцах), то в выражении ресурса можно использовать формулу типа: Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(ТекущийОстаток)", "Абонент"))
1С продвигает технологию 1C:Enterprise Development tools (EDT)
По сути это разработка в Eclipse функционала 1С. Надо скачать плагины и добавить конфигурацию. Пока не все объекты доступны, но основная часть уже включена.
Так как Eclipse работает на Java, то разработка теперь доступна не только под Windows, но и под Linux.
Система «1С:Предприятие» обеспечивает возможность ведения технологического журнала, в который помещается информация от всех приложений, относящихся к системе «1С:Предприятие».
Технологический журнал предназначен для выявления ошибок, возникающих при эксплуатации системы, и диагностики работы системы службой технической поддержки фирмы «1С», а также для анализа технологических характеристик работы системы.
Состав и свойства событий технологического журнала могут меняться при выпуске обновлений платформы.
Для записи событий, возникающих в критических ситуациях (с точки зрения системы «1С:Предприятие») предназначен технологический журнал по умолчанию. Для этого журнала создается фиксированный фильтр событий, который формирует платформа и который невозможно изменить.
Технологический журнал по умолчанию имеет следующие настройки:
● Каталог файлов технологического журнала по умолчанию:
● ОС Windows: %USERPROFILE%\Local Settings\Application Data\1C\1cv8\logs (или %LOCALAPPDATA%\1C\1cv8\logs для ОС Windows Vista и старше).
● ОС Linux: ~/.1cv8/1C/1cv8/logs.
● ОС macOS: ~/.1cv8/1C/1cv8/logs.
● Информация удаляется из технологического журнала по умолчанию через 24 часа.
● В технологический журнал по умолчанию попадают события SYSTEM с уровнем Error.
Указанные настройки можно изменить с помощью элемента <defaultlog> (см. здесь). Настройка правил формирования событий, которые регистрируются в технологическом журнале по умолчанию выполняется с помощью элемента <system> (см. здесь).