|
|
Проверить единицу измерения в ТЧ документа на клиенте (ERP 2.5)
Kigo_Kigo, Мультук, Hmster, Timon1405, arsik, Гипервизор, Bigbro, программистище, Garykom, scanduta, RomanYS, Vstur, banco, dergreche, paramedic, segn, Homer, shuhard, takefive, ildary, Михаил_, alexxx961503, JohnGilbert, kir-g, Kongo2019, Злопчинский, skafandr, zelenprog, X Leshiy, Табуретко, Builder, dmt, _Batoo, Доминошник, Krendel, Волшебник, Климов Сергей, maxar, mikecool, Бычье сердце, kubik_live, Rovan, Сметанин, nreskayu, Rokford, abfm, maxab72, Михаил Козлов, Ненавижу 1С, YaFedor, DemonShinji2, Shurjk, formista2000
| ☑ |
|
0
zelenprog
02.12.25
✎
12:52
|
Добрый день!
Задача вроде бы простая: в событии при записи документа "Заказ" нужно проверить единицы измерения в каждой строке ТЧ товаров.
Если это весовой товар - выдать пользователю сообщение-предупреждение.
Очень желательно сделать все это на клиенте.
Во-первых, не понятно в каком реквизите хранится единица измерения.
В ТЧ объекта "Товары" есть реквизит "Упаковка", но по умолчанию он пустой.
Хотя, на форме в таблице в колонке "Единица измерения" отображается "шт.".
Понятное дело, что эти штуки подставляются из Объект.ТЧТовары.Номенклатура.ЕдиницаИзмерения.
Получается, что если реквизит "Упаковка" пустой, то используется единица измерения из "Объект.ТЧТовары.Номенклатура.ЕдиницаИзмерения". А если реквизит "Упаковка" заполнен, то в качестве единицы измерения используется этот реквизит.
Верно я понял?
Тогда вопрос: как можно "добраться" до этих "шт.", не дергая сервера, если "Упаковка" пустой?
Нужно учесть, что пользователь мог изменить значение в этой колонке - выбрать другую ЕИ. То есть надо проверять текущие значения в форме, которые еще не записаны.
Подскажите пожалуйста как это сделать?
|
|
|
1
Волшебник
02.12.25
✎
12:53
|
Дёрните сервер
|
|
|
2
zelenprog
02.12.25
✎
13:24
|
(1) Если это обязательно, то придется так и сделать.
Другого выхода нету?
Ведь сам клиент "видит" эти "штуки".
Значит, где-то же он их хранит?
|
|
|
3
Волшебник
02.12.25
✎
13:23
|
(2) Не морочьте голову. Дёрните сервер.
|
|
|
4
arsik
гуру
02.12.25
✎
13:59
|
Дерни сервер без контекста.
|
|
|
5
zelenprog
02.12.25
✎
14:24
|
(4) Передать на сервер Объект? Или просто ТЧ?
|
|
|
6
mikecool
02.12.25
✎
14:28
|
(2) а ты погляди реквизит, который показывает эти штуки
если упаковки для позиции не заданы, то отображается единица измерения
|
|
|
7
arsik
гуру
02.12.25
✎
14:33
|
(5) Да нахрена. Собери массив структур построчно (Номенклатура, Упаковка) и передай на сервер без контекста.
Ну или построчно (Номенклатура, Упаковка) проверь
|
|
|
8
Злопчинский
02.12.25
✎
14:38
|
А почему на клиенте нельзя проверить то, что отображается на клиента? ну вот чисто мне как невменяемому - непонятно!
|
|
|
9
Timon1405
02.12.25
✎
14:40
|
(0)
в событии при записи документа нет, правильное место для этого - обработка проверки заполнения в МО.
в УТ в ней уже есть вызов
// Процедуры проверки заполнения реквизита Количество и КоличествоУпаковок в документах.
ОбщегоНазначенияУТ.ПроверитьЗаполнениеКоличества(ЭтотОбъект, ПроверяемыеРеквизиты, Отказ);
если надо менять логику, расширяйте эту процедуру
|
|
|
10
Kongo2019
02.12.25
✎
14:46
|
(8) Проверить можно. Но не место этой проверки на клиенте.
|
|
|
11
arsik
гуру
02.12.25
✎
15:01
|
(8) Ну на клиенте допустим отображается упаковка. А владельца упаковки ты как проверишь? Чтобы получить владельца упаковки, тебе на сервер нужно передать ссылку на упаковку и там уже проверить его владельца.
(10) Ну почему. Если что-то можно проверить на клиенте, я всегда проверяю на клиенте. Это ж быстрее.
|
|
|
12
Злопчинский
02.12.25
✎
15:03
|
(11) понятно что в разных случаях - разные потребности могут быть. Но если мне надо проверить сам факт наличия упаковки или что наименование упаковки (то что я вижу на клиенте) совпадает/несовпадает с "шт"... - надо ли для этого бежать на сервер?
|
|
|
13
arsik
гуру
02.12.25
✎
15:04
|
(12) Ну картинки посмотри и станет понятно, когда лезть на сервер, а когда клиента достаточно.
|
|
|
14
Garykom
гуру
02.12.25
✎
15:34
|
(0) 1. Надо не просто при записи а при проведении
2. Открой форму документа и просмотри, там
Объект.Товары.Упаковка или Объект.Товары.Номенклатура.ЕдиницаИзмерения
|
|
|
15
Timon1405
02.12.25
✎
16:00
|
(14) нет, проверять что-то в проведении архитектурно неправильно: уже сработали обработчики перед записью(достаточно длительные, типовые там наборы для записи готовят), и тут бац в проведении "у вас там не заполнено что-то" и откат записи
|
|
|
16
Garykom
гуру
02.12.25
✎
16:10
|
(15) Речь о том что пока документ не проводится (просто запись или отмена проведения) - пофиг что там внутри
Может быть недозаполнен
И только в случае проведения обязательно надо проверять
|
|
|
17
Garykom
гуру
02.12.25
✎
16:11
|
(16)+ И обязательно предусмотреть условие для ОбменДанными.Загрузка
|
|
|
18
RomanYS
02.12.25
✎
16:19
|
(15)(16) странный спор. Есть специальное событие для этих целей у документа-объекта "ОбработкаПроверкиЗаполнения". Удовлетворяет всем вашим запросам:
- вызывается только при проведении
- только при интерактивной записи (не нужно проверять ОбменДанными.Загрузка)
- не удлиняет транзакцию
|
|
|
19
arsik
гуру
02.12.25
✎
16:26
|
(18) ну это такое. Только форму проверяет.
|
|
|
20
RomanYS
02.12.25
✎
16:33
|
(19) Не понял. Событие у документа-объекта, форма в нём недоступна. У формы есть аналогичное.
|
|
|
21
Timon1405
02.12.25
✎
16:40
|
(18) согласен, спор странный, я в (9) написал как это в типовой работает
|
|
|
22
arsik
гуру
02.12.25
✎
16:43
|
(20) Сорян. Запамятовал. Истинно так.
|
|