Форум программистов, компьютерный форум, киберфорум
Наши страницы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.53/17: Рейтинг темы: голосов - 17, средняя оценка - 4.53
ErrorEd88
7 / 7 / 0
Регистрация: 28.05.2010
Сообщений: 125
#1

Обычное приложение. Красивая работа с таблицей значений

27.12.2011, 17:49. Просмотров 3141. Ответов 8
Метки нет (Все метки)

К примеру, у таблицы значений есть колонки - организация, контрагент, номенклатура, сумма (выгрузил запрос по регистру в тз). Нужно вычислить сумму конкретной номенклатуры для конкретной организации и контрагенту.
1C
1
2
3
4
5
6
7
8
СуммаНоменклатураТЗ = 0;
Для Каждого ТекСтрокаТЗ Из ТЗ Цикл
Если ТекСтрокаТЗ.Организация = ОрганизацияМакет 
И ТекСтрокаТЗ.Контрагент = КонтрагентМакет 
И ТекСтрокаТЗ.Номенклатура = Выборка.Номенклатура Тогда
СуммаНоменклатураТЗ = СуммаНоменклатураТЗ + ТекСтрокаТЗ.Стоимость;
КонецЕсли;
КонецЦикла;
Можно как-то проще и правильней это сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2011, 17:49
Ответы с готовыми решениями:

Работа с таблицей значений
Доброго Вам дня, уважаемые программисты. Прошу помощи в решении задачи в 1С,...

Работа с Таблицей значений
Надо делать вычисления, используя таблицу значений. Я выгружаю в нее данные из...

Управляемое приложение, обычное приложение
Всем привет. Вопрос про Управляемое приложение и обычное приложение. Как...

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

Работа с таблицей: можно ли сначала вывести секции, потом забить свои значения и расчитать итог?
1С7.7 Никак не могу понять: можно ли в отчете сначала сформировать таблицу,как...

8
Nucky
21 / 21 / 0
Регистрация: 21.12.2011
Сообщений: 62
27.12.2011, 18:04 #2
Ну в принципе код правильный. Можно еще свернуть таблицу и поставить условие на прерывание цикла когда найдешь строку с требуемыми условиями.
0
fimbulwinter
307 / 307 / 1
Регистрация: 16.01.2011
Сообщений: 1,073
27.12.2011, 19:58 #3
сделать необходимую выборку запросом
это быстрее работает, меньший объем кода, читабельно, прокачивает скилл до следующего уровня копрокодерства)))
0
Dethmontt
Модератор
Эксперт 1С
2616 / 2416 / 407
Регистрация: 10.03.2011
Сообщений: 8,594
Записей в блоге: 1
Завершенные тесты: 1
28.12.2011, 00:36 #4
Учитесь работать с запросами правильно, в запросе же можно сразу отобрать все что тебе нужно...
0
duk337
2948 / 1760 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
28.12.2011, 13:07 #5
Красиво - это по каждой группе условий создавать массив строк ТЗ функцией. Ещё красивее - написать свою небольшую функцию по выгрузке и из массива в таблицу, получив возможность использовать "Итог()"

Из С-Пом
НайтиСтроки (FindRows)
Синтаксис:

НайтиСтроки(<ПараметрыОтбора>)
Параметры:

<ПараметрыОтбора> (обязательный)

Тип: Структура.
Задает условия поиска: ключ структуры определяет имя колонки, по которой будет осуществляться поиск, а значение структуры - искомое значение.
Возвращаемое значение:

Тип: Массив.
Массив строк таблицы значений, соответствующих условиям поиска.
Замечание! Массив хранит ссылки на строки таблицы значений, то есть при изменении строки в таблице, значение в массиве тоже будет измененным.
Описание:

Осуществляет поиск строк таблицы значений, отвечающих заданным условиям поиска.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Примечание:

Метод эффективно использовать для выборки неуникальных значений.
Пример:

// СписокРаботников - реквизит формы для представления информации
// о работниках (тип ТаблицаЗначений).
// В форме расположено табличное поле СписокРаботников, в котором
// показываются данные СписокРаботников.
// С помощью запроса выбирается информация о работниках.
Запрос = Новый Запрос;
ТекстЗапроса =
"ВЫБРАТЬ
// текст запроса
// ...
";
Запрос.Текст = ТекстЗапроса;
СписокРаботников = Запрос.Выполнить().Выгрузить();
Отбор = Новый Структура();
Отбор.Вставить("ФизЛицо",Справочники.ФизическиеЛица.ПустаяСсылка());
Строки = СписокРаботников.НайтиСтроки(Отбор);
Если Строки.Количество() > 0 Тогда
ЭлементыФормы.СписокРаботников.ТекущаяСтрока = Строки[0];
КонецЕсли;

Добавлено через 4 минуты
Цитата Сообщение от fimbulwinter Посмотреть сообщение
сделать необходимую выборку запросом
это быстрее работает, меньший объем кода, читабельно, прокачивает скилл до следующего уровня копрокодерства)))
Очень может быть, что ТЗ - это левый источник данных. Правда, и в этом случае ТЗ можно загнать в запрос через временную таблицу. Делал когда-то, навскидку не помню, там фича какая-то
0
Dethmontt
Модератор
Эксперт 1С
2616 / 2416 / 407
Регистрация: 10.03.2011
Сообщений: 8,594
Записей в блоге: 1
Завершенные тесты: 1
28.12.2011, 13:12 #6
Пакетные запросы рулят)))
0
duk337
2948 / 1760 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
28.12.2011, 13:21 #7
Цитата Сообщение от Dethmontt Посмотреть сообщение
Пакетные запросы рулят)))
Не в них дело. Надо ТЗ как-то прицепить как ВТ... А! Вспомнил! ВЫБРАТЬ ИЗ &ТЗ, только там фича, то ли действительно только через менеджер врем.таб, то ли ещё что
0
fimbulwinter
307 / 307 / 1
Регистрация: 16.01.2011
Сообщений: 1,073
28.12.2011, 13:26 #8
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
ВЫБРАТЬ
     1 КАК Маркер,
     *
ПОМЕСТИТЬ ТЗ1
ИЗ
     &ТЗ1 КАК ТЗ1
;
 
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
     1 КАК Маркер,
     *
ПОМЕСТИТЬ ТЗ2
ИЗ
     &ТЗ2 КАК ТЗ2
;
 
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
     *
ИЗ
     ТЗ1 КАК ТЗ1
          ЛЕВОЕ СОЕДИНЕНИЕ ТЗ2 КАК ТЗ2
          ПО ТЗ1.Маркер = ТЗ2.Маркер
Вот и вся фича

Добавлено через 2 минуты
за работоспособность не отвечаю потому как запрос к двум ТЗ. Возможно придется описывать Имена колонок для каждой ТЗ. А Потом группировки делать.
1
duk337
2948 / 1760 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
28.12.2011, 13:40 #9
Спасибо. Верно. А при пакете можно с менеджером не возюкаться
0
28.12.2011, 13:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.12.2011, 13:40

1с 8.2 Обычное приложение (интерфейс)
Можно ли как-то в командную панель формы добавить Калькулятор 1С-вский...

Скопировать не записанный документ. обычное приложение
Доброго времени суток, форумчане!) Задачка: есть документ (неважно какой) с...

Работа с таблицей значений (обход строк)
Подскажите как пробежаться по ТЗ. Например: Есть ТЗ с Колонко Адрес, в тз 5...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru