1с управляемые формы текущие данные

Использование свойства Текущая строка 1С

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

Применение свойства Текущая строка 1С

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

Изменение текущей строки таблицы

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

Пример 1. Для динамического списка справочника Номенклатура, создать процедуру изменяющую текущую строку списка. В качестве новой текущей строки, использовать ссылку на элемент справочника, переданную в параметре.

Заметим, что если строки с указанной ссылкой не будет найдена в таблице формы, то свойство ТекущаяСтрока примет значение Неопределено. Что означает отсутствие текущей строки таблицы.

Получение строки источника

Так как свойство ТекущаяСтрока является идентификатором, его можно использовать в качестве параметра метода НайтиПоИдентификатору. При помощи данного метода можно получить строку источника таблицы формы (нельзя использовать для динамического списка). Так как строку источника можно искать и использовать не только на клиенте, но и на сервере, это дает некоторое преимущество, над свойством таблицы формы ТекущиеДанные.

Пример 2. В серверной процедуре получить данные текущей строки таблицы значений ТаблицаТоваров, которая расположена на форме.

Источник

Обращение к Таб.части в управляемых формах

нужно сделать доступность у строки по условию

ПерЗавершениеВарки = ПланыВидовХарактеристик.ПараметрыВарки.НайтиПоКоду(«000000004»);
НовСтрока = Объект.ПараметрыОперации.Добавить();
НовСтрока.Параметр = ПерЗавершениеВарки;

Для каждого стр Из Объект.ПараметрыОперации Цикл
Если стр.параметр.Наименование = ПерЗавершениеВарки Тогда
стр.Параметр.Доступность = Истина;
иначе
стр.Параметр.Доступность = Ложь;
КонецЕсли;

<Документ.КонецСпускаСусла.Форма.ФормаДокумента(141)>: Поле объекта не обнаружено (Доступность)
стр.Параметр.Доступность = Ложь;

както так должно быть

(2) deniseek77,
Для каждого стр Из Объект.ПараметрыОперации Цикл //Элементы.ПараметрыОперации //

Если стр.параметр.Наименование = ПерЗавершениеВарки Тогда
//Данные = Элементы.ТочкиРозлива.ТекущиеДанные;
ЭтаФорма.Элементы.ПараметрыОперации.ТекущиеДанные.Доступность =Истина
//.Параметр.Доступность = Истина;
иначе
ЭтаФорма.Элементы.ПараметрыОперации.ТекущиеДанные.Доступность =Истина
//стр.Параметр.Доступность = Ложь;
КонецЕсли;
КонецЦикла;

<Документ.КонецСпускаСусла.Форма.ФормаДокумента(143)>: Ошибка при получении значения атрибута контекста (ТекущиеДанные)
ЭтаФорма.Элементы.ПараметрыОперации.ТекущиеДанные.Доступность =Истина
Текущие данные таблицы недоступны на сервере

куда можно вставить эту доступность? эта процедура на сервере работает((. а на клиенете к плану вида характеристик не обратишься(((

(6) awk, спасибо за совет, наверное немного не так пояснил.

Есть ТЧ, в этой ТЧ есть список значений. И все эти значения должны быть недоступны для ред-я кроме значения параметра с название «завершение варки»- он доступен.

Поясните пожалуйста что значит

тоест как рекквизит формы с типом дата? и в какое значение устанаввливать?

Источник

Программирование в 1С для всех

В предыдущей статье мы узнали, как настраивать и конфигурировать табличные части объектов 1С 8.3. В этой статье мы изучим некоторые вопросы программной работы с табличными частями 1С.

Заполнение табличной части 1С 8.3

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

1 1

Поскольку по условиям задачи, необходимо отобрать всю не помеченную на удаление номенклатуру, то оптимально это сделать при помощи запроса, в котором я буду получать все не помеченные элементы справочника номенклатура. Я создал команду, при выполнении которой будет заполняться табличная часть, и разместил её на форме.

2 1

Исполнение команды будет выполняться в серверном контексте, поскольку объект Запрос не работает в клиентском контексте на тонком клиенте.

При обходе запроса, я использую метод Добавить табличной части объекта (вообще это метод объекта, который имеет тип ДанныйФормыКоллекция, именно в этот тип преобразуется табличная часть документа-объекта, при создании на сервере). Данный метод является функцией, которая создаёт и возвращает новую строку.

Обратите внимание, поскольку при обходе запроса и заполнения новой строки, я использую метод ЗаполнитьЗначенияСвойств, то поля в запросе должны называться так же, как и поля табличной части.

Очистка табличной части документа 1С 8.3

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

После выполнения этого метода вся табличная часть будет очищена.

Текущая строка табличной части 1С 8.3

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

3 1

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

Для решения данной задачи нужно воспользоваться свойством ТекущиеДанные элемента с типом ТаблицаФормы, который соответствует нужной табличной части. Свойство ТекущиеДанные возвращает значение полей текущей строки.

4 1

Для того, чтобы отработать изменение текущего поля цены, создадим обработчик события ПриИзменении этого поля.

5 1

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

Ещё пример: я создал команду, которая должна увеличивать количество в текущий строке табличной части в два раза и пересчитывать сумму. Эта команда размещена в командной панели таблицы и имеет следующий код:

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

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

Также при помощи текущей строки можно находить аналогичную строку в соответствующей табличной части основного реквизита формы Объект, которую также можно изменять (строка на форме тоже изменится автоматически). Мы ранее сделали пересчет суммы при изменении цены, теперь сделаем пересчет суммы при изменении количества, но напрямую через реквизит Объект.

В этом коде мы используем метод НайтиПоИдентификатору переменной Объект.СписокТоваров, которая имеет типа ДанныйФормыКоллекция, этот метод получает элемент коллекции по указанному идентификатору. Если этот элемент найден, то мы можем с ними работать, причем данные на форме изменяться автоматически.

Обход табличной части 1С

Часто возникают задачи обойти табличную часть и изменить какие-либо значения в столбцах. В предыдущих примерах мы изменяли текущую стоку таблицы, теперь реализуем пример, когда нужно изменить все строки. В этом случае нет необходимости обращаться к элементам формы, можно работать напрямую с основным реквизитом Объект.

Остальные статьи по теме конфигурирования в 1С:

Более подробно и основательно конфигурирование в 1С дается в моей книге:

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

1 %D0%B2 %D0%B6%D0%B5%D0%BB%D1%82%D0%BE%D0%BC %D1%86%D0%B2%D0%B5%D1%82%D0%B5 3D %D0%BC%D0%B0%D0%BB%D0%B5%D0%BD%D1%8C%D0%BA%D0%B0%D1%8F

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Промо-код на скидку в 15% — 48PVXHeYu

Источник

Базовый принцип программирования управляемой формы в 1С

Цель статьи – показать применение шаблонов Remote Facade и Data Transfer Object к структуризации кода, управляемой формы в среде 1С 8.2.

Введение

Начнем с небольшого описания понятия «управляемая форма» и связанных концепций платформы 1С. Знатоки платформы могут пропустить этот раздел.

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

Обозначим проблему

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

Рассмотрим структуру кода (модуль формы) в нескольких формах одной типовой конфигурации и попробуем найти закономерности.
Под структурой будем понимать секции кода (чаще всего это блоки комментариев) выделенные разработчиком для группировки методов и директивы компиляции этих методов.
Пример 1:

Зачем нужна структура кода?
Почему существующий стандарт разработки от фирмы 1С не помогает?

Шаблоны проектирования или мудрость поколений

Примеры шаблонов в платформе 1С

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

Сравните с принятым в v8.1 стилем.

Структурируем код

Источник

Как заполнить строку табличной части на сервере без контекста

Эту и другие технические статьи написали наши программисты 1С и получили за них премии. Если вы тоже работаете с 1С и любите делиться опытом, приходите разработчиком в Neti →

Цель данной статьи показать, как работать со строкой табличной части на сервере без контекста.

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

1s zapolnit stroku tablichnoy chasti na servere bez konteksta

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

Передача типа ДанныеФормыЭлементКоллекции на сервер невозможна:

oshibka

Оптимальным решением передать текущую строку на сервер будет преобразовать ее в структуру и уже структуру передать на сервер, а уже после выполнения действий со структурой перезаполнить данные текущей строки. Программный код будет выглядеть так:

• ПреобразоватьДанныеТекущейСтрокиВСтруктуру() – на основании данных текущей строки создается и заполняется структура с теми реквизитами табличной части, которые нам понадобятся для решения задачи.

• ИндексСтроки = Элементы.Товары.ТекущаяСтрока; – получаем идентификатор текущей строки таблицы

• ЗаполнитьЕдиницуИзмеренияНоменклатуры(ДанныеТекущейСтроки); – серверный без контекстный вызов, обращение к БД, поиск единицы измерения номенклатуры. Найденное значение помещается в структуру.

• ЗаполнитьЗначенияСвойств(Объект.Товары[ИндексСтроки], ДанныеТекущейСтроки, “Упаковка”); – изменяем значение «Упаковка» в текущей строке табличной части

А теперь с помощью замера производительности сравним время выполнения данной задачи и сравним время выполнения через серверный вызов. Чтобы увидеть разницу заполняем табличную часть формы данными.

Первый замер – серверный без контекстный вызов: 0,013694, второй замер – серверный вызов: 0,047071.

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • 1с управляемые формы таблица значений на форме
  • 1с управляемые формы сформировать отчет программно скд 1с