Каталог решений - Генерация кода с помощью формул Excel

Генерация кода с помощью формул Excel

Генерация кода с помощью формул Excel

В наличии

В работе периодически возникает необходимость создания однотипных строк кода, отличающихся, в общем случае, только неким известным заранее строковым содержимым.
При помощи конкатенации в Excel подобные данные легко превратить в готовые строки кода.

Категория:

Описание

Например, у нас есть известные области макета и мы зачем-то хотим поместить их в структуру или соответствие.
Имена областей:

"Шапка|Артикул"
"Шапка|Наименование"
"Шапка|Количество"
"Строка|Артикул"
"Строка|Наименование"
"Строка|Количество"
"Итоги|Артикул"
"Итоги|Наименование"
"Итоги|Количество"

Копируем эти строки и вставляем в Excel.
При вставке в Excel кавычки будут удалены. Это не должно смущать, т.к. это не имеет значения для решения задачи.
В соседний столбец вводим формулу и протягиваем её до конца значений в первом столбце:

="ИмяСтруктуры.Вставить("""&A1&""", Макет.ПолучитьОбласть("""&A1&"""));"

На выходе получаем строки:

ИмяСтруктуры.Вставить("Шапка|Артикул", Макет.ПолучитьОбласть("Шапка|Артикул"));
ИмяСтруктуры.Вставить("Шапка|Наименование", Макет.ПолучитьОбласть("Шапка|Наименование"));
ИмяСтруктуры.Вставить("Шапка|Количество", Макет.ПолучитьОбласть("Шапка|Количество"));
ИмяСтруктуры.Вставить("Строка|Артикул", Макет.ПолучитьОбласть("Строка|Артикул"));
ИмяСтруктуры.Вставить("Строка|Наименование", Макет.ПолучитьОбласть("Строка|Наименование"));
ИмяСтруктуры.Вставить("Строка|Количество", Макет.ПолучитьОбласть("Строка|Количество"));
ИмяСтруктуры.Вставить("Итоги|Артикул", Макет.ПолучитьОбласть("Итоги|Артикул"));
ИмяСтруктуры.Вставить("Итоги|Наименование", Макет.ПолучитьОбласть("Итоги|Наименование"));
ИмяСтруктуры.Вставить("Итоги|Количество", Макет.ПолучитьОбласть("Итоги|Количество"));

Возможно, лучше бы было выделить эту строку в отдельный метод и заменить им:

Процедура ДобавитьЭлементКоллекции(Коллекция, Знач Ключ)
    Коллекция.Вставить(Ключ, Макет.ПолучитьОбласть(Ключ));
КонецПроцедуры

В таком случае формула бы выглядела вот так:

="ДобавитьЭлементКоллекции(ИмяСтруктуры, """&A1&"""));"

А результат так:

ДобавитьЭлементКоллекции(ИмяСтруктуры, "Шапка|Артикул"));
ДобавитьЭлементКоллекции(ИмяСтруктуры, "Шапка|Наименование"));
ДобавитьЭлементКоллекции(ИмяСтруктуры, "Шапка|Количество"));
ДобавитьЭлементКоллекции(ИмяСтруктуры, "Строка|Артикул"));
ДобавитьЭлементКоллекции(ИмяСтруктуры, "Строка|Наименование"));
ДобавитьЭлементКоллекции(ИмяСтруктуры, "Строка|Количество"));
ДобавитьЭлементКоллекции(ИмяСтруктуры, "Итоги|Артикул"));
ДобавитьЭлементКоллекции(ИмяСтруктуры, "Итоги|Наименование"));
ДобавитьЭлементКоллекции(ИмяСтруктуры, "Итоги|Количество"));

Один мой коллега сказал, что подобным образом генерирует строки для SQL-запросов, то есть идея оригинальностью не блещет. Скорее, это сам по себе напрашивающийся подход в условиях рутинного ввода однотипных строк.

Но если вдруг вы ещё не пользовались подобным способом, уверяю, он может сэкономить вам массу времени, особенно когда данных не 9 строк, как в примере, а несколько десятков (надеюсь, сотни однотипных строк никому вводить не приходится).

has been added to your cart:
Оформление заказа