Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Подсчитать поля ТЧ          
alexk Подменю пользователя
сообщение 10.02.13, 16:02
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 48
Спасибо сказали: 0 раз
Рейтинг: 0

Здравствуйте! Такой вопрос. Есть ТЧ. 31 реквизит в ней + 1 реквизит "Всего". Как сделать так чтобы в реквизит "Всего" подсчитывалось количество заполненных реквизитов (из тех 31). То есть ввожу любое число, в реквизиты с 1 до 5, например "2" "6" "7" "8" "4", но он в поле "Всего" вводит число "5", то есть по числу заполненных реквизитов. Как это сделать, скажите пожалуйста?

sia2012 Подменю пользователя
сообщение 11.02.13, 12:30
Сообщение #2

Молчаливый
*
Группа: Пользователи
Сообщений: 6
Спасибо сказали: 0 раз
Рейтинг: 0

Как расположены ревизиты ТЧ?

Домовик Подменю пользователя
сообщение 11.02.13, 14:29
Сообщение #3

Ветеран
Иконка группы
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0

Честно - не знаю, как в восьмерке это делать. Но знаю, где искать этот типовой вопрос. Берете типовую конфигурацию, открываете документ к примеру РАсходная и ищете формулу расчета реквизита СуммаСНДС, СуммаБезНДС. Эти реквизиты всегда расчитываются, если меняются другие реквизиты: Количество, ЦенаСНДС, ЦенаБЕзНДС.

Сообщение отредактировал Домовик - 11.02.13, 14:43

sava1 Подменю пользователя
сообщение 11.02.13, 15:04
Сообщение #4

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2697
Из: Проскуров
Спасибо сказали: 682 раз
Рейтинг: 661

в Метаданных получаем реквизиты ТЧ, проверяем на заполненость, считаем,заполняем

alexk Подменю пользователя
сообщение 11.02.13, 16:05
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 48
Спасибо сказали: 0 раз
Рейтинг: 0

Реквизиты заполнены горизонтально, то есть один за другим. Скажите пожалуйста, а есть может примерный код? Как это вообще организовывается? А то я не совсем пойму как это вообще делается, первый раз с таким сталкиваюсь

Домовик Подменю пользователя
сообщение 11.02.13, 16:26
Сообщение #6

Ветеран
Иконка группы
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0

&НаКлиенте
Процедура РассчитатьСуммуВСтрокеТабличнойЧасти(СтрокаТабличнойЧасти = Неопределено)
    
    Если СтрокаТабличнойЧасти = Неопределено Тогда
        СтрокаТабличнойЧасти = Элементы.ИмяВашейТабличнойЧасти.ТекущиеДанные;
    КонецЕсли;

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



Эту процедуру в процедуру события при изменении каждого поля ТЗ табличной части

Сообщение отредактировал Домовик - 11.02.13, 16:39

alexk Подменю пользователя
сообщение 11.02.13, 18:01
Сообщение #7

Общительный
**
Группа: Пользователи
Сообщений: 48
Спасибо сказали: 0 раз
Рейтинг: 0

Но он таким образом, почему то просто сумму значений этих полей считает...

Домовик Подменю пользователя
сообщение 11.02.13, 18:13
Сообщение #8

Ветеран
Иконка группы
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0

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


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


наверняка, еще как-то по другому можно.

Сообщение отредактировал Домовик - 11.02.13, 18:37

sia2012 Подменю пользователя
сообщение 11.02.13, 20:54
Сообщение #9

Молчаливый
*
Группа: Пользователи
Сообщений: 6
Спасибо сказали: 0 раз
Рейтинг: 0

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

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

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

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


где "Вождение" - имя документа
"РасписаниеЗанятий" - имя табличной части

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 30.05.24, 19:36
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!