Поиск владельца формы
Из реквизита, расположенного на форме документа, открывается форма выбора справочника (стандартным механизмом 1С через поле ввода). Как в форме выбора справочника определить форму исходного документа, из которого открыта форма выбора?
Владелец формы возвращает поле ввода, но из него нельзя получить форму, на которой установлен этот элемент формы.
Переход на программное открытие формы (с передачей, например, в качестве владельца самой исходной формы, вместо поля ввода), пока не рассматриваю, т.к. это геморно и во многих местах нужно прописать. В т.ч. в полях составного типа.
Пока вижу только перебор метаданных (документов) и всех форм, поиск отрытых форм и поиск в них указанного поля ввода.
в то время как для «ссылки» всегда существует только один объект в базе данных и форма получается одна (для одинаковой совокупности параметров
Вот 1С-цы сволочи. Есть в менеджера документов функция «ПолучитьФормуНовогоДокумента» для получения формы нового документа (хотя это можно было бы решить и просто созданием нового документа объекта и получения его формы). Но зачем же тогда ПолучитьФорму(«ФормаДокумента») тоже возвращает форму нового документа, вместо того, чтобы как и для других форм произвести поиск всех открытых форм (ибо Ключ по умолчанию = Ложь).
Тогда тут остаётся только дело за ручным отслеживанием открываемых форм. Можно ли это событие отловить из одного общего места?
Цитирование СП является ответом на него.
Смортрию типовые документы. В формах в обработчике события ПриОтркытии «везде» есть вот такой вот вызов
Тогда можно в этой процедуре общего модуля единожды разместить код регистрации открытия формы. Ведь вряд ли она будет вызвана для неоткрытой формы. Да и не критично это будет (всё равно формы будут проверяться методом Форма.Открыта()).
Программно определить тип формы и ее объект-владелец формы при открытии
Возникла необходимость определить тип и объект-владелец формы при открытии.
Например, «Форма списка» документа «Реализация товаров»
Объект = Неопределено;
Попытка
Объект = ЭтаФорма.ДокументОбъект;
Исключение
КонецПопытки;
Если Объект = Неопределено Тогда
Попытка
Объект = ЭтаФорма.ДокументСписок;
Исключение
КонецПопытки;
КонецЕсли;
Если Объект = Неопределено Тогда
Попытка
Объект = ЭтаФорма.СправочникОбъект;
Исключение
КонецПопытки;
КонецЕсли;
Если Объект = Неопределено Тогда
Попытка
Объект = ЭтаФорма.СправочникСписок;
Исключение
КонецПопытки;
КонецЕсли;
Если Объект <> Неопределено Тогда
ТипЗначения = ТипЗнч(Объект);
ТипЗначенияСтрока = Строка(ТипЗначения); //»ДокументСписок.РеализацияТоваров»
ПоложениеТочки = Найти(ТипЗначенияСтрока,»:»);
ДлинаСтроки = СтрДлина(ТипЗначенияСтрока);
ЛеваяЧастьСтроки = Лев(ТипЗначенияСтрока,ПоложениеТочки-1);
ТипОбъекта = СтрЗаменить(ЛеваяЧастьСтроки,» список»,»»);
ТипОбъекта = СтрЗаменить(ТипОбъекта,» объект»,»»);
ТипФормы = СтрЗаменить(ЛеваяЧастьСтроки,»Документ «,»»);
ТипФормы = СтрЗаменить(ТипФормы,»Справочник «,»»);
Возврат Структура;
Иначе
Возврат Неопределено;
КонецЕсли;
Но через попытку-исключение как-то некрасиво. Может кто подскажет более элегантный способ обращения к основному реквизиту формы и выдергивания из него необходимых мне сведений?
Особенности работы в формах с подчиненным справочником
При работе в формах с подчиненных справочниками имеется ряд особенностей.
Свойство ПараметрОтборПоВладельцу используются для передачи в форму списка справочника информации о том, что список нужно отображать по определенному владельцу. Расширение формы списка справочника на основании значения этого свойства в процессе открытия формы устанавливает отбор по владельцу. Этот параметр используется, например, системой при открытии подчиненного справочника по определенному элементу из списка справочника-владельца (по кнопке «Перейти»). Если отсутствует колонка для отображения владельца, то при открытии формы отключается возможность управления отбором пользователем, чтобы просмотр списка выполнялся строго по указанному владельцу.
Свойство ПараметрВыборПоВладельцу используется для инициализации формы выбора. В этом случае выбор будет выполняться только для элементов с указанным владельцем. Этот параметр используется системой при инициализации выбора значения подчиненного справочника в поле ввода из формы выбора.
В 1С:Предприятии 8 выбор в поле ввода значения подчиненного справочника не производит предварительного выбора владельца (такое поведение было реализовано в 1С:Предприятии 7.7). Если в момент выбора в поле ввода значение владельца для поля ввода не установлено (ни через связь по владельцу, ни через значение свойства ВыборПоВладельцу ), то форма будет открыта без установленного владельца. Таким образом, необходимо в форме выбора подчиненного справочника предусмотреть возможность выбора владельца.
Выбор владельца может выполняться за счет использования стандартного диалога отбора, однако если необходимо часто выполнять такой выбор, то стандартный диалог не будет удобен.
Может использоваться возможность просмотра справочника по всем владельцам. В этом случае следует вставить в список колонку для отображения владельца. Однако такой вариант тоже может быть неудобен для выбора.
Эффективным решением может быть размещение в форме выбора поля ввода, связанного с данными отбора по владельцу («Отбор.Владелец.Значение»). В этом случае пользователь сможет быстро установить отбор по владельцу и выбрать необходимый элемент.
Обработка Выбора в поле ввода формы
1С:Предприятие 8.3.14. Документация
Глава 7. Формы
Для демонстрации работы параметров формы рассмотрим реализацию выбора элемента в поле ввода. Сутью примера будет реализация механизма выбора элемента из списка на встроенном языке.
К моменту начала работы с примером нужно иметь конфигурацию, обладающую следующими свойствами:
Теперь реализуем в этой конфигурации все механизмы, которые использует платформа для выбора элемента из списка, на встроенном языке. При этом мы увидим:
Добавим дополнительный параметр, который будет управлять закрытием формы выбора после выбора элемента. Назовем этот параметр ЗакрыватьПослеВыбора (тип Булево). Добавим его в качестве параметра формы ФормаВыбора справочника Товары.
Для того чтобы открыть форму выбора элемента, необходимо в форме элемента справочника Аналоги создать обработчик события НачалоВыбора у элемента формы ВыбранныйТовар.
Следует отдельно остановиться на третьем параметре метода ОткрытьФорму(). Этот параметр определяет, кто будет владельцем формы выбора и кому будет приходить оповещение о сделанном выборе. В данном случае мы указали владельцем формы выбора сам элемент формы, но также мы можем указать этим параметром и саму форму. В этом случае будет необходимо реализовывать обработчик ОбработкаВыбора модуля формы и в нем решать, в какой реквизит формы помещать выбранные данные.
ПРИМЕЧАНИЕ. Если мы не будем реализовывать обработчик события НачалоВыбора, то его действия выполнит сама система. Это справедливо и для всех дальнейших обработчиков, которые использованы в примере.
Теперь необходимо обработать переданные параметры в форме выбора. Сделаем это в обработчике ПриСозданииНаСервере() модуля формы выбора.
Для того чтобы проверить работоспособность установленных нами параметров формы, установим, с помощью конфигуратора, у таблицы формы выбора Список свойство ВыборГруппИЭлементов в значение Группы (без применения параметра не будет доступен выбор элементов справочника).
ПРИМЕЧАНИЕ. Если у таблицы Список, отображающей список товаров, свойство РежимВыбора не будет установлено в значение Истина, то выбор товаров будет недоступен.
Теперь нам необходимо обработать выбор желаемого элемента в форме выбора. Для этого нужно определить обработчик события ВыборЗначения таблицы формы.
Нам осталось реализовать обработку выбора элемента в самом поле ввода. Для этого необходимо обработать событие ОбработкаВыбора нашего поля ввода ВыбранныйТовар.
Мы самостоятельно реализовали системный механизм выбора значения в поле ввода на форме.
ВНИМАНИЕ! Данный пример не является законченным. Его единственным назначением является демонстрация механизмов работы с параметрами формы.
Если при создании параметров (обработчик ВыбранныйТоварНачалоВыбора()) заменить строку:
то форма выбора перестанет закрываться после того, как будет осуществлен выбор. Это можно использовать, например, для реализации формы подбора (выбор нескольких товаров без закрытия формы выбора).
Полные имена открытых форм
Вот перед нами управляемая форма. И как бы так быстро понять, «чья» она, откуда взялась, где искать в конфигураторе? Для решения этой несложной, но часто возникающей задачи была сделана обработка. Показывает и независимые, и блокирующие владельца формы, позволяет понять, что где смотреть, искать, отлаживать и дорабатывать. Простенько, но мне вот очень порой помогает. Надеюсь, пригодится ещё кому.
Тестировалось на 8.3.12.1685, но, по идее, начиная с 8.3.6, уже должно работать.
Скачать файлы
Специальные предложения
Обновление 06.08.19 16:15
См. также
Универсальный редактор данных (УРД) Промо
27.08.2021 5477 118 Adeptus 51
Конвертация данных 3 расширение: Редактор кода.
08.09.2020 11563 30 Viktor_Ermakov 32
Предлагаю широкой общественности расширение А1Э, используемое в нескольких продуктивных базах для выполнения широкого круга задач.
14.08.2020 13656 0 Enigma 47
Должно быть NULL в регистре бухгалтерии Хозрасчетный
Обработка проверяет наличие и решает проблему с ошибкой развернутого сальдо в Оборотно-сальдовой ведомости (регистр бухгалтерии Хозрасчетный) из-за ошибки Универсального редактора реквизитов или кода программиста, устанавливающего пустые ссылки в значениях Валюты, Подразделения, Направления деятельности не равными NULL. И пересчёт итогов тут точно не поможет.
21.10.2019 18329 74 sapervodichka 33
Программа Faster 9.4 позволяет ускорить процесс работы программиста (работает в любом текстовом редакторе). Подсказка при вводе текста на основе ранее введенного текста и настроенных шаблонов. Программа Faster позволяет делится кодом с другими программистами в два клика или передать ссылку через QR Код. Исправление введенных фраз двойным Shift (с помощью speller.yandex). Переводчик текста. Переворачивает текст случайно набранный на другой раскладке. Полезная утилита для тех, кто печатает много однотипного текста, кодирует в среде Windows на разных языках программирования. Через некоторое время работы с программой у вас соберется своя база часто используемых словосочетаний и кусков кода. Настройка любых шорткатов под себя с помощью скриптов. Никаких установок и лицензий, все бесплатно.
24.05.2012 84626 965 moolex 157
CF & SQL : конструктор прямых запросов к БД 1С
Программа для чтения и анализа внутренней структуры данных 1С V8.х, Содержит конструктор прямых SQL запросов, позволяет обрабатывать и редактировать тексты SQL-запросов, выполнять прямые запросы к базе данных 1С и обрабатывать полученные результаты.
02.10.2019 30334 296 dmitrydemenew 63
Конвейер проверки качества кода
Jenkinsfile для выполнения проверки качества кода. Собирает информацию с АПК, EDT и BSL-LS. Сопоставляет ошибки с гит-репозиторием, выгруженным ГитКонвертором. Отправляет в Сонар.
04.09.2019 37615 27 Stepa86 46
Модель объекта
Подсистема позволяет описать модель данных объекта, где описана зависимость между реквизитами, и затем использовать эту модель в разных сценариях работы с объектом. Версия платформы: 8.3.6 и выше. С небольшими доработками будет работать на 8.2.
30.06.2019 16502 1 vadim1980 5
Установка предопределенных элементов: просмотр, исправление и поиск ошибок (задвоенных и отсутствующих) Промо
Простая обработка для просмотра и установки значений предопределенных элементов. Позволяет заменить значение предопределенного элемента с одного элемента справочника на другой, удалить предопределенный элемент (снять пометку предопределенности), установить пометку переопределенного элемента. Проверяет предопределенные данные на наличие задвоений и отсутствующих. Работает со справочниками, планами счетов, планами видов характеристик, планами видов расчетов.
06.10.2014 169452 2757 ekaruk 170
Переводим рутину ручного тестирования 1C на рельсы Jenkins-а и ADD
Вы все еще тестируете свои конфигурации 1С вручную? Да вы просто тратите жизнь впустую! В данном туториале попробуем скрестить ADD и jenkins для автоматического запуска тестов.
03.06.2019 37011 9 ripreal1 92
Универсальный HTTP-сервис на платформе 1С, аля HTTP-сервер с примером
Практический кейс построения HTTP-сервиса, который работает по принципу HTTP-сервера, с разбором всех методов построения и разработки класса задач построения личных кабинетов и сопряжения их с центральной базой.
13.05.2019 38270 152 Diversus 44
Немного о графических файлах. Сжатие. Распознавание текста
Простые и доступные методы борьбы с лишним весом графических файлов и распознавание текста.
06.05.2019 9857 12 tusv 6
[Расширение] Контроль отрицательных остатков по регистру бухгалтерии при проведении Промо
Расширение позволяет без изменений конфигурации проверять остатки по регистру бухгалтерии при проведении каждого документа и запрещает проведение при появлении отрицательных остатков после проведения.
17.08.2015 54692 170 ekaruk 32
Расширение «Быстрая проверка кода» для конфигурации 1С:Автоматизированная проверка конфигураций
Расширение для конфигурации «1С:Автоматизированная проверка конфигураций», позволяющее проверять произвольный код.
26.03.2019 26051 67 Bazil 34
Настройка отладки на сервере 1С
Обработка для настройки отладки на сервере, включение отладки COM-соединений и отладки Web-сервисов.
26.03.2019 37465 165 frkbvfnjh 44
Методика оптимизации программного кода 1С: проведение документов
Описание простого метода анализа производительности программного кода 1С, способов его оптимизации и оценки результатов в виде числовых показателей прироста производительности. Не требует сторонних программных продуктов, используются только типовые возможности платформ 1С. Методика проверена на линейке платформ начиная с 1С:Предприятие 8.2 (обычные формы, управляемые формы). Позволяет ускорить проведение проблемных документов в 3 и более раз, провести проверку корректности формирования проводок оптимизированным кодом и подтвердить результаты оптимизации реальными замерами производительности в режиме предприятия. К публикации приложены демонстрационные базы для режимов обычного и управляемого приложения на платформе 1С:Предприятие 8.3 (8.3.9.2033).
19.03.2019 31645 21 dmitrydemenew 85
[x1c.ru] 1CDBin: Работа с файлами *.1CD на низком уровне средствами языка 1С с возможностью чтения таблиц (поддерживается формат 8.3.8.0) Промо
Обработка позволяет просматривать файловые базы 1CD на низком уровне средствами встроенного языка. Реализована часть функциональности Tool_1CD, но на языке 1С Предприятия. Показываются таблицы, параметры таблиц, поля таблиц, записи таблиц, значения полей BLOB, есть 16-ричный просмотр страниц базы и консоль кода. Можно использовать для изучения структуры файлов 1CD, просмотра баз 1CD для выявления повреждений, создания своих обработок для выгрузки данных без открытия исследуемой базы в 1С:Предприятии.
07.10.2014 62896 392 GusevNA 78
Инструктор. Прототип инструмента создания быстрых пользовательских инструкций
Прототип дружелюбного и эффективного инструмента для написания пользовательских экспресс-инструкций. Задействована штатная утилита Windows, о существовании которой многие не знают и которая умеет делать огромную работу по логированию действий и снятию скриншотов на всех ПК с Windows (начиная с версии Win7). «Инструктор» не требует никакой установки и дополнительных библиотек! Это означает, что инструмент будет работать и на домашнем ПК и на «чужом ноутбуке» и на терминальном win-сервере у заказчика, где ваши права сильно ограничены. Вы просто подключаете легкую файловую базу 1С и получаете инструмент по снятию скриншотов с интересной функциональностью.
15.02.2019 18597 49 ROM_NN 11
Simple WMS Client – это визуальный конструктор мобильного клиента для терминала сбора данных(ТСД) или обычного телефона на Android. Приложение работает в онлайн режиме через интернет или WI-FI, постоянно общаясь с базой посредством http-запросов (вариант для 1С-клиента общается с 1С напрямую как обычный клиент). Можно создавать любые конфигурации мобильного клиента с помощью конструктора и обработчиков на языке 1С (НЕ мобильная платформа). Вся логика приложения и интеграции содержится в обработчиках на стороне 1С. Это очень простой способ создать и развернуть клиентскую часть для WMS системы или для любой другой конфигурации 1С (УТ, УПП, ERP, самописной) с минимумом программирования. Например, можно добавить в учетную систему адресное хранение, учет оборудования и любые другие задачи. Приложение умеет работать не только со штрих-кодами, но и с распознаванием голоса от Google. Это бесплатная и открытая система, не требующая обучения, с возможностью быстро получить результат.
09.01.2019 62163 269 informa1555 236