Как добавить реквизит в типовую не добавляя

Рассмотрим задачу, когда в типовую недоработанную конфигурацию в документ нужно добавить новое поле – реквизит. Рассмотрим на примере конфигурации ЗУП, добавим реквизит Внутренний номер в документ Начисление зарплаты и взносов.

Открываем Конфигуратор (рис. 1):

Если окно Конфигурация слева не появилось, нажимаем КонфигурацияОкно конфигурации  или Ctrl + Shift + C (рис. 2): 

В окне Конфигурация находим ДокументыНачислениеЗарплаты. То, что нам нужен именно этот документ, можно проверить так: открыть документ НачислениеЗарплаты (двойной щелчок мышки) и проверить свойство Синоним (рис. 3). Так же свойства документа можно посмотреть, выделив строку с документом в окне Конфигурация и нажав правой кнопкой мышки + Свойства, или выделив строку с документом в окне Конфигурация и нажав Alt + Enter (рис. 4):

Рис. 3. Синоним документа

Рис. 4. Свойства документа

Пока мы не можем вносить изменения в документ, это видно по значку (замок с желтым кубом) справа от названия документа в окне Конфигурация (рис. 4). Если подвести мышку к этому значку появится надпись Объект поставщика не редактируется. Чтобы добавить возможность редактирования этого документа нажимаем Конфигурация – Поддержка – Настройка поддержки… (рис. 5):

Открывается окно Настройка поддержки. Нажимаем Включить возможность изменения, на вопрос отвечаем Да (рис. 6):

На следующий вопрос отвечаем ОК (рис. 7):

Затем в окне Настройка поддержки находим документ НачислениеЗарплаты, щелкаем два раза мышкой на Не редактируется и в открывшемся окне Настройка правил поддержки выбираем Объект поставщика редактируется с сохранением поддержки (рис. 8):

Далее в окне Настройка поддержки находим форму документа НачислениеЗарплаты (НачислениеЗарплаты – Формы — ФормаДокумента) и аналогично изменяем с Не редактируется на Объект поставщика редактируется с сохранением поддержки.

Затем закрываем окно Настройка поддержки и в окне Конфигурация находим документ НачислениеЗарплаты (рис. 3) и приступаем к добавлению реквизита Внутренний номер. Переходим на вкладку Данные, добавляем новый Реквизит с именем пр_ВнутреннийНомер, Синоним заменяем на Внутренний номер, остальные свойства оставляем как есть: Тип Строка, Длина 10 (рис. 9):

Далее добавляем новый реквизит на форму документа. Переходим на вкладку Формы, открываем форму документа. Разместим новое поле Внутренний номер рядом с Комментарием и Ответственным: перетаскиваем пр_ВнутреннийНомер в ГруппаКомментарийОтветственный (рис. 10):

Далее сохраняем и обновляем конфигурацию: меню КонфигурацияСохранить конфигурацию и КонфигурацияОбновить конфигурацию базы данных (рис. 11):

При обновлении появится вопрос, отвечаем Принять (рис. 12):

Теперь можно запустить конфигурацию в режиме Предприятие и посмотреть изменения.

Автор: Дина Королева.

Подписывайтесь на канал
«Полезный 1С»

В телеграм канале — наш практический опыт, бизнес-кейсы и способы повышения эффективности компании, которые мы опробовали внутри группы Neti.

.

Возврат к списку

Речь пойдет о новых возможностях по кастомизации конфигурации в платформе 1С:Предприятие 8.3.9.

Чистая доработка

Сегодня мы рассмотрим внешние инструменты для доработки типовых решений.

Это позволит вносить достаточно серьезные изменения, НЕ снимая конфигурацию с поддержки.

Например:

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

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

Это решается с помощью расширений конфигурации на платформе 8.3.9.

Видео

В видео мы рассмотрим:

  • Доработку формы типового документа УТ 11 – создание новых реквизитов в табличной части и их заполнение
  • Добавление дополнительной проверки при проведении документа.

Всего 10 минут – смотрите прямо сейчас (откроется в нормальном разрешении):

Хотите больше?

Skip to content

1С, как добавить, изменить реквизит формы объекта через расширение

Как добавить, изменить реквизит формы через расширение

В новых версиях платформы, при изменении типовых форм, стандартные и новые реквизиты (добавленные в расширение) по умолчанию недоступны: их нельзя изменить, ни добавить в форму. Дело в том, что немного изменился механизм добавления реквизитов в расширение, для изменения типовых форм объектов.

Вам необходимо выполнить следующие действия:

  • В дереве метаданных нажать правой кнопкой мыши на реквизит -> «Добавить в расширение» -> выбрать расширение;

  • Перейти в расширение конфигурации, открыть форму, в которую планируем добавить (или изменить) реквизит -> в области справа выделить реквизит -> нажать правую кнопку мыши -> «Добавить реквизит»;

Почему в новой платформе изменился данный механизм?

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

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

Связанные статьи

Дополнительные реквизиты документа.

Я
   JuixyJes

12.08.19 — 11:16

Добрый день! Мне нужно как то в доп реквизиты типового документа добавить ссылку на нетиповой справочник. может кто подсказать?

  

Партнерская программа EFSOL Oblako

   НадюшаЯ

1 — 12.08.19 — 11:20

План видов характеристик — тип значения

   JuixyJes

2 — 12.08.19 — 11:32

(1) А по подробнее?

   yzimin

3 — 12.08.19 — 11:34

(2) начни с себя

   JuixyJes

4 — 12.08.19 — 11:34

(1) Просто они добавлены через режим предприятия

   JuixyJes

5 — 12.08.19 — 11:35

(4) и я еще ни разу не добавляла их ни в один документ(

   JuixyJes

6 — 12.08.19 — 11:36

(3) кто бы говорил)) Кроме никнейма нет ничего

   JuixyJes

7 — 12.08.19 — 11:38

Давайте расскажу всё ТЗ по этой теме. Нужно создать доп реквизиты у типового документа Приходный кассовый ордер, в последствии заполнить их из нетипового документа. 3 из 5 доп реквизитов — ссылка на нетиповой справочник.

   yzimin

8 — 12.08.19 — 11:40

в конфигураторе тип посмотреть предлагать или нет? хотя (1) уже всё сказал

   НадюшаЯ

9 — 12.08.19 — 11:40

(2) а куда подробнее, заходите в конфигуратор и добавляете свои нетиповые справочники в тип значение для плана видов характеристик ДополнительныеРеквизитыИСведения

   JuixyJes

10 — 12.08.19 — 11:46

(9) Дак там в значении стоит тип ЛюбаяСсылка, значит мои не типовые справочники тоже должны туда попадать

   НадюшаЯ

11 — 12.08.19 — 11:48

(10) ну так мы то не знаем где и что у вас, простите, стоит)

   JuixyJes

12 — 12.08.19 — 11:50

(11) это типовой ТипЗначения для планов вида характеристик ДополнительныеРеквизитыИСведения

   НадюшаЯ

13 — 12.08.19 — 11:52

(12) А что тогда не получается?

   JuixyJes

14 — 12.08.19 — 11:54

(13) Нет там многих типов ссылок

   JuixyJes

15 — 12.08.19 — 11:54

+(14) ощущение, что какие-то предопределенные моменты имеются, если что это УТ 11 Проф

   unregistered

16 — 12.08.19 — 11:56

(10) >> там в значении стоит тип ЛюбаяСсылка.

Не пи*дите! Это невозможно. Платформа пока так не умеет.

Тип значения характеристик не может быть ЛюбаяСсылка.

(12) Опять гонево! Вы куда-то явно не туда смотрите. Или не понимаете о чём пишете.

   unregistered

17 — 12.08.19 — 12:00

Проверьте, что всё сделано согласно инструкции:

https://its.1c.ru/db/bsp302doc#content:68:1

   JuixyJes

18 — 12.08.19 — 12:12

   JuixyJes

19 — 12.08.19 — 12:15

(16) и к тому же мне типовой механизм изменять нельзя

   НадюшаЯ

20 — 12.08.19 — 12:20

(18) это не то

(19) это очень плохо, т.к через расширение это вроде бы тоже не поменять, а значит добро пожаловать в дивный мир извращений.

   hhhh

21 — 12.08.19 — 12:31

(18) это тип у значения. А вам нужно «Состав» у плана видов характеристик

   JuixyJes

22 — 12.08.19 — 12:51

(21) Это в конфигураторе или же в предприятии тоже возможно?

   НадюшаЯ

23 — 12.08.19 — 12:52

(22) это возможно только в конфигураторе

   JuixyJes

24 — 12.08.19 — 12:53

(23) и это изменит типовой механизм, правильно понимаю?

   НадюшаЯ

25 — 12.08.19 — 12:54

(24) смотря что вы подразумеваете под «изменит типовой механизм». Нужно будет включить возможность изменения конфигурации и конкретно для данного ПВХ и поменять его состав.

   JuixyJes

26 — 12.08.19 — 12:58

(25) конфигурация останется на поддержке при этом, нооо, при обновлении не слетит ли то, что я наворотила?

   НадюшаЯ

27 — 12.08.19 — 13:00

(26) конфигурация будет на поддержке, но уже измененная, т.е при обновлении нужно будет на это обращать внимание. И да есть вероятность что при обновлении все затрется, если невнимательно обновить.

   unregistered

28 — 12.08.19 — 13:36

(18) Сходите что ли на курсы по платформе. Если вы не в состоянии отличить регистр сведений от плана видов характеристик.

Тип значения ресурса «Значение» регистра (то, что вы на картинке прислали) должен быть Характеристика.ДополнительныеРеквизитыИСведения. И никакой другой.

А менять вы должны тип значения характеристик в плане видов характеристик ДополнительныеРеквизитыИСведения. Вот там состав типов и надо расширять, дополнив его типами своих самописных объектов. Можно ли это делать в расширении — не знаю, не пробовал. Если нельзя, то придётся в конфигурации включать возможность изменения (если у вас уже есть самописные объекты, то он уже должен быть включен). Снимать с поддержки не нужно. При обновлении необходимо будет следить, чтобы случайно не затереть внесенные изменения.

PS Позвали бы вы специалиста, пока базу не грохнули своим творчеством.

   JuixyJes

29 — 12.08.19 — 14:04

(28) в ней нет данных, поэтому вольна делать то, что посчитаю нужным)

   JuixyJes

30 — 12.08.19 — 14:05

+(29) Исключительно тестовые.

   НадюшаЯ

31 — 12.08.19 — 14:19

ну в статье с ИТС все в деталях и для дела и для обучения

   JuixyJes

32 — 14.08.19 — 09:26

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

Функция ЗаписатьЗначениеДопРеквизита(Ссылка, Свойство, Значение)

    
    Попытка

        ОбъектСсылки = Ссылка.ПолучитьОбъект();

        
        ПараметрыОтбора = Новый Структура;

        ПараметрыОтбора.Вставить(«Свойство»,Свойство);

        Массив = ОбъектСсылки.ДополнительныеРеквизиты.НайтиСтроки(ПараметрыОтбора);

        
        Если Массив.Количество() = 0 Тогда

            НовоеСвойство = ОбъектСсылки.ДополнительныеРеквизиты.Добавить();

            НовоеСвойство.Свойство = Свойство;

            НовоеСвойство.Значение = Значение;

        Иначе

            Массив[0].Значение = Значение;

        КонецЕсли;    

        
        ОбъектСсылки.Записать();    

    Исключение

        Возврат Ложь;

    КонецПопытки

    
КонецФункции

Функция ЗаполнитьДР(Док,ДокН);

    ЗаписатьЗначениеДопРеквизита(Док,ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(«Номер проживания»,истина), Строка(ДокН.НомерПроживания));

    ЗаписатьЗначениеДопРеквизита(Док,ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(«Комната проживания»,истина), ДокН.КомнатаПроживания);

    ЗаписатьЗначениеДопРеквизита(Док,ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(«Койка проживания»,истина), ДокН.КойкаПроживания);

КонецФункции

&НаКлиенте

Процедура НачислениеВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)

    Если Поле.Имя = «НачислениеЧек» Тогда

        СЗ = Новый СписокЗначений;

        СЗ.Добавить(«Наличные»);

        СЗ.Добавить(«Карта»);                    

        СЗ.Добавить(«Банк»);

        Строка=Элементы.Начисление.ТекущиеДанные;

        Ответ= Вопрос(«Выберите тип оплаты»,СЗ);

        Если Ответ= «Наличные» Тогда

            Док = создатьдокПКО(Строка.ФизЛицо,Строка.ДокументНачисления,Строка.Сумма);

            ЗаполнитьДР(Док,Строка.ДокументНачисления);

            ОткрытьЗначение(Док);

        ИначеЕсли Ответ = «Карта» Тогда

            Док = создатьдокЭО(Строка.ФизЛицо,Строка.ДокументНачисления,Строка.Сумма);

            ОткрытьЗначение(Док);

        ИначеЕсли Ответ = «Банк» Тогда

            СЗ.Очистить();

            СЗ.Добавить(«Выгрузка»);

            СЗ.Добавить(«Новый»);

            Ответ2 = Вопрос(«Использовать выгрузку или создать новый?»,СЗ);

            Если Ответ2 = «Новый» Тогда

                Док = создатьдокБДС(Строка.ФизЛицо,Строка.ДокументНачисления,Строка.Сумма);

                ОткрытьЗначение(Док);

            Иначе

                ОткрытьФорму(«Обработка.ЖурналДокументовБезналичныеПлатежи.Форма.ФормаСписка»);

            КонецЕсли;

        КонецЕсли;

    КонецЕсли;    

КонецПроцедуры

   JuixyJes

33 — 14.08.19 — 11:27

И никто не подскажет, что я сделала не так?

   НадюшаЯ

34 — 14.08.19 — 11:30

а что не получается?

   JuixyJes

35 — 14.08.19 — 11:34

(34) Ну вроде бы я задаю значение, записываю документ, потом открываю его, а доп реквизиты пустуют, не написано в них ничего.

   НадюшаЯ

36 — 14.08.19 — 11:36

(35) Отсутствие проверяете путем отсутствия на форме документа? или вы можете затем просмотреть ТЧ доп реквизитов и она пустая?

   JuixyJes

37 — 14.08.19 — 11:46

(36) Да, отсутствием на форме. Сейчас попробую посмотреть состав ТЧ доп реквизитов

   JuixyJes

38 — 14.08.19 — 11:48

   НадюшаЯ

39 — 14.08.19 — 11:49

(38) свойство пустое

   JuixyJes

40 — 14.08.19 — 11:52

(39) тоесть свойство не задается моим методом, правильно понимаю?

   JuixyJes

41 — 14.08.19 — 11:55

ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(«Комната проживания»,истина)

Вот так я задавала свойство. А доп реквизит создавала не программно а в режиме предприятия

   НадюшаЯ

42 — 14.08.19 — 11:57

ну значит оно называется подругому, очевидно же

   НадюшаЯ

43 — 14.08.19 — 11:58

да и вообще есть же поле имя, которое для разработчика, оно как раз должно и использоваться в таких случаях

   JuixyJes

44 — 14.08.19 — 11:58

(42) А может искать не по наименованию а по реквизиту?

   JuixyJes

45 — 14.08.19 — 11:59

(43) А как его использовать?

   JuixyJes

46 — 14.08.19 — 12:01

(43) Я знаю где оно находится, но как его использовать пока не разобралась

   НадюшаЯ

47 — 14.08.19 — 12:01

НайтиПоРеквизиту

   НадюшаЯ

48 — 14.08.19 — 12:01

ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту(«Имя», ТвоеИмя);

Мало ли

  

JuixyJes

49 — 14.08.19 — 12:08

(48) Господи, я вас обожаю!

Содержание:

  1. Добавляем реквизит
  2. Добавление кнопки
  3. Добавление группы
  4. Добавляем табличную часть 1С

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

В этой статье я постараюсь собрать все основные методы создания реквизитов на форме. 

1.     Добавляем реквизит

Начнем с самого простого. Мы добавили реквизит «МоеРасширение_НаименованиеНаАнглийском» в справочник контрагентов.

                Для того, чтобы вывести его на форму програмно, пишем код процедуры «МоеРасширение_ПриСозданииНаСервереПосле» (Отказ, Стандартная Обработка).

                НовыйЭлемент = Элементы.Добавить («МоеРасширение_НаименованиеНаАнглийском», Тип(«ПолеФормы»));

                НовыйЭлемент.ПутьКДанным                = «Объект. МоеРасширение_НаименованиеНаАнглийском»;

                НовыйЭлемент.Вид                                     = ВидПоляФормы.ПолеВвода;

                НовыйЭлемент.ТолькоПросмотр         = Ложь;

                НовыйЭлемент.Видимость                      = Истина;

                НовыйЭлемент.Доступность                  = Истина.

Теперь мы добавим на форму реквизит, которого нет в конфигурации. Например, выведем на форму текущую задолженность: реквизит «МоеРасширение_ТекущаяЗадолженность».

Сначала создадим реквизит:

                ДобавляемыеРеквизиты           = Новый Массив;

                НовыйРеквизит = Новый РеквизитФормы(«МоеРасширение_ТекущаяЗадолженность»),      Новый ОписаниеТипов («Число», «Текущая задолженность»);

                ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);

                ЭтаФорма.ИзменитьРеквизиты(ДобавляемыеРеквизиты).

Затем выведем его на форму таким же образом, как и добавленный в конфигурацию реквизит, разница только в поле «ПутьКДанным» – здесь мы пишем наименование только что созданного реквизита:

                НовыйЭлемент = Элементы.Добавить(«МоеРасширение_НаименованиеНаАнглийском», Тип(«ПолеФормы»));

                НовыйЭлемент.ПутьКДанным                = «МоеРасширение_ТекущаяЗадолженность»;

                НовыйЭлемент.Вид                                     = ВидПоляФормы.ПолеВвода;

                НовыйЭлемент.ТолькоПросмотр         = Истина;

                НовыйЭлемент.Видимость                      = Истина;

                НовыйЭлемент.Доступность                  = Истина.

Теперь переместим наши реквизиты под поле «Полное наименование». Для этого надо определить на форме место добавления, в нашем случаем – над группой «ГруппаКолонки»:

Элементы.Переместить(Элементы.МоеРасширение_НаименованиеНаАнглийском,Элементы.ГруппаКолонки.Родитель,Элементы.ГруппаКолонки);

Элементы.Переместить(Элементы.МоеРасширение_ТекущаяЗадолженность,Элементы.ГруппаКолонки.Родитель,Элементы.ГруппаКолонки).

Получаем результат:

Для того, чтобы отрабатывались процедуры событий для этих реквизитов, можем указать действия:

                Элементы. МоеРасширение_ТекущаяЗадолженность.УстановитьДействие(«ПриИзменении», «МоеРасширение_РасшифроватьЗадолженность»). 

2.     Добавление кнопки

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

                НоваяКоманда = Команды.Добавить(«МоеРасширение_ПоказатьОСВ»);

                НоваяКоманда.Действие = «МоеРасширение_ПоказатьОСВ»;

                НоваяКоманда.Заголовок = «Показать ОСВ».

ВАЖНО!! В поле действие пишется имя процедуры.

Теперь добавляем саму кнопку:

                НоваяКнопка = Элементы.Добавить(«МоеРасширение_Кнопка_ПоказатьОСВ», Тип(«КнопкаФормы»));

                НоваяКнопка.ИмяКоманды = «МоеРасширение_ПоказатьОСВ». 

3.     Добавление группы

Для добавления группы переместим кнопку к полю «Текущая задолженность». На этом этапе нам надо создать группу и переместить в нее уже созданные наши элементы.

Создаем группу и помещаем ее под наименованием. Затем переносим в нее реквизит «Текущая задолженность» и кнопку «Показать ОСВ»:

                НоваяГруппа =Элементы.Добавить(«МоеРасширение_ГруппаЗадолженность», Тип(«ГруппаФормы»));

                НоваяГруппа.Вид = ВидГруппыФормы.ОбычнаяГруппа;

                НоваяГруппа.Заголовок = «»;

                НоваяГруппа.ОтображатьЗаголовок = Ложь;

                НоваяГруппа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда;

                Элементы.Переместить(НоваяГруппа,Элементы.ГруппаКолонки.Родитель,Элементы.ГруппаКолонки);

                Элементы.Переместить(Элементы.МоеРасширение_ТекущаяЗадолженность,НоваяГруппа);

                Элементы.Переместить(Элементы.МоеРасширение_Кнопка_ПоказатьОСВ,НоваяГруппа). 

4.     Добавляем табличную часть 1С

Добавим к контрагенту табличную часть 1С «МоеРасширение_Номенклатура» с реквизитом «Номенклатура» и выведем ее на форму.

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

ВАЖНО! При создании реквизитов таблицы родителем указывается реквизит формы «Табличная часть».

                НоваяТабличнаяЧасть = Элементы.Добавить(«МоеРасширение_ТаблицаНоменклатура», Тип(«ТаблицаФормы»));

                НоваяТабличнаяЧасть.ПутьКДанным = «Объект.МоеРасширение_Номенклатура»;

                НовыйРеквизитТабличнойЧасти = Элементы.Добавить(«МоеРасширение_Номенклатура», Тип(«ПолеФормы»),НоваяТабличнаяЧасть);

                НовыйРеквизитТабличнойЧасти.Заголовок = «Номенклатура»;

                НовыйРеквизитТабличнойЧасти.Вид = ВидПоляФормы.ПолеВвода;

                НовыйРеквизитТабличнойЧасти.ПутьКДанным = «Объект.МоеРасширение_Номенклатура.Номенклатура».

 

Используя этот базовый набор, можно изменить любую форму программно. И при обновлениях форма всегда будет подстраиваться под выбранный алгоритм. Если форма поменяется глобально, то расширение выдаст ошибку. Тогда, переписав несколько строчек кода, мы снова получим рабочую форму. Это быстрее и проще, чем каждый раз анализировать диалоговую форму.

Специалист компании «Кодерлайн» 

Максим Федоров

По мере использования 1С, у многих предприятий возникает потребность создать для какого-либо объекта информационной базы реквизит, позволяющий хранить дополнительную информацию, например, добавление дополнительного специфического, характерного для вашей продукции описания номенклатуры в текстовом виде или же в виде числовых характеристик. Для удовлетворения данной потребности есть два пути либо заказать доработку конфигурации у фирмы 1С:Франчайзи, либо воспользоваться механизмом добавления дополнительных реквизитов.

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

Дополнительные реквизиты можно найти на форме объекта – Ещё – Изменить состав дополнительных реквизитов или же через НСИАдминистрирование – Общие настройки, как показано на рисунке 1. На данном рисунке видно, что сначала необходимо проставить флажок для включения интересующей нас опции. Так же видно, что помимо реквизитов, есть и дополнительные сведения. С точки зрения пользователя они отличаются тем, что доп. реквизиты вынесены на форму, а сведения вызываются отдельной формой специальной командой из кнопки Ещё на форме объекта.

НСИАдминистрирование – Общие настройки

Рисунок 1 – Настройка дополнительных реквизитов и сведений через Общие настройки

На рисунке 2 можно увидеть окно, в котором можно увидеть список доп. реквизитов, а также возможность создать их.

Дополнительные реквизиты


Рисунок 2 – Окно «Дополнительные реквизиты»

На рисунке 3 изображено окно непосредственного создания нового реквизита.

Пользователю доступны следующие настройки:

1.     Наименование – Имя реквизита, которое видит пользователь

2.     Для разработчиков, Имя – Уникальное имя реквизита, по которому разработчик сможет получатьизменять значения, модифицировать элемент формы связанный с доп. реквизитом.

3.     Тип значения:

  • Строка – доступна настройка длины строки, настройки элемента ввода элемента (однострочноемногострочное поле ввода)
  • Число – доступны настройки длины числа, точности, флажок неотрицательное, представления нуля и отрицательных чисел.
  •  Булево – Просто флажок.
  • Дата – Есть возможность выбора формата даты, состава даты (дата, время, дата и время), а также представления пустой даты
  • Составной тип данных – Пользователь сам выбирает тип данных при вводе.
  • Дополнительные значения – При выборе данного типа значения задаются на вкладке «значения», рисунок 3.
  • Пользователь – значение из справочника пользователи.

4.     Настройки видимости, доступности и обязательности заполнения элемента формы.

Окно создания дополнительного реквизита

Рисунок 3 – Окно создания дополнительного реквизита

Добавим дополнительные реквизиты для справочника Организации, рисунок 4, 5. Дополнительные реквизиты, в зависимости от структуры элемента формы, добавляются на закладку «Дополнительно» или в подраздел «Дополнительные реквизиты» в порядке создания реквизитов.

Добавленные реквизиты

Рисунок 4 – Добавленные реквизиты

Элементы формы дополнительных реквизитов

Рисунок 5 – Элементы формы дополнительных реквизитов

Теперь попробуем применить новые элементы справочника Организации на примере отчета «Универсальный отчет» и выведем их на экран. Как видно из рисунка 6, к новым реквизитам (у данных реквизитов после названия в скобках указан справочник, которому они принадлежат) можно обратиться «через точку».

Использование новых реквизитов при настройке варианта отчета

Рисунок 6 – Использование новых реквизитов при настройке варианта отчета

Вывод дополнительных реквизитов на экран с помощью универсального отчета

Рисунок 7 – Вывод дополнительных реквизитов на экран с помощью «универсального отчета»

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

Нужна помощь с 1С?

Мы можем взять на себя ваш бухгалтерский учет. Вам не нужно будет думать о расчете налогов и сдаче отчетности. Мы будем вести финансовую ответственность за ошибки. Мы — команда профессионалов, а не один бухгалтер, мы не заболеем, не пропадем и не уйдем внезапно в отпуск. Сосредоточьтесь на управлении. А учет и отчетность мы возьмем на себя. Чтобы получить бесплатную консультацию по автоматизации своего бизнеса Вы можете пообщаться с нашими специалистами в офисе компании или позвонив по телефону: 8-800-707-01-02.

Сопровождение 1С

Наш специалист

Владислав Быков

Специалист отдела разработки


Чем мы можем быть вам полезны?

Файлы материала
Описание

Новый реквизит на форму, можно добавить программно через расширение, при этом не забирать саму форму в расширение (это удобно тем, что последующие обновления внешнего вида формы не смогут сломать наше расширение). В типовых конфигурациях, данный способ можно реализовывать в процедуре “ПриСозданииНаСервере” общего модуля “УправлениеСвойствами” .

Программное добавление реквизита на форму

Для примера, стоит задача в конфигурации ЗУП 3.1 добавить реквизит «Способ отражения зарплаты в БУ» для позиции штатного расписания в группе “Дополнительные данные”.

Способ отражение в позиции штатного расписания

Создадим расширение и выполним следующую последовательность действий:

  1. Добавим в расширение справочник “Штатное расписание” и создадим реквизит “АВ_СпособОтражения” с типом данных “СправочникСсылка.СпособыОтраженияЗарплатыВБухУчете”

добавление реквизита АВ_СпособОтражения в расширение

2. Заберем в расширение процедуру “ПриСозданииНаСервере” из общего модуля “УправлениеСвойствами”, программно добавим поле в форму и свяжем его с реквизитом объекта добавленного на первом шаге.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

&После(«ПриСозданииНаСервере»)

Процедура АВ_ПриСозданииНаСервере(Форма, ДополнительныеПараметры)

Если Форма.ИмяФормы = «Справочник.ШтатноеРасписание.Форма.ФормаЭлемента» Тогда

#Область ДобавлениеЭлементовФормы

ИмяГруппы = «ГруппаДополнительныеРеквизиты»;

ГруппаФормы = Форма.Элементы.Найти(ИмяГруппы);

Если ГруппаФормы <> Неопределено Тогда

ИмяЭлемента = «АВ_СпособОтражения»;

Если Форма.Элементы.Найти(ИмяЭлемента) = Неопределено Тогда

ЭлементФормы = Форма.Элементы.Добавить(ИмяЭлемента, Тип(«ПолеФормы»), ГруппаФормы);

//Вместо Добавить() можно использовать метод Вставить()

//в 4-й параметре указывается Элемент перед которым должен быть вставлен новый элемент.

//ЭлементФормы = Форма.Элементы.Вставить(ИмяЭлемента, Тип(«ПолеФормы»), ГруппаФормы, Форма.Элементы.Найти(«ИмяСледующегоЭлементаФормы»));

ЭлементФормы.Вид = ВидПоляФормы.ПолеВвода;

ЭлементФормы.ПутьКДанным = «Объект.АВ_СпособОтражения»;

//ЭлементФормы.МногострочныйРежим = Истина;

//ЭлементФормы.Высота = 3;

КонецЕсли;

КонецЕсли;

#КонецОбласти

КонецЕсли;

КонецПроцедуры

Образец расширения для скачивания в начале описания.

Программное добавление реквизита в табличную часть формы

Например, таким же способом, добавим в табличную часть “Рабочие места” реквизит “Спецжиры” с типом “Булево”.

Результат спецоценки условий труда с  колонкой спецжиры

Добавление реквизита в табличную часть

&После(«ПриСозданииНаСервере»)

Процедура АВ_ПриСозданииНаСервере(Форма, ДополнительныеПараметры)

Если Форма.ИмяФормы = «Документ.РезультатыСпецоценкиУсловийТруда.Форма.ФормаДокумента» Тогда

#Область ДобавлениеЭлементовФормы

ИмяЭлемента = «АВ_ЕстьСпецжиры»;

Если Форма.Элементы.Найти(ИмяЭлемента) = Неопределено Тогда

ЭлементФормы = Форма.Элементы.Добавить(«Спецжиры», Тип(«ПолеФормы»), Форма.Элементы.РабочиеМеста);        

ЭлементФормы.Вид = ВидПоляФормы.ПолеФлажка;

ЭлементФормы.ПутьКДанным = «Объект.РабочиеМеста.АВ_ЕстьСпецжиры»;

//ЭлементФормы.ТолькоПросмотр = Истина;

КонецЕсли;

#КонецОбласти

КонецЕсли;

КонецПроцедуры

В результате получим табличную часть с новой колонкой.

Программное добавление табличной части на форму

Аналогично добавим табличную часть “АВ_ВредныеФакторы” на форму справочника “Профессии”.

Табличная часть добавленная через расширение

Добавление табличной части на форму

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

&После(«ПриСозданииНаСервере»)

Процедура АВ_ПриСозданииНаСервере(Форма, ДополнительныеПараметры)

Если Форма.ИмяФормы = «Справочник.ПрофессииРабочих.Форма.ФормаЭлемента» Тогда

#Область ДобавлениеЭлементовФормы

ИмяГруппы = «ГруппаДополнительныеРеквизиты»;

ГруппаФормы = Форма.Элементы.Найти(ИмяГруппы);

Если ГруппаФормы <> Неопределено Тогда

ИмяЭлемента = «АВ_ВредныеФакторы»;

Если Форма.Элементы.Найти(ИмяЭлемента) = Неопределено Тогда   

ЭлементФормыТаблица = Форма.Элементы.Добавить(ИмяЭлемента, Тип(«ТаблицаФормы»), ГруппаФормы);  

ЭлементФормыТаблица.ПутьКДанным = «Объект.АВ_ВредныеФакторы»;

ЭлементФормы = Форма.Элементы.Добавить(«ВредныйФактор», Тип(«ПолеФормы»), ЭлементФормыТаблица);

ЭлементФормы.Вид = ВидПоляФормы.ПолеВвода;

ЭлементФормы.ПутьКДанным = «Объект.АВ_ВредныеФакторы.ВредныйФактор»;    

КонецЕсли;

КонецЕсли;

#КонецОбласти

КонецЕсли;

КонецПроцедуры

Связь реквизитов формы с элементами формы

Кроме того, реквизиты формы можно создавать программно и связывать их с элементами формы

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

#Область ДобавлениеРеквизитовФормы

// Массив для новых реквизитов

ДобавляемыеРеквизиты = Новый Массив;

// Опишем ревизиты формы

Реквизит_РабочееМесто = Новый РеквизитФормы(«АВ_РабочееМесто», Новый ОписаниеТипов(«СправочникСсылка.РабочиеМестаОхраныТруда»), , «Рабочее место»);

// Заполним массив после описания реквизитов формы

ДобавляемыеРеквизиты.Добавить(Реквизит_РабочееМесто);

// Добавим новые реквизиты в форму

Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);

#КонецОбласти

#Область ДобавлениеЭлементовФормы

...

#КонецОбласти

#Область ЗаполнениеДанных

Форма.АВ_РабочееМесто = Форма.Объект.АВ_РабочееМесто;

#КонецОбласти


Расширения, Типовые приемы, Шаблоны и заготовки

Понравилась статья? Поделить с друзьями:
  • Ифнс 7811 по санкт петербургу реквизиты для
  • Как добавить реквизиты компании в битрикс24
  • Ифнс 7816 по санкт петербургу реквизиты для
  • Как долго компания abro на российском рынке
  • Ифнс 7840 по санкт петербургу реквизиты для