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

Для определения поведения прикладных объектов, отличающегося от стандартного, и создания собственных алгоритмов их поведения используется встроенный язык. Программный код выполняется в заранее известных ситуациях, называемых событиями.
Напомним, что в справочнике «Контрагенты» у нас хранится краткое и полное наименование контрагента. Логично предположить, что эти названия будут похожи.
Следовательно, когда пользователь вводит краткое наименование, то желательно его же продублировать в полное наименование, т.е. при событии изменение наименования необходимо выполнить определенные действия. Какие именно действия мы желаем выполнять при наступлении события, система сама предсказать не может, поэтому необходимо самостоятельно написать процедуру, которая должна будет выполняться системой и связать эту процедуру с тем событием, которое обрабатывается.
Откройте форму элемента справочника «Контрагенты» и в палитре свойств поля «Наименование» на закладке «События» нажмите кнопку с лупой (рис. 7.1). Система предложит создать вам новый обработчик события, соглашаемся с созданием обработчика на клиенте и жмем кнопку «ОК».

Рис. 7.1. – Создание события ПриИзменении

Система автоматически добавит на модуль формы текущего справочника
новую процедуру «НаименованиеПриИзменении». Вам необходимо удалить в
процедуре комментарии (как мы уже говорили выше они обозначаются символом //) и
54
написать в процедуру программный код заполнения реквизита
«ПолноеНаименование». Текст процедуры обработчика события у вас должен
получиться следующим:
&НаКлиенте
Процедура НаименованиеПриИзменении(Элемент)
Если Объект.ПолноеНаименование=”” Тогда
Объект.ПолноеНаименование=Объект.Наименование;
КонецЕсли;
КонецПроцедуры

Сохраните конфигурацию и проверьте исполнение вашего кода в пользовательском режиме. Обратите внимание, что система добавляет полное наименование
только при условии, что данное поле пустое. За это отвечает условие «Если Объект.ПолноеНаименование=”” Тогда».
Помимо того, что имеется возможность выполнять какие-то действия при
наступлении события, иногда можно управлять и соответствующими стандартными
действиями платформы, т.е. фактически указывать, произойдет ли данное событие
или нет.
Рассмотрим следующую ситуацию: необходимо, чтобы у услуг ставка НДС
была только 18%. В этом случае необходимо проверить при сохранении элемента,
является ли данный элемент справочника услугой. В том случае, когда элемент номенклатуры является услугой и ставка НДС не 18%, необходимо указать пользователю на недопустимость данной ситуации и не записывать элемент до тех пор, пока
пользователь либо не укажет нужную ставку НДС, либо не укажет, что это товар
(снимет галочку «Услуга»).
Для решения этой задачи откроем форму элемента справочника «Номенклатура» и воспользуемся обработчиком события «ПередЗаписьюНаСервере» для самой
формы – встаньте в корень формы, откройте палитру ее свойств, перейдите на закладку «События» и создайте обработчик события как показано на рис.7.2 и описано
ниже.

Рис. 7.2. – Создание события «ПередЗаписьюНаСервере»

Текст обработчика события:
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект,
ПараметрыЗаписи)
Если ТекущийОбъект.Услуга И
(ТекущийОбъект.СтавкаНДС <>
Справочники.СтавкиНДС.НДС18) Тогда
Сообщить(«У услуги ставка НДС может быть только 18%»);
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
Сохраните сделанные изменения, откройте конфигурацию в пользовательском
режиме и проверьте работоспособность созданного события.

Задание к занятию «Модули»

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

Задача 1 «Обработчики событий модуля приложения»

Описание задачи

Создать обработчик события ПриНачалеРаботыСистемы, выводящий простейшее приветствие.

Требования к результату

При запуске пользовательского режима выводится простейшее приветствие.

Процесс выполнения

  1. Используйте конфигурацию УправлениеИТФирмой (https://github.com/netology-code/1c-homeworks/blob/master/homework-1-3.md)
  2. В модуле приложения создайте обработчик события ПриНачалеРаботыСистемы.
  3. В его коде выведите простейшее приветствие вызовом Сообщить() или ПоказатьПредупреждение().

Задача 2 «Обработчики событий модуля формы»

Описание задачи

Создать обработчик события ПриИзменении элемента Наименование формы справочника Контрагенты, заполняющий полное наименование — измененным наименованием.

Требования к результату

В справочник Контрагенты добавлена форма элемента, на которой реквизит ПолноеНаименование заполняется значением стандартного реквизита Наименование при его (Наименования) изменении.

Процесс выполнения

  1. Используйте ту же конфигурацию УправлениеИТФирмой, которую дорабатывали в прошлом задании. Убедитесь, что в справочнике Контрагенты есть реквизит ПолноеНаименование.
  2. Создайте для справочника Контрагенты форму элемента
  3. Выберите в форме элемента стандартный реквизит Наименование и создайте обработчик события ПриИзменении этого элемента.
  • Проще всего — выбрать это событие из контекстного меню элемента.
  1. В коде обработчика присвойте реквизиту Объект.ПолноеНаименование значение наименования. Подумайте, требуется ли в данном случае переход на сервер, или действия можно выполнить на клиенте?
  2. В режиме Предприятия удостоверьтесь, что любое изменение наименования отражается в полном наименовании, но не наоборот.

Задача 3 «Обработчики событий модуля объекта»

Описание задачи

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

Требования к результату

При создании нового элемента справочника Контрагенты, реквизит ЮридическоеФизическоеЛицо заполняется автоматически значением ЮридическоеЛицо.

Процесс выполнения

  1. Используйте ту же конфигурацию УправлениеИТФирмой, которую дорабатывали в прошлом задании. Убедитесь, что в конфигурации есть перечисление ЮридическоеФизическоеЛицо (было описано в https://github.com/netology-code/1c-homeworks/blob/master/homework-1-3.md).
  2. Откройте модуль объекта справочника Контрагенты и создайте в нем обработчик события ОбработкаЗаполнения.
  3. Присвойте значению реквизита ЮридическоеФизическоеЛицо значение Перечисления.ЮридическоеФизическоеЛицо.ЮридическоеЛицо.
  4. В режиме Предприятия удостоверьтесь в том, что новым контрагентам сразу назначается тип ЮридическоеЛицо.

Заполнить поле справочника — ПолноеНаименование

Я
   Roma1314704

09.08.17 — 09:12

Есть справочник Контагенты, Необходимо при заполнении стандартного реквизита Наименвание автоматически заполнять реквизит  -ПолноеНаименование

в ФормеЭлемента справочника ввожу след код

&НаКлиенте

Процедура НаименованиеПриИзменении(Элемент)

Стр = Элементы.ПолноеНаименование;

    
Стр = ПолучитьНаименование(ВыбранноеЗначение);

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

&НаСервере

Функция ПолучитьНаименование(ВыбранноеЗначение)

    Возврат ВыбранноеЗначение.Наименование ;

    
КонецФункции

ошибка — Справочник.Контрагент.Форма.ФормаЭлемента — переменная не определена ВыбраноеЗначение

что не так?

  

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

   Зуекщмшср

1 — 09.08.17 — 09:15

Не поверишь — переменная не определена!!!

   Roma1314704

2 — 09.08.17 — 09:16

Верю )) , признаю, но блин ткните носом что не так

   Зуекщмшср

3 — 09.08.17 — 09:17

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

   Lexey_

4 — 09.08.17 — 09:19

(2) стаж 10 лет…откуда ты взял ВыбранноеЗначение?

   LenaAt

5 — 09.08.17 — 09:20

(0) А что такое ВыбранноеЗначение на клиенте?

   Roma1314704

6 — 09.08.17 — 09:25

&НаКлиенте

Процедура НаименованиеПриИзменении(Элемент)

Стр = Элементы.ПолноеНаименование;

    
Стр = ПолучитьНаименование(Элемент);

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

&НаСервере

Функция ПолучитьНаименование(Элемент)

    Возврат Элемент.Наименование ;

    
КонецФункции

   Roma1314704

7 — 09.08.17 — 09:25

правильно?

   Lexey_

8 — 09.08.17 — 09:27

(6) кажется, ты вообще не понимаешь, что делаешь

   Roma1314704

9 — 09.08.17 — 09:28

через функцию нужно вернуть значение поля элемента формы  — наименование

   Lexey_

10 — 09.08.17 — 09:28

(6) какой смысл у строки Стр = Элементы.ПолноеНаименование;?

   Рэйв

11 — 09.08.17 — 09:36

Процедура НаименованиеПриИзменении(Элемент)

   Объект.ПолноеНаименование=ОБъект.Наименвание;

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

   aleks_default

12 — 09.08.17 — 09:40

(11)Взял и сломал мозг ТС. Это не может быть так просто, это же ПРОГРАММИРОВАНИЕ!!!

   Рэйв

13 — 09.08.17 — 09:40

(12)Может со сломанным мозгом у него лучше будет получаться:-)

   Roma1314704

14 — 09.08.17 — 09:44

Респект, Рейв , неужели не нужно вызывать функцию что бы передать значение?

   Любопытная

15 — 09.08.17 — 09:47

(14) какую функцию? КОму-то пора отдохнуть похоже

   Рэйв

16 — 09.08.17 — 09:59

(14)открой для себя «=» :-)

   Numerus Mikhail

17 — 09.08.17 — 10:03

(14) Это нужно, если у ссылочного значения пытаешься достучаться до реквизитов

  

AsadRoman

18 — 09.08.17 — 10:05

По ходу его франчи обучали ;-)

0 / 0 / 0

Регистрация: 10.07.2019

Сообщений: 2

1

1C 8.x

ПолноеНаименование вместо Наименование

10.07.2019, 14:48. Показов 5162. Ответов 3


Всем доброго дня!

Имеется Справочник Склады с реквизитом ПолноеНаименование. Стандартный реквизит Наименование не заполнен.

Также имеется Документ Поступление с реквизитом Склад. Реквизит имеет Тип СправочникСсылка.Склады.
Поле склад на форме этого документа при выборе склада берёт пустое значение из реквизита Наименование Справочника Склады, соответственно заполняется символами «<>».

Как сделать так, чтобы после выбора склада поле заполнялось данными из реквизита ПолноеНаименование?



0



polax

1808 / 1228 / 442

Регистрация: 16.01.2015

Сообщений: 5,394

11.07.2019, 00:14

2

Лучший ответ Сообщение было отмечено owlbro как решение

Решение

owlbro, Вот любим мы геморрой для себя выдумывать.
Самый правильный вариант — заполнить Наименование у складов. Ну сделаешь ты заполнение в одном документе, понадобится то же самое в другом документе, в нескольких десятков отчетах где фигурирует склад, в подстановках по умолчанию и еще в десятке или сотне мест. Кроме всего каждое поле со складом надо сделать составного типа к СправочникСсылка.Склады прибавить Строка, т.к. ПолноеНаименование — это строка и как ссылка вставляться НЕ будет
Оно надо? Ну глупость же.
А так сделать можно. Добавляешь тип к полю Строка. Назначаешь обрабтчик полю ОбработкаВыбора. Код:

1C
1
2
3
4
5
6
7
8
9
&НаСервере
Функция ПолучитьПолноеНаименование(ВыбранноеЗначение)
Возврат ВыбранноеЗначение.ПолноеНаименование;
КонецФункции
 
&НаКлиенте
Процедура СкладОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    Объект.Склад = ПолучитьПолноеНаименование(ВыбранноеЗначение);
КонецПроцедуры

Но еще раз. Такой подход доставит просто миллион глупейших проблем. Делай как надо и не выдумывай фигню



0



198 / 158 / 45

Регистрация: 23.08.2014

Сообщений: 807

11.07.2019, 00:33

3

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



0



0 / 0 / 0

Регистрация: 10.07.2019

Сообщений: 2

11.07.2019, 00:37

 [ТС]

4

polax, спасибо за ответ!
Да, уже сам к этому пришёл, заполнил наименования.

Добавлено через 3 минуты
dggrom, выполнял учебное задание, неверно понял условие. Казалось, что ПолноеНаименование должно заменять Наименование.



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

11.07.2019, 00:37

Помогаю со студенческими работами здесь

Нужно чтобы вместо отрицательных чисел становились -1, а вместо положительных + 1.
Здраствуйте, помогите пожалуйста! Имею в Matlab матрицу с положительными и отрицательными числами,…

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

Hайти и записать вместо x[1] наибольший элемент, а вместо x[2] -наименьший для массива x[1],x[2],…, x[100].
Hайти и записать вместо x наибольший элемент, а вместо x -наименьший для массива x,x,…,
x.

Модифицируйте, пожалуйста, программу так, чтобы вместо 0 выводилось “false”, а вместо 1 – ”true”
#include &quot;stdafx.h&quot;
#include &lt;iostream&gt;
using namespace std;
int main()
{
bool y, x;
bool…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

4

Такие реквизиты как Наименование и ПолноеНаименование, в форме списка справочника на графе реквизита ПолноеНаименование позиционируюсь и изменяю свойства, далее создаю процедуру:»СправочникСписокПолноеНаименованиеПриИзменении(Элемент)» в которой пишу «Наименование=ПолноеНаименование;», — что не так, как нужно?

Нужно обратиться к данным строки списка

что значит официально? с 8кой 2005 скуль идет

Я бы попробовал так: ЭлементыФормы.Наименование=ЭлементыФормы.ПолноеНаименование;

Я бы не стал так пробовать

2 NDV: пишет следующее: Справочник.Контрагенты.Форма.ФормаСписка}: Поле объекта не обнаружено (Наименование) ЭлементыФормы.Наименование=ЭлементыФормы.ПолноеНаименование;

2 dimoff: как обратиться?

Например, так: ЭлементыФормы.СправочникСписок.ТекущиеДанные.Наименование = ЭлементыФормы.СправочникСписок.ТекущиеДанные.ПолноеНаименование

Тэги:

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

6. Обработчик события

Для определения поведения прикладных объектов отличного от

стандартного и создания собственных алгоритмов их поведения используется

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

ситуациях, называемых событиями.

В справочнике Контрагенты у нас храниться краткое и полное

наименование контрагента. Логично предположить, что эти названия будут

похожи. Следовательно, когда пользователь вводит краткое наименование

желательно его же продублировать в полное, т.е. при событии изменение

наименования необходимо выполнить определенные действия. Какие именно

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

предсказать не может. Необходимо самостоятельно написать процедуру, которая

должна будет выполняться системой, и связать эту процедуру с тем событием,

которое обрабатывается (Рис. 7.1).

Рис. 7.1.

Текст процедуры обработчика события:

&НаКлиенте

Процедура НаименованиеПриИзменении(Элемент)

Если Объект.ПолноеНаименование = «» Тогда

Объект.ПолноеНаименование = Объект.Наименование;

КонецЕсли;

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

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

наступлении события, иногда можно управлять и соответствующими

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

ли данное событие или нет.

Рассмотрим следующую ситуацию: необходимо для каждой

номенклатурной позиции указать ставку НДС, причем у услуг ставка НДС

должна быть только 18%. В этом случае необходимо проверить при сохранении

элемента, является ли данный элемент справочника услугой.

 0 

   

Распечатать

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

Казалось бы, что может быть проще — пишем через точку идентификатор реквизита и присваиваем.
Что-то вроде вот этого:

Код 1C v 8.х

 СправочникОбъект.Наименование = "Новое наименование";   

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

В 1С 7.7 существовали такие методы объектов, как Справочник.УстановитьАтрибут() и Справочник.ПолучитьАтрибут(), которые позволяли установить значение атрибута объекта по его идентификатору.

А в 1С 8.1 таких методов нет! Что же делать?!
Можно, конечно, написать кучу условий, что-то типа:

Код 1C v 8.х

 Если ИмяРеквизита="Наименование" тогда
СправочникОбъект.Наименование = ЗначениеРеквизита;
ИначеЕсли ИмяРеквизита="Код" тогда
СправочникОбъект.Код = ЗначениеРеквизита;
ИначеЕсли
.....
КонецЕсли;

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

Код 1C v 8.х

 СправочникОбъект[ИмяРеквизита] = ЗначениеРеквизита;   

где : ИмяРеквизита — строка идентификатора реквизита справочника (например, «Наименование»)
И вся наша куча условий сводится всего к одной строке кода….
Автор: Николай Николаев

Like this post? Please share to your friends:
  • Госпошлина за регистрацию права собственности на недвижимость физических лиц реквизиты
  • Государственное учреждение управление пенсионного фонда российской федерации реквизиты
  • Государственные субсидии не могут рассматриваться как источники финансирования бизнеса
  • Грузовая машина расходует за 1 час работы 15 литров горючего на сколько краткая запись
  • Даты в документе требования к их оформлению дата как составная часть других реквизитов