Я уже писал об общем принципе программного добавления элементов на управляемую форму, теперь напишу конкретно о том, как добавить колонку табличной части или таблицы значений.
Итак, у нас есть справочник «Тест» с табличной частью «Тест», в табличной части присутствуют реквизиты «Тест1» и «Тест2», а нам нужно добавить еще один реквизит — «Тест3» и показать его на форме.
Выглядит это приблизительно так:
&НаСервере Процедура ДобавитьКолонкуНаСервере() нРеквизиты = Новый Массив; нРеквизиты.Добавить(Новый РеквизитФормы(«Тест3», Новый ОписаниеТипов(«Строка»), «Объект.Тест», «Тест3», Истина)); ИзменитьРеквизиты(нРеквизиты); нЭлемент = Элементы.Добавить(«Тест3», Тип(«ПолеФормы»), Элементы.Тест); нЭлемент.Вид = ВидПоляФормы.ПолеВвода; нЭлемент.ПутьКДанным = «Объект.Тест.Тест3»; КонецПроцедуры |
Не думаю, что приведенный код нуждается в комментариях, но на всякий случай скажу, что первые три строки создают новый реквизит типа «Строка» — тут важно указать путь к создаваемому реквизиту — третий параметр.
Точно также можно добавить колонку любой таблице значений (не табличной части) — в этом случае нужно убрать часть «Объект.» из кода.
Следующие три строки добавляют саму колонку на форму.
На этом все, надеюсь данная статья Вам помогла.
Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Загрузка…
Опытные программисты 1С в основном добавляют какие либо реквизиты на форму программно, это касается в первую очередь типовых конфигураций в которые вносятся изменения. Так как в этом случае гораздо проще потом производить обновление, сравнивать конфигурации. Поэтому это должен уметь каждый даже самый начинающий 1С -ник. Тем более что сделать это достаточно просто, в предыдущих статьях я уже затрагивал эту тему, рассказывал про программное добавление команд, сегодня же попробуем поработать с табличной частью документа, а именно добавить новый реквизит ТЧ программно, использовать будем управляемые формы.
Программное добавление колонок в ТЧ управляемой формы
Что бы на первых порах не запутаться я возьму в качестве примера простенький созданный мной документ «Поступление» у которого есть табличная часть, со следующими реквизитами «Номер», «Наименование», Количество» и «Цена».
Давайте программно добавим еще один реквизит скажем «Комментарий». Для этого необходимо через конфигуратор открыть событие «При создании на сервере».
И в эту процедуру добавить следующий код.
// добавим реквизит в табличную часть
МассивРеквизитов = Новый Массив;
МассивРеквизитов.Добавить(Новый РеквизитФормы("Комментарий", Новый ОписаниеТипов("Строка"), "Объект.Товары", "Комментарий", Ложь));
ИзменитьРеквизиты( МассивРеквизитов );
Эл = Элементы.Добавить("Колонка1", Тип("ПолеФормы"), Элементы.Товары);
Эл.Вид = ВидПоляФормы.ПолеВвода;
Эл.ПутьКДанным = "Объект.Товары.Комментарий";
Сохраняем изменения и проверяем что получилось, и видим что в табличной части появился еще один реквизит.
Это программный реквизит который создается в момент создания документа, в конфигураторе вы его не увидите.
Таким образом можно добавить реквизит табличной части в любой конфигурации 1С.
Очень важный момент, в таком варианте внесенные данные в эту колонку не будут сохраняться в базе.
Программное удаление и добавление колонок в табличной части управляемой формы 1С 8.3
Часто бывает ситуация, когда необходимо программно управлять составом табличной части в управляемой форме.
В данном примере рассмотрим следующую ситуацию: есть управляемая форма, на управляемой форме есть таблица — связанная с реквизитом формы. Нам надо удалить одни колонки и добавить другие программным способом. Массив удаляемых и добавляемых колонок определен нами заранее.
Перед добавлением новых элементов на форму, необходимо добавить сами реквизиты формы:
МассивДобавляемыхРеквизитов = Новый Массив;
Для Каждого тЭлемент из МассивИмен Цикл //массив имен содержит названия колонок. для упрощения примера все колонки имеют строковый тип реквизита.
МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы(тЭлемент, Новый ОписаниеТипов("Строка"),"Данные")); //тип реквизита, название реквизита, родитель, в нашем случае название табличной части
КонецЦикла;
Теперь определим удаляемые реквизиты:
МассивУдаляемыхРеквизитов = Новый Массив;
Для Каждого тЭлемент из МассивУдаляемыхИмен Цикл
Если ЭтаФорма.Элементы.Найти("Данные"+тЭлемент) <> Неопределено Тогда
МассивУдаляемыхРеквизитов.Добавить("Данные."+тЭлемент);
КонецЕсли;
КонецЦикла;
После подготовки массивов — редактируем реквизты формы
ЭтаФорма.ИзменитьРеквизиты(МассивДобавляемыхРеквизитов, МассивУдаляемыхРеквизитов);
После редактирования реквизитов можно приступать к редактированию элементов формы:
Удаление колонок:
Для Каждого тЭлемент из МассивУдаляемыхИмен Цикл
нЭлемент = ЭтаФорма.Элементы.Найти("Данные"+тЭлемент);
Если нЭлемент <> Неопределено Тогда
Элементы.Удалить(нЭлемент);
КонецЕсли;
КонецЦикла;
Добавление новых колонок:
Для Каждого тЭлемент из МассивИмен Цикл
нЭлемент = ЭтаФорма.Элементы.Добавить("Данные"+тЭлемент, Тип("ПолеФормы"), ЭтаФорма.Элементы.Данные);
нЭлемент.Вид = ВидПоляФормы.ПолеВвода;
нЭлемент.ПутьКДанным = "Данные."+тЭлемент;
нЭлемент.Видимость = Истина;
КонецЦикла;
Ведущий программист 1С
Тельнова Яна
Нашел норм обьяснение, может комуто понадобится
МассивДобавляемыхРеквизитов = Новый Массив;
МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы(«План», Новый ОписаниеТипов(«ТаблицаЗначений»)));
МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы(«Номенклатура», Новый ОписаниеТипов(«СправочникСсылка.Номенклатура»),»План» ,»Номенклатура»));
МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы(«Регион», Новый ОписаниеТипов(«Число»,Новый КвалификаторыЧисла(10,2)),»План» , «Регион»));
МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы(«Разница», Новый ОписаниеТипов(«Число»,Новый КвалификаторыЧисла(10,2)),»План» , «Осталось распределить»));
ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);
ТаблицаФормы = Элементы.Добавить(«План», Тип(«ТаблицаФормы»));
ТаблицаФормы.ПутьКДанным = «План»;
ТаблицаФормы.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет;
ТаблицаФормы.ФиксацияСлева = 3;
ТаблицаФормы.УстановитьДействие(«ПередУдалением», «ПланПередУдалением»);
ТаблицаФормы.УстановитьДействие(«ПередНачаломДобавления», «ПланПередНачаломДобавления»);
НоваяКолонка = Элементы.Добавить(«ПланНоменклатура», Тип(«ПолеФормы»), Элементы.План);
НоваяКолонка.Заголовок = «Номенклатура»;
НоваяКолонка.ПутьКДанным = «План.Номенклатура»;
НоваяКолонка.Вид = ВидПоляФормы.ПолеВвода;
НоваяКолонка.РежимРедактирования = РежимРедактированияКолонки.ВходПриВводе;
НоваяКолонка = Элементы.Добавить(«ПланРегион», Тип(«ПолеФормы»), Элементы.План);
НоваяКолонка.Заголовок = «Регион»;
НоваяКолонка.ПутьКДанным = «План.Регион»;
НоваяКолонка.Вид = ВидПоляФормы.ПолеВвода;
НоваяКолонка.РежимРедактирования = РежимРедактированияКолонки.ВходПриВводе;
В предыдущей статье мы научились создавать таблицу значений, как в программном модуле, так и на форме, интерактивно.
Создание таблицы значение в 1С 8.3
Но создать таблицу значений, это только малая часть работы, поскольку сама по себе таблица значений нам абсолютно не нужна. Чтобы начать с ней работать, необходимо ее, как минимум, заполнить колонками.
Программно добавить колонку в таблицу значений 1С просто. Для этого необходимо использовать одно из основополагающих свойств таблиц значений — это свойство Колонки. Данное свойство представляет собой коллекцию значений, в которой хранятся все колонки конкретной таблицы, и имеет тип Коллекция колонок таблицы значений.
У объекта Коллекция колонок таблицы значений существует два метода по созданию новых колонок. Это Добавить и Вставить.
Метод Добавить – добавляет новую колонку в конец коллекции, а метод Вставить – вставляет колонку в нужное место по соответствующему индексу.
Метод добавить:
ФИО = Новый ТаблицаЗначений;
ФИО.Колонки.Добавить(«Фамилия»);
ФИО.Колонки.Добавить(«Имя»);
ФИО.Колонки.Добавить(«Отчество»);
В этом примере я использовал самый простой вариант использование метода Добавить: мы указываем только название колонки и всё.
Рассмотрим синтаксис этого метода
Добавить(<Имя>, <Тип>, <Заголовок>, <Ширина>)
Как видно, у данного метода всего четыре параметра.
Параметр Имя — это имя колонки таблицы значений, задается также как и имя переменной. Обязательный параметр.
Параметр Тип имеет тип ОписаниеТипов, задает тип данных, которые будут храниться в колонке, т.е. при помощи этого параметра, мы задаем тип колонки таблицы значений.
Параметр Заголовок имеет тип Строка и задает заголовок колонки, который отобразиться пользователю, если она будет создана программно на форме.
Параметр Ширина имеет тип Число и задает длину колонки(количество символов).
Если мы зададим все параметры, то наше создание колонок будет выглядеть следующим образом.
ОписаниеТиповСтрока = Новый ОписаниеТипов(«Строка»);
ОписаниеТиповДата = Новый ОписаниеТипов(«Дата»)
ФИО = Новый ТаблицаЗначений;
ФИО.Колонки.Добавить(«Фамилия»,ОписаниеТиповСтрока,«Фамилия»,50);
ФИО.Колонки.Добавить(«Имя»,ОписаниеТиповСтрока,«Имя»,50);
ФИО.Колонки.Добавить(«Отчество»,ОписаниеТиповСтрока,«Отчество»,50);
ФИО.Колонки.Добавить(«ДатаРождения»,ОписаниеТиповДата,«Дата рождения»,10);
Метод Вставить имеет следующий синтаксис:
Вставить(<Индекс>, <Имя>, <Тип>, <Заголовок>, <Ширина>)
Метод Вставить имеет синтаксис, как и у метода Добавить, но только появился первый параметр Индекс, он указывает тот индекс, на место которого будет вставляться новая колонка.
Доработаем предыдущий код:
ФИО.Колонки.Вставить(3,«ФИО»,ОписаниеТиповСтрока,«ФИО»,50);
В нашем случае колонка ФИО встала точно между Отчеством и Датой рождения.
Создание колонок в таблице значений на форме
Если мы создали таблицу значений на управляемой форме 1С 8.3 в виде реквизита формы, то колонки также можно создать интерактивно. Для этого нужно выделить нужный реквизит, и нажать на кнопку «Добавить колонку реквизита».
После этого колонка будет создана, и нам нужно задать ей имя, заголовок и тип.
Если таблица значений размещена на управляемой форме в виде элемента формы Таблица, то вновь созданную колонку можно разместить в таблице двумя способами.
Первый способ – перетащить колонку из реквизитов в элементы.
После этого, колонка появиться под таблицей, а сама таблица отобразиться на форме (таблица без колонок на форме не отображается).
Второй способ – создать новое поле «под» таблицей на форме и привязать к нему нужную колонку таблицы значений 1С.
Для того, чтобы создать новое поле, привязанное к таблице на форме 1С, нужно выделить эту таблицу, нажать на кнопку «Добавить» панели управления дерева Элементы, и в открывшемся окне выбрать тип элемента «Поле».
После этого нужно задать имя нового поля и связать его с колонкой таблицы значений, используя свойство «ПутьКДанным».
После этого колонка сразу же появиться в таблице на форме 1С.
О работе со строками в таблицах значений читайте в статье по ссылке:
Таблице значений 1С: работа со строками
Более подробно о работе с таблицами значений и другими интересными объектами языка программирования в 1С читайте в моей книге «Программировать в 1С за 11 шагов»
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Вступайте в мои группы:
Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009
[Практика программирования] Управляемые формы 1С 8: как программно изменить запрос динамического списка и программно вывести колонку добавленного реквизита списка
Ранее уже описывалось в соответствующей статье то, как разместить программно в форме колонку реквизита объекта базы (например, документа или справочника). В этой статье будет рассмотрено как программно добавить колонку с флажком в список управляемой формы с динамическим списком, данные для которого выбираются произвольным запросом.
Для программного добавления элементов управляемой формы должно быть учтено условие о том, что добавление происходит на стороне сервера, а не на клиенте (не в процедуре «ПриОткрытии», как это было в обычном приложении). И так можно ошибочно подумать по старой привычке (если есть опыт программирования в обычном интерфейсе), учитывая архитектуру платформы 1С: Предприятие 8.2 и 8.3. Ведь процедура «ПриОткрытии» формы есть и в управляемом приложении, но через не создать программно и не разместить элементы для прикладной задачи. Поэтому «&НаСервере» и преимущественно в процедуре «ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)» формы документа или элемента справочника или формы списка теперь происходит программное добавление каких-либо элементов формы.
В общем информация о том, как программно изменить текст запроса динамического списка, использующего произвольный запрос можно найти на странице сайта ИТС 1С, если у Вас есть доступ. Но если доступа нет, то можете сильно не расстраиваться — информация на странице как и во многих случаях методологической информации от 1С носит условно практический характер. А это означает, что мелочи и нюансы, о которых бы было неплохо упомянуть на указанной странице ИТС, не упомянуты никак. И их понимание будет происходить на практике. Вот часть такой практики изложена ниже на прикладной задаче.
Нажатие на изображении увеличит его
Рис. 1. Пример теоретического кода для программного изменения текста произвольного динамического списка для управляемой формы в 1С 8.
Прикладная задача заключалась в том, чтобы выводить программно в управляемую форму списка документов «Реализация товаров и услуг» колонку добавленного реквизита документа. Реквизит с именем «ДопМФ_Отгружено» тип «Булево», в данном примере добавлен в расширении, но может быть и добавлен в основной конфигурации, если она на частичной поддержке. Как вывести программно элемент формы, содержащей флажок, добавленного реквизита, повторимся, можно изучить в соответствующей статье, о которой уже упоминалось в начале страницы.
Рис. 2. Пример добавленного реквизита объекта конфигурации (документа) в 1С 8 для дальнейшего программного вывода колонки в управляемую форму списка объекта.
Прежде чем перейти непосредственно к программному добавлению колонки элемента таблицы формы нужно добавить его выбор в текст запроса динамического списка. Таким образом подготовительный рабочий исполняемый код получается примерно следующим:
1 | | | СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка(); |
2 | | | СвойстваСписка.ОсновнаяТаблица = «Документ.РеализацияТоваровУслуг»; |
3 | | | СвойстваСписка.ДинамическоеСчитываниеДанных = Истина; |
4 | | | ИсхТекстаЗапроса = СписокРеализацииТоваровУслуг.ТекстЗапроса; |
5 | | | |
СвойстваСписка.ТекстЗапроса = СтрЗаменить(ИсхТекстаЗапроса, «ВЫБРАТЬ», «ВЫБРАТЬ»+Символы.ПС+«РеализацияТоваровУслуг.ДопМФ_Отгружено КАК ДопМФ_Отгружено,»); |
6 | | | |
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.СписокРеализацииТоваровУслуг, СвойстваСписка); |
7 | | | //СписокРеализацииТоваровУслуг.Параметры.УстановитьЗначениеПараметра(«Параметр1», 42); |
Прокомментируем его основные моменты. В строке 1 происходит получение структуры через функцию «СтруктураСвойствДинамическогоСписка()» общего модуля «ОбщегоНазначения» для заполнения ее значений и передачи для заполнения свойств динамического списка. Для ключа «ОсновнаяТаблица» структуры в строке 2 указывается название основной таблицы, которая используюется для динамического списка, в примере это «Документ.РеализацияТоваровУслуг». Значение ключа структуры в строке 3 «ДинамическоеСчитываниеДанных» в значении «Истина». В строках 4 и 5 ведется произвольная модификация запроса.
Нажатие на изображении увеличит его
Рис. 3. Пример исходного текста произвольного запроса динамического списка реквизита управляемой формы списка документов.
Можно просто подготовить новый или измененный исходный текст запроса для указания его в ключе «ТекстЗапроса» структуры. В данном же случае была использована хитрость, чтобы минимизировать зависимость от изменений разработчиков. Происходит модификация исходного текста запроса, который определили разработчики, за счет замены подстроки «ВЫБРАТЬ», которая есть в любом запросе, на подстроку так же содержащее это обязательное слово текста запроса и текст для выборки значения добавленного реквизита документа «ДопМФ_Отгружено». Таким образом, доработка в расширении может сломаться тогда, когда разработчики существенным образом изменять исходный текст запроса. И на примере строки 5 помещаем новый вариант текста запроса в структуру. В данном примере получилось, что запрос содержит одну дополнительную строчку, чтобы выбирать значения добавленного реквизита. Порядок следования полей выборки в запросе для динамического списка не имеет значения.
Т.е. в практической задаче начало запроса программно изменялось:
С: |
ВЫБРАТЬ РеализацияТоваровУслуг.Ссылка, |
На: |
ВЫБРАТЬ РеализацияТоваровУслуг.ДопМФ_Отгружено КАК ДопМФ_Отгружено, РеализацияТоваровУслуг.Ссылка, |
Особенно обратим внимание на то, к каким объектам ведется обращение в строке 7, когда выполняется установка новой настройки для динамического списка с помощью процедуры «УстановитьСвойстваДинамическогоСписка» общего модуля «ОбщегоНазначения». В этом месте важно не перепутать, т.к. в типовой конфигурации названия элемента формы таблицы-списка и реквизита формы одинаковые. А важно, что первым параметром передается элемент управляемой формы — Таблица реквизита формы. Не перепутать его с названием реквизита формы, к которому ранее обращались для получения текста исходного запроса. Вторым параметром передается заполненная структура. Строка 7 в данном примере закомментирована, т.к. в данной прикладной задаче в тексте запроса не содержится параметров. Но, если параметр есть, то устанавливается через свойство «Параметры» и метод «УстановитьЗначениеПараметра» реквизита управляемой формы, а не элемента формы. Установка значения по имени параметра по коду как для классического запроса в 1С: первое значение — текстовое имя параметра, второе значение — собственно значение для параметра.
Нажатие на изображении увеличит его
Рис. 4. Сравнение одноименных реквизита и элемента управляемой формы 1С 8 для программного изменения текста произвольного запроса динамического списка этого реквизита формы.
После модификации текста произвольного динамического запроса реквизита управляемой формы 1С 8, становится возможным размещение колонки нового реквизита. И теперь рассмотрим код для программного вывода, размещения, добавления (как будет угодно) колонки в элемент-таблицу формы.
Нажатие на изображении увеличит его
Рис. 5. Пример кода в 1С 8 для программного вывода колонки нового реквизита объекта конфигурации, в частности документа, в элемент «Таблица» управляемой формы
По логике программного вывода в прикладной задачи новая колонка, напомним с флажком, должна выводиться сразу после колонки «Номер», содержащей данные номеров документов списка. Код на скриншоте содержит условие на то, что если колонка «Номер» по каким то причинам, например скрыта пользователем в управляемой форме, что вполне может быть (странно но может быть, ведь номер для документа является ключевым реквизитом для работы пользователей), то тогда новая колонка будет выведена самой первой в списке.
1 | | | ТаблицаФормы = Элементы.СписокРеализацииТоваровУслуг; |
2 | | | КолонкаВставки = ТаблицаФормы.ПодчиненныеЭлементы.Найти(«Номер»); |
3 | | | |
4 | | | КолонкаОтгружено = Элементы.Вставить(«_Отгружено», Тип(«ПолеФормы»), ТаблицаФормы, КолонкаВставки); |
5 | | | КолонкаОтгружено.Вид = ВидПоляФормы.ПолеФлажка; |
6 | | | КолонкаОтгружено.Заголовок = «О.»; |
7 | | | КолонкаОтгружено.Подсказка = «Отгружено»; |
8 | | | КолонкаОтгружено.ТолькоПросмотр = Истина; |
9 | | | КолонкаОтгружено.ШиринаЭлемента = 5; |
10 | | | КолонкаОтгружено.ПутьКДанным = «СписокРеализацииТоваровУслуг.ДопМФ_Отгружено»; |
Есть небольшие отличия от случая, который уже упоминался выше, добавления колонки для элемента формы Таблица динамического списка, как было описано смежной статье. В смежном случае был пример для таблицы, данными (ПутьКДанным) которой выступал «динамический список», но у которого основанием выступала таблица, а не произвольный запрос. Если отличия не учесть, то будут просто возникать ошибки. В данном же примере
Отличия заключаются в двух местах кода. Во-первых, это обращение к свойству «ШиринаЭлемента, а не просто «Ширина» как в случае, если колонка — это программно выводимая колонка динамического списка, но у которого указана «Основная таблица» и не используется произвольный запрос. Т.е. для программно добавляемой колонки динамического списка с произвольным запросом указывается свойство «ШиринаЭлемента».
Во-вторых, очень важно правильно указать значение свойства «ПутьКДанным», иначе можно получить ошибку:
Нажатие на изображении увеличит его
Рис. 6. Пример ошибки «Недопустимое значение» при указании неверного значения для свойства «ПутьКДанным» элемента управляемой формы .
{Документ.РеализацияТоваровУслуг.Форма.ФормаСписка.Форма(26)}: Ошибка при установке значения атрибута контекста (ПутьКДанным)
КолонкаОтгружено.ПутьКДанным = «Объект.СписокРеализацииТоваровУслуг.ДопМФ_Отгружено»;
по причине:
Недопустимое значение
Недопустимое значение
Конечно, подобную ошибку можно «поймать» и при других условиях. Но когда она касается свойства «ПутьКДанным», то это явно говорит о том, что указанное строковое значение попросту не верное. Следует тщательно проанализировать корректность ее составления, т.к. в реквизитах управляемых форм можно запутаться.
Нажатие на изображении увеличит его
Рис. 7. Демонстрация того, что данные элемента формы Таблица — это динамический произвольный запрос.
В текущей задаче реквизит формы (он не основной) носит имя «СписокРеализацийТоваровУслуг», а не так, как часто можно встретить в конфигурации, что основной реквизит формы носит имя «Объект». И значения для добавленной колонки берется из реквизита типа «ДинамическийСписок» и для элемента формы. Поэтому строка для «ПутьКДанным» — «СписокРеализацииТоваровУслуг.ДопМФ_Отгружено» с указанием через «.» имени нового реквизита.
Это все условия и нюансы, с которыми пришлось столкнуться на практике для программной модификации произвольного запроса динамического списка реквизита управляемой формы в 1С 8, чтобы потом программно вывести колонку нового реквизита объекта конфигурации базы в элемент «Таблица» формы .
Оцените, оказалась ли эта публикация полезна для Вас?
© www.azhur-c.ru 2013-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.
25-11-2021
Журавлев А.С.
(Сайт azhur-c.ru)
Назад
Содержание[Убрать]
-
- Как программно добавить Группу на форму?
- Как программно добавить Поле ввода на форму?
- Как программно добавить колонку в ТЧ?
- Как программно вывести табличную часть документа на управляемую форму?
- Как Добавить программно флажок на форму?
- Как установить событие для программно созданного элемента?
В чем удобство использования программного создания элементов формы:
- более удобно находить изменения между конфигурациями
- Изменять форму «на лету» в процессе работы
- Минимизировать изменения типовой конфигурации (в некоторых конфигурациях для этого созданы Переопределяемые модули/процедуры)
Рассмотрим наиболее частые вопросы, все действия показаны здесь проводятся в форме в процедуре ПриСозданииНаСервере
Как программно добавить Группу на форму?
ГруппаТовары = Элементы.Добавить("ГруппаТовары", Тип("ГруппаФормы"),Элементы); // Добавляет группу на форму
ГруппаТовары.Заголовок = "Товары на продажу";
Как программно добавить Поле ввода на форму?
НовыйРеквизит = Элементы.Добавить("КонтрагентПоставщик", Тип("ПолеФормы"), ГруппаТовары);
НовыйРеквизит.Заголовок = "Контрагент поставщик";
НовыйРеквизит.Вид = ВидПоляФормы.ПолеВвода;
НовыйРеквизит.ПутьКДанным = "Объект.КонтрагентПоставщик";
Как программно добавить колонку в ТЧ?
ТаблицаТовары = Элементы.Товары;
НовыйРеквизит = Элементы.Добавить("Вес", Тип("ПолеФормы"), ТаблицаТовары);
НовыйРеквизит.Заголовок = "Вес";
НовыйРеквизит.Вид = ВидПоляФормы.ПолеВвода;
НовыйРеквизит.ПутьКДанным = "Объект.Товары.Вес";
Как программно вывести табличную часть документа на управляемую форму?
ГруппаТовары = Элементы.ГруппаТовары;
ТаблицаТовары = Элементы.Добавить("ТаблицаТовары", Тип("ТаблицаФормы"),ГруппаТовары;
ТаблицаТовары.ПутьКДанным = "Объект.Товары";
// для создания колонок в созданной таблице используется метод описанный выше "Как программно добавить колонку в ТЧ"
Как Добавить программно флажок на форму?
НовыйРеквизит = ЭлементыФормы.Добавить("ЭтоИностранныйПоставщик", Тип("ПолеФормы"), ГруппаТовары);
НовыйРеквизит.Заголовок = "Это иностранный поставщик";
НовыйРеквизит.Вид = ВидПоляФормы.ПолеФлажка;
НовыйРеквизит.ПутьКДанным = "Объект.ЭтоИностранныйПоставщик";
Как установить событие для программно созданного элемента?
НовыйРеквизит = ЭлементыФормы.Добавить("ЭтоИностранныйПоставщик", Тип("ПолеФормы"), ГруппаТовары);
НовыйРеквизит.Заголовок = "Это иностранный поставщик";
НовыйРеквизит.Вид = ВидПоляФормы.ПолеФлажка;
НовыйРеквизит.ПутьКДанным = "Объект.ЭтоИностранныйПоставщик";
НовыйРеквизит.УстановитьДействие("ПриИзменении", "ЭтоИностранныйПоставщикПриИзменении"); // ЭтоИностранныйПоставщикПриИзменении - это название процедуры которая находится в модуле формы
Недостаточно прав для комментирования