Опытные программисты 1С в основном добавляют какие либо реквизиты на форму программно, это касается в первую очередь типовых конфигураций в которые вносятся изменения. Так как в этом случае гораздо проще потом производить обновление, сравнивать конфигурации. Поэтому это должен уметь каждый даже самый начинающий 1С -ник. Тем более что сделать это достаточно просто, в предыдущих статьях я уже затрагивал эту тему, рассказывал про программное добавление команд, сегодня же попробуем поработать с табличной частью документа, а именно добавить новый реквизит ТЧ программно, использовать будем управляемые формы.
Программное добавление колонок в ТЧ управляемой формы
Что бы на первых порах не запутаться я возьму в качестве примера простенький созданный мной документ «Поступление» у которого есть табличная часть, со следующими реквизитами «Номер», «Наименование», Количество» и «Цена».
Давайте программно добавим еще один реквизит скажем «Комментарий». Для этого необходимо через конфигуратор открыть событие «При создании на сервере».
И в эту процедуру добавить следующий код.
// добавим реквизит в табличную часть
МассивРеквизитов = Новый Массив;
МассивРеквизитов.Добавить(Новый РеквизитФормы("Комментарий", Новый ОписаниеТипов("Строка"), "Объект.Товары", "Комментарий", Ложь));
ИзменитьРеквизиты( МассивРеквизитов );
Эл = Элементы.Добавить("Колонка1", Тип("ПолеФормы"), Элементы.Товары);
Эл.Вид = ВидПоляФормы.ПолеВвода;
Эл.ПутьКДанным = "Объект.Товары.Комментарий";
Сохраняем изменения и проверяем что получилось, и видим что в табличной части появился еще один реквизит.
Это программный реквизит который создается в момент создания документа, в конфигураторе вы его не увидите.
Таким образом можно добавить реквизит табличной части в любой конфигурации 1С.
Очень важный момент, в таком варианте внесенные данные в эту колонку не будут сохраняться в базе.
Я уже писал об общем принципе программного добавления элементов на управляемую форму, теперь напишу конкретно о том, как добавить колонку табличной части или таблицы значений.
Итак, у нас есть справочник «Тест» с табличной частью «Тест», в табличной части присутствуют реквизиты «Тест1» и «Тест2», а нам нужно добавить еще один реквизит — «Тест3» и показать его на форме.
Выглядит это приблизительно так:
&НаСервере Процедура ДобавитьКолонкуНаСервере() нРеквизиты = Новый Массив; нРеквизиты.Добавить(Новый РеквизитФормы(«Тест3», Новый ОписаниеТипов(«Строка»), «Объект.Тест», «Тест3», Истина)); ИзменитьРеквизиты(нРеквизиты); нЭлемент = Элементы.Добавить(«Тест3», Тип(«ПолеФормы»), Элементы.Тест); нЭлемент.Вид = ВидПоляФормы.ПолеВвода; нЭлемент.ПутьКДанным = «Объект.Тест.Тест3»; КонецПроцедуры |
Не думаю, что приведенный код нуждается в комментариях, но на всякий случай скажу, что первые три строки создают новый реквизит типа «Строка» — тут важно указать путь к создаваемому реквизиту — третий параметр.
Точно также можно добавить колонку любой таблице значений (не табличной части) — в этом случае нужно убрать часть «Объект.» из кода.
Следующие три строки добавляют саму колонку на форму.
На этом все, надеюсь данная статья Вам помогла.
Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Загрузка…
При разработке решений возникает необходимость добавить реквизит формы, состав и типы которых зависят от данных. Например при построении динамических деревьев с периодами, или при выводе контактной информации и т.д.
Содержание
- Задача
- Добавление реквизитов
- Удаление реквизитов
- Добавление реквизита табличной части
- Добавление реквизита с типом Произвольный
Задача
Для наглядности разберем простой пример, в котором можно было обойтись только элементами формы, но мы создадим и реквизиты.
Есть некая конфигурация, в форме элемента справочника Номенклатура необходимо программно создавать реквизиты формы и элементы к ним:
- ЯчейкаХранения, тип СправочникСсылка.ЯчейкиХранения;
- ТекущийОстаток, тип Число.
Элементы объединить в группу с горизонтальной группировкой. На текущий момент форма имеет следующий вид:
Добавление реквизитов
В обработчике формы ПриСозданииНаСервере() опишем код, который разбивается на 3 этапа:
- Описание и создание реквизитов формы;
- Создание элементов формы, объединение в группу без отображения;
- Заполнение данных.
Ниже приведен готовый код, код снабжен комментариями и разбит на области для лучшего понимания
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) #Область ДобавлениеРеквизитовФормы // Массив для новых реквизитов ДобавляемыеРеквизиты = Новый Массив; // Опишем ревизиты формы Реквизит_ЯчейкаХранения = Новый РеквизитФормы("ЯчейкаХранения", Новый ОписаниеТипов("СправочникСсылка.ЯчейкиХранения"), , "Ячейка"); Реквизит_ТекущийОстаток = Новый РеквизитФормы("ТекущийОстаток", Новый ОписаниеТипов("Число", , , Новый КвалификаторыЧисла(10, 3)), , "Остаток"); // Для наглядности заполним массив после описания реквизитов формы ДобавляемыеРеквизиты.Добавить(Реквизит_ЯчейкаХранения); ДобавляемыеРеквизиты.Добавить(Реквизит_ТекущийОстаток); // Добавим новые реквизиты в форму ИзменитьРеквизиты(ДобавляемыеРеквизиты); #КонецОбласти #Область ДобавлениеЭлементовФормы // Горизонтальная группа без отображения на форме ГруппаФормы = Элементы.Добавить("Группа_СправочныеДанные", Тип("ГруппаФормы")); ГруппаФормы.Вид = ВидГруппыФормы.ОбычнаяГруппа; ГруппаФормы.Отображение = ОтображениеОбычнойГруппы.Нет; ГруппаФормы.ОтображатьЗаголовок = Ложь; ГруппаФормы.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная; // Элементы НовыйЭлемент = Элементы.Добавить("ЯчейкаХранения", Тип("ПолеФормы"), ГруппаФормы); НовыйЭлемент.ПутьКДанным = "ЯчейкаХранения"; НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлемент.ТолькоПросмотр = Истина; НовыйЭлемент = Элементы.Добавить("ТекущийОстаток", Тип("ПолеФормы"), ГруппаФормы); НовыйЭлемент.ПутьКДанным = "ТекущийОстаток"; НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлемент.ТолькоПросмотр = Истина; #КонецОбласти #Область ЗаполнениеДанных // Имитируем заполнение данных ЭтаФорма.ЯчейкаХранения = ПредопределенноеЗначение("Справочник.ЯчейкиХранения.Распаковка"); ЭтаФорма.ТекущийОстаток = 12; #КонецОбласти КонецПроцедуры
После выполнения приведенного кода форма будет выглядеть так:
Удаление реквизитов
Для удаления необходимо передать массив содержащий пути реквизитов в качестве второго параметра метода формы ИзменитьРеквизиты().
#Область УдалениеРеквизитовФормы // Массив удаляемых реквизитов УдаляемыеРеквизиты = Новый Массив; УдаляемыеРеквизиты.Добавить("ЯчейкаХранения"); УдаляемыеРеквизиты.Добавить("ТекущийОстаток"); // Удалим реквизиты формы ИзменитьРеквизиты( , УдаляемыеРеквизиты); #КонецОбласти
Внимание!!! Удалять можно только реквизиты созданные программно.
Добавление реквизита табличной части
Добавление реквизита и элемента формы для табличной части почти ничем не отличается, необходимо только указать путь «Объект.<ИмяТабличнойЧасти>». Ниже пример добавления реквизита Ячейка в ТЧ Комплектация.
#Область ДобавлениеРеквизитаТЧ // Массив для новых реквизитов ДобавляемыеРеквизиты = Новый Массив; // Опишем ревизиты формы Реквизит_Ячейка = Новый РеквизитФормы("Ячейка", Новый ОписаниеТипов("СправочникСсылка.ЯчейкиХранения"), "Объект.Комплектация", "Ячейка"); // Для наглядности заполним массив после описания реквизитов формы ДобавляемыеРеквизиты.Добавить(Реквизит_Ячейка); // Добавим новые реквизиты в форму ИзменитьРеквизиты(ДобавляемыеРеквизиты); НовыйЭлемент = Элементы.Добавить("КомплектацияЯчейка", Тип("ПолеФормы"), Элементы.Комплектация); НовыйЭлемент.ПутьКДанным = "Объект.Комплектация.Ячейка"; НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; #КонецОбласти
Добавление реквизита с типом Произвольный
В одной из задач стало необходимо добавить реквизит с типом Произвольный, но ни СП, ни интернеты ответа не дали. В итоге через несколько попыток было найдено решение
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("Реквизит", Новый ОписаниеТипов("")));
Внимание!!! Данные добавленного реквизита сохраняться в ИБ не будут.
Опытные программисты 1С в основном добавляют какие либо реквизиты на форму программно, это касается в первую очередь типовых конфигураций в которые вносятся изменения. Так как в этом случае гораздо проще потом производить обновление, сравнивать конфигурации. Поэтому это должен уметь каждый даже самый начинающий 1С -ник. Тем более что сделать это достаточно просто, в предыдущих статьях я уже затрагивал эту тему, рассказывал про программное добавление команд, сегодня же попробуем поработать с табличной частью документа, а именно добавить новый реквизит ТЧ программно, использовать будем управляемые формы.
Программное добавление колонок в ТЧ управляемой формы
Что бы на первых порах не запутаться я возьму в качестве примера простенький созданный мной документ «Поступление» у которого есть табличная часть, со следующими реквизитами «Номер», «Наименование», Количество» и «Цена».
Давайте программно добавим еще один реквизит скажем «Комментарий». Для этого необходимо через конфигуратор открыть событие «При создании на сервере».
И в эту процедуру добавить следующий код.
Сохраняем изменения и проверяем что получилось, и видим что в табличной части появился еще один реквизит.
Это программный реквизит который создается в момент создания документа, в конфигураторе вы его не увидите.
Таким образом можно добавить реквизит табличной части в любой конфигурации 1С.
Очень важный момент, в таком варианте внесенные данные в эту колонку не будут сохраняться в базе.
Как в 1С добавлять на форму списка различные колонки
Любой документ в 1с имеет определенную форму. Если нам необходимо ее изменить, например добавить для видимости колонку, то сделать это можно следующим способом:
1) Заходим в документ и в правом верхнем углу нажимаем на кнопку «Еще».
2) В появившемся списке выбираем «Изменить форму».
3) В открывшейся окне настройки формы проверяем проставленные «V» — возможно у нужного поля галочка не стоит.
Если ее нет, то проставляем и нажимаем «Ок» (Для примера добавим в «Тип»).
Также можно расположить колонки в нужно порядке. Для этого повторно заходим в «Настройка формы» (п.1, 2) и воспользуемся синими стрелочками. Нужно выделить строчку, которую нужно переместить и нажимаем на нужную стрелочку («Вверх», «Вниз» в зависимости от того куда его нужно переместить колонку на форме- правее или левее).
Для примера переместим «Тип» сразу за колонкой «Номенклатура».
Если в списке нет нужного реквизита, то можно воспользоваться кнопкой «Добавить поля», но это работает не всегда — там где возможно кнопка будет активна.
Для примера выведем на форму «Вид номенклатуры». Для этого открываем «Настройка формы» (п.1, 2), выбираем строчку «Номенклатура» и нажимаем «Добавить поля».
В появившемся списке ставим галочку возле «Вид номенклатуры» и нажимаем «ОК».
В списке «Настройка формы» появится соответствующая строчка. Нажимаем «ОК».
Текстовое примечание в документах 1С
Подходит для
Bерсия для печати
При оформении документов закупок, продаж, а также внутренних складских документов у пользователей часто возникает необходимость оставлять произвольные текстовые примечания. Для этого в документах как правило есть поле Комментарий .
Но что делать если примечание должно относиться не ко всему документу, а к конкретной строке товаров? И что делать, если это примечание необходимо указать не только на форме документа, но и вывести в печатные формы? Например, для работников склада, у которых вообще нет доступа в 1С.
Именно для решения озвученных проблем и предназначена эта разработка. В первую очередь она добавляет колонку Примечание в таблицу товаров заказов и документов товародвижения:
- заказ клиента,
- заказ поставщику,
- заказ на перемещение,
- приобретение товаров и услуг,
- реализация товаров,
- сборка товаров,
- перемещение товаров.
Посмотрим на примере заказа клиента (для остальных все аналогично).
Добавлены печатные формы с выводом примечания.
Примечание можно заполнить как вручную, так и автоматически:
Можно заполнить его значением дополнительного реквизита номенклатуры, выбранной ячейкой хранения (для справочного адресного хранения), штрихкодом или складом.
Зачем склад в примечании
Как известно, одним документом можно оформить отгрузку сразу с нескольких складов. Представьте, что у вас в накладной пара десятков товарных позиций, которые необходимо набрать на нескольких складах. Какой именно товар откуда брать? Непонятно. А если в отдельной колонке будет информация о складе-отправителе, это сильно упростит задачу. Если предварительно перед печатью накладной еще и отсортировать табличную часть документа по складу, то работа кладовщика упростится в разы.
Для корректной работы расширения необходимо отключить безопасный режим.
В отличие от типовых, печатные формы с примечаниями можно распечатать из непроведенного документа.
При разработке форм нередко возникает необходимость добавить реквизит формы, кнопку или элемент формы. Но если их добавлять из конструктора, то это неоправданно усложняет обновление конфигурации и увеличивает риск возникновения проблем после обновления. Поэтому гораздо лучше, хоть и немного дольше, добавлять реквизиты на форму программно.
Для добавления реквизитов удобно либо создать процедуру и вызывать ее из обработчика ПриСозданииНаСервере, либо использовать специальный общий модуль РаботаСФормамиПереопределяемый.
Пример добавления реквизитов на форму:
&НаСервере Процедура ДополнитьЭлементыФормы() МассивРеквизитов = Новый Массив; РеквизитОткрытаИзОбработкиЛаборатории = Новый РеквизитФормы("ОткрытаИзОбработкиЛаборатории", Новый ОписаниеТипов("Булево")); РеквизитРезультат = Новый РеквизитФормы("РезультатАнализа", Новый ОписаниеТипов("Строка")); МассивРеквизитов.Добавить(РеквизитОткрытаИзОбработкиЛаборатории); МассивРеквизитов.Добавить(РеквизитРезультат); ИзменитьРеквизиты(МассивРеквизитов); КонецПроцедуры
Пример добавления кнопок и элементов на форму:
&НаСервере Процедура ДополнитьЭлементыФормы() НоваяКоманда = ЭтаФорма.Команды.Добавить("ЗагрузкаДанных"); НоваяКоманда.Действие = "ЗагрузкаДанных"; НовыйЭлемент = Элементы.Добавить("ЗагрузитьДанные", Тип("КнопкаФормы"), Элементы.РезультатКОбработкеКоманднаяПанель); НовыйЭлемент.ИмяКоманды = "ЗагрузкаДанных"; НовыйЭлемент.Заголовок = "Загрузка данных"; КонецПроцедуры &НаКлиенте Процедура ЗагрузкаДанных(Команда) КонецПроцедуры
Пример указания процедуры-обработчика для событий формы:
&НаСервере Процедура ДополнитьЭлементыФормы() УстановитьДействие("ОбработкаОповещения", "ОбработкаОповещенияФормы"); КонецПроцедуры
Пример создания поля и добавления процедуры-обработчика для элемента формы:
&НаСервере Процедура ДополнитьЭлементыФормы() ЭлементНазначениеЗаявки = Элементы.Вставить("НазначениеЗаявки", Тип("ПолеФормы"), Элементы.ГруппаЛево, Элементы.ГруппаОрганизация); ЭлементНазначениеЗаявки.ПутьКДанным = "Объект.НазначениеЗаявки"; ЭлементНазначениеЗаявки.Вид = ВидПоляФормы.ПолеПереключателя; ЭлементНазначениеЗаявки.Заголовок = "Тип заявки на"; ЭлементНазначениеЗаявки.УстановитьДействие("ПриИзменении", "ИзменениеНазначенияЗаявки"); КонецПроцедуры &НаКлиенте Процедура ИзменениеНазначенияЗаявки(Элемент) //Обработчик команды КонецПроцедуры
Пример программного добавления реквизитов на форме:
МассивРеквизитов = Новый Массив; //Добавляем три реквизита формы МассивРеквизитов.Добавить(Новый РеквизитФормы("ОтображатьСвязи", Новый ОписаниеТипов("Булево"))); МассивРеквизитов.Добавить(Новый РеквизитФормы("ОтображатьРабочуюГруппу", Новый ОписаниеТипов("Булево"))); МассивРеквизитов.Добавить(Новый РеквизитФормы("ОтображатьВизы", Новый ОписаниеТипов("Булево"))); //Добавление реквизита в табличную часть "Файлы" МассивРеквизитов.Добавить(Новый РеквизитФормы("Актуальность", Новый ОписаниеТипов("Булево"), "Файлы", "Актуальность", Истина)); ИзменитьРеквизиты(МассивРеквизитов);
Программное добавление реквизитов в табличную часть. |
Я |
18.06.19 — 11:08
Доброе утро.
На форму в общем модуле добавляю реквизиты в табличную часть «Товары» программно. В самом документе в табличной части реквизиты в конфигураторе добавлены. Добавляю абсолютно одинаково, но почему-то характеристика добавляется, а номенклатура нет.
На что обратить внимание, где может быть ошибка?
Если Форма.ИмяФормы = «Документ.НашДокумент.Форма.ФормаДокумента» тогда
ДобавляемыеРеквизиты = Новый Массив;
//реквизиты ТЧ Товары
Номенклатура = Новый РеквизитФормы(«Номенклатура», Новый ОписаниеТипов(«СправочникСсылка.Номенклатура»), «Объект.Товары», «Номенклатура»);
Характеристика = Новый РеквизитФормы(«Характеристика», Новый ОписаниеТипов(«СправочникСсылка.ХарактеристикиНоменклатуры»), «Объект.Товары», «Характеристика»);
//Заполним массив после описания реквизитов формы
ДобавляемыеРеквизиты.Добавить(Номенклатура);
ДобавляемыеРеквизиты.Добавить(Характеристика);
//Добавим новые реквизиты в форму
Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
//добавление на форму элементов ТЧ
Номенклатура = Форма.Элементы.Добавить(«Номенклатура», Тип(«ПолеФормы»), Форма.Элементы.Товары);
Номенклатура.ПутьКДанным = «Объект.Товары.Номенклатура»;
Номенклатура.Вид = ВидПоляФормы.ПолеВвода;
Характеристика = Форма.Элементы.Добавить(«Характеристика», Тип(«ПолеФормы»), Форма.Элементы.Товары);
Характеристика.ПутьКДанным = «Объект.Товары.Характеристика»;
Характеристика.Вид =ВидПоляФормы.ПолеВвода;
КонецЕсли;
1 — 18.06.19 — 11:10
Замечу, что в отладчике в «Форма.Объект.Товары» оба реквизита присутствуют после обхода этих строк.
А вот уже в предприятии номенклатуры нет, а характеристика есть.
2 — 18.06.19 — 11:12
(1) Да собственно и перед выводом самим в самом конце события «при открытии формы» в отладчике оба реквизита присутствуют.
3 — 18.06.19 — 11:24
Почисти кэш
4 — 18.06.19 — 11:33
(3) Чистил, не помогло. На всякий случай еще раз почистил, снова не помогло.
5 — 18.06.19 — 11:40
>> В самом документе в табличной части реквизиты в конфигураторе добавлены
Зачем добавлять реквизиты формы, если они уже есть в метаданных. По идее ты вообще ошибку должен получить
6 — 18.06.19 — 11:41
(5) А как правильно добавить на форму реквизиты?
Ошибок никаких не получаю.
7 — 18.06.19 — 11:46
(6) Зачем это делать программно? Просто добавьте их в редакторе формы.
Код подобный вашему может быть использован для упрощения поддержки, когда непосредственное редактирование форм не рекомендуется. Но «НашДокумент» явно не тот случай.
8 — 18.06.19 — 11:47
(7) «НашДокумент» это абстрактное название документа. Документ типовой. Как и Номенклатура и Характеристика это абстрактные названия реквизитов.
А сама задача вполне реальна. И требование заключается в том, что все реквизиты на форму добавляются в расширении программно.
9 — 18.06.19 — 11:48
+(5)ТОже не поняла. Достаточно же элементы добавить.
10 — 18.06.19 — 11:48
Вот этого должно хватить, если реквизиты в ТЧ есть:
//добавление на форму элементов ТЧ
Номенклатура = Форма.Элементы.Добавить(«Номенклатура», Тип(«ПолеФормы»), Форма.Элементы.Товары);
Номенклатура.ПутьКДанным = «Объект.Товары.Номенклатура»;
Номенклатура.Вид = ВидПоляФормы.ПолеВвода;
Характеристика = Форма.Элементы.Добавить(«Характеристика», Тип(«ПолеФормы»), Форма.Элементы.Товары);
Характеристика.ПутьКДанным = «Объект.Товары.Характеристика»;
Характеристика.Вид =ВидПоляФормы.ПолеВвода;
11 — 18.06.19 — 11:53
(10) Убрал добавление самих реквизитов. Оставил только добавление элементов.
Все осталось как прежде — один реквизит добавляется, второй нет.
12 — 18.06.19 — 11:54
(7) (10) Вы были правы, добавление реквизитов само по себе излишне. Уберу это в коде.
Но проблема с выводом на форму так и не решена.
13 — 18.06.19 — 11:55
(8) Прикольно. Каков уровень абстракции: реквизит Номенклатура в ТЧ Товары !!!
(10) +1
(8) Проверь права, возможно на абстрактный добавленный тип их забыли установить. Вряд ли у тебя там добавлены абстрактные функциональные опции, но тоже проверь.
14 — 18.06.19 — 11:56
(13) Запускаю с полными правами.
15 — 18.06.19 — 11:58
(14) проверь ещё раз ПутьКДанным. Хотя при ошибке по идее исключение должно выдаваться
16 — 18.06.19 — 12:00
Ещё имена переменных поменяй, вместо
Номенклатура = Форма.Элементы.Добавить(«Номенклатура», Тип(«ПолеФормы»), Форма.Элементы.Товары);
делай
НовыйЭлементФормы = Форма.Элементы.Добавить(«Номенклатура», Тип(«ПолеФормы»), Форма.Элементы.Товары);
17 — 18.06.19 — 12:02
(16) Имена переменных в базе итак другие (Элемент_ИмяЭлемента)
Путь к данным правильный.
В последней строке события «При открытии» по прежнему в «Объект.Товары» есть оба нужных реквизита. А в итоге почему-то только один.
18 — 18.06.19 — 12:03
(17) Не в базе, а в моем коде.
19 — 18.06.19 — 12:05
(17) В Объект.Товары они независимо от твоего кода — из метаданных расширения.
Смотри Форма.Элементы.ИмяТвоегоАбстактногоРеквизита: видимость, доступность…
20 — 18.06.19 — 12:12
ставлю на функциональную опцию
21 — 18.06.19 — 12:20
(19) Сверил.
Все строчки у обоих реквизитов идентичны.
22 — 18.06.19 — 12:25
добавить в конфигураторе, рулить видимостью — не вариант?
23 — 18.06.19 — 12:26
(22) Вы имеете ввиду добавить в конфигураторе на форме не кодом? Не вариант так.
24 — 18.06.19 — 12:29
(23) как пожелаешь
25 — 18.06.19 — 12:31
Вообще-то непонятно. Если реквизиты изначально есть, то почему изначально нет элементов формы для этих реквизитов? Они тоже тогда наверное должны быть. Может они тоже на самом деле уже есть, а их потом где-то дальше в коде скрывают(убирают видимость)?
26 — 18.06.19 — 12:31
(24) Ну это не мое желание. Задание такое.
27 — 18.06.19 — 12:32
(25) Потому что реквизиты добавлены мной вручную. А формы типовые.
28 — 18.06.19 — 12:32
(10) должно работать
29 — 18.06.19 — 12:32
Может просмотреть код на наличие действий с элементами формы?
30 — 18.06.19 — 12:34
(27) А тоесть ты реквизиты в расширении добавил?
31 — 18.06.19 — 13:20
(30) Нет, сами реквизиты добавлены в конфигурации основной. А общий модуль, в котором приведенный код написан, находится в расширении. (29) Что имеется ввиду?
32 — 18.06.19 — 13:24
(31) Озвучь уже тип проблемного реквизита, конфигурацию и вид типового документа. В твоей абстракции возможно совершено другие проблемы и ошибки чем в реальности.
33 — 18.06.19 — 13:26
(32) Комплексная автоматизация 2 (2.4.7.109)
Документ «Коммерческое предложение клиенту».
В табличную часть не добавляется реквизит «Направление» (СправочникСсылка.НаправленияДеятельности)
34 — 18.06.19 — 13:31
(33) Возможно Справочник.НаправленияДеятельности выключен фукнциональными опциями
35 — 18.06.19 — 13:32
(34) Если добавлять просто на форму руками, все добавляется.
Как можно проверить выключен или нет?
36 — 18.06.19 — 14:49
(0) КА — типовая.Пустая.Включена ФО по КП. В модуле формы расширения.В процедуре при создании на сервере.
НовыйЭлементФормы = Элементы.Добавить(«Товары_НаправлениеДеятельности», Тип(«ПолеФормы»), Элементы.Товары);
НовыйЭлементФормы.ПутьКДанным = «Объект.Товары._НаправлениеДеятельности»;
НовыйЭлементФормы.Вид = ВидПоляФормы.ПолеВвода;
В КП добавлен в ТЧ товары новый реквизит «_НаправлениеДеятельности».
37 — 18.06.19 — 15:03
(35) Настройки фин реза и контролинг. раздел финансовый результат. галочка финансовый результат по направлениям деятельности. константа ФормироватьФинансовыйРезультат
НачинающийВ1С
38 — 18.06.19 — 15:21
(37) Спасибо! Это решило вопрос.
Содержание[Убрать]
-
- Как программно добавить Группу на форму?
- Как программно добавить Поле ввода на форму?
- Как программно добавить колонку в ТЧ?
- Как программно вывести табличную часть документа на управляемую форму?
- Как Добавить программно флажок на форму?
- Как установить событие для программно созданного элемента?
В чем удобство использования программного создания элементов формы:
- более удобно находить изменения между конфигурациями
- Изменять форму «на лету» в процессе работы
- Минимизировать изменения типовой конфигурации (в некоторых конфигурациях для этого созданы Переопределяемые модули/процедуры)
Рассмотрим наиболее частые вопросы, все действия показаны здесь проводятся в форме в процедуре ПриСозданииНаСервере
Как программно добавить Группу на форму?
ГруппаТовары = Элементы.Добавить("ГруппаТовары", Тип("ГруппаФормы"),Элементы); // Добавляет группу на форму
ГруппаТовары.Заголовок = "Товары на продажу";
Как программно добавить Поле ввода на форму?
НовыйРеквизит = Элементы.Добавить("КонтрагентПоставщик", Тип("ПолеФормы"), ГруппаТовары);
НовыйРеквизит.Заголовок = "Контрагент поставщик";
НовыйРеквизит.Вид = ВидПоляФормы.ПолеВвода;
НовыйРеквизит.ПутьКДанным = "Объект.КонтрагентПоставщик";
Как программно добавить колонку в ТЧ?
ТаблицаТовары = Элементы.Товары;
НовыйРеквизит = Элементы.Добавить("Вес", Тип("ПолеФормы"), ТаблицаТовары);
НовыйРеквизит.Заголовок = "Вес";
НовыйРеквизит.Вид = ВидПоляФормы.ПолеВвода;
НовыйРеквизит.ПутьКДанным = "Объект.Товары.Вес";
Как программно вывести табличную часть документа на управляемую форму?
ГруппаТовары = Элементы.ГруппаТовары;
ТаблицаТовары = Элементы.Добавить("ТаблицаТовары", Тип("ТаблицаФормы"),ГруппаТовары;
ТаблицаТовары.ПутьКДанным = "Объект.Товары";
// для создания колонок в созданной таблице используется метод описанный выше "Как программно добавить колонку в ТЧ"
Как Добавить программно флажок на форму?
НовыйРеквизит = ЭлементыФормы.Добавить("ЭтоИностранныйПоставщик", Тип("ПолеФормы"), ГруппаТовары);
НовыйРеквизит.Заголовок = "Это иностранный поставщик";
НовыйРеквизит.Вид = ВидПоляФормы.ПолеФлажка;
НовыйРеквизит.ПутьКДанным = "Объект.ЭтоИностранныйПоставщик";
Как установить событие для программно созданного элемента?
НовыйРеквизит = ЭлементыФормы.Добавить("ЭтоИностранныйПоставщик", Тип("ПолеФормы"), ГруппаТовары);
НовыйРеквизит.Заголовок = "Это иностранный поставщик";
НовыйРеквизит.Вид = ВидПоляФормы.ПолеФлажка;
НовыйРеквизит.ПутьКДанным = "Объект.ЭтоИностранныйПоставщик";
НовыйРеквизит.УстановитьДействие("ПриИзменении", "ЭтоИностранныйПоставщикПриИзменении"); // ЭтоИностранныйПоставщикПриИзменении - это название процедуры которая находится в модуле формы
Недостаточно прав для комментирования