Имя: Пароль:
1C
1С v8
Как получить значение реквизита формы табличной части?
0 YamEgor
 
24.08.22
15:40
Добрый день! управляемые формы, в табличноый части документа есть реквизит Номенклатура, и на форме в ТЧ из номенклатуры выведен реквизит ЕденицаИзмерения , самого реквизита ЕденицаИзмерения в табличной части объекта нет, но его вывели на форму, и надо его проверять на заполненность, если не заполнен, то выдавать сообщение и отказываться от проведения. как программно добраться до значения реквизита табличной части формы?
1 unenu
 
24.08.22
15:42
через точку
2 PR
 
24.08.22
15:42
(0) Никак
Проведение вообще в душе не подозревает ни про какие твои формы
3 Smallrat
 
24.08.22
15:51
(2) ПередЗаписьюНаСервере() же , но автору это все равно не поможет
4 PR
 
24.08.22
15:54
(3) Ты решил мне рассказать, как немного наговнокодить?
Все просто
ТС говорит про проведение, значит забывает про форму
Точка
5 oslokot
 
24.08.22
15:58
(0)

Если Не ЗначениеЗаполнено(Номенклатура.ЕдиницаИзмерения) Тогда
    // Отказ и точка!
КонецЕсли;
6 Smallrat
 
24.08.22
15:58
(4) Код из типовой бухии:

    ТиповаяОперация = Форма[БухгалтерскиеОперацииКлиентСервер.ИмяРеквизитаФормыТиповаяОперация()];
    Если ЗначениеЗаполнено(ТиповаяОперация)
            И (ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Запись
            ИЛИ ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение)
            И НЕ ТиповаяОперацияСоответствуетДокументу(ТекущийОбъект, ТиповаяОперация) Тогда

        СообщитьТиповаяОперацияНеСоответствуетДокументу(ТекущийОбъект, Форма);
        Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
            Отказ = Истина;
            Возврат;
        КонецЕсли;
    КонецЕсли;

не то чтобы я считал бухию эталоном, но встречается вообще часто
7 Kassern
 
24.08.22
15:59
(0) "как программно добраться до значения реквизита табличной" - СтрокаТаблицы.Номенклатура.ЕдиницаИзмерения
8 PR
 
24.08.22
16:01
(6) И что будет, если документ тупо провести без открытия формы?
9 Kassern
 
24.08.22
16:06
Есть же специальная процедура, называется ОбработкаПроверкиЗаполнения, https://its.1c.ru/db/v8std#content:463:hdoc
10 Smallrat
 
24.08.22
16:13
(8) ну что будет - пропустит оно проверку, понятное дело, если она там в модуле не задублирована. Я не предлагал проверять в форме - просто упомянул, что в частном случае проведения из формы в начале выловить можно, что документ проводится и контекст формы иметь.
11 YamEgor
 
24.08.22
17:28
(7) но ведь это не реквизт формы, а как получить зачение реквизита формы?
12 Kassern
 
24.08.22
17:31
(11) Вы же сами сказали, что данный реквизит формы тянется из номенклатуры. Смысл вам ковырять элементы формы и получать, что там заполнено, если у вас есть данные объекта?
13 YamEgor
 
24.08.22
18:03
(12) ну он же на форме может быть и не заполнен, поэтому и нужно его значение проверить заполнен он или нет
14 mistеr
 
24.08.22
18:30
(13) Заполнен или не заполнен он только в элементе справочника Номенклатура. На форме от только отображается.

Если конфа типовая, смотри механизм проведения, найди место, где проверяется заполненность, и вставляй туда свою проверку.
15 Mihasya
 
25.08.22
03:01
(0)

// В форме документа:
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
    
    ТЧИзФормы = ЭтаФорма.Объект.Товары.Выгрузить(, "НомерСтроки, Номенклатура, Артикул");
    ТекущийОбъект.ДополнительныеСвойства.Вставить("ТЧИзФормы", ТЧИзФормы);
    
КонецПроцедуры

// В модуле документа
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
    
    ТЧИзФормы = Неопределено;
    ЭтотОбъект.ДополнительныеСвойства.Свойство("ТЧИзФормы", ТЧИзФормы);
    
    Если ТЧИзФормы <> Неопределено Тогда
        //...
    КонецЕсли;
    
КонецПроцедуры

Правда без открытия формы ТЧИзФормы всегда будет Неопределено
16 Kassern
 
25.08.22
09:10
(13) "ну он же на форме может быть и не заполнен" - назовите мне случай, когда значение в реквизите табличной части формы может отличаться от значения в реквизите номенклатуры. При условии, что в пути данных реквизита формы стоит "Объект.Товары.Номенклатура.ЕдиницаИзмерения". Я понимаю обычные формы, где приходилось оформлять заполнение ячеек и устанавливать туда текст, но вы же пишите про управляемые формы.