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

07.09.19

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

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

Файлы

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

Наименование Скачано Купить файл
(только для физ. лиц)
Заполнение по шаблону - расширения и dt
.rar 42,24Mb
30 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Интерфейс

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

 

 

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

 

 

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

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

 

 

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

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

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

Реализация

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

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

 

Вариант 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 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

15500 руб.

02.09.2020    203920    1124    410    

1025

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    36084    208    104    

197

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

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

16000 руб.

10.11.2023    16599    72    39    

89

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

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    24157    63    28    

92

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

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

9360 руб.

17.05.2024    34929    125    53    

167

SALE! 30%

Инструментарий разработчика WEB-интеграция 1С v8.3 1C v8.2 1C:Бухгалтерия 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x Платные (руб)

Инструмент для генерации OpenApi (Swagger) спецификаций на основании файлов конфигураций 1С. Это консольное и десктопное приложение на языке Rust с полноценным редактором кода, содержащим автозамену и подсвечивание ошибок для быстрого и безошибочного написания документирующего комментария.

18000 12600 руб.

22.11.2024    1881    1    0    

8

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

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

6000 руб.

07.02.2018    107416    249    100    

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

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