В таблице значений есть оплаты и ФИО.Найти максимальную дату??!!

1. 988599 30.05.19 06:20 Сейчас в теме
В таблице значений например есть три даты . Как найти максимальную дату??!!
контрагент дата оплата (///нужен в коде***** а не в запросе)
Сергей 01.04.2019
Сергей 10.04.2019
Сергей 15.04.2019
Мне надо вот так::::
Сергей 15.04.2019
!!!! В ТАБЛИЦЕ ЗНАЧЕНИЙ !!!
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. tusv 212 30.05.19 06:34 Сейчас в теме
(1) Есть метод Сортировать
тз.Сортировать("Дата Увыв")	
Стр = Тз.Найти("Иванов");
7. 988599 30.05.19 06:35 Сейчас в теме
8. tusv 212 30.05.19 06:37 Сейчас в теме
(7)Собственно все. Найденная строка будет с максимальной датой
2. SedovSU@mail.ru 298 30.05.19 06:24 Сейчас в теме
Конечно запросом очень просто сделать, если нужен код. то методом перебора можно сделать

Для Каждого Строка Из Таблица Цикл

// для получения максимальной даты используем метод Макс()
// а результат добавляем куда нибудь

Конеццикла
3. 988599 30.05.19 06:26 Сейчас в теме
(2)для получения максимальной даты используем метод Макс() --- а это как (я новичок в 1с)
4. SedovSU@mail.ru 298 30.05.19 06:29 Сейчас в теме
Соответствие = Новый Соответствие;
Для Каждого Строка Из Таблица Цикл

Ключ = Соответствие.Получить(Строка.Имя);
Если Ключ = Неопределено Тогда
Соответствие.Вставить(Строка.Имя, Строка.Дата);
Иначе
МаксДата = Макс(Строка.Дата, Ключ);
Соответствие.Вставить(Строка.Имя, МаксДата);
Конецесли

Конеццикла
Показать


// в результате получите соответствие, в которой будет ФИО и макс. дата из таблицы

На самом деле можно и через структуру и через таблицы по разному можно решить задачу
6. 988599 30.05.19 06:34 Сейчас в теме
(4)а как через структуру ? (я структуру вообще не понимаю-можете хорошенько написать по структур)
9. SedovSU@mail.ru 298 30.05.19 06:41 Сейчас в теме
(6)
Структура = Новый Структура
Для Каждого Строка Из Таблица Цикл 

Если Структура.Свойство(Строка.Имя) = НЕОПРЕДЕЛЕНО Тогда 
Структура.Вставить(Строка.Имя, Строка.Дата);
Иначе
Структура.Вставить(Строка.Имя, Макс(Структура[Строка.Имя], Строка.Дата));
Конецесли

Конеццикла 
Показать


Но есть один минус, в Имени не должны быть какие либо пробелы, начинаться с цифры или спец символа
10. 988599 30.05.19 06:42 Сейчас в теме
(9)сейчас посмотрю ОГРОМНОЕ СПАСИБО
12. SedovSU@mail.ru 298 30.05.19 06:46 Сейчас в теме
(10) вам в (5) тоже хороший вариант предлагают, его можно вот так сделать

ТаблицаИмен = ТаблицаЗначений.Выгрузить();
ТаблицаИмен.Свернуть("Имя");
ТаблицаИмен.Колонки.Добавить("МаксДата");

ТаблицаЗначений.Сортировать("Имя, Дата Убыв");

Для Каждого СтрокаТабИмен Из ТаблицаИмен Цикл
Отбор = Новый Структура("Имя", СтрокаТабИмен.Имя);
СтрокаТабИмен.Дата = ТаблицаЗначений.НайтиСтроки(Отбор)[0].Дата
Конеццикла
Показать


Вообщем по разному можно это реализовать
alex-l19041; +1 Ответить
14. 988599 30.05.19 06:52 Сейчас в теме
15. 988599 30.05.19 07:03 Сейчас в теме
(12)НайденныеСтроки = ТЗГлавный.НайтиСтроки(Новый Структура("Контрагент", СтрТЗДанных.Контрагент)) ////// вот эту структуру можете объяснить
16. catena 110 30.05.19 07:35 Сейчас в теме
(15) Тут даже книжки не нужны, синтаксис-помощника достаточно.
17. SedovSU@mail.ru 298 30.05.19 07:35 Сейчас в теме
(15) В результате вам вернется массив строк таблицы ТЗГлавный. То ессть для того чтобы найти строки (метод НайтиСтроки) в таблицы значений нам необходима структура, мы ее и создаем Новый Структура("Контрагент", СтрТЗДанных.Контрагент). То есть сама по себе структура, простыми словами если сказать, то же самое что таблица, но в ней всегда две колонки "Ключ" и "Значение", так вот когда мы пишем Новый Структура("Контрагент", СтрТЗДанных.Контрагент), тогда у нас "Ключ" - "Контрагент", а Значение - СтрТЗДанных.Контрагент
18. 988599 30.05.19 07:43 Сейчас в теме
19. 988599 30.05.19 07:54 Сейчас в теме
(12)
Структура = Новый Структура; 
	 Для Каждого СтрТЗДляПечати Из ТЗДляПечати Цикл 
		 
		 Если Структура.Свойство(СтрТЗДляПечати.Контрагент) = НЕОПРЕДЕЛЕНО Тогда 
			 Структура.Вставить(СтрТЗДляПечати.Контрагент, СтрТЗДляПечати.Период); 
		 Иначе 
			 Структура.Вставить(СтрТЗДляПечати.Контрагент,СтрТЗДляПечати.ЛицевойСчетЦифрой, Макс(Структура[СтрТЗДляПечати.Контрагент], СтрТЗДляПечати.Период)); 
		 Конецесли 	
	  Конеццикла;
Показать


Ошибка при вызове метода контекста (Свойство)
Если Структура.Свойство(СтрТЗДляПечати.Контрагент) = НЕОПРЕДЕЛЕНО Тогда
20. SedovSU@mail.ru 298 30.05.19 08:29 Сейчас в теме
(19) при работе со структурой есть один ньюанс в отличии от соответствия. В структуре в качестве ключа, можно добавлять такие значения, а именно - они должна быть строка и в ней не должно быть пробелом, начинаться с цифры и содежать спецсиволы. Например вы хотите добавить ключ "Иванов Иван" - будет ошибка, а если будет "ИвановИван" то не будет ошибка. Можно вставлять только текст!!! а вкачестве значения - любое значение
21. 988599 30.05.19 08:40 Сейчас в теме
(20)у меня они записаны как Иванов Иван. Помогите пжл!!!!
22. SedovSU@mail.ru 298 30.05.19 09:01 Сейчас в теме
(21)тогда вам лучше соответствие использовать. если сложно могу напистаь
23. 988599 30.05.19 09:24 Сейчас в теме
(22)Можете написать? Спасибо
11. 988599 30.05.19 06:46 Сейчас в теме
(9)какие книги можете рекомендовать новичку? у меня база 8.1 (СКД мы вообще не используем)
13. SedovSU@mail.ru 298 30.05.19 06:47 Сейчас в теме
(11) вот мне полезна была книга Практические примеры разработки в 1С предприятие 8. В приницпе там для новичка очень полезные вещи описаны
24. Ditron 191 31.05.19 12:25 Сейчас в теме
Используйте запросы:
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ИсходныеДанные", ТабЗначений);
Запрос.Текст = "ВЫБРАТЬ
|  ИсходныеДанные.ДатаПлатежа,
|  ИсходныеДанные.Контрагент
|ПОМЕСТИТЬ ВТИсходныеДанные
|ИЗ
|  &ИсходныеДанные КАК ИсходныеДанные
|;
|
|ВЫБРАТЬ
|  ИсходныеДанные.Контрагент КАК Контрагент,
|  МАКСИМУМ(ИсходныеДанные.ДатаПлатежа) КАК МаксДата
|ИЗ
|  ВТИсходныеДанные КАК ИсходныеДанные
|СГРУППИРОВАТЬ ПО
|  Контрагент";
Показать
25. Plash 5 31.05.19 16:52 Сейчас в теме
По принципу максимума колонки "кол" сделайте по колонке "Дата".

ИстДанных = Новый ОписаниеИсточникаДанных(ТЗ);
ИстДанных.Колонки.Кол.Итог = "Максимум(Кол)" ;
ПостроительЗапроса = Новый ПостроительЗапроса; 
ПостроительЗапроса.ИсточникДанных = ИстДанных; 
Результат = ПостроительЗапроса.Результат;// тип РезультатЗапроса     
 
ТЗРез = Результат.Выгрузить();
МаксКол = ТЗРез[0].Кол;
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот