Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Подсчитать поля ТЧ
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование управляемых форм 1С 8.2
alexk
Здравствуйте! Такой вопрос. Есть ТЧ. 31 реквизит в ней + 1 реквизит "Всего". Как сделать так чтобы в реквизит "Всего" подсчитывалось количество заполненных реквизитов (из тех 31). То есть ввожу любое число, в реквизиты с 1 до 5, например "2" "6" "7" "8" "4", но он в поле "Всего" вводит число "5", то есть по числу заполненных реквизитов. Как это сделать, скажите пожалуйста?
sia2012
Как расположены ревизиты ТЧ?
Домовик
Честно - не знаю, как в восьмерке это делать. Но знаю, где искать этот типовой вопрос. Берете типовую конфигурацию, открываете документ к примеру РАсходная и ищете формулу расчета реквизита СуммаСНДС, СуммаБезНДС. Эти реквизиты всегда расчитываются, если меняются другие реквизиты: Количество, ЦенаСНДС, ЦенаБЕзНДС.
sava1
в Метаданных получаем реквизиты ТЧ, проверяем на заполненость, считаем,заполняем
alexk
Реквизиты заполнены горизонтально, то есть один за другим. Скажите пожалуйста, а есть может примерный код? Как это вообще организовывается? А то я не совсем пойму как это вообще делается, первый раз с таким сталкиваюсь
Домовик
&НаКлиенте
Процедура РассчитатьСуммуВСтрокеТабличнойЧасти(СтрокаТабличнойЧасти = Неопределено)
    
    Если СтрокаТабличнойЧасти = Неопределено Тогда
        СтрокаТабличнойЧасти = Элементы.ИмяВашейТабличнойЧасти.ТекущиеДанные;
    КонецЕсли;

СтрокаТабличнойЧасти.Всего=СтрокаТабличнойЧасти.ИмяВашегоРеквизита1+....+СтрокаТ
абличн
ойЧасти.ИмяВашегоРеквизитаN;
    
КонецПроцедуры // РассчитатьСуммуВСтрокеТабличнойЧасти()



Эту процедуру в процедуру события при изменении каждого поля ТЗ табличной части
alexk
Но он таким образом, почему то просто сумму значений этих полей считает...
Домовик
аааа, задание на количество заполненных реквизитов... сори... немного не то, конечно. нужно каждое значение реквизита проверить на ноль и посчитать в той же процедуре.
СтрокаТабличнойЧАсти. ИмяРеквизита1
заменить на
?(СтрокаТабличнойЧасти.ИмяРеквизита1=0,0,1)


может вам нужно проверять на Неопределено?


наверняка, еще как-то по другому можно.
sia2012
&НаКлиенте
Процедура РассчитатьВсегоЗаполненных()
    
    РеквизитыТЧ = ПолучитьРеквизитыТЧ("Вождение", "РасписаниеЗанятий");
    НомерПоследнегоРеквизита = РеквизитыТЧ.Количество() - 1;
    СтрокаТЧ = Элементы.РасписаниеЗанятий.ТекущиеДанные;
    СтрокаТЧ.Всего = 0;
    Для НомерРеквизита = 0 По НомерПоследнегоРеквизита Цикл
        ИмяРеквизита = РеквизитыТЧ.Получить(НомерРеквизита).Значение;
        Если ИмяРеквизита <> "Всего" Тогда
            Если СтрокаТЧ[ИмяРеквизита] Тогда
                СтрокаТЧ.Всего = СтрокаТЧ.Всего + 1;
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
    
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьРеквизитыТЧ(НаименованиеДокумента, НаименованиеТЧ)

    РеквизитыТЧ = Метаданные.Документы[НаименованиеДокумента].ТабличныеЧасти[НаименованиеТЧ].Реквизиты;
    ВсеРеквизиты = Новый СписокЗначений;
    Для Каждого Реквизит Из РеквизитыТЧ Цикл
        ВсеРеквизиты.Добавить(Реквизит.Имя);
    КонецЦикла;
    
    Возврат ВсеРеквизиты

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


где "Вождение" - имя документа
"РасписаниеЗанятий" - имя табличной части
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.