Мне не нравятся стандартные конструкторы коллекций 1С.
И хотя язык давно застыл в своем развитии, можно добавить "синтаксического сахара" своими силами. Сразу к делу:
Массив
Массив = Новый Массив;
Массив.Добавить("Первый");
Массив.Добавить("Второй");
Массив.Добавить("Третий");
Что здесь можно придумать? Для частных случаев, когда массив состоит из строк, можно так:
Массив = СтрРазделить("Первый,Второй,Третий");
Но! Когда строка длинная, хочется сделать вот так:
Массив = СтрРазделить("Первый,Второй,Третий,
|Четвертый, Пятый");
Проблема в том, что так делать нельзя - в одном из элементов массива появляется перенос строки :(
Для других типов ничего в голову не приходит. А хочется вот так:
Массив = Массив(1, "Второй", Неопределено, "Четвертый");
Напишем такую функцию.
1) Очевидно, она должна находится в глобальном модуле для удобного использования.
2) Также ее имя должно быть уникально для всей конфигурации (именно для этого нужно добавить ей какой нибудь странный префикс, например "HS")
3) Она должна принимать достаточное количество параметров на вход для добавления в создаваемый массив. При этом не обязывать их передавать (больше 1).
Реализация такого метода - под спойлером
Структура
Канонический конструктор:
Структура = Новый Структура("Ключ1,Ключ2,Ключ3", "Значение1", "Значение2", "Значение2");
Для простых случаев этого достаточно. Но в сложных, когда нужно задать много параметров и не испортить читаемость кода, лучше сделать так:
Структура = Новый Структура;
Структура.Вставить("Ключ1", "Значение1");
Структура.Вставить("Ключ2", "Значение2");
Структура.Вставить("Ключ3", "Значение3");
Напротив ключа - значение. Много строк, но читать такой код гораздо проще и нет кошмара пропущенных запятых. Плохой пример:
Структура = Новый Структура("Ключ1,Ключ2,Ключ3",,, "Значение3");
Как совместить краткость и читаемость. Можно попробовать так:
Структура = Структура(
"Ключ1", "Значение1",
"Ключ2", "Значение2",
"Ключ3", "Значение3");
Т.е. задавать пары Ключ-Значение с новой строки. Реализовать можно по аналогии с массивом
Таблица значений
Все мы знаем, как она конструируется. Можно продолжить описанную выше логику и для нее
СтруктураКолонок = HSСтруктура(
"ХешЗапроса", HSОписаниеТиповСтрока(40), // хеш запроса для поиска в таблице
"ТекстЗапроса", HSОписаниеТиповСтрока(), // текст запроса
"Количество", HSОписаниеТиповЧисло(15, 0), // количество выполнений запроса
"Время", HSОписаниеТиповЧисло(15, 0), // общее время выполнений запроса, мс.
"СамыйМедленный");
ТаблицаЗамеров = HSТаблицаЗначений(СтруктураКолонок);
Т.е. создаем структуру из пар Имя колонки - тип колонки и создаем таблицу. Реализацию этого метода оставим за скобками, как очевидную. Методы создания описания типов - тоже
Спасибо за внимание! Чистого кода, приятного программирования.