Когда-то была необходимость создать отчет, который бы «интерпретировал» данные на основании информации, которой нет в базе.
Изменять конфигурацию ради одного отчета было нецелесообразно, и поэтому в коде отчета пришлось формировать много параметров типа «Список значений», содержащих ссылки на сотни элементов справочников, введенных пользователями.
Так как писать мне это было лень — появилась эта простая обработка.
Задается шаблон кода, например:
СписикЗначений_ТМЦ_Исключения.Добавить(Справочники.Номенклатура.НайтиПоНаименованию(«*****»));
Берется справочник «Номенклатура», отбирается по нужным параметрам и выводится в таблицу, которая копируется в обработку…
В результате работы получается «блок» кода:
СписикЗначений_ТМЦ_Исключения.Добавить(Справочники.Номенклатура.НайтиПоНаименованию("Товар_1"));
СписикЗначений_ТМЦ_Исключения.Добавить(Справочники.Номенклатура.НайтиПоНаименованию("Товар_2"));
...
СписикЗначений_ТМЦ_Исключения.Добавить(Справочники.Номенклатура.НайтиПоНаименованию("Товар_1000"));
Готов параметр, например, для передачи в запрос, содержащий 1000 наименований из справочника.
ПРАВИЛА РАБОТЫ:
Задается «шаблон кода» — та строка, которая будет копироваться… Она содержит «шаблон для замены» — та часть строки которая будет заменяться значениями из списка.
ВАЖНО:
Вставлять таблицу значений в текстовое поле на обработке с первой строки и ТОЛЬКО в ПЕРВУЮ колонку.
ДОПОЛНИТЕЛЬНО:
Возможна работа с нумерацией — до максимального количества.
Возможна (опционально) замена «кавычки» на «»» — для текстовых строк в коде.
Топорный подход изначально. Свойства объектов чем вам не угодили, если конфигурацию менять нет желания. Если нужно больше измерений — есть регистры сведений, которые позволяют изменить конфигурацию без ущерба для сложности поддержки.
я такое в экселе делаю.
(1) Infector,
Например:
— клиент запретил включать изменения в конфигурации.
— есть ещё базовые конфигурации в которых вообще нельзя писать
Вообще жизнь такая сложная штука, что всего и не предусмотреть….
Зачем вообще?
Еще вчера, скорее всего, спросил бы то же самое. Однако нашлась ситуация.
Источник:http://infostart.ru/public/324775/
http://infostart.ru/profile/349973/ Infector
Автор:
ПС. Публикация о методе решения конкретной проблемы: Заполнить кучу строк кода по существующему списку, а не о методологии программирования…
С базовыми конфигурациями, конечно, тяжелее, однако я бы заморочился все-таки с решением, не зашивающим справочную информацию в недра кода. Файлом dbf, например. Клиент-серверный вариант недоступен все-равно.
— клиент запретил включать изменения в конфигурации.
Возможный вариант, хотя и не представляю такого на практике. Обычно клиенту все-таки интересно «чтобы работало». Ну и опять же — другие варианты выхода из ситуации в первую очередь
P.S.: минус не ставлю.
(4) Infector,
Ставьте. Разрешаю.
Ещё раз НАМЕКАЮ. Публикация не о истории решения а о методе уменьшить трудозатраты при создании многих строк кода когда есть список из которого их можно сформировать…
а не проще тоже самое сделать в excel одной формулой?
(6) palsergeich,
Для этого на компе должен стоять excel (платный продукт). А 1С есть по умолчанию, раз обработка для 1С прогера.
А если выложить здесь эту формулу — будет ещё лучше…
(7) А формулы, по-моему, и ни одной не надо. И Excel необязательно, скажем, что Open Office сгодится…
Список значений выделяем, копируем из 1С , вставляем в колонку 2 пустой таблицы. Получаем колонку, заполненную значениями Товар1, Товар2, …Товар1000.
Все ячейки колонки 1 заполняем одинаковым значением:
СписикЗначений_ТМЦ_Исключения.Добавить(Справочники.Номенклатура.НайтиПоНаименованию(»
Все ячейки колонки 3 заполняем одинаковым значением:
«));
Сохраняем лист в TXT-формате.
А! Поди, для этого и возможностей редактирования MXL хватит….
А если завтра понадобится ваять кодовые строки требующие подстановки из 2-х колонок? Новую обработку ваять?
Сколько раз удалось воспользоваться этой обработкой?