0. ids79 4094 23.11.18 17:44 Сейчас в теме

Использование подсистемы БСП "Заполнение объектов"

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

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. killovolt 314 24.11.18 19:12 Сейчас в теме
Хорошее описание, писал аналогичную статью про заполнение объектов через вызов клиентского метода. Ваше бы описание на тот момент сильно упростило мне реализацию.
2. ids79 4094 04.12.18 10:05 Сейчас в теме
(1) Спасибо. Хотел раньше написать статью, но вот, только сейчас собрался.
3. AnderWonder 21 15.01.19 14:11 Сейчас в теме
В БСП ветки 2.4.5 есть баг, который не позволяет подключить подсистему к регистрам сведений. Нужно поправить функцию ЗарегистрироватьИсточник в модуле ПодключаемыеКоманды:

//Исправление бага БСП - не учитывались регистры сведений
//Источник.ТипСсылкиДанных = Тип(Источник.Вид + "Ссылка." + ОбъектМетаданных.Имя);
Если СтрНайти(Источник.Вид, "РЕГИСТРСВЕДЕНИЙ") Тогда 
     Источник.ТипСсылкиДанных = Тип(Источник.Вид + "НаборЗаписей." + ОбъектМетаданных.
Иначе
    Источник.ТипСсылкиДанных = Тип(Источник.Вид + "Ссылка." + ОбъектМетаданных.Имя);
КонецЕсли;
// Исправление бага БСП
Поручик; +1 Ответить
4. ids79 4094 15.01.19 16:11 Сейчас в теме
(3)Спасибо за дополнение.
5. PLAstic 218 21.05.19 19:13 Сейчас в теме
Хотел бы добавить, что нет ни одного примера команды из формы документа. Там есть нюанс.
Команду мы вызываем из уже открытой формы, но по алгоритму создаётся ещё одна форма и в ней вызывается обработчик команды (если у команды значится, что он в модуле формы). Так вот, этой форме в качестве владельца передаётся наша открытая форма.
Мне требовалось выбрать интерактивно некий документ и передать управление обработчику оповещения. Я указал, что он находится не в модуле формы (ЭтаФорма), а в модуле её владельца (ЭтаФорма.Владелец). Тогда по завершении выбора управление перешло в мою открытую форму в процедуру обработки оповещения.
6. ids79 4094 21.05.19 21:12 Сейчас в теме
(5)
Хотел бы добавить, что нет ни одного примера команды из формы документа

Почему же, первая команда "Команда из формы обработки" как раз такого вида.
Конечно, нужно учитывать, что она выполняется не в контексте формы, из которой вызывается.
7. PLAstic 218 22.05.19 10:23 Сейчас в теме
(6) Сверим код?

	Команда = КомандыЗаполнения.Добавить();
	Команда.Идентификатор = "ЗаполнитьИзУстановкиГСМ";
	Команда.Представление = "Заполнить по расходу ГСМ";
	Команда.Важность = "Важное";
	Команда.ВидимостьВФормах = "ФормаДокументаУпр";  // здесь "ФормаЭлемента" из твоего примера не проходит, это документ
	Команда.МножественныйВыбор = Ложь;
	Команда.РежимЗаписи = "НеЗаписывать";
	Команда.ИзменяетВыбранныеОбъекты = Истина;  // обязательно указание, чтобы блокировать команду без прав. (см.документацию)
	Команда.ИмяФормы = "Форма.ФормаДокументаУпр";  // у меня несколько форм документа - обычная и две управляемые
	Команда.Обработчик = "КомандаЗаполнитьИзУстановкиГСМ";
Показать


Присутствуют неочевидные параметры, которые в примере не были раскрыты. Выяснил отладкой и чтением документации БСП.
Спасибо, что дал стартовый код.
8. ids79 4094 22.05.19 11:21 Сейчас в теме
(7)Параметры "ВидимостьВФормах" и "ИзменяетВыбранныеОбъекты" - описаны в статье. Параметр "ИмяФормы" обязательно указывать только если не указан параметр "Обработчик". Или, если у документа есть обычные формы выдается ошибка?
9. PLAstic 218 22.05.19 11:51 Сейчас в теме
(8) Я предлагаю сравнить с примером из статьи и признать, что это пример не для документа, а для обработки (или даже справочника, раз там "ФормаЭлемента") и добавить в статью пример для документа с описанием всех ваших дополнений. Например, закомментарить параметр "ВидимостьВФормах ", раз он не всегда обязателен, и дать корректное значение в случае, когда он нужен (вместо явно некорректного "ФормаЭлемента").
Ещё неплохо дать бы ссылку на ИТС. Например, https://its.1c.ru/db/bsp302doc#content:35:1:issogl2_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%­BA%D0%B0_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4_%D0%B7%D0%B0%D­0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F
10. ids79 4094 22.05.19 12:58 Сейчас в теме
(9)Название формы - это мелочь, естественно оно должно быть разным при разных вариантах использования. Не думаю, что имеет смысл делать разные варианты с разными названиями форм. В примерах я постарался покрыть большинство различных вариантов использования. Конечно же это не все.

В предыдущем посте я не много напутал. Параметр "ИмяФормы" - это имя формы обработки заполнения, а не имя формы объекта назначения. Можно не заполнять, если форма в обработке одна и указан параметр "Обработчик".

Ссылка в тему, спасибо.
11. inf012 13.06.19 07:35 Сейчас в теме
Здравствуйте. А можно использовать этот механизм для переопределения команды заполнения, а не для создания новой кнопки и команды?
Надо, чтобы выполнилась типовая процедура заполнения и после нее необходим ряд "косметических" действий с ТЧ.
12. sparhh 28.06.19 11:34 Сейчас в теме
Хорошо сделали.
Данная подсистема существенно расширяет возможности ЗаполненияОбъекта.
Добавляет возможность гибко настраивать условия и главное преимущество - красиво ложится на расширения. То есть это развитие идеи внешних обработок в концепции расширений.

Вопрос: есть ли чтото подобное для Регламентных заданий.
Например, если разработать регламентное задание через внешнюю обработку, то появляется возможность задавать расписание и параметризировать например через вторую форму.
Как этот момент решается в расширениях?
13. rukalico 10.10.19 00:01 Сейчас в теме
Пытался по текущей публикации и документации с БСП приделать обработку к документу не получилось.
По комментам вроде кто-то к документу цеплял.. нет ли там какой-то заморочки?
Все сделал по документации, но не взлетает.
14. ids79 4094 10.10.19 10:59 Сейчас в теме
(13)Что конкретно хотите, прикрепить обработку заполнения к документу?
Где размещаете код?
На клиенте или на сервере хотите выполнять?
Код скиньте.
Мало что понятно из Вашего комментария.
15. sparhh 10.10.19 23:34 Сейчас в теме
(14) (13) Присоединяюсь..

Дело вот в чем - тестирую Заполнение документа по указанному механизму.
Цепляю через вариант "в модуле менеджера" обработки, то есть заполнение на клиенте.
При этом в Расширении все работает (!)
Если же делать в самой конфе без расширения, то не работает (!)

То есть вообще не выходит в подменю Заполнение сама команда.
Делаю все по ссылке ИТС. Если можете проверьте ваш же вариант для случая: документ, НЕ расширение, модуль менеджера обработки.
16. sparhh 10.10.19 23:40 Сейчас в теме
(15) Судя по отладке такой вариант может работать только для расширений.. ?...
17. ids79 4094 11.10.19 11:49 Сейчас в теме
(15)Странно, должно работать. А не забыли обработку в нужную подсистему включить?
Пришлите код обработки, попробую посмотреть.
18. sparhh 11.10.19 13:31 Сейчас в теме
Присылать то особо и нечего:

Процедура ПриОпределенииНастроек(Настройки) Экспорт
	
    Настройки.ДобавитьКомандыЗаполнения = Истина;
    Настройки.Размещение.Добавить(Метаданные.Документы.ЗаказКлиента);
	
КонецПроцедуры

Процедура ДобавитьКомандыЗаполнения(КомандыЗаполнения, Параметры) Экспорт

   Команда = КомандыЗаполнения.Добавить();
   Команда.Идентификатор = "Команда3";
   Команда.Представление = "Команда из формы обработки (Ctrl+Shift+D)";
   Команда.Важность = "Обычное";
   Команда.ВидимостьВФормах = "ФормаДокумента";
   Команда.МножественныйВыбор = Ложь;
   Команда.РежимЗаписи = "НеЗаписывать";
   Команда.СочетаниеКлавиш = Новый СочетаниеКлавиш(Клавиша.D, Ложь, Истина, Истина);
   Команда.ИмяФормы = "Форма";
   Команда.Обработчик = "КомандаЗаполненияИзФормыОбработки";
	
КонецПроцедуры
Показать


Этот же код в расширении отрабатывает, а без расширения НЕТ.

В обоих случая обработка включена в подсистему ПодключаемыОтчетыИОбработки.
19. ids79 4094 11.10.19 15:09 Сейчас в теме
(18)Если обработка с командами заполнения создана в основной конфигурации, необходимо запустить на выполнение обработку вспомогательных данных в части базовой функциональности. Для расширений это все делается "на лету" - обновление ВД не требуется.
20. sparhh 12.10.19 22:14 Сейчас в теме
(19) Спасибо огромное!
Получилось, сам упустил этот момент.
21. sparhh 15.10.19 13:34 Сейчас в теме
Все сработало, но остался вопрос: как делать это правильно для варианта "обработка встроена в конфигурацию"?
Вывзывать ОбновлениеВспомогательныхДанных вручную неудобно, расширения не используем.
22. ids79 4094 15.10.19 18:08 Сейчас в теме
(21)Посмотрите, что делает обновление вспомогательных данных и выполняйте это код при запуске системы. Как вариант.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Ведущий программист 1С
Санкт-Петербург
зарплата от 130 000 руб.
Полный день

Программист 1С
Москва
зарплата от 130 000 руб. до 200 000 руб.
Полный день

Бизнес-архитектор 1С, ведущий консультант
Санкт-Петербург
Полный день

Руководитель проектов 1С
Санкт-Петербург
Полный день