Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Реализация получение значений из ТЗ по условию.

v7: Реализация получение значений из ТЗ по условию.
Я
   brenli
 
07.03.18 - 09:42
Все привет.
Есть ТЗ которая сгруппирована по "товару", затем по "документам" (реализации).
Далее отсортирована по товару+ и документам- , в результате получилось что ПОСЛЕДНИЙ по дате документ реализации для каждой позиции ПЕРВЫЙ относительно остальных документов.

Так вот нужно  получить  только уникальные значения по каждому товару с последним по дате документом реализации.

Пример:

1) [Носки] - [Реализация 10 от 29.09.17] <---
2) [Носки] - [Реализация  9 от 20.09.17]
3) [Носки] - [Реализация  8 от 20.09.17]
4) [Трусы] - [Реализация 18 от 30.09.17] <---
5) [Трусы] - [Реализация 13 от 30.09.17]
6) [Трусы] - [Реализация 11 от 01.09.17]
7) [Колготки] - [Реализация 10 от 29.09.17] <---
8) [Колготки] - [Реализация  6 от 05.08.17]
9) [Колготки] - [Реализация  2 от 03.08.17]

Нужно получать только 1 строки по каждой позиции.

Кроме алгоритма переборки с сравнивания следующей строки с предыдущей как то можно красиво вывести первые уникальные значения по каждому товару?
Есть способы и идеи?
 
 
   2S
 
1 - 07.03.18 - 09:43
читаешь темы, как-будто в прошлое попал
   brenli
 
2 - 07.03.18 - 09:44
(1) Ностальгируйте наздоровье)
   2S
 
3 - 07.03.18 - 09:44
выгрузить в отдельное ТЗ, свернуть его по номенклатуре.
Дальше писать?
   brenli
 
4 - 07.03.18 - 09:45
(3) нет , спасибо
   brenli
 
5 - 07.03.18 - 19:40
(3)     
ИндексНайдено = 0; 
    
Для Сч = 1 По СписокТоваров.РазмерСписка() Цикл 
        ТЗ.НайтиЗначение(СписокТоваров.ПолучитьЗначение(Сч),ИндексНайдено,"Товар");
        Сообщить(" "+ТЗ.ПолучитьЗначение(ИндексНайдено,"Товар")+" "+ТЗ.ПолучитьЗначение(ИндексНайдено,"ТекДок"));
    КонецЦикла;

Так подразумевалось?

Если да тогда другой вопрос. Почему то поиск всегда возвращает строку с номером 1. Хотя товар для поиска реально перебирается. Почему так? Не могу сообразить
   Kigo_Kigo
 
6 - 07.03.18 - 19:55
(5) А на размер списка не ругается? если это ТЗ, то там КоличествоСтрок()
   brenli
 
7 - 07.03.18 - 19:57
(6) Все заробило... переменную ИндексНайдено  воткнул внутрь цикла...
Получается копия переменной создается внутри цикла
   ikea
 
8 - 07.03.18 - 21:56
Индексированная таблица в помощь.
   Ёпрст
 
9 - 08.03.18 - 00:25
(7) не так. В ИндексНайдено  возвращается номер найденной строки, на следующей итерации цикла поиск будет в этой же строке, если только не "обнулишь" эту переменную.
   Sserj
 
10 - 08.03.18 - 10:05
А зачем вообще все это, если уже отсортировано товар/документ.
Думаешь свернуть и куча "найтизначение" будет быстрее одного прохода?
текущийТовар = "";
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку() = 1 Цикл
  Если НЕ (ТЗ.Товар = текущийТовар) Тогда
    текущийТовар = ТЗ.Товар;
    Сообщить(текущийТовар + " Последний документ: " + тз.ТекДок);
  КонецЕсли;
КонецЦикла;
 
 Рекламное место пустует
   spectre1978
 
11 - 08.03.18 - 19:02
(0) Вообще говоря, никто не запрещает делать вложенные таблицы значений, т.е. таблицы, у которых есть колонка типа ТаблицаЗначений. Если вы откажетесь от плоской таблицы и сделаете так, то проблем с поиском у вас не будет.
   Cool_Profi
 
12 - 08.03.18 - 19:03
1с++ и свернуть (или как там оно называется) - полностью решает задачу

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует