- Дополнительная вычисляемая колонка в табличной части
- Дополнительная вычисляемая колонка в табличной части
- Реализация на платформе 1С: Предприятие 8.1 (или в обычном приложении)
- Реализация на платформе 1С: Предприятие 8.2 (8.3 управляемое приложение)
- Как добавить реквизит объекта в таблицу формы
- Программирование в 1С для всех
- Табличная часть документа в 1С 8.3
- Табличная часть справочника 1С 8.3
- Колонки табличной части 1С
- Табличная часть 1С 8.3 на управляемой форме
- Отборстрок по нескольким колонкам
- Реализация табличного поля документа с неограниченным количеством колонок
Дополнительная вычисляемая колонка в табличной части
Дополнительная вычисляемая колонка в табличной части
Реализация на платформе 1С: Предприятие 8.1 (или в обычном приложении)
В начале коротко о том, как добавить дополнительную колонку в табличное поле на платформе 1С 8.1.
Предположим, что у нас есть некий документ с табличной частью “Товары” (с колонками “Номенклатура” и “Количество”) и нам нужно вывести дополнительную колонку “Цена”, которая бы содержала данные реквизита “Цена” элементов справочника “Номенклатура”, выбранных в строках табличной части.
Для этого нам достаточно добавить в форме документа новую колонку “Цена” в табличное поле, содержащее данные табличной части документа и написать следующий код в обработчике события “ПриПолученииДанных” этого табличного поля:
Хочу обратить внимание на то, что строки табличного поля обрабатываются порциями, по мере прокрутки списка.
Реализация на платформе 1С: Предприятие 8.2 (8.3 управляемое приложение)
На платформе 8.2 с использованием управляемых форм решение данной задачи потребует бóльших усилий. Это связано с тем, что за счет своей клиент-серверной ориентированности в платформе 8.2 в управляемом режиме отсутствуют некоторые привычные возможности – например, у табличного поля отсутствуют обработчики событий “ПриПолученииДанных” и “ПриВыводеСтроки”, которые мы могли бы использовать для этих целей в 1С 8.1 или 8.2 в обычных формах.
Пусть в нашей конфигурации есть документ “ВводОстатковДолга” с табличной частью “Контрагенты” (с колонками “Контрагент” и “Сумма”). В свою очередь у справочника “Контрагенты” есть реквизит “ИНН”, значение которого необходимо выводить в строках табличного поля.
[qu_spoiler title=»Примечание от ‘Капитально:» open=»yes» icon=»chevron-circle»]в статье взят неудачный пример т.к. реквизиты вынести можно получить гораздо проще, но тем не менее статья полезна для рассмотрения в учебных целях[/qu_spoiler]
Откроем управляемую форму документа, добавим новую колонку “ИНН” реквизита “Контрагенты” и перенесём её на закладку “Элементы” (для отображения в форме).
Откроем палитру свойств поля “КонтрагентыКонтрагент” и добавим обработчик события “ПриИзменении”
// обработчик события «ПриИзменении» поля «Контрагент» в табличном поле «Контрагенты»
&НаКлиенте
Процедура КонтрагентыКонтрагентПриИзменении ( Элемент )
ТекДанные = Элементы . Контрагенты . ТекущиеДанные ;
ТекДанные . ИНН = ЗначениеРеквизита ( ТекДанные . Контрагент , «ИНН» ) ;
КонецПроцедуры
Это обеспечит нам изменение значения поля “ИНН” при выборе контрагента в строке табличного поля.
Теперь необходимо предусмотреть заполнение колонки “ИНН” при открытии формы документа, а так же после записи и при чтении на сервере.
Обновление данных после записи и при чтении на сервере необходимо в связи с тем, что иначе значения колонки “ИНН” будут очищаться каждый раз при возникновении этих событий. Для заполнения колонки “ИНН” опишем в модуле формы служебную серверную процедуру:
Затем добавим в модуль формы документа обработчики событий “ПриОткрытии”, “ПриЧтенииНаСервере” и “ПослеЗаписиНаСервере”, в каждой из которых будем вызвать описанную ранее служебную процедуру “ОбновитьДанныеКолонкиИНН”
Всё готово. Можно посмотреть на результат.
Статья найдена на просторах интернета
Как добавить реквизит объекта в таблицу формы
Сворачивать рекламу, чтобы сберечь деньги, все равно, что останавливать часы, чтобы сберечь время.
Источник
Программирование в 1С для всех
В этой статье мы научимся конфигурировать табличные части объектов метаданных в 1С 8.3 (справочники, документы и т.д.). Для чего вообще нужны табличные части? Очень часто бывает, что объект метаданных должен хранить некий список однотипной информации, размер которой изначально может быть не известен. Например, у справочника «Контрагенты» это может быть список ответственных лиц контрагента, а у документа «Приход товара» это список товаров, который поступили в организацию. Для того, чтобы осуществить учет однотипной информации и необходимы табличный части.
Табличная часть документа в 1С 8.3
Наиболее часто перечисление какой-то однотипной информации реализуется в документах. Например, у нас может быть приход различного товара на склады, или продажа разного товара контрагентам. Создать табличную часть документа можно двумя способами. Первый, в конструкторе документа: на закладке данные, во втором окне для табличных частей, где и нужно добавлять новую табличную часть при помощи кнопки «Добавить табличную часть».
Второй способ: непосредственно в окне редактирования метаданных. Для этого нужно мышкой выделить ветвь дерева документа, вызвать контекстное меню и выполнить единственную команду «Добавить»
Табличная часть справочника 1С 8.3
У справочников 1С также могут существовать табличные части, механизм создания которых, аналогичен механизму создания табличных частей документов (используя конструктор справочника и через окно дерева метаданных).
Колонки табличной части 1С
Само по себе создание табличной части не имеет смысла, поскольку информация должна храниться в разрезе колонок. Создать колонку можно двумя способами (как в случае справочников, так и в случае документов). Первый способ, используя конструктор документа.
Второй способ, посредством окна метаданных (нужно выделить мышкой табличную часть).
После добавления, откроется палитра свойств, где можно выбрать нужный тип реквизита табличной части 1С (по умолчанию реквизиту присваивается тип строка).
Количество колонок вы можете создавать практически неограниченное количество, в зависимости от вашей прикладной задачи.
Табличная часть 1С 8.3 на управляемой форме
Рассмотрим, как добавлять табличную часть на управляемую форму 1С. Если вы создаете новую форму, то у конструктора формы нужного объекта Вам необходимо поставить флажки у ветке дерева реквизитов объекта, которое соответствует нужной табличной части.
Если же вы уже создали форму документа, а потом в конфигураторе сделали табличную часть (или забыли добавить табличную часть в конструкторе), то вам нужно в форме перетащить мышкой табличную часть из дерева объекта в дерево элементов.
При переносе на вопрос «Добавить колонки», отвечаем «Да» (иначе придется добавлять колонки вручную, о чем мы поговорим ниже).
После этого табличная часть со всеми колонками будет добавлена на форму.
Если мы откажемся от автоматического добавления колонок, то мы можем перенести нужные колонки вручную. Для этого необходимо раскрыть ветку нужной табличной части и перетащить мышкой необходимые колонки.
У ветки табличной части в дереве Объекты управляемой формы имеются также элементы, которые не соответствуют текущим реквизитам. Как привило, это итог по суммовым полям табличной части. Эти поля можно разместить на форме.
Также эти поля можно использовать в подвале таблицы на форме.
Для этого в палитре свойств таблицы формы необходимо установить признак Подвал.
После этого в палитре свойств нужного поля табличной части, в свойстве ПутьКДаннымПодвала указать нужное суммовое поле табличной части.
После этих настроек, в подвале нужной колонки будет сумма значений это колонки.
Остальные статьи по теме конфигурирования в 1С:
Более подробно и основательно конфигурирование в 1С дается в моей книге:
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Источник
Отборстрок по нескольким колонкам
Собственно, как можно задать табличной части отбор строк по нескольким колонкам?
Элементы.Настройка.ОтборСтрок =
Новый ФиксированнаяСтруктура(«ГруппаСкладов,Склад,Полуфабрикат»,
?(ЗначениеЗаполнено(ФильтрГруппаСкладов),ФильтрГруппаСкладов,Неопределено),
?(ЗначениеЗаполнено(ФильтрСклад),ФильтрГруппаСкладов,Неопределено),
?(ЗначениеЗаполнено(ФильтрНоменклатура),ФильтрНоменклатура,Неопределено));
Хотел передать все 3 колонки, но я так понял, что можно только одну.
Если устанавливать по одному, то при установке следующего отбора сбрасывается предыдущий.
Кроме как завести реквизит «булево» на форме, и при установке отборов перезаполнять его, а уже потом по нему строить ОтборСтрок, ничего в голову не приходит.
Вот тут Павел Чистов приводит пример , в котором ФиксированнаяСтруктура Имеет параметром Структуру, в которой не один элемент отбора
https://expert.chistov.pro/public/803449/
В самом конце статьи это видно
До этого накидал свой велосипед, и пришлось засунуть допреквизит в таб часть для отбора.
Но тоже работало)
Да и в справке нет упоминания, что можно передать несколько колонок.
Вот тут Павел Чистов приводит пример , в котором ФиксированнаяСтруктура Имеет параметром Структуру, в которой не один элемент отбора
https://expert.chistov.pro/public/803449/
В самом конце статьи это видно
(секретный ответ — 1 или 2 , в зависимости от ТекЗначениеОтбора <> «» )
До этого накидал свой велосипед, и пришлось засунуть допреквизит в таб часть для отбора.
Но тоже работало)
И сравните ради прикола
СтруктураПоиска , заполненную через вставить и сделайте паралельно другую
Отбор = Новый Структура();
Отбор.Вставить(«Должник»,ТекущиеДанныеНомерЛиста.Должник);
Отбор.Вставить(«НомерИЛ»,ТекущиеДанныеНомерЛиста.НомерИЛ);
Элементы.ИсполнительныеЛисты.ОтборСтрок = Новый ФиксированнаяСтруктура(Отбор);
У меня такое работает в тонком клиенте, а в браузере второе условие игнорируется.
Источник
Реализация табличного поля документа с неограниченным количеством колонок
При внедрении блока бюджетирования на одном проекте была поставлена задача. В табличную часть документа (бюджетная операция и еще 2 похожих по смыслу документа) необходимо было вводить следующие данные по периодам: Статья бюджета — Проект — Контрагент — Договор — Номенклатура — Сумма операции.
Хотелось, чтобы суммы можно было вводить по колонкам, как в экселе. Причем количество периодов в документе могло быть неограниченным (7 дней недели, 30 дней месяца или все 365 дней года).
Выложить реализацию этой задачи в виде отдельной базы данных подтолкнула вот эта публикация: //infostart.ru/public/549297/ , все-таки СКД или поле табличного документа не очень удобны для ввода данных по сравнению с привычными табличными частями.
В проекте решение реализовано было на базе УПП, понятно что его выкладывать сюда целиком не буду. Моя база состоит из нескольких справочников (одноименные с УПП, но созданы заново в упрощенном виде) : сценарии, номенклатура, контрагенты. , и одного документа — Наш документ, в котором и вводятся данные (меню Операции — Документы).
Код открыт, можно переносить функционал в свои разработки.
Последовательность работы предполагается такая.
Создаем документ, выбираем сценарий с нужной периодичностью, выбираем планируемый период.
В табличном поле появится нужное количество колонок с заголовками в соответствии с периодами.
Добавляем строки с данными. Показатели «Сумма» и «Количество» можно вводить двумя способами:
1. В колонку Итого, тогда данные по периодам заполнятся автоматически. Например, выбрано 12 месяцев, в итого введено 1200 руб., в каждой колнке появится по 100 руб. В случае, если введенная сумма не делится нацело на количество периодов (7000 / 12 = 583,33333), дельта от округления суммируется в колонку первого периода.
2. В колонку каждого периода. При этом в колонке «Итого» будет видна общая сумма введенных данных по строке.
Реализована возможность копирования, удаления, сортировки строк (для обычной табличной части это сама платформа делает, тут же понадобилось несколько строк кода).
При изменении периода планирования или сценария — табличная часть очищается.
Поскольку код выдернут из другой конфигурации и толком в новой базе не оттестирован, возможны баги.
Источник