Как изменить реквизит в справочнике в управляемых формах

как изменить реквизит, находящийся на форме справочника

Я
   Alex655

16.06.15 — 09:30

я получаю объект, но не могу к нему обратиться (через объект.реквизит), каким способом воспользоваться? ут11. 8.3

  

Партнерская программа EFSOL Oblako

   Вася Чез

1 — 16.06.15 — 09:32

(0) как получаешь?

   Бубка Гоп

2 — 16.06.15 — 09:32

Что то не туда катимся, товарищи. Книжки читать, не?

По сабжу: убедись, реквизит объекта или формы ты не можешь изменить?

   kosts

3 — 16.06.15 — 09:32

Если дело происходит в модуле обычной формы, то чаще всего так и пишут:

РеквизитРазмерОклада = 100;

   Alex655

4 — 16.06.15 — 09:34

(2) формы (1) Партнер = Справочники.Партнеры.НайтиПоНаименованию(имя).ПолучитьОбъект() (3) я на форме обработки пытаюсь это сделать

   Alex655

5 — 16.06.15 — 09:34

(3) формы управляемые

   Бубка Гоп

6 — 16.06.15 — 09:35

(4) Тогда на кой орган тебе объект?

   kosts

7 — 16.06.15 — 09:35

(4) У тебя типы не совпадают

   Alex655

8 — 16.06.15 — 09:35

(6) получитьформу?

   Бубка Гоп

9 — 16.06.15 — 09:35

(4) Реквизит ФОРМЫ он не у ОБЪЕКТА, а у ФОРМЫ…

   Alex655

10 — 16.06.15 — 09:56

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

   Бубка Гоп

11 — 16.06.15 — 09:59

(10) поток сознания.

в базе не хранятся реквизиты формы, в ней хранятся только реквизиты объектов.

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

Если да, просто обращайся к реквизиту по имени, РеквизитССылкойНаПартнера.ПолучитьОбъект(), например

   Бубка Гоп

12 — 16.06.15 — 10:02

(10) + если вызов не контекстный, реквизиты формы будут доступны и на сервере, делай там все что тебе вздумается

   Бубка Гоп

13 — 16.06.15 — 10:02

(12) ошибочка, контекстный конечно ) т.е. просто НаСервере

   Alex655

14 — 16.06.15 — 10:09

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

&НаКлиенте

Процедура Актуализировать(Команда)

    
    
    ПартнерФорма = Объект.Партнер.ПолучитьФорму(«CRM_ФормаЭлемента»);

    ПартнерФорма.ЭтаФорма[«ОГРН»]= ОГРН;

    ПартнерФорма.Закрыть();

КонецПроцедуры

   Бубка Гоп

15 — 16.06.15 — 10:10

(14) ОГРН — реквизит объекта а не формы

   Бубка Гоп

16 — 16.06.15 — 10:12

(15) так что лезь на сервер, получай объект, меняй огрн, записывай

   Alex655

17 — 16.06.15 — 10:12

(15) формы

   Бубка Гоп

18 — 16.06.15 — 10:13

(17) непробиваемый какой. а я говорю — это реквизит объекта

   Бубка Гоп

19 — 16.06.15 — 10:14

(17) разверни список реквизитов у справочника партнеры в конфигураторе, внимательно изучи содержимое, подумай

   Alex655

20 — 16.06.15 — 10:15

   Alex655

21 — 16.06.15 — 10:16

(18) справа в свойствах это видно, что просто огрн, а не объект.огрн

   Бубка Гоп

22 — 16.06.15 — 10:16

(21) то что такой же реквизит есть у формы, не говорит о том что его нет у объекта

   Alex655

23 — 16.06.15 — 10:17

(22) мне в скрин не влезет весь список реквизитов объекта. Там правда его нет

   Бубка Гоп

24 — 16.06.15 — 10:18

(23) хорошо, тогда посмотри откуда он тянется.

В форме данные не хранятся, пойми

   Alex655

25 — 16.06.15 — 10:30

(24) тип строка, ниоткуда

   Alex655

26 — 16.06.15 — 10:31

(24) и галка стоит «сохраняемые данные»

   Alex655

27 — 16.06.15 — 10:34

суть не в этом, я прошу о другом помощи

   Бубка Гоп

28 — 16.06.15 — 10:35

(26) эта галка не совсем то означает

   Бубка Гоп

29 — 16.06.15 — 10:37

(25) если ниоткуда, то оно вообще нигде не хранится

   Alex655

30 — 16.06.15 — 10:44

(29) но данные там есть же, если открыть карточку партнера

   pitbul

31 — 16.06.15 — 10:48

(30) Данные туда заполняются видимо при открытии формы или перед открытием

   Бубка Гоп

32 — 16.06.15 — 10:51

(30) значит все таки откуда то они подтягиваются

   Бубка Гоп

33 — 16.06.15 — 11:07

Выходит, при клиент-серверном взаимодействии, Знач отрабатывает «честно» даже с коллекциями

   Бубка Гоп

34 — 16.06.15 — 11:08

(33) пардон, не туда

   Alex655

35 — 16.06.15 — 11:10

(32) я разобрался, спасибо) из контрагента тащится, у контрагента поменял и там зменилось

  

Бубка Гоп

36 — 16.06.15 — 11:12

(35) вот и славненько. советую все же что нить почитать про УФ

В данной статье мы рассмотрим, как можно изменить реквизиты сразу у нескольких элементов какого-либо документа или справочника. В качестве примера все действия будут производиться на демо-базе 1С 8.3 Бухгалтерия 3.0.

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

В программе 1С 8.3 (на управляемых формах) существуют два основных способа групповой обработки справочников и документов:

  • из формы списка;
  • при помощи стандартной обработки.

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

Давайте начнем от простого к сложному. Рассмотрим как пользоваться обработкой в первом варианте.

Содержание

  • Изменение справочников и документов из формы списка
  • Стандартная обработка «Групповое изменение реквизитов»
    • Введение новых значений
    • С помощью произвольного алгоритма

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

Наша команда предоставляет услуги по консультированию, настройке и внедрению 1С.

Связаться с нами можно по телефону +7 499 350 29 00.

Услуги и цены можно увидеть по ссылке.

Будем рады помочь Вам!

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

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

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

изменить выделенные

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

без НДС

Так же, данная обработка позволяет изменять не только несколько элементов одновременно, но и несколько групп со всеми подчиненными элементами. Для этого в форме настройки реквизитов нажмите на кнопку «Дополнительные параметры» и в открывшемся окне установите флаг в пункте «Обрабатывать дочерние элементы».

обрабатывать дочерние элементы

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

успешная обработка справочника

Теперь в той же форме списка мы видим, что процент НДС изменился во всех выделенных нами позициях.

список элементов

Стандартная обработка «Групповое изменение реквизитов»

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

групповое изменение реквизитов

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

что изменять

В открывшейся форме отбора укажем, что нас нужны только документы с декабря прошлого года. Это можно сделать в верхнем поле окна. Отборов может быть сколько угодно. В нижней же его части динамически отбираются те документы, которые соответствуют указанному отбору. В нашем случае будет обрабатываться всего 56 документов.

условие отбора документов

Теперь нам нужно указать, какие данные и чем мы будем заменять. Обработка позволяет редактировать не только реквизиты шапки, но и табличные части. Они размещены в качестве вкладок на форме обработки.

Введение новых значений

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

ввести новые значения

Для простоты примера мы будем устанавливать везде в качестве склада «Основной склад». После внесения всех изменений, нажмите на кнопку «Изменить реквизиты».

список реквизитов для изменения

При нажатии на кнопку «Дополнительные параметры» вы можете немного расширить возможность настроек изменения реквизитов, например, изменять служебные реквизиты.

дополнительные параметры

С помощью произвольного алгоритма

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

выполнить произвольный алгоритм

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

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

Содержание:

1.     Добавление реквизитов на 1С управляемые формы

2.     Добавить элементы на форму

3.     Установка событий элементам формы

При адаптации типовых конфигураций 1С часто приходится изменять в 1С 8 управляемые формы. Такие адаптации сложно потом поддерживать при обновлении. Такие изменения приходится вносить вручную заново, перепроверять корректность изменений в каждом обновлении. И если таких изменений множество, то каждое обновление может представлять серьезные трудозатраты. Есть несколько решений, которые позволяют упростить поддержку и обновление измененных систем 1С. Одно из них – это программное изменение форм.

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

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

Изменения, которые нужны в форме изначально, стоит вносить в процедуре «ПриСозданииНаСервере». Для внесения изменений лучше сделать отдельную процедуру (например, «ДополнитьФормуПрограммно») и вызывать ее в штатной процедуре «ПриСозданииНаСервере», тогда изменение типовой формы 1С будет выглядеть одной строчкой:

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

Рассмотрим на примерах, как делать доработку управляемых форм кодом в 1С. 

1.          Добавление реквизитов на 1С управляемые формы

Если в ходе разработки изменилась типовая структура объекта, то добавлять новые реквизиты на форму нет необходимости. Эти реквизиты будут доступны по пути «Объект.НовыйРеквизит».

Но иногда нужно добавить реквизит формы. Например, «Статус документа», который будет заполняться из специального регистра при открытии формы. Добавить новые реквизиты можно, открыв в 1С табличный документ, управляемая форма изменяется через команду ИзменитьРеквизиты(«ДобавляемыеРеквизиты», «УдаляемыеРеквизиты»).

«ДобавляемыеРеквизиты» и «УдаляемыеРеквизиты» – это массивы с элементами типа «РеквизитФормы». Тут все просто – «Добавляемые» добавляются, «Удаляемые» – удаляются.

Функция РеквизитФормы («ИмяРеквизита», «ТипРеквизита», «Путь», «Заголовок») создает объект типа «РеквизитФормы».

Тут важно понимать, что «ИмяРеквизита» содержит имя без точек. То есть имя без пути реквизита. Если нужно добавить реквизит, например, табличной части объекта, то уже в реквизите «Путь» указать путь к ТЧ реквизита – «Объект.Товары». «ТипРеквизита» задается через объект «ОписаниеТипов».

В примере ниже я добавил два реквизита «ЭтоСборка» для табличной части «Товары» у объекта и «СтатусОбработки» на форму документа. 

2.          Добавить элементы на форму

После программного добавления реквизитов на форму нужно добавить элементы на форму или изменить свойства текущих.

Для добавления новых элементов на форму есть два метода:

­-Элементы.Добавить(«ИмяЭлемента», «ТипЭлемента», «Родитель»).

-Элементы.Вставить(«ИмяЭлемента», «ТипЭлемента», «Родитель», «Элемент»).

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

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

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

Для функции вставить дополнительно указывается «Элемент», перед которым будет вставлен новый создаваемый элемент формы.

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

3.          Установка событий элементам формы

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

Для установки событий элементам нужно использовать процедуру УстановитьДействие («ИмяСобытия», «Действие»).

«ИмяСобытия» — имя события, которое нужно отработать. Например, «ПриИзменении», «Очистка», «ОбработкаВыбора» и т.п.

«Действие» — процедура отработки события. Самое главное процедура должна содержать параметры необходимые для выполняемого события. Например, процедура «ПриИзменении» должна иметь параметр «Элемент».

Также программно можно задавать прочие доступные свойства новых элементов формы. Например, установить видимость кнопки очистки:

НовыйЭлемент.КнопкаОчистки = Истина;

Получилась вот такая процедура программного заполнения управляемой формы:

Код для копирования:

&НаСервере

Процедура КЛ_ДополнитьФормуПрограммно()

МассивРеквизитовФормы = Новый Массив;

//Новый реквизит Товары.КЛ_ЭтоСборка

НовыйРеквизитФормы = Новый РеквизитФормы(«КЛ_ЭтоСборка»,

           Новый ОписаниеТипов(«Булево»)

           ,»Объект.Товары»

           ,»Это сборка»);

МассивРеквизитовФормы.Добавить(НовыйРеквизитФормы);

//Новый реквизит КЛ_СтатусОбработки

НовыйРеквизитФормы = Новый РеквизитФормы(«КЛ_СтатусОбработки»,

           Новый ОписаниеТипов(«ПеречислениеСсылка.СтатусыДокументовРеализации»)

           ,

           ,»Статус обработки»);

МассивРеквизитовФормы.Добавить(НовыйРеквизитФормы);

ИзменитьРеквизиты(МассивРеквизитовФормы);

НовыйЭлемент = Элементы.Добавить(«КЛ_СтатусОбработки», Тип(«ПолеФормы»), Элементы.ГруппаШапкаЛевая);

НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;

НовыйЭлемент.КнопкаОчистки = Истина;

НовыйЭлемент.УстановитьДействие(«ПриИзменении»,»КЛ_ПриИзмененииСтатусаОбработки»);

НовыйЭлемент = Элементы.Вставить(«КЛ_ЭтоСборка», Тип(«ПолеФормы»),Элементы.Товары,Элементы.ТоварыКоличество);

НовыйЭлемент.Вид = ВидПоляФормы.ПолеФлажка;

КонецПроцедуры

Специалист компании ООО «Кодерлайн»

Кирилл Карцев.

На чтение 6 мин Просмотров 1.4к. Опубликовано 05.10.2020

Содержание

  1. Изменение команд формы
  2. Изменение реквизитов формы
  3. Изменение элементов формы
  4. Комментарии

Платформа 1С:Предприятие позволяет программно добавлять и изменять элементы управляемой формы. Разберемся для чего это может потребоваться.

Программная модификация формы может потребоваться в нескольких случаях:

  • При доработке типовых конфигураций для облегчения процедуры последующего обновления. В этом случае будет изменен только модуль формы. Модули намного проще обновлять, чем форму.
  • При реализации некоторых общих алгоритмов. Например, в подсистеме БСП «Запрет редактирования реквизитов объектов» для всех подключенных к подсистеме объектов предусмотрено программное создание кнопки для включения возможности редактирования реквизитов.
  • При реализации некоторых специфических алгоритмов. Например, в справочнике Номенклатура создаются поля для редактирования дополнительных реквизитов.

В управляемой форме можно программно добавить, изменить и удалить:

Все указанные операции возможны только на сервере.

Программное изменение формы имеет ограничения:

  • Удалить можно только программно добавленные реквизиты/команды/элементы. Нельзя программно удалить объекты, созданные в конфигураторе.
  • Нельзя назначить реквизит основным.

Изменение команд формы

Для управления составом команд у объекта УправляемаяФорма есть коллекция Команды . У коллекции есть несколько методов:

Коллекция Команды доступна как на клиенте, так и на сервере. Изменять коллекцию (методы Добавить () и Удалить () ) можно только на сервере. Искать и получать количество элементов (методы Найти () и Количество () ) можно как на клиенте, так и на сервере.

В качестве примера работы с командами формы создадим новую команду ИсторияИзменений с заголовком «История изменений…», которая будет вызвать обработчик ОтобразитьИсторию () . Создание выполняется при открытии формы.

&НаСервере
Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка )
Команда = Команды . Добавить ( «ИсторияИзменений» );
Команда . Действие = «Подключаемый_ОтобразитьИсторию» ;
Команда . Заголовок = «История изменений…» ;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОтобразитьИсторию ( Команда )
// действия команды
КонецПроцедуры

Обработчик команды должен располагаться в форме и иметь директиву компиляции &НаКлиенте .

Изменение реквизитов формы

Чтение состава реквизитов формы выполняется функцией ПолучитьРеквизиты ( Путь >) , возвращающей массив типа РеквизитФормы . Параметр функции указывает путь к родительскому реквизиту (в виде строки). Если параметр опущен или указана пустая строка, возвращаются реквизиты верхнего уровня.

Изменение реквизитов выполняется методом ИзменитьРеквизиты ( ДобавляемыеРеквизиты >, УдаляемыеРеквизиты >) объекта УправляемаяФорма . В параметры ДобавляемыеРеквизиты и УдаляемыеРеквизиты передаются массивы с элементами типа РеквизитФормы .

Внимание!

Процесс изменения состава реквизитов является достаточно ресурсоемким. Фактически выполняется пересоздание формы. В связи с этим работа с реквизитами формы выполняется в пакетном режиме.

Создадим новый реквизит формы с именем Покупатель:

// Описание добавляемых реквизитов
ДобавляемыеРеквизиты = Новый Массив ;
ДобавляемыеРеквизиты . Добавить(Новый РеквизитФормы («Покупатель», Новый ОписаниеТипов ( «СправочникСсылка.Контрагенты» ), , «Клиент» ));

// Изменения состава реквизитов
ИзменитьРеквизиты ( ДобавляемыеРеквизиты );

Изменение элементов формы

Для управления составом элементов у объекта УправляемаяФорма есть коллекция Элементы . У коллекции есть несколько методов:

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

Элементам формы можно программно назначить обработчики событий. Для этих целей предназначен метод УстановитьДействие ( ИмяСобытия >, Действие >) .

Рассмотрим несколько наиболее распространенных на практике примеров работы с командами, реквизитами и элементами формы.

Добавление команды и связанной с ней кнопки:

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

Добавление реквизита и связанного с ним поля ввода:

// Описание добавляемых реквизитов
ДобавляемыеРеквизиты = Новый Массив;
ДобавляемыеРеквизиты . Добавить (Новый РеквизитФормы ( «Покупатель» , Новый ОписаниеТипов ( «СправочникСсылка.Контрагенты» ), , «Клиент» ));
// Изменение состава реквизитов
ИзменитьРеквизиты ( ДобавляемыеРеквизиты );
// Создание поля ввода и связь с реквизитом
Элемент = Элементы . Добавить ( «Покупатель» , Тип ( «ПолеФормы» ));
Элемент . Вид = ВидПоляФормы . ПолеВвода ;
Элемент . ПутьКДанным = «Покупатель» ;

Назначение элементу формы обработчика события:

ЭлементПокупатель . УстановитьДействие ( «ПриИзменении» , «Подключаемый_ПокупательПриИзменении» );

&НаКлиенте
Процедура Подключаемый_ПокупательПриИзменении ( Элемент )
// Действия события
КонецПроцедуры

Внимание!

Процедурам, которые устанавливаются в качестве обработчиков событий из кода с помощью метода УстановитьДействие () , рекомендуется задавать префикс Подключаемый_.

Внимание!

Скачать обработку с примерами программного поиска и изменения реквизитов, команд и элементов управляемой формы можно ЗДЕСЬ.

Остались вопросы?
Спросите в комментариях к статье.

Примеры работы с дополнительными реквизитами.

Как получить значение дополнительного реквизита:

Пример: мы делаем печатную форму документа «Заказ клиента» и хотим вывести на неё значение определённого дополнительного реквизита — «Должность покупателя».

Используем вложенный запрос, в котором соединяем левым соединением таблицу «Дополнительные реквизиты» документа «Заказ клиента» с Планом видов характеристик «Дополнительные реквизиты и сведения». Устанавливаем условие: заголовок дополнительного реквизита должен быть таким – «Должность покупателя». Таблицы соединяем по ссылке на «Заказ клиента».

Получается вот такой запрос:

Также можно использовать метод НайтиПоНаименованию ( «***» ) .

Переменная Ссылка – это ссылка на «Договор контрагента».

Проверка на предмет того, что дополнительный реквизит заполнен:

Как изменить значения дополнительных реквизитов:

Задействуем общий модуль УправлениеСвойствами , который входит в состав БСП.

Комментарии

У вас ошибка в коде:
МассивСтруктур.Добавить(Новый Структура(«Свойство, Значение», ДопРеквизитДатаОтправки, ТекущаяДата());

Не хватает закрывающей скобки.

У вас ошибка в коде:
МассивСтруктур.Добавить(Новый Структура(«Свойство, Значение», ДопРеквизитДатаОтправки, ТекущаяДата());

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

Сейчас форма имеет следующий вид:

После добавления новых элементов она будет иметь вид:

Итак, добавляем реквизиты:

  • ЕдиницаИзмерения , тип СправочникСсылка.ЕдиницыИзмерения ;
  • ТекущийОстаток , тип Число .

Для удаления необходимо передать массив реквизитов на удаление в качестве второго параметра метода формы ИзменитьРеквизиты() . Удалять можно только реквизиты, созданные программно.

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

Важно понимать, что данные добавленного реквизита сохраняться в ИБ не будут.

  • Распечатать

Оцените статью:

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1

(0 голосов, среднее: 0 из 5)

Поделитесь с друзьями!

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

Групповое изменение реквизитов в списках документов и списках справочников

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

Заключается она в том, что вы можете находясь прямо в списке документов или списке справочника выделить нужные элементы зажав кнопку «Shift» или «Ctrl» и щелкая по ним мышью. А затем нажать на правую кнопку мыши и в выпавшем меню нажать «Изменить выделенные».

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

Например в конфигурациях УТ 11 и Бухгалтерия 3.0 она находится в меню НСИ и Администрирование/ Обслуживание/ Корректировка данных/ Групповое изменение реквизитов.

Администрирование

Меню Администрирование

Т.е. по сути данная обработка в 1C 8.3 называется «Групповое изменение реквизитов».

Обслуживание

Меню Обслуживание

Как поменять реквизит сразу в нескольких элементах справочника/документах?

Рассмотрим на реальном примере. Смена ставки НДС. Не так давно всем кто использовал ставку НДС 18 % пришлось менять ее на 20 %. У тех кто установил последние обновления, смена ставки произошла автоматически, но не все устанавливают обновления. Ставка НДС в большинстве конфигураций указывается в карточке номенклатуры, т.е. ставка НДС это реквизит справочника номенклатуры, а значит чтобы ее заменить мы можем воспользоваться групповой обработкой. Что нам для этого нужно сделать:

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

    Выбор элементов для изменения

    Выбор справочника

  2. Задаем отбор для элементов которые мы будем менять. Для этого нужно нажать на ссылку «Все элементы», после чего вам откроется окно в котором можно задать параметры отбора. В нашем случае, это все элементы номенклатуры в которых ставка НДС 18 %. Добавим это условие по кнопке «Добавить условие отбора». И нажмем ОК для того чтобы этот отбор применился.

    Отбор

    Условия отбора

  3. Далее нам нужно задать на что мы собираемся поменять данный реквизит. Ищем в таблице реквизитов нужный реквизит, в нашем примере — Ставка НДС. И задаем его новое значение — 20 %.

    Значение реквизита

    Новое значение реквизита

  4. Теперь нам осталось только нажать на кнопку «Изменить реквизиты» и дождаться завершения работы обработки. После чего мы увидим вот такую надпись.

    Реквизиты изменены

    Окончание работы обработки

    Готово, реквизиты изменены. Обработка сэкономила нам кучу времени. Только представьте себе сколько времени вы бы вручную меняли 195 элементов:)

Как поменять (заполнить) значения дополнительного реквизита справочника/документа?

Точно также как и с обычными реквизитами. Рассмотрим на примере. Допустим мы создали дополнительный реквизит «Категория» для номенклатуры. Категория может быть «Стандарт» либо «Расширенный». Реквизит изначально у нас пустой во всей номенклатуре, как же нам быстро его проставить для всех элементов?

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

    Отбор

    Условия отбора

  2. Далее ищем в списке наш дополнительный реквизит и задаем ему нужное значение:

    Новое значение

    Новое значение доп. реквизита

  3. Далее проделываем то же самое для заполнения дополнительного реквизита в номенклатуре следующей категории.

Готово — вы проставили значения дополнительных реквизитов во всей номенклатуре и не потратили много времени.

Как поменять реквизит в табличной части документа/справочника?

Рассмотрим также на примере — допустим вы что-то перепутали и в течение длительного времени выбирали не ту номенклатуру в документах, как теперь это исправить? Это также можно сделать при помощи групповой обработки. Если вы хотите менять реквизиты в документах или их табличных частях — сначала нужно отменить проведение этих документов, иначе сменить реквизит не удастся.

  1. Открываем обработку. Выбираем тип документов в которых вы хотите поменять номенклатуру. Мы выберем Реализации. После чего рядом с вкладкой реквизиты появятся также и вкладки с табличными частями, которые есть в данных документах.

    Выбор документов

    Выбор типа документов для изменения

  2. Далее мы задаем отбор — отобрать все реализации — где в табличной части Товары наша ошибочно выбранная номенклатура:

    Отбор

    Отбор для табличной части

  3. Нажимаем ОК и на вкладке «Товары» задаем ту номенклатуру на которую нужно заменить.

    Новый реквизит

    Новый реквизит табличной части

  4. Нажимаем «Изменить реквизиты» и дожидаемся окончания работы обработки.
  5. Проводим документы.

Готово — мы поменяли реквизит в табличной части документа и сделали все это автоматически! Если вы хотите узнать какие еще есть обработки, которые могут облегчить вам жизнь, записывайтесь на мой онлайн курс — «Сам себе Программист 1С»).

На чтение 6 мин. Просмотров 2.6k. Опубликовано 15.12.2019

Содержание

  1. Как изменить значение реквизита документа 1С?
  2. Изменение команд формы
  3. Изменение реквизитов формы
  4. Изменение элементов формы
  5. Документы
  6. Документы в языке 1С 8.3, 8.2 (в примерах)

Как изменить значение реквизита документа 1С?

Как изменить значение реквизита документа 1С?
Часто возникает потребность изменить какое-то значение в отдельном реквизите. И не в одном документе, в в нескольких документах. Возможно использовать запрос.
Например:

В статье был рассмотрен вопрос:
Как изменить значение реквизита документа 1С?

Платформа 1С:Предприятие позволяет программно добавлять и изменять элементы управляемой формы. Разберемся для чего это может потребоваться.

Программная модификация формы может потребоваться в нескольких случаях:

  • При доработке типовых конфигураций для облегчения процедуры последующего обновления. В этом случае будет изменен только модуль формы. Модули намного проще обновлять, чем форму.
  • При реализации некоторых общих алгоритмов. Например, в подсистеме БСП «Запрет редактирования реквизитов объектов» для всех подключенных к подсистеме объектов предусмотрено программное создание кнопки для включения возможности редактирования реквизитов.
  • При реализации некоторых специфических алгоритмов. Например, в справочнике Номенклатура создаются поля для редактирования дополнительных реквизитов.

В управляемой форме можно программно добавить, изменить и удалить:

Все указанные операции возможны только на сервере.

Программное изменение формы имеет ограничения:

  • Удалить можно только программно добавленные реквизиты/команды/элементы. Нельзя программно удалить объекты, созданные в конфигураторе.
  • Нельзя назначить реквизит основным.

Изменение команд формы

Для управления составом команд у объекта УправляемаяФорма есть коллекция Команды . У коллекции есть несколько методов:

Коллекция Команды доступна как на клиенте, так и на сервере. Изменять коллекцию (методы Добавить () и Удалить () ) можно только на сервере. Искать и получать количество элементов (методы Найти () и Количество () ) можно как на клиенте, так и на сервере.

В качестве примера работы с командами формы создадим новую команду ИсторияИзменений с заголовком «История изменений…», которая будет вызвать обработчик ОтобразитьИсторию () . Создание выполняется при открытии формы.

&НаСервере
Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка )
Команда = Команды . Добавить ( «ИсторияИзменений» );
Команда . Действие = «Подключаемый_ОтобразитьИсторию» ;
Команда . Заголовок = «История изменений…» ;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОтобразитьИсторию ( Команда )
// действия команды
КонецПроцедуры

Обработчик команды должен располагаться в форме и иметь директиву компиляции &НаКлиенте .

Изменение реквизитов формы

Чтение состава реквизитов формы выполняется функцией ПолучитьРеквизиты ( Путь >) , возвращающей массив типа РеквизитФормы . Параметр функции указывает путь к родительскому реквизиту (в виде строки). Если параметр опущен или указана пустая строка, возвращаются реквизиты верхнего уровня.

Изменение реквизитов выполняется методом ИзменитьРеквизиты ( ДобавляемыеРеквизиты >, УдаляемыеРеквизиты >) объекта УправляемаяФорма . В параметры ДобавляемыеРеквизиты и УдаляемыеРеквизиты передаются массивы с элементами типа РеквизитФормы .

Внимание!

Процесс изменения состава реквизитов является достаточно ресурсоемким. Фактически выполняется пересоздание формы. В связи с этим работа с реквизитами формы выполняется в пакетном режиме.

Создадим новый реквизит формы с именем Покупатель:

// Описание добавляемых реквизитов
ДобавляемыеРеквизиты = Новый Массив ;
ДобавляемыеРеквизиты . Добавить(Новый РеквизитФормы («Покупатель», Новый ОписаниеТипов ( «СправочникСсылка.Контрагенты» ), , «Клиент» ));

// Изменения состава реквизитов
ИзменитьРеквизиты ( ДобавляемыеРеквизиты );

Изменение элементов формы

Для управления составом элементов у объекта УправляемаяФорма есть коллекция Элементы . У коллекции есть несколько методов:

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

Элементам формы можно программно назначить обработчики событий. Для этих целей предназначен метод УстановитьДействие ( ИмяСобытия >, Действие >) .

Рассмотрим несколько наиболее распространенных на практике примеров работы с командами, реквизитами и элементами формы.

Добавление команды и связанной с ней кнопки:

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

Добавление реквизита и связанного с ним поля ввода:

// Описание добавляемых реквизитов
ДобавляемыеРеквизиты = Новый Массив;
ДобавляемыеРеквизиты . Добавить (Новый РеквизитФормы ( «Покупатель» , Новый ОписаниеТипов ( «СправочникСсылка.Контрагенты» ), , «Клиент» ));
// Изменение состава реквизитов
ИзменитьРеквизиты ( ДобавляемыеРеквизиты );
// Создание поля ввода и связь с реквизитом
Элемент = Элементы . Добавить ( «Покупатель» , Тип ( «ПолеФормы» ));
Элемент . Вид = ВидПоляФормы . ПолеВвода ;
Элемент . ПутьКДанным = «Покупатель» ;

Назначение элементу формы обработчика события:

ЭлементПокупатель . УстановитьДействие ( «ПриИзменении» , «Подключаемый_ПокупательПриИзменении» );

&НаКлиенте
Процедура Подключаемый_ПокупательПриИзменении ( Элемент )
// Действия события
КонецПроцедуры

Внимание!

Процедурам, которые устанавливаются в качестве обработчиков событий из кода с помощью метода УстановитьДействие () , рекомендуется задавать префикс Подключаемый_.

Внимание!

Скачать обработку с примерами программного поиска и изменения реквизитов, команд и элементов управляемой формы можно ЗДЕСЬ.

Остались вопросы?
Спросите в комментариях к статье.

Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.

Документы

Описание:

Документ — одно из основных понятий системы 1С:Предприятие. При помощи документов организуется ввод в систему информации о совершаемых хозяйственных операциях, а также ее просмотр и корректировка.

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

Структура каждого конкретного вида документа определяется при его создании в конфигураторе. У любого вида документа существуют реквизиты, которые создаются автоматически — это «Дата» и «Номер». Номер создается, если при конфигурировании длина номера указана больше 0. Другие реквизиты документа определяются в конфигураторе отдельно для каждого создаваемого вида документа.

Документы в языке 1С 8.3, 8.2 (в примерах)

С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю).

Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться:

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

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

Управляемое приложение 1С 8.3

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

Пустая управляемая форма

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

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

Добавить реквизит управляемой формы

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

Палитра свойств реквизита управляемой формы

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

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

Реквизиты на управляемой форме

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

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

Реквизиты на управляемой форме 1С

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

Свойство ПутьКДанным элемента формы

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

Изменяем свойство ПутьКДанным элемента формы

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

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

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

Добавление команды управляемой формы 1С

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

Название команды управляемой формы 1С

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

Выбор расположения обработчика команды управляемой формы

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

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

&НаКлиенте
Процедура СформироватьФИО(Команда)

    ФИО = Фамилия + " " +
               Имя + " " +
               Отчество + ", д.р. " +

    Формат(ДатаРождения, "ДЛФ=D");

КонецПроцедуры

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

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

Свойство Действие команды управляемой формы

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

Перетаскиваем команду в закладки Элементы

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

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

Работа команды на управляемой форме

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

Управляемое приложение 1С 8.3

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

Книга «Основы разработки в 1С: Такси»

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

  1. Без сложных технических терминов;
  2. Более 600 страниц практического материала;
  3. Каждый пример сопровождается рисунком (скриншот);
  4. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!

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

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

Книга «Программировать в 1С за 11 шагов»

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

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;


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

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

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

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

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

Понравилась статья? Поделить с друзьями:
  • Как иностранной компании открыть счет в российском банке
  • Как использовать подвальное помещение для бизнеса в доме
  • Как клинике заключить договор дмс со страховой компанией
  • Как купить товар с доставкой транспортной компанией сдэк
  • Как можно получить деньги от государства на малый бизнес