|
Вызов процедуры из Модуля объекта. Управляемая форма 8.3 | ☑ | ||
---|---|---|---|---|
0
Чайник_1с
01.12.20
✎
18:38
|
Всем Привет! Ребят не закидывайте меня помидорами, я новичок в 1с, стажер недавно работаю.Программистом 1с.
Мне нужна Ваша помощь. Вот такая задача: В документ "Накладная на перемещение ЛС", при выборе поля "ВидПолучателя" необходимо выполнять проверку: Если поле "ВидОтправителя" = ПунктОтпуска, то поле "Вид получателя" должен быть выбран только "Склад" или "ПунктОтпуска". Если выбрано другое значение, неоходимо вывести сообщение и очистить поле "ВидПолучателя". Написала код в Модуле объекта: Процедура ПроверкаЗаполнения ()Экспорт Если ВидОтправителя = ПредопределенноеЗначение("Перечисление.ВидыМестХраненияЛС.ПунктОтпуска") И НЕ (ВидПолучателя = ПредопределенноеЗначение("Перечисление.ВидыМестХраненияЛС.Склад") или ВидПолучателя = ПредопределенноеЗначение("Перечисление.ВидыМестХраненияЛС.ПунктОтпуска"))Тогда Сообщить("не верно заполнено поле ВидПолучателя или ВидОптравител"); КонецЕсли; КонецПроцедуры Подскажите как вызвать эту процедуру из Модуля формы? Не знаю как составить правильно текст |
|||
1
vicof
01.12.20
✎
18:41
|
Не надо вообще давать выбирать ненужные типы в форме.
|
|||
2
elCust
01.12.20
✎
18:41
|
Модуль документа нужен не для этих функций. Перенесите в модуль формы. Обращение к реквизитам делайте через Объект.
|
|||
3
vicof
01.12.20
✎
18:42
|
А я бы список выбора ограничивал в зависимости от выбранного вида получателя
|
|||
4
Чайник_1с
01.12.20
✎
18:44
|
Можно на примере показать как?
Без примера как то сложновато... |
|||
5
Чайник_1с
01.12.20
✎
18:47
|
Дело в том что начинала писать в модуле документа, тогда для двух объектов нужно дублировать код. Начальник сказал так нельзя. Была Процедура ПриИзменении для объекта "ВидПолучателя" и ещё одна Процедура ПриИзменении для объекта "ВидОтправителя"....
Это не целесообразно |
|||
6
Чайник_1с
01.12.20
✎
18:50
|
Было так:
Процедура ПриИзменении Если Объект.ВидОтправителя = ПредопределенноеЗначение("Перечисление.ВидыМестХраненияЛС.ПунктОтпуска") И НЕ (Объект.ВидПолучателя = ПредопределенноеЗначение("Перечисление.ВидыМестХраненияЛС.Склад") или Объект.ВидПолучателя = ПредопределенноеЗначение("Перечисление.ВидыМестХраненияЛС.ПунктОтпуска")) тогда Сообщить("Не указан ВидПолучателя"); КонецЕсли; КонецПроцедуры Всё работало исправно |
|||
7
Чайник_1с
01.12.20
✎
18:51
|
Начальник сказал переделать через Модуль объекта
|
|||
8
Чайник_1с
01.12.20
✎
18:51
|
И ещё необходимо очищать список при не верном выборе
|
|||
9
kubik_live
01.12.20
✎
18:52
|
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
ОбработкаОбъект.ТвояЭкспортнаяПроцедураИзМодуляОбъекта(); |
|||
10
kubik_live
01.12.20
✎
19:03
|
+(9)
Точнее: &НаСервере Процедура ТвояПроцедураМФ() ТвояСтруктура=Новый Структура; ............................... ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); ОбработкаОбъект.ТвояЭкспортнаяПроцедураИзМодуляОбъекта(ТвояСтруктура); КонецПроцедуры |
|||
11
Михаил Козлов
01.12.20
✎
20:21
|
В модуле объекта Сообщить(...) неуместно. Возвращайте текст сообщения или признак (булево), что проверка выполнена или нет.
|
|||
12
1CnikPetya
01.12.20
✎
21:29
|
Твой начальник хотел, чтобы нельзя было записать некорректный объект даже программно. Но при этом по правилам хорошего тона, все же необходимо ограничить и интеррактивный ввод.
Я бы делал так: Клиент-серверном ОбщемМодуле поместить функцию ДоступныеВидыПолучателя(ВидОтправителя), которая будет возвращать массив ВидыМестХраненияЛС в зависимости от переданного значения ВидаОтправителя. Это функцию используешь в модуле формы ПриИзменении ВидОтправителя, чтобы сделать 2 вещи: 1. Проверить текущее значение ВидПолучателя и если его нет в массиве, то очистить. 2. Установить значения списка выбора для поля ВидПолучателя, чтобы неправильное значение нельзя было выбрать. Потом в модуле объекта добавляешь функцию ПроверитьВидПолучателя, где вызываешь нашу функцию ДоступныеВидыПолучателя и проверяешь вхождение текущего значения в массив. Если оно не входит в массив, то делаешь соответсвующую запись в Журнал регистрации и уведомление пользователю. Саму функцию ПроверитьВидПолучателя лучше вызывать в ПроверкеЗаполнения. Либо ПередЗаписью. ПроверкаЗаполнения предпочтительнее. |
|||
13
Чайник_1с
02.12.20
✎
05:46
|
1CnikPetya Всё верно так и хотел. А у меня не хватает фантазии как это сделать
|
|||
14
Чайник_1с
02.12.20
✎
13:00
|
Товарищи, спасайте меня... я тупица. Начальник снова сказал переделать. Теперь в модуле формы написала обработку:
&НаКлиенте Процедура ВидОтправителяОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) // {Рарус [l.malkova][№IN-11362][проверка][01.12.2020] Если Объект.ВидОтправителя = ПредопределенноеЗначение("Перечисление.ВидыМестХраненияЛС.ПунктОтпуска") И НЕ (Объект.ВидПолучателя = ПредопределенноеЗначение("Перечисление.ВидыМестХраненияЛС.Склад") ИЛИ Объект.ВидПолучателя = ПредопределенноеЗначение("Перечисление.ВидыМестХраненияЛС.ПунктОтпуска"))Тогда ВидПолучателя = ПредопределенноеЗначение("Перечисление.ВидыМестХраненияЛС.ПустаяСсылка"); Сообщить("не верно заполнено поле Вид данных Получателя или Вид данных Оптравителя"); КонецЕсли; //}Рарус КонецПроцедуры Хочу эту процедуру вызвать из другой процедуры: ПриИзменении... пишу:ВидОтправителяОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка); 1ска ругаеться: Документ.НакладнаяНаПеремещениеЛС.Форма.ФормаДокумента.Форма(1234,44)}: Переменная не определена (ВыбранноеЗначение) ВидОтправителяОбработкаВыбора(Элемент, <<?>>ВыбранноеЗначение, СтандартнаяОбработка); (Проверка: Тонкий клиент) {Документ.НакладнаяНаПеремещениеЛС.Форма.ФормаДокумента.Форма(1170,62)}: Переменная не определена (СтандартнаяОбработка) ВиВидОтправителяОбработкаВыбора(Элемент, ВыбранноеЗначение, <<?>>СтандартнаяОбработка); (Проверка: Тонкий клиент) {Документ.НакладнаяНаПеремещениеЛС.Форма.ФормаДокумента.Форма(1234,63)}: Переменная не определена (СтандартнаяОбработка) ВидОтправителяОбработкаВыбора(Элемент, ВыбранноеЗначение, <<?>>СтандартнаяОбработка); (Проверка: Тонкий клиент) {Документ.НакладнаяНаПеремещениеЛС.Форма.ФормаДокумента.Форма(1170,2)}: Процедура или функция с указанным именем не определена (ВиВидОтправителяОбработкаВыбора) <<?>>ВиВидОтправителяОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка); (Проверка: Тонкий клиент) |
|||
15
hhhh
02.12.20
✎
13:32
|
(14) ну, определите эти переменные, которых нет.
|
|||
16
Чайник_1с
02.12.20
✎
17:15
|
(15) Да, уж совет так совет... Сразу всё понятно((
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |