Имя: Пароль:
1C
1С v8
Проверить единицу измерения в ТЧ документа на клиенте (ERP 2.5)
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. Открой форму документа и просмотри, там
Объект.Товары.Упаковка или Объект.Товары.Номенклатура.ЕдиницаИзмерения