Изменить тип реквизита в расширении 1с
Изучая, расширения конфигураций, столкнулся со странной проблемой Вот, пример:
- В основной конфигурации находится справочник «А» и «Реквизит1», ссылающийся на этот справочник
- В расширении «Расш1» добавлен ещё один справочник «Расш1_Б»
- «Реквизит1» справочника «А» импортирован в расширение «Расш1»
- В расширении «Расш1», в «Реквизит1» справочника «А» добавлен тип - справочник «Расш1_Б» из расширения
- В расширении «Расш1», в «Реквизит1» справочника «А» снята галочка «Проверять значение при подключении расширения» (кстати так и не понял сакраментального смысла её наличия - что делает ясно - но зачем это нужно - мне не понято)
Проблема: В режиме «1С Предприятие» «Реквизит1» справочника «А» не может иметь значения ссылки на справочник «Расш1_Б» (хотя в расширении его тип был расширен)
Аналогично:
- В основной конфигурации ввожу определяемый тип «Т» типа справочник «А»
- В основной конфигурации в справочник «А» добавляю «Реквизит2» типа «Т»
- В расширение «Расш1» импортирую определяемый тип «Т» и «Реквизит2» справочника «А»
- В расширении «Расш1» расширяю тип определяемого типа «Т» типом «Расш1_Б»
- В расширении «Расш1» снимаю галочку "Проверять значение при подключении расширения" у свойства "Типа" определяемого типа «Т»
Проблема: В режиме «1С Предприятие» «Реквизит2» не может иметь значения ссылки на справочник «Расш1_Б» (хотя в расширении его тип определяемый тип «Т» был расширен)
Что я делаю не так? Или в расширениях конфигураций нельзя расширять типы импортированных элементов метаданных типами из расширения?
Впрочем, я расширил в расширении «Реквизит1» справочника «А» типом справочника «В» из основной конфигурации - и всё равно не могу присваивать Реквизиту1 значения справочника «В» (если расширять типами из расширения – всё то же самое – не расширяются).
Ну, если добавить в расширение «Расш1» в справочник «А» «Реквизит3» - то ему можно назначить все доступные справочники и можно будет устанавливать их значения.
Но, вот, задать определяемый тип реквизитам в расширении нельзя, хотя у импортированного «Реквизит2» в расширении будет стоять Определяемый тип «Т», импортированный из основной конфигурации.
Проверено на платформах 1С Предприятие следующих версий: 8.3.13.1513, 8.3.15.1700, 8.3.16.942 (beta), режимы совместитмости соответсующие (в т.ч. у расширения)
прочитал три строки в (0) и шокирован.
Не понимаю, что там не понятно написано - даже базу приложил - всё по пунктам разложил.
Но хорошо, если в двух словах:
Почему я в расширении не могут для импортированного в расширение реквизита основной конфигурации расширить его тип новым типом?
То есть, пусть у меня есть регистр, у него есть измерение "Партия", тип которого состоит из нескольких документов партий, а в расширении хочу расширить состав этих типов ещё одним документом - но не могу это сделать - тип не расширяется - ссылку добавленного в него типа документа я этому измерению присвоить не могу.
Правда в приложенной конфигурации задача для простоты абстрагирована до нескольких справочников!
(1) Подскажите как вы вышли из ситуации, на сегодняшний день платформа 8.3.13.1513 ситуация такая же.
У тебя в расширении в свойство Тип установлено как проверяемое свойство при подключении , Можно снять галочку с этого проверяемого свойства тогда должно заработать
(2)Сделал, как вы указали, выставил нужный мне тип и снял галочку. Однако после обновления указанный реквизит в упор не видит, что у него добавен новый тип к ранее созданным.
Вообщем, я так понимаю, изменить тип в расширении не получится? перепробовал все галочки, настройки, ничего не помогает. Пришлось внести изменения в конфигурации
Получилось разобраться? просто столкнулся с такой же проблемой.
Мне тоже интересно, удалось ли кому решить данный вопрос и на каком релизе?
«При заимствовании составных типов будут заимствованы только примитивные типы (Строка, Число и т. д.), а если в составном типе таких типов нет, то будет заимствован только один тип (первый по порядку) и связанный с ним объект конфигурации. Однако, при заимствовании параметрической команды, не происходит заимствование параметра команды и, как следствие, объекта конфигурации, определяющий тип параметра. В случае необходимости следует самостоятельно выполнить заимствование объекта (или объектов, если тип составной) конфигурации, определяющего тип параметра команды и затем указать этот объект в качестве типа параметра заимствованной команды.» Аналогичная картина с определяемыми типами.
Но проблему это по прежнему не решает. Пока в расширении полная копия составного типа то ни на что не ругается. Как только добавляем еще свой документ то все: "Значение контролируемого свойства Тип у объекта ОпределяемыйТип.ВладелецФайлов не совпадает со значением в расширяемой конфигурации".
Отключение проверки значения убирает ошибку и даже пишет, что расширение подключено, но состав составного типа остается как в основной конфигурации.
Пытался побороть аналогичную проблему на 8.3.12.1685
Меня очень часто спрашивают, как добавить таблицу к документу или справочнику?
И действительно, как сделать такую задачу не усложняя дальнейшее обновление конфигурации? И вроде есть доп. реквизиты и доп. сведения, но почему же они не могут принимать тип таблицы значений?
В итоге чаще всего используется 2 варианта:
1. Простой способ. Прямо в объекте добавляется таблица, а затем либо программно либо жестко(вручную) выводится на форму.
Минусы. Обновление конфигурации будет требовать соблюдения изменений и повышенной внимательности, чтобы не потерять эти изменения.
Плюсы. Самый простой вариант для разработки, к таблице значений можно обращаться без танцев с бубном, например через запросы.
2. Нормальный вариант, но тоже с доработкой конфигурации.
Добавляется объект с таблицей значений и реквизитом с ссылкой на объект родитель, данная таблица значений выводится, к примеру, через расширение конфигурации на форму основного объекта.
Плюсы. Простое обновление, к таблице значений можно обращаться, например через запросы.
Минусы. Требуется больше предусмотреть различные ограничения на созданный объект а, следовательно, требует определенных знаний. Возможно, потребуется добавление роли\ей и настройки профилей пользователей.
Есть, конечно, еще другие варианты к примеру с хранилищем, но статья не об этом…
Статья, о том, как все-таки хранить таблицу значений в доп. реквизитах, ну или в доп. сведениях.
Уже более полугода держу в голове этот способ, но ни разу его не применял. Вот, наконец, добрались руки. Я не утверждаю, что никто не придумывал данный способ, но на подобное решение я не натыкался. Заранее скажу, вариант не идеален, и сгодится только под определенные задачи.
Самый главный минус это то, что будет использоваться строка неограниченной длины а, следовательно, с поиском в ней будут определенные сложности. Самый главный плюс, объекты в конфигурации не правятся.
Пример продемонстрирую на конфигурации Документооборот 2.1.6.8. Буду использовать дополнительный реквизит, но можно использовать дополнительные сведения. Весь код будет написан в Расширении конфигурации.
Задача:
Сразу говорю задачка больше шуточная для демонстрации метода. Например, нам понадобилось добавить табличную часть «Адекватность контактных лиц», она должна присутствовать в справочнике Контрагенты и содержать колонки: Контактное лицо, Совет (некая рекомендация по общению с контактным лицом), Тип контакта.
1 Добавляем доп. реквизит и называем его к примеру «ТЗ_АдекватностьКонтактныхЛиц».
Я этот реквизит делаю общим для всех видов контрагентов. Тип его будет строка неограниченной длины.
2 Создаем Расширение конфигурации и Дорабатываем форму Контрагентов.
Добавляем реквизиты формы:
— «ДопТЗ» тип ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения
— ТЗ_АдекватностьКонтактныхЛиц тип ТаблицаЗначений:
КонтактноеЛицо тип СправочникСсылка.КонтактныеЛица
ТипКонтакта тип Строка
Совет тип Строка
Добавляем на форму страницу «ГруппаАдекватностьКонтактныхЛиц» и снимаем видимость.
В данную группу выводим «ТЗ_АдекватностьКонтактныхЛиц»
3 Пишем код.
ПриСозданииНаСервере. Необходимо считать сам доп реквизит напомню мы его обозвали «ТЗ_АдекватностьКонтактныхЛиц», далее прочитать его значение и построить по его значению таблицу значений.
Значение доп реквизита я предлагаю хранить в формате JSON, у кого более старая платформа можно использовать XML.
ПриОткрытии. Программно прячем доп. реквизит. Он хранит JSON, поэтому пользователю особо неинтересен.
ПередЗаписьюНаСервере. Если ТЗ изменилась сохраняем ее в виде строки JSON в доп. реквизит.
Добавили (заимствовали) форму Заказа в расширение. Вывели на заимствованную форму добавленные в расширении реквизиты. Все хорошо…
Выходит новый релиз конфигурации поставщика, где у документа добавлен КакойТоНовыйРеквизит, который выведен на форму документа в конфигурации поставщика.
Если после обновления расширение успешно подключится, то, как минимум, в режиме Предприятия на форме документа не будет этого нового реквизита.
И с этим надо что-то делать:)
Дело в том, что платформа использует сразу 3 формы:
- Форму из основной конфигурации
- Сохраненную форму
- Форму из расширения.
12 минут видео, 100% полезности :)
Профессиональная доработка 1С не должна вызывать проблем с обновлениями
Мы подготовили новый курс, который рассказывает не только про расширения, но и про другие инструменты для доработки типовых конфигураций.
- Как дорабатывать типовые конфигурации внешними средствами
- Как разрабатывать и использовать расширения
- Оптимальные приемы обновления
- Все, что экономит, страхует, помогает.
Musthave для внедренцев.
Комментарии / обсуждение (70):
Добрый день!
Предполагаю, что дело в правах доступа к добавленному реквизиту. Если у пользователя нет прав на просмотр реквизита, то на форме в пользовательском режиме он не отобразится.
Извиняюсь, пока писал сам разобрался.
Добрый день!
Спасибо.
Хорошая новость, потому что пути к данным действительно слетают, это мешает использовать расширения на практике.
Добавил форму документа в расширение. На форме есть дерево значений, добавляю новую колонку но система почему то не дает изменить ни название ни тип колонки.
Подскажите пожалуйста, что нужно сделать, чтобы система дала изменить название и тип колонки?
Так что попробуйте платформу посвежее использовать.
Пожалуйста!
Интересного обучения!
Ольга, спасибо за ответ. Да, платформа 8.3.15.
Мне этот реквизит совсем не нужен (реализовала задачу по другому), и добавляла я только его одного, поэтому вариант, который я написала (удалила сам реквизит “тфПараметрыНазначения” и добавила его в расширение обратно) мне подошёл. Проверила работу в данной форме, вроде ничего не поломалось.
Конечно, если бы я добавила много реквизитов, а потом захотела бы удалить один, то получается при таком подходе (удалении реквизита и добавлении его обратно) пришлось бы остальные добавленные мной реквизиты обратно добавлять, что не удобно, но всё таки правильней, а вариант с видимостью на мой взгляд не очень корректный, так как вызывает в последующем непонимание зачем был добавлен данный реквизит и наверно затрачивает дополнительный объем памяти.
Спасибо ещё раз за ответ, теперь буду думать дважды когда буду добавлять свои реквизиты на форму в расширении. Надеюсь, правда, разработчики продумают этот момент.
Добрый день!
У меня не воспроизвелось. Возможно, зависит от типа объекта, который Вы пытаетесь добавить в расширение. Или проблема конкретного релиза платформы.
Добрый день!
В тестовую конфигурацию загрузил расширение, в котором в документе добавил реквизит.
При помощи обработки MD82Exp.epf из Конвертации данных выгружаю структуру конфигурации в xml-файл. В полученном файле новый реквизит из расширения присутствует.
А что если ситуация интереснее?! Вы только добавили реквизиты в только что созданную форму расширения и они не показываются. В чем дело если сохраненная форма не причем?
Добрый день!
Возможно, дело в правах доступа.
Добрый день!
В конструкторе формы добавляю Объект в расширение:
После этого на форму можно вынести созданный в расширении реквизит:
Добрый день. Спасибо за ответ. После того как добавляешь объект в расширение, с формы сразу же пропадают реквизиты, которые не добавлены заимствованием в расширение. И в режиме предприятия форма выглядит после этого ровно так как в расширении, без половины реквизитов. Научите добавлять скрины сюда
2. На этой странице нельзя добавлять скриншоты, только на страницах Мастер-группы.
Конфигурация Зарплата и управление персоналом КОРП, редакция 3.1 (3.1.10.50), платформа 8.3.14.1565
Читайте также: