Помощь - Поиск - Пользователи - Календарь
Полная версия: Как в 1С 8 подсчитать количество строк с одинаковым значением
1C-PRO - Форум по 1С > Форумы по платформе "1С:Предприятие 8.x" > (8.х) Конфигурирование на платформе "1С:Предприятие 8.x"
kladovoy
Как в 1С 8 подсчитать количество строк с одинаковым значением?


При таком варианте считает все строки из табличного поля, а надо подсчитать только с одинаковым наименованием.
Не могу сообразить, как правильно сделать.

Код
Функция ПолучитьКоличествоСтрокПолосыПоШирине()
Кол = 1;
Кол1 = 0;
СписокТабличноеПоле = ЭлементыФормы.ТабличноеПоле.Значение;
КолСтрокТабличноеПоле = СписокТабличноеПоле.Количество();
Для ТекЭлементСписокТабличноеПоле = 0 По КолСтрокТабличноеПоле - 1 Цикл
СписокСтрокТабПоле = ТаблицаЗнач[ТекЭлементСписокТабличноеПоле].КолонкаНаимен;
Если СписокСтрокТабПоле = "Клавиатура" Тогда
Кол1 = ТекЭлементСписокТабличноеПоле + Кол;
КонецЕсли;
КонецЦикла;
Возврат Кол1;
КонецФункции
Tiger
Если я правильно понял, то надо посчитать количество строк в документе, наименование которых равно "Клавиатура"?

Код
Функция ПолучитьКоличествоСтрокПолосыПоШирине()
Кол1 = 0;
Для Каждого ТекущаяСтрока Из ЭлементыФормы.ТабличноеПоле Цикл
Если ТекущаяСтрока.Значение = "Клавиатура" Тогда
Кол1 = ТекЭлементСписокТабличноеПоле + Кол;
КонецЕсли;
КонецЦикла;
Возврат Кол1;
КонецФункции


хотя более правильный вариант наверно этот
Код
Запрос.Текст = "ВЫБРАТЬ 
| КОЛИЧЕСТВО(Товары.Ссылка) КАК КоличествоПозиций
|ИЗ
| Документ.Реализация.Товары КАК Товары
|ГДЕ
| Товары.Наименование = &Знач

Запрос.УстановитьПараметр("Знач", "Клавиатура");
pho
Код


Таб = ЭлементыФормы.ТабличноеПоле.Значение.Скопировать(); // тут не совсем уверен, но нужна копия твоей таблицы!

Таб.Колонки.Добавить("Счетчик");
Таб.ЗаполнитьЗначения(1, "Счетчик");
Таб.Свернуть("Значение", "Счетчик");

// всё, теперь у нас только уникальные значения с указанием количества повторений в колонке счетчик

// например
ИщемЗначение = "Клавиатура";
Повторений = 0;
стр = Таб.Найти(ИщемЗначение, "Значение")
Если стр <> Неопределено Тогда
Повторений = стр.Счетчик;
КонецЕсли;
Сообщть("Повторений: " + Повторений);


kladovoy
Большое всем спасибо!
Deosfen
Цитата(Tiger @ 4.3.2007, 8:27) *

Если я правильно понял, то надо посчитать количество строк в документе, наименование которых равно "Клавиатура"?

Код
Функция ПолучитьКоличествоСтрокПолосыПоШирине()
Кол1 = 0;
Для Каждого ТекущаяСтрока Из ЭлементыФормы.ТабличноеПоле Цикл
Если ТекущаяСтрока.Значение = \"Клавиатура\" Тогда
Кол1 = ТекЭлементСписокТабличноеПоле + Кол;
КонецЕсли;
КонецЦикла;
Возврат Кол1;
КонецФункции


хотя более правильный вариант наверно этот
Код
Запрос.Текст = \"ВЫБРАТЬ 
| КОЛИЧЕСТВО(Товары.Ссылка) КАК КоличествоПозиций
|ИЗ
| Документ.Реализация.Товары КАК Товары
|ГДЕ
| Товары.Наименование = &Знач

Запрос.УстановитьПараметр(\"Знач\", \"Клавиатура\");



надо еще сгруппировать по номенклатуре
Tiger
Цитата(Deosfen @ 7.3.2007, 3:48) *

надо еще сгруппировать по номенклатуре

А зачем?
Нам же не нужно перебирать позиции. Нам нужна только одна цифра "КОЛИЧЕСТВО".
Deosfen
Я не внимательно прочел: "Как в 1С 8 подсчитать количество строк с одинаковым значением?" вы правы
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2008 Invision Power Services, Inc.