В таблице значений есть оплаты и ФИО.Найти максимальную дату??!!
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Конечно запросом очень просто сделать, если нужен код. то методом перебора можно сделать
Для Каждого Строка Из Таблица Цикл
// для получения максимальной даты используем метод Макс()
// а результат добавляем куда нибудь
Конеццикла
Соответствие = Новый Соответствие;
Для Каждого Строка Из Таблица Цикл
Ключ = Соответствие.Получить(Строка.Имя);
Если Ключ = Неопределено Тогда
Соответствие.Вставить(Строка.Имя, Строка.Дата);
Иначе
МаксДата = Макс(Строка.Дата, Ключ);
Соответствие.Вставить(Строка.Имя, МаксДата);
Конецесли
Конеццикла
Показать// в результате получите соответствие, в которой будет ФИО и макс. дата из таблицы
На самом деле можно и через структуру и через таблицы по разному можно решить задачу
(6)
Но есть один минус, в Имени не должны быть какие либо пробелы, начинаться с цифры или спец символа
Структура = Новый Структура
Для Каждого Строка Из Таблица Цикл
Если Структура.Свойство(Строка.Имя) = НЕОПРЕДЕЛЕНО Тогда
Структура.Вставить(Строка.Имя, Строка.Дата);
Иначе
Структура.Вставить(Строка.Имя, Макс(Структура[Строка.Имя], Строка.Дата));
Конецесли
Конеццикла
ПоказатьНо есть один минус, в Имени не должны быть какие либо пробелы, начинаться с цифры или спец символа
(10) вам в (5) тоже хороший вариант предлагают, его можно вот так сделать
Вообщем по разному можно это реализовать
ТаблицаИмен = ТаблицаЗначений.Выгрузить();
ТаблицаИмен.Свернуть("Имя");
ТаблицаИмен.Колонки.Добавить("МаксДата");
ТаблицаЗначений.Сортировать("Имя, Дата Убыв");
Для Каждого СтрокаТабИмен Из ТаблицаИмен Цикл
Отбор = Новый Структура("Имя", СтрокаТабИмен.Имя);
СтрокаТабИмен.Дата = ТаблицаЗначений.НайтиСтроки(Отбор)[0].Дата
Конеццикла
ПоказатьВообщем по разному можно это реализовать
(15) В результате вам вернется массив строк таблицы ТЗГлавный. То ессть для того чтобы найти строки (метод НайтиСтроки) в таблицы значений нам необходима структура, мы ее и создаем Новый Структура("Контрагент", СтрТЗДанных.Контрагент). То есть сама по себе структура, простыми словами если сказать, то же самое что таблица, но в ней всегда две колонки "Ключ" и "Значение", так вот когда мы пишем Новый Структура("Контрагент", СтрТЗДанных.Контрагент), тогда у нас "Ключ" - "Контрагент", а Значение - СтрТЗДанных.Контрагент
(12)
Ошибка при вызове метода контекста (Свойство)
Если Структура.Свойство(СтрТЗДляПечати.Контрагент) = НЕОПРЕДЕЛЕНО Тогда
Структура = Новый Структура;
Для Каждого СтрТЗДляПечати Из ТЗДляПечати Цикл
Если Структура.Свойство(СтрТЗДляПечати.Контрагент) = НЕОПРЕДЕЛЕНО Тогда
Структура.Вставить(СтрТЗДляПечати.Контрагент, СтрТЗДляПечати.Период);
Иначе
Структура.Вставить(СтрТЗДляПечати.Контрагент,СтрТЗДляПечати.ЛицевойСчетЦифрой, Макс(Структура[СтрТЗДляПечати.Контрагент], СтрТЗДляПечати.Период));
Конецесли
Конеццикла;
ПоказатьОшибка при вызове метода контекста (Свойство)
Если Структура.Свойство(СтрТЗДляПечати.Контрагент) = НЕОПРЕДЕЛЕНО Тогда
(19) при работе со структурой есть один ньюанс в отличии от соответствия. В структуре в качестве ключа, можно добавлять такие значения, а именно - они должна быть строка и в ней не должно быть пробелом, начинаться с цифры и содежать спецсиволы. Например вы хотите добавить ключ "Иванов Иван" - будет ошибка, а если будет "ИвановИван" то не будет ошибка. Можно вставлять только текст!!! а вкачестве значения - любое значение
Используйте запросы:
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ИсходныеДанные", ТабЗначений);
Запрос.Текст = "ВЫБРАТЬ
| ИсходныеДанные.ДатаПлатежа,
| ИсходныеДанные.Контрагент
|ПОМЕСТИТЬ ВТИсходныеДанные
|ИЗ
| &ИсходныеДанные КАК ИсходныеДанные
|;
|
|ВЫБРАТЬ
| ИсходныеДанные.Контрагент КАК Контрагент,
| МАКСИМУМ(ИсходныеДанные.ДатаПлатежа) КАК МаксДата
|ИЗ
| ВТИсходныеДанные КАК ИсходныеДанные
|СГРУППИРОВАТЬ ПО
| Контрагент";
Показать
По принципу максимума колонки "кол" сделайте по колонке "Дата".
ИстДанных = Новый ОписаниеИсточникаДанных(ТЗ);
ИстДанных.Колонки.Кол.Итог = "Максимум(Кол)" ;
ПостроительЗапроса = Новый ПостроительЗапроса;
ПостроительЗапроса.ИсточникДанных = ИстДанных;
Результат = ПостроительЗапроса.Результат;// тип РезультатЗапроса
ТЗРез = Результат.Выгрузить();
МаксКол = ТЗРез[0].Кол;
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот