1с изменить форму недоступно
Программная модификация формы может потребоваться в нескольких случаях:
- При доработке типовых конфигураций для облегчения процедуры последующего обновления. В этом случае будет изменен только модуль формы. Модули намного проще обновлять, чем форму.
- При реализации некоторых общих алгоритмов. Например, в подсистеме БСП «Запрет редактирования реквизитов объектов» для всех подключенных к подсистеме объектов предусмотрено программное создание кнопки для включения возможности редактирования реквизитов.
- При реализации некоторых специфических алгоритмов. Например, в справочнике Номенклатура создаются поля для редактирования дополнительных реквизитов.
В управляемой форме можно программно добавить, изменить и удалить:
Все указанные операции возможны только на сервере.
Программное изменение формы имеет ограничения:
- Удалить можно только программно добавленные реквизиты/команды/элементы. Нельзя программно удалить объекты, созданные в конфигураторе.
- Нельзя назначить реквизит основным.
Изменение команд формы
Для управления составом команд у объекта УправляемаяФорма есть коллекция Команды . У коллекции есть несколько методов:
Коллекция Команды доступна как на клиенте, так и на сервере. Изменять коллекцию (методы Добавить () и Удалить () ) можно только на сервере. Искать и получать количество элементов (методы Найти () и Количество () ) можно как на клиенте, так и на сервере.
В качестве примера работы с командами формы создадим новую команду ИсторияИзменений с заголовком «История изменений…», которая будет вызвать обработчик ОтобразитьИсторию () . Создание выполняется при открытии формы.
&НаСервере
Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка )
Команда = Команды . Добавить ( «ИсторияИзменений» );
Команда . Действие = «Подключаемый_ОтобразитьИсторию» ;
Команда . Заголовок = «История изменений…» ;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОтобразитьИсторию ( Команда )
// действия команды
КонецПроцедуры
Обработчик команды должен располагаться в форме и иметь директиву компиляции &НаКлиенте .
Изменение реквизитов формы
Чтение состава реквизитов формы выполняется функцией ПолучитьРеквизиты ( Путь >) , возвращающей массив типа РеквизитФормы . Параметр функции указывает путь к родительскому реквизиту (в виде строки). Если параметр опущен или указана пустая строка, возвращаются реквизиты верхнего уровня.
Изменение реквизитов выполняется методом ИзменитьРеквизиты ( ДобавляемыеРеквизиты >, УдаляемыеРеквизиты >) объекта УправляемаяФорма . В параметры ДобавляемыеРеквизиты и УдаляемыеРеквизиты передаются массивы с элементами типа РеквизитФормы .
Внимание!
Процесс изменения состава реквизитов является достаточно ресурсоемким. Фактически выполняется пересоздание формы. В связи с этим работа с реквизитами формы выполняется в пакетном режиме.
Создадим новый реквизит формы с именем Покупатель:
// Описание добавляемых реквизитов
ДобавляемыеРеквизиты = Новый Массив ;
ДобавляемыеРеквизиты . Добавить(Новый РеквизитФормы («Покупатель», Новый ОписаниеТипов ( «СправочникСсылка.Контрагенты» ), , «Клиент» ));
// Изменения состава реквизитов
ИзменитьРеквизиты ( ДобавляемыеРеквизиты );
Изменение элементов формы
Для управления составом элементов у объекта УправляемаяФорма есть коллекция Элементы . У коллекции есть несколько методов:
Коллекция Элементы доступна как на клиенте, так и на сервере. Изменять коллекцию (методы Вставить () , Добавить () , Переместить () и Удалить () ) можно только на сервере. Искать и получать количество элементов (методы Найти () и Количество () ) можно как на клиенте, так и на сервере. Элементами коллекции могут быть:
Элементам формы можно программно назначить обработчики событий. Для этих целей предназначен метод УстановитьДействие ( ИмяСобытия >, Действие >) .
Рассмотрим несколько наиболее распространенных на практике примеров работы с командами, реквизитами и элементами формы.
Добавление команды и связанной с ней кнопки:
// Создание команды
Команда = Команды . Добавить ( «ИсторияИзменений» );
Команда . Действие = «Подключаемый_ОтобразитьИсторию» ; // В форме должна быть процедура с указанным наименованием
Команда . Заголовок = «История изменений…» ;
// Создание кнопки и связь ее с командой
Элемент = Элементы . Добавить ( «ИсторияИзменений» , Тип ( «КнопкаФормы» ));
Элемент.ИмяКоманды = «ИсторияИзменений» ;
Добавление реквизита и связанного с ним поля ввода:
// Описание добавляемых реквизитов
ДобавляемыеРеквизиты = Новый Массив;
ДобавляемыеРеквизиты . Добавить (Новый РеквизитФормы ( «Покупатель» , Новый ОписаниеТипов ( «СправочникСсылка.Контрагенты» ), , «Клиент» ));
// Изменение состава реквизитов
ИзменитьРеквизиты ( ДобавляемыеРеквизиты );
// Создание поля ввода и связь с реквизитом
Элемент = Элементы . Добавить ( «Покупатель» , Тип ( «ПолеФормы» ));
Элемент . Вид = ВидПоляФормы . ПолеВвода ;
Элемент . ПутьКДанным = «Покупатель» ;
Назначение элементу формы обработчика события:
ЭлементПокупатель . УстановитьДействие ( «ПриИзменении» , «Подключаемый_ПокупательПриИзменении» );
&НаКлиенте
Процедура Подключаемый_ПокупательПриИзменении ( Элемент )
// Действия события
КонецПроцедуры
Внимание!
Процедурам, которые устанавливаются в качестве обработчиков событий из кода с помощью метода УстановитьДействие () , рекомендуется задавать префикс Подключаемый_.
Внимание!
Остались вопросы?
Спросите в комментариях к статье.
Для оптимизации рутинной процедуры «отрисовки» внешнего вида формы, была написана небольшая процедура.
Применение
В примере кода для вновь созданной формы отчета на СКД добавляются группы-колонки и существующие стандартные реквизиты перемещаются (Результат — в левую, настройки в правую колонку).
Следует обратить внимание на установку свойства «Вид».
До его установки часть свойств элемента (расширения данного вида) будет недоступна, и при их установке вызывать ошибку.
Пример кода
Не экономьте на рекламе, охране и страховании.
Guesto notes
При доработке типовых решений для упрощения дальнейшей поддержки и обновления использую программное создание динамического списка и вывод его на форму.
Задача
Считаем, что есть типовая форма списка номенклатуры с динамическим списком. На форму необходимо добавить страницы: на первой выводить типовой список, а на второй список номенклатуры и данные РС «Данные для обработки». На текущий момент форма выглядит так:
Решение
План работ следующий:
- Создать страницы на форме;
- Переместить типовой динамический список на нужную страницу;
- Создать динамический список и вывести его на нужную страницу.
Далее будет показан код по логическим блокам, в конце статьи будет представлен итоговый код
Создание страниц
Программное формирование реквизитов и элементов формы можно в статье 1С. Программное добавление и удаление реквизитов формы
Перемещение элементов формы
Для перемещения типового динамического списка воспользуемся методом коллекции элементов формы Переместить()
Программное создание динамического списка
Добавляем реквизит формы с типом Динамический список и определяем основные свойства.
Теперь создадим элементы формы относящиеся к динамическому списку
Небольшая хитрость
Как видно из кода, на форме не отображается поле «Ссылка», если на клиенте программно обратиться к текущим данным нашего списка, то свойства ссылка в полученной коллекции не будет. Для предотвращения такой ситуации необходимо указать обязательность использования поля, тогда свойство будет передаваться на клиент всегда
Результат
Теперь проверяем, что у нас получилось. Первая страница, на которую мы перенесли типовой список
1С, обычные формы, режим предприятия, формируется табличный документ, но недоступна его печать, кнопка печати не активна (не нажимается, предварительный просмотр также не возможен).
Что необходимо проверить в первую очередь:
- наличие доступного для печати принтера (принтер может быть, но быть в неработоспособном состоянии, об этом может говорить ошибки в момент захода в его свойства, но обычно в этом случае 1с вылетает при входе в программу)
- если принтер был только подключен перезайдите в программу (1с инициализирует доступные принтеры при старте)
- проверьте полномочие печати документов (это может быть и отдельной ролью или частью роли, возможно потребуется войти в конфигуратор для проверки, проверьте печать под полными правам — это позволит локализовать проблему более точно)
В данной конфигурации — это отдельная роль в которой указано одно право «Право вывода», которое отвечает за вывод информации на печать, сохранение в файл, копирование в буфер обмена.
- право вывода может быть ограничено и наделено через свойство «Вывод» объекта «ТабличныйДокумент», в моем случае как раз переопределяется (расширяет права менеджеров), но было разрешено и права были полные:
Причина
В итоге оказалась более неявная проблема — использование модального окна формы.
То есть открывалось модальное окно редактирования строки табличной части, к нему открывался не модальный диалог списка печатаемых объектов, затем уже открывался табличный документ в не модальном режиме, но диалог печати это тоже модальный диалог — который нельзя было открыть, система ограничила доступность кнопки.
Как только изменен был код и форма была открыта не модально, проблема ушла, но потребовалось переписать логику обработки закрытия формы редактирования.
О рекламе можно сказать, что это наука затемнять рассудок человека до тех пор, пока ты не получишь от него деньги.
— Ли Якокка
При работе в системе «1С:Предприятие» может быть доступна пользовательская настройка формы. Если иного не было установлено в конфигурации, то при вызове команды Все действия – Изменить форму на командной панели формы откроется окно редактора.
Рис. 164. Настройки формы
В левой части окна в виде дерева отображается структура элементов формы. В правой части – список свойств выбранного элемента формы.
Содержание и внешний вид формы определяются набором составляющих форму элементов нескольких видов.
● группы (их несколько видов),
● поля (нескольких видов),
Эти элементы обладают свойствами, влияющими на способ их отображения на форме. Иерархическая организация элементов определяет их взаимное расположение на форме.
Пользователь может изменять состав, взаимное расположение, группировку и свойства элементов.
Перестановка элементов.Чтобы изменить положение элементов в иерархии, используйте кнопки Вверх иВниз или перетащите элемент на нужное место с помощью мыши.
Свойства элемента. Для каждого элемента свойства настраиваются в свойствах элемента формы. Описание каждого свойства отображается в нижней части панели при выборе свойства.
Настройка видимости.Чтобы изменить видимость элементов на форме (скрыть или показать), используйте флажки напротив элементов. Следует отметить, что нельзя управлять видимостью корневого элемента Формаи кнопки настройки формы. Также не может быть изменена видимость командной панели, на которой расположена кнопка Изменить форму…
Добавление полей. Для некоторых полей может быть доступна кнопка Добавить поля. Это означает, что у данных, отображаемых в поле/колонке, есть реквизиты, которые также могут быть отображены в поле/колонке. Для того чтобы добавить на форму реквизиты полей, следует выбрать элемент формы, нажать кнопку Добавить поля и в появившемся окне выбрать требуемые реквизиты.
Применение настроек. Применение настроек происходит при выходе из редактора настройки с помощью кнопки OK или по команде Применить. При этом настройки сохраняются в информационной базе, чтобы впоследствии их можно было применить при открытии формы.
В процессе настройки можно отменить изменения, сделанные как в данном сеансе работы, так и ранее, и вернуться к настройкам формы, заданным в конфигурации. Для этого используется команда Установить стандартные настройки меню Все действия. Эта команда не вызывает немедленного изменения формы. После ее выполнения настройку можно продолжить. Применение настроек происходит только при нажатии кнопкиOK или Применить.
Бывает так, что нам не хватает возможностей уже имеющихся в 1С и необходима настройка 1С от профессионалов. Но не всегда при этом нужно обращаться к программисту. Про один из таких случаев будет описано в данной статье, применительно к 1С:Бухгалтерия 8.3 (редакция 3.0).
Пусть нам не хватает полей для внесения информации о наших контрагентах. И мы хотим добавить новое поле, которое будет называться "Статус" и иметь одно из трёх значений – "Высокий", "Средний" и "Низкий". О том как добавить такое поле, не заходя в конфигуратор, мы расскажем ниже по шагам.
Включим возможность поиска по новому полю в списке контрагентов.
Для того, чтобы появилась возможность поиска контрагентов по полю «Статус», необходимо в списке контрагентов проделать следующие шаги.
- Перейти в список контрагентов. Меню «Еще» – Изменить форму.
- Найти в списке ссылку на документ и нажать кнопку «Добавить поля». Установить флажок напротив поля «Статус (Контрагенты)» и применить изменения.
В списке появится колонка «Статус (Контрагенты)».
Теперь с помощью поиска можно быстро найти контрагентов с различным статусом. А так же упорядочить контрагентов по их статусу.
Для элементов управляемых форм 1С есть возможность изменять видимость и некоторые другие свойства. Для этих целей в управляемой форме в меню Все действия служит пункт Изменить форму .
После нажатия данной команды появится окно «Настройка формы».
В появившемся окне с помощью галочек можно изменять видимость некоторых реквизитов. При этом форма автоматически масштабируется. Можно изменять порядок реквизитов, добавлять новую группу и помещать в нее некоторые реквизиты (элементы), определяя вариант их группировки (горизонтальная, вертикальная).
Реквизиты, входящие в состав группы,размещаются соответствующим образом. Кроме того, для элементов можно настраивать такие свойства как ширина, высота, данные по заголовку. Можно определять реквизит, который будет активизироваться при открытии формы.
Важным свойством является возможность добавления в форму новых полей. Это становится возможным через реквизиты ссылочного типа. Например, имея в форме реквизит ссылочного типа Контрагент , можно добавить Контактное лицо , если данный реквизит присутствует в справочнике «Контрагенты».
При необходимости дополнительные поля можно удалить. Поля, созданные в конфигураторе, удалить нельзя. Все сделанные пользователем настройки сохраняются. Для возврата к стандартным настройкам в окне «Настройка формы» в меню Все действия следует выбрать пункт Установить стандартные настройки .
Помимо настройки форм в управляемом интерфейсе 1С предприятие можно так же настроить и списки (элементов справочников, документов). В меню Все действия есть специальная команда.Она называется Настроить список .
Когда мы выбираем эту команду, открывется окно «Настройка списка». В этом окне можно производить отбор, сортировку, определять условное оформление и группировку.
На рисунке мы можем увидеть форму позволяющую редактировать отбор.
Можно производить отбор по нескольким полям. В таком случае по умолчанию отбор будет работать по условию И. Можно также использовать условия ИЛИ и НЕ. Для использования условия ИЛИ (НЕ) необходимо с помощью команды Сгруппировать условия добавить соответствующую группу ( Группу ИЛИ , Группу НЕ ). На рисунке показана форма для определения полей сортировки.
В 1С предприятие возможна настройка группировки. На рисунке в качестве поля для группировки выбран Контрагент .
На очередном рисунке представлено, как будет выполняться группировка.
Так же можно произвольным образом раскрасить список или применить другие элементы условного оформления (выделение шрифтами, определенное форматирование) по заданному условию, а также выделить список оформляемых полей.
На рисунке показан результат условного оформления фоном поля Сумма . Когда сумма > 100 000.
В большинстве случаев это значит, что неправильно определяется параметр СсылкаНаОбъект в модуле объекта внешней печатной формы. Разберем ситуацию на конкретном примере.
В Организации была доработана печать Счета-фактуры выданного . Для этого программист написал внешнюю обработку СчетФактура_1.07.2017 и подключил ее в 1С: раздел Администрирование — Настройки программы — Печатные формы, отчеты и обработки — Дополнительные отчеты и обработки .
При формировании новой печатной формы PDF появляется ошибка Печатная форма недоступна.
Пошаговая инструкция исправления ошибки.
Шаг 1. Открыть Конфигуратор 1С.
Запустите базу в режиме Конфигуратор . PDF По кнопке Файл — Открыть откройте внешнюю обработку.
Шаг 2. Перейти в модуль объекта обработки.
По кнопке Действия — Открыть модуль объекта перейдите в программный код.
Шаг 3. Поиск ошибки.
Найдите и исправьте ссылки типа СсылкаНаОбъект в параметрах функций и процедур на МассивОбъектов .
Шаг 4. Исправление ошибки.
Замените в модуле объекта внешней обработки параметр СсылкаНаОбъект на МассивОбъектов .
Сохраните измененную внешнюю обработку по кнопке Файл — Сохранить .
Шаг 5. Обновление внешней обработки в программе.
Войдите в раздел Администрирование — Настройки программы — Печатные формы, отчеты и обработки — Дополнительные отчеты и обработки . По кнопке Обновить из файла загрузите обновленную печатную форму.
Сформируйте новую печатную форму из документа Счет-фактура выданный .
Ошибка Печатная форма недоступна в 1С 8.3 больше появляться не будет.
Помогла статья?
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Похожие публикации
-
Рассмотрим как подключить внешнюю форму отчета в ЗУП 3, если.Напоминаем, что срок сдачи П-4 за январь 2021 г. до..В ЗУП 3.1.14.525 / 3.1.18.46 реализована новая печатная форма СЗВ-М.
(2 оценок, среднее: 5,00 из 5)
Публикацию можно обсудить в комментариях ниже.
Обратите внимание!
В комментариях наши эксперты не отвечают на вопросы по программам 1С и законодательству.
Задать вопрос нашим специалистам можно в Личном кабинете
Спасибо. Все понятно и доступно!
Вы можете задать еще вопросов
Доступ к форме "Задать вопрос" возможен только при оформлении полной подписки на БухЭксперт8
Нажимая кнопку "Задать вопрос", я соглашаюсь с
регламентом БухЭксперт8.ру >>
Спасибо, Марина Аркадьевна. Ваш семинар, как всегда великолепен.
С уважением,
Римма
С ошибкой Поле объекта недоступно для записи в 1С сталкиваются как начинающие программисты при доработке программного кода, так и обычные пользователи при обновлении программы. Полный список причин возникновения ошибки содержит:
- ошибку обновления программы;
- обращение к данным изменяемого объекта по Ссылке вместо Объект ;
- попытку изменения системных полей в программном коде.
Во всех перечисленных случаях при попытке записи данных фиксируется ошибка Поле объекта недоступно для записи .
Ошибка обновления
Каждое обновление содержит многочисленные изменения в программном коде программы. Разработчики тестируют все доработки, но тоже могут ошибаться. Обнаруженные ошибки регистрируются 1С и исправляются в следующем релизе.
Если ошибка появилась после проведенного обновления программы, есть вероятность, что она связана с обновлением.
Пока ошибку не исправили, восстановите базу и архивной копии или ждите выхода нового релиза обновления.
БухЭксперт8 рекомендует всегда делать копии перед обновлением. Это гарантирует возможность восстановления базы при неудачном обновлении.
Изменение объекта по ссылке
Самая распространенная ошибка начинающих программистов — запись изменений Объекта по Ссылке .
Объект — это внутренняя таблица 1С, в которой содержатся полные данные на элемент справочника, документ, регистр или обработку. Ссылка — указание места этой таблицы в 1С.
Чтобы вносить изменения в данные справочника, документа или регистра, нужно обращаться к данным Объекта , а не Ссылки .
При доработке программного кода или написании внешних обработок использование для изменения данных объекта Ссылки приводит к появлению ошибки Поле объекта недоступно для записи .
При написании обработки заполнения контактного лица в справочнике Контрагенты программист допустил ошибку в программном коде:
Выполнение записи происходит с ошибкой в поле Основное контактное лицо .
Ошибка записи выбранного контактного лица регистрируется при нажатии на кнопку Неправильно .
В данном программном коде Объект.Контрагент — это Ссылка на поле формы Контрагент обработки Заполнение контактного лица контрагента :
Для обращения к Объекту элемента справочника Контрагент нужно выполнить команду ПолучитьОбъект() . Исправленный программный код выглядит следующим образом:
В обработке Заполнение контактного лица контрагента исправление реализовано по кнопке Правильно . В этом случае программный код отработает без ошибки.
Но для получения идеального результата сохранения данных контактного лица в справочнике Контрагенты недостаточно, необходимо записать выбранного контрагента в справочнике Контактные лица .
По кнопке Идеально выбранное контактное лицо отобразится по ссылке Контактные лица контрагента.
БухЭксперт8 рекомендует выполнять все изменения программного кода на копии рабочей базы. Если ошибка появилась после доработки конфигурации или обработки программистом, лучше передать ему информацию по ошибке для исправления, а не пытаться исправлять ее самостоятельно.
Изменение системных полей
Третьей причиной, вызывающей ошибку Поле объекта недоступно для записи , является попытка изменения системных полей и команд в программном коде:
Эти поля недоступны для записи, попытка их изменения приводит к ошибке.
При написании обработки заполнения членов комиссии в документе Требование-накладная программист допустил ошибку в программном коде.
Выполнение записи членов комиссии в документ Требование-накладная происходит с ошибкой по полю Номер строки .
Ошибка записи выбранных в обработке членов комиссии регистрируется при нажатии кнопки Неправильно .
Ошибка вызвана присвоением номера системному полю НомерСтроки . Правильный программный код выглядит следующим образом:
По кнопке Правильно запись членов комиссии в документ Требование-накладная происходит без ошибки.
Все выбранные в обработке Заполнение членов комиссии в Требовании-накладной члены комиссии отображаются в документе по ссылке Комиссия .
БухЭксперт8 рекомендует выполнять все изменения программного кода на копии рабочей базы. Если ошибка появилась после доработки программистом конфигурации или обработки, лучше передать ему информацию по ошибке, а не пытаться исправлять ее самостоятельно.
См. также:
Помогла статья?
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Похожие публикации
-
При обновлении базы 1С, установке новой Платформы, внесении изменений в.У вас нет доступа на просмотр Чтобы получить доступ:Оформите коммерческую.Ошибка Неоднозначное поле в запросе 1С 8.3 связана с наличием.После обновления информационной базы 1С, установки новой версии Платформы, доработки.
(1 оценок, среднее: 5,00 из 5)
Публикацию можно обсудить в комментариях ниже.
Обратите внимание!
В комментариях наши эксперты не отвечают на вопросы по программам 1С и законодательству.
Задать вопрос нашим специалистам можно в Личном кабинете
Вы можете задать еще вопросов
Доступ к форме "Задать вопрос" возможен только при оформлении полной подписки на БухЭксперт8
Нажимая кнопку "Задать вопрос", я соглашаюсь с
регламентом БухЭксперт8.ру >>
Изменения в 2022 году, о которых нужно знать бухгалтеру
6-НДФЛ за 1 квартал 2022 в 1С
Санкции и контрмеры: как работать организации и ее бухгалтеру в новой реальности. Часть 2
Учет малоценных ОС и запасов (ОСН)
Отчетность за 1 квартал 2022
Спасибо, Марина Аркадьевна. Ваш семинар, как всегда великолепен.
С уважением,
Римма
Читайте также: