1с перебор реквизитов формы

Объект УправляемаяФорма. Как получить все реквизиты?

1С:Предприятие 8.3 (8.3.4.437) в режиме управляемого приложения
Возникла следующая проблема.

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

На первый взгляд все просто, если бы не одно «но».
Инициатором действий является ОбщаяКоманда. т.е. к форме в этом случае можно достучаться только через ПараметрыВыполненияКоманды.Источник (коим как раз является нужная УправляемаяФорма)
Из клиента на сервер эту самую форму можно передать через ВременноеХранилище, потом на сервере и делать все что нужно.
Примерно такой код:

Если это делать через объект ЭтаФорма (контекстный вызов сервера), то метод отрабатывает как нужно.
ЭтаФорма и то, что я получаю из временного хранилища имеют одинаковые типы. А вот результат работы разный.

Народ, как можно побороть это «несчастье»?
Ну негде в моем случае взять контекст формы на сервере.

Ежели выполнить ВсеРеквизиты=ЭтаФорма.ПолучитьРеквизиты() на сервере прямо в контексте формы, то все отрабатывается нормально
Похоже что 1С что-то намудрило, и для системы ПараметрыВыполненияКоманды.Источник и ЭтаФорма (в контексте формы) несколько разные объекты, хотя и визуально и их тип абсолютно совпадают. А вот объехать этот баг без создания дополнительного реквизита в форме пока не получается.

Источник

1с перебрать реквизиты формы 8.2

Искал тут способ перебрать реквизиты формы, с тем, чтобы отправить все настройки, которые набъет пользователь в отчет себе на мэйл и потом посмотреть на тех же настройках, что получается по отчету.
Получилось так:

Процедура ОтправитьНастройкиПоЭлПочтеНажатие(Элемент)
ИмяФайла = «nastroiki.txt»;

// Попытка инициализации Outlook
Попытка
Outlook = Новый COMОбъект(«Outlook.Application»);
Исключение
Предупреждение(«Не удалось создать объект Outlook.Application!»);
Возврат;
КонецПопытки;

Настройки = Новый Соответствие;
РеквизитыВСтрутуру(Настройки);

// Попытка сохранения отчета
Попытка
ЗначениеВФайл(КаталогВременныхФайлов() + ИмяФайла, Настройки);
//ЗначениеВФайл(КаталогВременныхФайлов() + ИмяФайла, Налоги_Сч20);
Исключение
Предупреждение(«Не удалось создать файл » + ИмяФайла + «!»);
Возврат;
КонецПопытки;

// Заполнение реквизитов письма
Письмо = Outlook.CreateItem(0);
Письмо.Subject = «Настройки отчета Себестоимость»;
Письмо.Body = «Настройки отчета Себестоимость во вложении»;
Письмо.to = «vash_mail@mail.ru»;
Письмо.Attachments.Add(КаталогВременныхФайлов() + ИмяФайла);

// Попытка открытия подготовленного письма
Попытка
Письмо.Send();
Исключение
Сообщить(«Письмо отправить не удалось. «);
КонецПопытки;
КонецПроцедуры

Процедура РеквизитыВСтрутуру(Структура)
Для каждого мРеквизит ИЗ ЭтаФорма.ЭлементыФормы Цикл
Если мРеквизит.Данные <> «» Тогда
Структура.Вставить(мРеквизит.Имя, мРеквизит.Значение);
КонецЕсли;
КонецЦикла;
КонецПроцедуры

Процедура ЗагрузитьНастройкиИзФайлаНажатие(Элемент)
Диалог=Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Заголовок=»Выбор файла настроек построителя отчета»;
Диалог.Каталог=КаталогВременныхФайлов();
Диалог.Расширение=»txt»;
Диалог.Фильтр=»Настройки посторителя отчета (*.txt)|*.txt»;
Если Диалог.Выбрать() Тогда
Попытка
Настройки = ЗначениеИзФайла(Диалог.ПолноеИмяФайла);
Исключение
Сообщить(«Не удалось загрузить настройки построителя отчета.», СтатусСообщения.Внимание);
КонецПопытки;
//тут надо втащить на форму настройки.
КонецЕсли;
КонецПроцедуры

Источник

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

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

Научимся создавать простые реквизиты формы и размещать их на форме.

%D0%91%D0%B0%D0%BD%D0%BD%D0%B5%D1%80 2

Для этого в конфигураторе 1С создадим пустую форму. Пусть это будет форма некой внешней обработки. В этой форме нас интересует закладка Реквизиты

1 2

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

Для того, чтобы добавить реквизит необходимо нажать на кнопку «Добавить реквизит» командной панели закладки «Реквизиты»

2 2

После этого будет добавлен реквизит управляемой формы 1С с типом по умолчанию (строка) и справа откроется палитра свойств этого реквизита.

3 2

В этой палитре мы можем установить имя, заголовок, а так же тип реквизита управляемой формы.

Для тренировки создадим четыре реквизита с типом строка: Фамилия, Имя, Отчество и ФИО. И один реквизит с типом дата: ДатаРождения.

4 1

Разместим реквизиты на форме. Сделать это просто: необходимо нужный реквизит мышкой «перетащить» из закладки «Реквизиты» на закладку «Элементы»

5 1Перетащим все реквизиты на формы, и с помощью кнопок «Вверх», «Вниз» удобно расположим их на форме.

6 1

Сейчас мы сделали такую примитивную форму, на которой расположили реквизиты. После того, как мы «перетащили» реквизит в элементы, то на форме был создан элемент формы. В нашем случае это поле формы. Если мы сейчас зайдем в палитру свойств поля ввода, то увидим, что он связан с реквизитом посредством свойства ПутьКДанным.

7 1

Если нажать на кнопку «…» свойства ПутьКДанным, то у разработчика есть возможность поменять привязанный к этому элементу реквизит формы.

8 1

Сейчас научимся использовать реквизиты в программном коде. Из статьи, посвященной архитектуре управляемой формы 1С 8.3 Вы знаете, что выполнение кода на форме возможно под директивами &НаКлиенте &НаСервере и &НаСервереБезКонтекста. Доступ к реквизитам формы возможен только в процедурах и функциях, которые выполняются на &НаКлиенте и &НаСервере.

Для наглядности выполним небольшую задачу: создадим команду, при выполнении которой Фамилия, Имя, Отчество и дата Рождения будут складываться в ФИО + Дата рождения.

Создадим локальную команду формы. Для этого на закладке «Команды» в подзакладке «Команды формы» необходимо нажать на кнопку «Добавить»

9 1

После создания команды, справа откроется палитра свойств новой команды, где мы зададим её название.

10 1

Но команда – это выполнение некоторых действий на форме. Чтобы действия осуществились необходимо создать обработчик команды. Для создания обработчика команды нужно нажать на кнопку «Лупа» свойства действия. После этого откроется окно выбора места размещения обработчика.

11 1

Мы выберем расположение НаКлиенте, поскольку для тех действий, которые мы хотим осуществить вполне хватит клиентского контекста.

После выбора места расположения обработчика, в модуле формы будет создана процедура под директивой &НаКлиенте, в которой мы напишем несложный код. В этом коде к реквизитам формы мы будем обращаться просто как к переменным. Мы можем это делать в клиентском и серверном контексте.

В этом коде, я преобразовал дату в строку при помощи функции формат.

Обратите внимание, после создание процедуры в палитре свойств команды свойство Действие заполнилось названием нашей новой процедуры.

12 1

И последним шагом нам осталось нашу команду разместить на управляемой форме. Просто перетащим её мышкой в закладку Элементы

13 1

При этом на форме появится кнопка.

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

14 1

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

%D0%91%D0%B0%D0%BD%D0%BD%D0%B5%D1%80 2

Подробно вопросы работы с управляемыми формами в частности и с управляемым приложением в целом рассмотрены в книге «Основы разработки в 1С: Такси. Разработка управляемого приложения за 12 шагов». Эта книга станет настоящим подспорьем для тех, кто только начал знакомится с разработкой управляемого приложения.

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С: Такси» отлично подойдёт тем, кто уже начал программировать и испытывает определенные сложности с этой темой и тем, кто уже давно программирует, но ни разу еще не работал с управляемыми формами 1С

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

Изучайте основы конфигурирования в 1С и учитесь программировать в «1С: Предприятии» с помощью моих книг: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»

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


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

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Вступайте в мои группы в соцсетях, и будьте в курсе всех новостей

Источник

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

Платформа 1С 8 не позволяет получать информацию о реквизитах обычной формы. Эти функции позволят вам получать из любой обычной формы 1С 8.X массив имен ее реквизитов, а также имя ее основной реквизит.

У Брикса вся фишка в том что он не мог на основе двоичных данных(текстовых) получить форму.

Код
Показать полностью

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

Код
Показать полностью

Не могли бы вы еще раз привести функцию ЛксСтрокаВнутрВХМЛТело в виде кода, а не текста, без лишних \, видимо убирая их, что то оставила или удалила лишнюю. Дает ошибку в XMLСтрокаФормы.

tormozit, спасибо за разработку!
Только у меня (8.2.12.80 + ЗУП 2.5.27.6) выдаёт ошибку:

В чём может быть причина? Вызываю из модуля формы при открытии, в качестве параметра ЭтаФорма,»82″. Сама строка XMLСтрокаФормы заполнена

Вещь полезная. Для неуправляемых форм видимо единственное решение. Но давайте здесь тоже не кастрированную функцию ЛксСтрокаВнутрВХМЛТело запишем :

Если метод выдает ошибку, то заменяем строки в посте №29 (HIgor)

Спасибо за наводку Сергею Чуяну (Собеседник) http://infostart.ru/public/20069/
вызов функции

Все хорошо работает, но наблюдается потеря времени при открытии форм.
Например функция УстановитьДоступностьПоляВводаНомера, которая вызывается ПриОткрытии() многих форм документов или элементов справочников затрачивает времени 0,003-004 сек. без проверки основного реквизита. А с проверкой 0,35 – 0,6 и больше в зависимости от сложности формы. Визуально заметна разница во времени. Придется мириться с задержкой примерно в половину секунды при открытии любой из форм.

Источник

Просмотр и сравнение реквизитов объектов (УФ и Обычная) + Генерация программного кода 1С для заполнения нового объекта

Выбор ссылки на объект

— При выборе «Ссылка на объект» (для выбора доступны Справочники или Документы) ссылка добавляется в таблицу «Ссылки на объекты (для сравнения)».

— Для выбранного значения «Ссылка на объект» автоматически строится «Таблица значений реквизитов».

Просмотр реквизитов в «Таблице значений реквизитов»

— Обработка выводит все реквизиты и их значения для выбранного объекта

— Показывает Табличные части и их реквизиты (Внимание: зашито ограничение вывода не более 50-ти строк, чтобы обработка не задумалась на долго)

— Показывает скрытые реквизиты, которые не выведены на форму объекта

— Показывает типы значений реквизитов (Булево, Число, Дата, Строка, Справочник, Документ, Перечисление и т.д.)

— Показывает внутренний идентификатор объекта (GUID или УИД).

Сравнение реквизитов 2-х и более объектов

— Добавить в таблицу «Ссылки на объекты (для сравнения)» два или более объектов

— Установить галочки в колонке «Сравнить» напротив сравниваемых объектов

— Нажать на кнопку «Сравнить»

— Обработка отметит розовым те значения реквизитов, которые отличаются

— Данная функция сильно помогает, например, когда 2-а документа делают разные проводки, но не понятно чем эти документы отличаются

Формирование программного кода 1С для быстрого заполнения новых объектов

— Необходимо установить флажок «Формировать Код 1С (для использования в обработках)»

— Перезаполнить «Таблицу значений реквизитов»

— В колонке «Код 1С» появится уже сформированный код 1С, который можно вставить в процедуру любой обработки.

— Чтобы перенести код в обработку просто выделите нужные строки в колонке «Код 1С», скопируйте в буфер и вставьте куда нужно.

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

Обработка запоминает выбранные ссылки

— При закрытии запоминает ссылки, которые открывались в этой обработке

— При повторном открытии ссылки восстанавливаются, не нужно их снова искать.

— Работает на Управляемых и Обычных формах

— Подходит для любой конфигурации 1С

— Обработка проверялась на платформах 1С 8.2 (8.2.19.130) и 1С 8.3 (8.3.13.1690)

Скачать файлы

Специальные предложения

f71a8c4e70c0ff03708038e2b0210df8

9c2808762ec294cd4c55532520b9c521

895fb1e0f7afc3c0ed0d73bf5ee9d9d0

egais promo

b34b292ed32e9501f98cc31df406353e

789363929b9f37ddc5641a069a5fe52e

5b19cd6c4494a88b2abefce64a1b7565

199e2be4fd21dd8f4209d8ec34616c76

А вообще идея интересная, и реализация выглядит красиво

(3) данная разработка работает и под обычными и под управляемыми формами с режимом совместимости от 8.2.13.
Это сильно большой плюс, по моему мнению.

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

Обновление 23.04.19 12:02

99c88ac498344ef02672176a4feec7a5

См. также

Универсальный редактор данных (УРД) Промо

27.08.2021 5479 118 Adeptus 51

Конвертация любых адресов, написанных в свободной форме, к ФИАС

Допустим у нас есть база с адресами клиентов, и написаны они могут быть как душе угодно. С опечатками, без индексов, без разделителей, в совершенно любом формате. Вот было бы здорово иметь функцию, которая одним нажатием кнопки преобразует любую белиберду к строгому представлению адреса по ФИАС? Восстановит индекс, исправит опечатки и вернёт на 100% валидный адрес. Для всех, кто мечтательно сказал «ДА!», выкладываю данную обработку.

30.06.2020 7145 66 XilDen 15

CF & SQL : конструктор прямых запросов к БД 1С

Программа для чтения и анализа внутренней структуры данных 1С V8.х, Содержит конструктор прямых SQL запросов, позволяет обрабатывать и редактировать тексты SQL-запросов, выполнять прямые запросы к базе данных 1С и обрабатывать полученные результаты.

02.10.2019 30334 296 dmitrydemenew 63

Markdown-editor в 1С (с сохранением в HTML)

В этой обработке вы пишете свой текст, используя синтаксис Markdown, а на выходе получаете чистый HTML-код, избавленный от JS-библиотеки, которая его сформировала. Совместим с Webkit и IE.

04.07.2019 12498 18 riposte 6

Удаление и/или копирование сохраненных в 1С настроек (например настроек печати табличных форм) Промо

Иногда нужно удалить сохраненную в 1С «покореженную» настройку или скопировать «удачную» другому пользователю.

01.09.2012 66370 1378 AnryMc 46

Модель объекта

Подсистема позволяет описать модель данных объекта, где описана зависимость между реквизитами, и затем использовать эту модель в разных сценариях работы с объектом. Версия платформы: 8.3.6 и выше. С небольшими доработками будет работать на 8.2.

30.06.2019 16503 1 vadim1980 5

Редактор объектов информационной базы 8.3

Универсальная внешняя обработка для редактирования реквизитов и табличных частей объектов информационной базы, редактирование движений документов. Доступ ко всем реквизитам объектов, есть возможность выгрузки и загрузки данных (объекты и движения документов) через XML. Платформа 8.3, управляемые формы. Версия 1.1.0.57 от 09.10.2021

23.01.2019 42671 475 ROL32 50

Simple WMS Client – это визуальный конструктор мобильного клиента для терминала сбора данных(ТСД) или обычного телефона на Android. Приложение работает в онлайн режиме через интернет или WI-FI, постоянно общаясь с базой посредством http-запросов (вариант для 1С-клиента общается с 1С напрямую как обычный клиент). Можно создавать любые конфигурации мобильного клиента с помощью конструктора и обработчиков на языке 1С (НЕ мобильная платформа). Вся логика приложения и интеграции содержится в обработчиках на стороне 1С. Это очень простой способ создать и развернуть клиентскую часть для WMS системы или для любой другой конфигурации 1С (УТ, УПП, ERP, самописной) с минимумом программирования. Например, можно добавить в учетную систему адресное хранение, учет оборудования и любые другие задачи. Приложение умеет работать не только со штрих-кодами, но и с распознаванием голоса от Google. Это бесплатная и открытая система, не требующая обучения, с возможностью быстро получить результат.

09.01.2019 62164 269 informa1555 236

Программа Faster 9.4 позволяет ускорить процесс работы программиста (работает в любом текстовом редакторе). Подсказка при вводе текста на основе ранее введенного текста и настроенных шаблонов. Программа Faster позволяет делится кодом с другими программистами в два клика или передать ссылку через QR Код. Исправление введенных фраз двойным Shift (с помощью speller.yandex). Переводчик текста. Переворачивает текст случайно набранный на другой раскладке. Полезная утилита для тех, кто печатает много однотипного текста, кодирует в среде Windows на разных языках программирования. Через некоторое время работы с программой у вас соберется своя база часто используемых словосочетаний и кусков кода. Настройка любых шорткатов под себя с помощью скриптов. Никаких установок и лицензий, все бесплатно.

24.05.2012 84626 965 moolex 157

Источник

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