Создание строк кода по шаблону и списку


Бывает необходимо создать код, содержащий много одинаковых строк

Когда-то была необходимость создать отчет, который бы «интерпретировал» данные на основании информации, которой нет в базе.

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

Так как писать мне это было лень — появилась эта простая обработка.

Задается шаблон кода, например:

СписикЗначений_ТМЦ_Исключения.Добавить(Справочники.Номенклатура.НайтиПоНаименованию(«*****»));

Берется справочник «Номенклатура», отбирается по нужным параметрам и выводится в таблицу, которая копируется в обработку…

В результате работы получается «блок» кода:

СписикЗначений_ТМЦ_Исключения.Добавить(Справочники.Номенклатура.НайтиПоНаименованию("Товар_1"));
СписикЗначений_ТМЦ_Исключения.Добавить(Справочники.Номенклатура.НайтиПоНаименованию("Товар_2"));
...
СписикЗначений_ТМЦ_Исключения.Добавить(Справочники.Номенклатура.НайтиПоНаименованию("Товар_1000"));

Готов параметр, например, для передачи в запрос, содержащий 1000 наименований из справочника. 

ПРАВИЛА РАБОТЫ:

Задается «шаблон кода» — та строка, которая будет копироваться… Она содержит «шаблон для замены» — та часть строки которая будет заменяться значениями из списка.

ВАЖНО:

Вставлять таблицу значений в текстовое поле на обработке с первой строки и ТОЛЬКО в ПЕРВУЮ колонку.

ДОПОЛНИТЕЛЬНО:

Возможна работа с нумерацией — до максимального количества.

Возможна (опционально) замена «кавычки» на «»» — для текстовых строк в коде.

9 Comments

  1. Infector

    Топорный подход изначально. Свойства объектов чем вам не угодили, если конфигурацию менять нет желания. Если нужно больше измерений — есть регистры сведений, которые позволяют изменить конфигурацию без ущерба для сложности поддержки.

    Reply
  2. dj_serega

    я такое в экселе делаю.

    Reply
  3. AnryMc

    (1) Infector,

    Например:

    — клиент запретил включать изменения в конфигурации.

    — есть ещё базовые конфигурации в которых вообще нельзя писать

    Вообще жизнь такая сложная штука, что всего и не предусмотреть….

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

    Зачем вообще?

    Еще вчера, скорее всего, спросил бы то же самое. Однако нашлась ситуация.

    Источник: http://infostart.ru/public/324775/

    Автор: http://infostart.ru/profile/349973/ Infector

    ПС. Публикация о методе решения конкретной проблемы: Заполнить кучу строк кода по существующему списку, а не о методологии программирования…

    Reply
  4. Infector

    С базовыми конфигурациями, конечно, тяжелее, однако я бы заморочился все-таки с решением, не зашивающим справочную информацию в недра кода. Файлом dbf, например. Клиент-серверный вариант недоступен все-равно.

    — клиент запретил включать изменения в конфигурации.

    Возможный вариант, хотя и не представляю такого на практике. Обычно клиенту все-таки интересно «чтобы работало». Ну и опять же — другие варианты выхода из ситуации в первую очередь

    P.S.: минус не ставлю.

    Reply
  5. AnryMc

    (4) Infector,

    P.S.: минус не ставлю.

    Ставьте. Разрешаю.

    однако я бы заморочился все-таки с решением, не зашивающим справочную информацию в недра кода.

    Ещё раз НАМЕКАЮ. Публикация не о истории решения а о методе уменьшить трудозатраты при создании многих строк кода когда есть список из которого их можно сформировать…

    Reply
  6. palsergeich

    а не проще тоже самое сделать в excel одной формулой?

    Reply
  7. AnryMc

    (6) palsergeich,

    Для этого на компе должен стоять excel (платный продукт). А 1С есть по умолчанию, раз обработка для 1С прогера.

    А если выложить здесь эту формулу — будет ещё лучше…

    Reply
  8. gaglo

    (7) А формулы, по-моему, и ни одной не надо. И Excel необязательно, скажем, что Open Office сгодится…

    Список значений выделяем, копируем из 1С , вставляем в колонку 2 пустой таблицы. Получаем колонку, заполненную значениями Товар1, Товар2, …Товар1000.

    Все ячейки колонки 1 заполняем одинаковым значением:

    СписикЗначений_ТМЦ_Исключения.Добавить(Справочники.Номенклатура.НайтиПоНаименованию(»

    Все ячейки колонки 3 заполняем одинаковым значением:

    «));

    Сохраняем лист в TXT-формате.

    А! Поди, для этого и возможностей редактирования MXL хватит….

    Reply
  9. V.Nikonov

    А если завтра понадобится ваять кодовые строки требующие подстановки из 2-х колонок? Новую обработку ваять?

    Сколько раз удалось воспользоваться этой обработкой?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *