Имя: Пароль:
1C
 
удалить дубликаты строк по колонке
0 polkin
 
26.09.08
15:19
Ном           = 1;
   Ном1          = 0;
   для каждого Строка из Таблица цикл
       Если Таблица[Ном1].Номенклатура = Таблица[Ном].Номенклатура Тогда
           Таблица.Удалить(Ном);
                Иначе
           Ном = Ном + 1;
           Ном1 = Ном1 + 1;
       КонецЕсли;
   КонецЦикла;


Удаляет только дубликаты 1 строки.....
1 Альберт_Уфа
 
26.09.08
15:20
Свернуть()
2 polkin
 
26.09.08
15:22
(1) подробнее пож. для чайников.
3 Альберт_Уфа
 
26.09.08
15:23
Свернуть (GroupBy)
Синтаксис:
Свернуть(<Колонки группировок>, <Колонки суммирования>)
Параметры:
<Колонки группировок> (обязательный)
Тип: Строка. Имена колонок, разделенные запятыми, по которым необходимо группировать строки табличного поля.
<Колонки суммирования> (необязательный)
Тип: Строка. Имена колонок, разделенные запятыми, по которым необходимо суммировать значения в строках табличного поля.
Описание:
Осуществляет свертку табличной части по указанным колонкам группировки. Строки, у которых совпадают значения в колонках, указанных в первом параметре, сворачиваются в одну строку. Значения этих строк, хранящиеся в колонках, указанных во втором параметре, накапливаются.
Важно! Оба списка колонок должны покрывать всю табличную часть. Списки колонок не должны пересекаться.
Примечание:
Если в колонке установлен тип и он единственный, то при суммировании будет предприниматься попытка преобразования значения к типу Число.
Если колонке не присвоены типы, то в процессе суммирования будут принимать участие только значения, имеющие тип Число, значения других типов будут игнорироваться.
Если в колонке несколько типов и среди них есть тип Число то в процессе суммирования будут принимать участие только значения, имеющие тип Число, значения других типов будут игнорироваться.
Если в колонке несколько типов и среди них нет типа Число, то результат суммирования будет 0, который будет присвоен в соответствующую колонку, где будет преобразован к значению по умолчанию для типа, установленного в колонке.
Использование метода допустимо только в том случае, если табличная часть получена из свойства объекта. Если табличная часть получена из свойства ссылки (или выборки), то использование этого метода будет вызывать ошибку выполнения.
Пример:
Состав.Свернуть("Номенклатура", "Количество, Сумма, Всего");
4 polkin
 
26.09.08
15:27
Если табличная часть получена из свойства ссылки (или выборки), то использование этого метода будет вызывать ошибку выполнения....
5 Cheater
 
26.09.08
15:30
(4) У тебя "Таблица" - это что?
6 Альберт_Уфа
 
26.09.08
15:31
(4) у тебя Объект! иначе ты не удалишь!
7 polkin
 
26.09.08
15:34
(5) Таблица из запроса
8 Divemaster
 
26.09.08
15:36
и вот это: "для каждого Строка из Таблица цикл"
поправь на "для каждого ТекСтрока из Таблица цикл" - Строка - замени
9 Cheater
 
26.09.08
15:38
(7) Выгружай в таблицу значений и сворачивай
10 Cheater
 
26.09.08
15:38
(8) А какая разница?
11 Cheater
 
26.09.08
15:39
(7) А вообще тебе запрос надо менять, чтобы без дубликатов выводил
12 Альберт_Уфа
 
26.09.08
15:40
(7) Таблица из запроса??? может Попробовать использовать Выбрать РАЗЛИЧНЫЕ.
13 Альберт_Уфа
 
26.09.08
15:43
Запрос в студию!
14 Mitriy
 
26.09.08
15:43
МассивУдаляемых = НовыйМассив;
СписокНоменклатуры = Новый Соответствие;
для каждого Строка из Таблица цикл
        ЕстьНоменклатура = СписокНоменклатуры[Строка.Номенклатура];
       Если ЕстьНоменклатура = Неопределено Тогда
          СписокНоменклатуры.Вставить(Строка.Номенклатура);
       Иначе
           МассивУдаляемых.Добавить(Строка);
       КонецЕсли;
   КонецЦикла;
Для Каждого Строка Из МассивУдаляемых Цикл
Таблица.Удалить(Строка);
КонецЦикла;
15 Mitriy
 
26.09.08
15:44
(14) МассивУдаляемых = НовыйМассив; читать как МассивУдаляемых = Новый Массив;
16 polkin
 
26.09.08
15:59
Запрос.Текст =
   "ВЫБРАТЬ
   |    ЦенаНоменклатуры.Цена1,
   |    МАКСИМУМ(ЦенаНоменклатуры.ДатаЦены) КАК ДатаЦены,
   |    ЦенаНоменклатуры.Номенклатура КАК Номенклатура,
   |    ЦенаНоменклатуры.Номинал КАК Номинал
   |ИЗ
   |    РегистрСведений.ЦенаНоменклатуры КАК ЦенаНоменклатуры
   |ГДЕ
   |    ЦенаНоменклатуры.Номенклатура.Родитель = &Родитель
   |
   |СГРУППИРОВАТЬ ПО
   |    ЦенаНоменклатуры.Цена1,
   |    ЦенаНоменклатуры.Номенклатура,
   |    ЦенаНоменклатуры.Номинал
   |
   |УПОРЯДОЧИТЬ ПО
   |    Номенклатура
   |АВТОУПОРЯДОЧИВАНИЕ";

Смысл - получить цену номенклатуры на последнюю имеющуюся дату
17 Cheater
 
26.09.08
16:04
(16) РегистрСведение.ЦенаНоменклатуры.СрезПоследних(&ДатаНаКоторуюМнеНужноУзнатьЦену)
18 Альберт_Уфа
 
26.09.08
16:04
СрезПоследних используй!
19 Cheater
 
26.09.08
16:05
+(17) *РегистрСведений
20 Mitriy
 
26.09.08
16:08
(16) млин...
21 polkin
 
26.09.08
16:10
(17)Что будет если
РегистрСведение.ЦенаНоменклатуры.СрезПоследних(&ДатаНаКоторуюМнеНужноУзнатьЦену)
ДатаНаКоторуюМнеНужноУзнатьЦену нет.
Например я хочу получить сегодня, а посл. раз ЦенаНоменклатуры 10 дней назад.
22 Альберт_Уфа
 
26.09.08
16:16
(21) все пучком будет. отработает как нужно!
23 polkin
 
26.09.08
16:23
"ВЫБРАТЬ
   |    ЦенаНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
   |    ЦенаНоменклатурыСрезПоследних.Номинал КАК Номинал,
   |    ЦенаНоменклатурыСрезПоследних.Цена1,
   |    ЦенаНоменклатурыСрезПоследних.ДатаЦены
   |ИЗ
   |    РегистрСведений.ЦенаНоменклатуры.СрезПоследних КАК ЦенаНоменклатурыСрезПоследних
   |ГДЕ
   |    ЦенаНоменклатурыСрезПоследних.Номенклатура.Родитель = &Родитель
   |
   |УПОРЯДОЧИТЬ ПО
   |    Номенклатура
   |АВТОУПОРЯДОЧИВАНИЕ";

????
24 Альберт_Уфа
 
26.09.08
16:25
(23) см. (21). сам ведь ставил условие на дату!!!!!
25 polkin
 
26.09.08
16:33
Запрос = Новый Запрос();
   Запрос.УстановитьПараметр("Родитель",ЭлементыФормы.НоменклатураДерево.ТекущаяСтрока);
   Запрос.УстановитьПараметр("Дата",ТекущаяДата());
   Запрос.Текст =
   "ВЫБРАТЬ
   |    ЦенаНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
   |    ЦенаНоменклатурыСрезПоследних.Номинал КАК Номинал,
   |    ЦенаНоменклатурыСрезПоследних.Цена1,
   |    ЦенаНоменклатурыСрезПоследних.ДатаЦены
   |ИЗ
   |    РегистрСведений.ЦенаНоменклатуры.СрезПоследних КАК ЦенаНоменклатурыСрезПоследних
   |ГДЕ
   |    ЦенаНоменклатурыСрезПоследних.Номенклатура.Родитель = &Родитель
   |    И ЦенаНоменклатурыСрезПоследних.ДатаЦены = &Дата
   |
   |
   |УПОРЯДОЧИТЬ ПО
   |    Номенклатура
   |АВТОУПОРЯДОЧИВАНИЕ";
   
   
   Результат = Запрос.Выполнить();
   ЭлементыФормы.Таблица.Значение = Результат.Выгрузить();

Вообще дату не выводит
26 Cheater
 
29.09.08
15:09
(25) Читай в ЖКК про срез последних
Независимо от того, куда вы едете — это в гору и против ветра!