Заполняем по шаблону (по умолчанию)

07.09.19

Разработка - Инструментарий разработчика

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование SM По подписке [?] Купить один файл
Заполнение по шаблону - расширения и dt
.rar 42,24Mb
27
27
1 SM
Скачать Купить за 1 850 руб.

Интерфейс

На форме документа/справочника две кнопки Сохранить как шаблон и Заполнить из шаблона.

 

 

По нажатию на кнопку Сохранить как шаблон открывается форма:

 

 

Пользователь вводит наименование шаблона, отмечает нужные реквизиты и нажимает кнопку Сохранить. Настройки записываются в ХранилищеОбщихНастроек в разрезе пользователя и типа текущего документа/справочника. Значения реквизитов сохраняются также в ХранилищеОбщихНастроек в разрезе пользователя, типа документа/справочника и имени шаблона.

Соответственно, при нажатии на кнопку Заполнить из шаблона открывается форма:

 

 

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

Серым цветом выделяются реквизиты объекта возможно неразмещенные на форме.

Команды работают также и из форм списков.

Реализация

Далее речь пойдет о реализации в расширении, но, наверное, будет лишним говорить о том, что то же самое делается и в обычной конфигурации с включенной возможностью изменения.

Рассматриваемая конструкция может быть реализована в двух вариантах.

 

Вариант 1

 

В расширение добавлена одна общая форма, две общие команды и (для красоты) группа команд.

 

 

Для подключения документа/справочника к рассматриваемому механизму, нужно просто указать тип параметра команды. Для этого следует добавить в расширение соответствующий объект, причем только корневой элемент, так как в расширении у добавленного объекта ничего не изменяется, никакие события не перехватываются. Добавление необходимо только для указания типа параметра команды.

 

 
 Код модуля команды:

 

Код модулей команд Сохранить… и Заполнить… отличается только значением параметра ЭтоСохранениеШаблона.

 

Форма заполнения/сохранения в конфигураторе выглядит следующим образом:

 

 

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

 

 
 Код модуля формы с комментариями:

Вариант 2

 

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

У формы устанавливаем свойство АвтоматическоеСохранениеДанныхВНастройках – "Использовать" и расставляем флажки "Сохранение". Платформа сама позаботится о сохранении настроек. Соответственно, код по сохранению настроек не нужен.

 

 

Команды добавляем в форму самого документа. Здесь больше возможностей по размещению кнопок. Можно разместить их, например, только в меню Ещё.

В этом варианте код модуля формы существенно сокращается. Однако могут возникнуть проблемы, если панели формы подключаемого объекта заполняются динамически.

Кроме того, в коде команд уже не нужно проверять, откуда открыта форма сохранения/заполнения: из формы списка или из формы объекта.

 

Следует отметить преимущества и недостатки представленных вариантов.

 

Вариант 1

Плюсы:

1. Простое подключение к документу/справочнику - добавить тип параметра команды и все.

2. Возможность заполнения/сохранения из формы списка. Хотя, на мой взгляд, это скорее недостаток. Дело в том, что глобальные параметризуемые команды размещаются в формах списка автоматически (если в форме списка – объекты одного типа). И обойти этот платформенный сервис не удается.

Минусы:

1. Для того чтобы исключить из заполняемых реквизитов те, которые заполнять не требуется априори, нужно прикручивать дополнительный нетривиальный механизм.

2. При сохранении/заполнении нового объекта платформа требует предварительной его записи. Это также следствие использования команд глобального интерфейса. И это тоже не удается обойти.

 

Вариант 2

Плюсы:

1. Кнопки можно разместить почти в любом разумном месте формы.

2. Для каждого подключаемого объекта легко добавить персональный список незаполняемых реквизитов.

3. Шаблоны можно сохранять из незаписанного в базу нового объекта.

Минусы:

1. Более трудоемкое подключение.Необходимо копировать одну и ту же форму в ветку форм каждого нужного объекта метаданных. Необходимо добавить в форму заполняемого объекта две команды-кнопки.

2. Пользователь может сохранить пустой шаблон.

 

Рассмотренная задача может быть полезной начинающим осваивать особенности работы управляемых форм. Несмотря на простоту, она содержит ряд не совсем очевидных моментов. В частности таких, как:

- передача с клиента на сервер данных владельца текущей формы (тип ДанныеФормыСтруктура);

- программная проверка типа реквизита на доступность в данных формы;

- программная проверка: "А размещен ли реквизит на форме?". Используемый вариант вполне работоспособный, но однозначно достоверного ответа на вопрос не дает. Буду весьма признателен, если ветераны жанра подскажут достойное решение.

 

Расширение первого варианта работоспособно в режиме совместимости 8.3.10 и выше, поскольку в этом релизе появилась возможность добавлять общие команды. Расширение второго варианта работоспособно, начиная с режима совместимости 8.3.6.

Механизм (вариант 2) опробован в интеграционном решении для основных типовых конфигураций. Включался в интегрируемую конфигурацию непосредственно (не через расширение). Отзывы пользователей положительные.

 

В прилагаемом архиве - расширения по обоим вариантам и выгрузки демонстрационной конфигурации "Управляемое приложение" с подключенными расширениями (итого 4 файла).

управляемые формы заполнение по умолчанию шаблон заполнения

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    140943    772    391    

803

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

18000 руб.

06.10.2023    11623    31    6    

61

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

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

5400 руб.

17.05.2024    14117    33    27    

77

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 руб.

10.11.2023    7325    27    4    

51

SALE! %

Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2880 руб.

14.01.2013    181990    1104    0    

876

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    101175    242    97    

304

Инструментарий разработчика Перенос данных 1C Программист Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы. Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение для 1С, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    24526    17    15    

34

Инструментарий разработчика Программист Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    19462    7    8    

42
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. leosoft 166 08.02.18 12:14 Сейчас в теме
А табличные части запоминает в шаблон?
2. mvxyz 325 08.02.18 14:18 Сейчас в теме
Нет, заполнение табличных частей не делал. Сделать, в принципе, можно, но не было такой необходимости.
3. leosoft 166 08.02.18 15:03 Сейчас в теме
Тогда можно было бы забить номенклатуру по конкретному поставщику и
загонять ее по шаблону.
5. AlX0id 08.02.18 16:56 Сейчас в теме
(3)
Обычно в таком случае юзеры тупо копипастят документы )
bugagashenka; obmanOZ; klinval; +3 Ответить
6. mvxyz 325 08.02.18 17:11 Сейчас в теме
(5) В этом случае пользователь сначала должен найти-подобрать, что копировать, а потом очистить ненужные реквизиты. А тут у него сразу шаблон "Основной для Алхимова" или "Запасной для ИноТрейд". Хотя, конечно, дело вкуса.
4. mvxyz 325 08.02.18 15:37 Сейчас в теме
Да, в ряде случаев было бы полезно. Подумаю на досуге.
pavelpribytkin96; +1 Ответить
7. Vasvas05 24 09.02.18 01:52 Сейчас в теме
Хорошая идея
pavelpribytkin96; mvxyz; +2 Ответить
8. Team leader 12 12.02.18 16:18 Сейчас в теме
- В любом случае это лучше чем копипаст, ошибок меньше будет.
pavelpribytkin96; mvxyz; +2 Ответить
9. gigabyte_artur 14.02.18 10:27 Сейчас в теме
Интересный функционал
pavelpribytkin96; mvxyz; +2 Ответить
10. ivanov660 4547 03.04.18 17:42 Сейчас в теме
У меня пару практических вопросов:
1. Есть какие-нибудь проверки на актуальность шаблона? К примеру, пометка на удаление реквизитов, удаленный элемент, не действующие соглашение и т.п.
2. Есть ли возможность администрирования результатов шаблона по всем пользователям?
3. Хотелось бы иметь возможность настроек шаблонов под базы (что можно сохранять, а что нельзя)

Иначе через некоторое время жизни базы могут начаться проблемы в данных.
11. mvxyz 325 03.04.18 23:30 Сейчас в теме
(10)
1. В текущем коде таких проверок не предусмотрено, но их несложно добавить.
2. Шаблоны сохраняются персонально для каждого пользователя, но в принципе можно опять же внести изменения в код и сохранять один набор шаблонов для всех пользователей.
3. Не совсем уловил, что имеется в виду, поскольку ничто не мешает внести необходимые изменения при подключении к конкретной базе.
12. ivanov660 4547 04.04.18 13:47 Сейчас в теме
(11) В каждой базе свой набор объектов (документы, справочники), поэтому проверки будут писаться под каждую базу конкретно, а можно некоторые условия вынести в шаблон. Чтобы использовать одно решение, а матрицу настраивать через конфиг файл что-ли - шаблон для УТ, шаблон для БП и др.
Это мое мнение о возможном развитии вашего решения.
13. mvxyz 325 04.04.18 19:43 Сейчас в теме
(12) Мысль интересная, но на практике имеет место необходимость подпиливать шаблон не под конфиграцию, а под конкреный документ. Как я уже писал, обсуждаемая конструкция использована в интеграционном решении, которое подключается к достаточно блольшому количеству различных конфигураций (УТ10, УТ11, БП, УПП, ERP, УНФ и др.). Под конфигурации ничего не меняли, а вот для интегрируемых документов в форме шаблона делаем реквизит НезаполняемыеРеквизиты с типом Список значений и заполняем его в ПриСозданииНаСервере именами реквизитов соответствующего документа. Потом в процедуре ЗаполнитьСписокРеквизитов выводим только те, которых нет в указанном списке:
Если НезаполняемыеРеквизиты.НайтиПоЗначению(Реквизит.Имя) = Неопределено Тогда
НоваяСтрока = Реквизиты.Добавить();
...
Необходимости в других доработках пока не возникало.
14. ivanov660 4547 05.04.18 13:32 Сейчас в теме
(13) Справочники договор с контрагентами, контрагенты, документы РТУ и др. - есть во всех конфигурациях практически, но также отличаются по составу в зависимости от конфигурации.
15. mvxyz 325 05.04.18 21:17 Сейчас в теме
(14) Так в том и "фишка" предлагаемого механизма, что ему "все равно" какой состав документа/справочника. Он просто выводит для заполнения реквизиты (кроме стандартных) того объекта, к которому подключен.
16. ivanov660 4547 06.04.18 15:42 Сейчас в теме
(15) я с практической стороны применения ограничиваю, т.к. пользователю нельзя давать полную свободу действия, желательно чтобы у него было ограничение и чем оно строже тем лучше.
Если утопизировать фразу "все равно какой состав" , то идеальной конфигурацией можно назвать конфигурацию с одним документом и справочником, но это не работает.
17. mvxyz 325 06.04.18 16:31 Сейчас в теме
(16) Про ограничения я написал в (13). Ограничивать, конечно, необходимо.
Оставьте свое сообщение