Имя: Пароль:
1C
1С v8
Знаю что много раз встречалось, но все же
0 Oz11
 
31.08.11
10:56
Объясните популярно, каким методом можно удалить одинаковые записи в таблице значений? (в таблице 3 колонки)
1 Дикообразко
 
31.08.11
10:56
свернуть/сгруппировать
2 alex-pro
 
31.08.11
10:58
Засунуть в запрос, вывести РАЗЛИЧНЫЕ )))
3 Morphius
 
31.08.11
10:58
(0) Думаю, это ни разу не встречалось. Потому что есть метод Свернуть()
4 Morphius
 
31.08.11
11:00
(2) Вариант;)
5 Oz11
 
31.08.11
11:01
Метод Свернуть не подходит, так как есть числовое значение, которое не нужно суммировать.
6 Goggy
 
31.08.11
11:02
а я выделюсь быдлокодом :)
Прочесать тз в циклами и удалить повторяющиеся элементы :)
7 Morphius
 
31.08.11
11:03
(5)Ну так и не суммируй
8 alex-pro
 
31.08.11
11:27
Свернуть("Контрагент,Номенклатура,Сумма",);
9 Oz11
 
31.08.11
11:29
Сделал так как посоветовали, вроде все свернулось как нужно, но вот другая проблемка - при записи этого всего в Док.КорректировкаЗаписейРегистров ошибка что строка уже существует - вот ищу решение.
10 John83
 
31.08.11
11:49
как бы запись делает не только кор. записей
11 Oz11
 
31.08.11
11:54
отладчиком прохожусь - все ок. все сворачивает как нужно, а при записи в документ ошибка. заметил закономерность. (колонки таблицы значений: Дата, Автомобиль, Пробег) если дата (период) и автомобиль(элемент справочника) одинаковы, то ему пофигу какой пробег, хоть он и разный. может в документе стоит какая-то проверка или что-то того. уже все пересмотрел. в текстовом файле из которого я гружу данные - эти строки разные, в таблицу значений они грузяться тоже отдельно, после сворачивания обе остаются. осталось только или в документе корректировка проблема или в регистре.
12 kosts
 
31.08.11
11:57
В регистре скорее всего Контрагент и Номенклатура - измерения
а Сумма - ресурс, но группировка по всем полям
значит вполне вероятно встречаются одинаковые Контрагент с Номенклатура но разной суммой. Вот и ошибка, что строка уже существует ...
13 Oz11
 
31.08.11
11:59
в регистре есть одно измерение - Автомобиль, а Пробег - это ресурс. а что значит группировка по всем полям? и как такую ситуацию можно обойти?
14 kosts
 
31.08.11
12:02
(13) Твоя исходная таблица
Ауди, 100
Ауди, 200
Ауди, 200
БМВ, 300
После свертки по Свернуть("Автомобиль,Пробег",);
Будет
Ауди, 100
Ауди, 200
БМВ, 300
Т.е. Ауди дважды, либо нужно Пробег суммировать либо как-то по другому обработать эту ситуацию...
15 Oz11
 
31.08.11
12:11
Практическе, только перед автомобилем есть еще дата, но это не особо меняет ситуацию.
26.05.2010 Мерседес 100
27.05.2011 Ауди 200
27.05.2011 Ауди 300
После сворачивания ТЗ - естественно остаются все три записи, что и требуется, но при записи в документ Коректировка - вылетает ошибка на 3й строке, так как он считает что 2я и 3я строки одинаковы. в регистре. куда пишу Автомобиль - реквизит, Пробег - ресурс. я так понимаю ошибка именно в акте записи в регистр. (предполагаю что из-за того что системе пофигу, какой там ресурс, ее волнует реквизит, период записи и регистратор) вопрос в том как это все обойти? упоминалась группировка по всем полям (12), прошу объяснить что это такое и как с ним работать.
16 aleks-id
 
31.08.11
12:13
ну поставь периодичность Секунда
17 Oz11
 
31.08.11
12:15
(16) имеется ввиду периодичность регистра? а как это поможет?
18 kosts
 
31.08.11
12:18
(15) Что то недопроектировано с регистром, явно не хватает измерения...

И почему Автомобиль - реквизит, а не измерение
19 Oz11
 
31.08.11
12:23
Все, проблема отпала. реально выйти из этой ситуации не получается, поэтому решено в такой ситуации брать строку, у которой пробег больше.
теперь вернулись в самое начало - я так понимаю чтобы провернуть все это нужно перебирать во вложеных циклах. у меня сомнения что вложеные циклы справятся с ситуацией, если таких строк не две, а больше. что посоветуете?
20 kosts
 
31.08.11
12:24
(19) Не можем посоветовать. Задача не известна...
21 Evil-Wisp
 
31.08.11
12:27
(13) >> в регистре есть одно измерение - Автомобиль
(15) >> куда пишу Автомобиль - реквизит
Так все-таки?? Опиши структуру регистра, как она у тебя в окне конфигурации.
22 Dен
 
31.08.11
12:27
(19) Алгоритм не можешь составить?
23 Oz11
 
31.08.11
12:28
Есть ТЗ, уже свернута, то есть очищена от одинаковых записей. там три колонки (Дата),(Автомобиль),(Пробег). в этой ТЗ, есть строки у которых Дата и Автомобиль одинаковы а Пробег разный. нужно очистить ТЗ от таким образом повторяющихся строк, причем оставлять ту строку, у которой Пробег максимален.
24 Oz11
 
31.08.11
12:29
за регистр забыли. поговорил с начальством, оно все обдумало и решило что нужно делать так как описал выше.
25 Dен
 
31.08.11
12:31
(23) Ну, например, запросом сверни.
26 Kassius
 
31.08.11
12:31
А почему регистр сведений?
27 Evil-Wisp
 
31.08.11
12:33
(24) чтобы свернуть запросом, нужно сначала данные сохранить куда нибудь.
28 Dен
 
31.08.11
12:33
(26) Если мы пойдем так дальше, может нам придется помогать переписывать всю конфигурацию.
29 Dен
 
31.08.11
12:34
(27) Во временную таблицу.
30 Kassius
 
31.08.11
12:37
(26) В таком случае писать надо конечный пробег.
В принципе это даже логично.
Ты часом не из омска? Больно знакомая задача.
31 Oz11
 
31.08.11
12:48
(26) нет, совсем не оттуда.
   Запрос = Новый Запрос;
   МВТ = Новый МенеджерВременныхТаблиц;
   Запрос.МенеджерВременныхТаблиц = МВТ;
   Запрос.Текст = "
       |ВЫБРАТЬ
       |   ТЗ.Период,
       |   ТЗ.Автомобиль,
       |    ТЗ.Пробег
       |ПОМЕСТИТЬ ПробегАвтомобилей
       |ИЗ
       |    &ТЗ КАК ТЗ";
   Запрос.УстановитьПараметр("ТЗ", ТЗ);
   Выб = Запрос.Выполнить();
Нарыл это в одной из веток. это, если я правильно понимаю, помещение ТЗ во временную таблицу ПробегАвтомобилей. а как теперь к ней обратится и перебрать запросом?
32 Dен
 
31.08.11
12:56
(31)
Запрос = Новый Запрос;
   МВТ = Новый МенеджерВременныхТаблиц;
   Запрос.МенеджерВременныхТаблиц = МВТ;
   Запрос.Текст = "
       |ВЫБРАТЬ
       |   ТЗ.Период,
       |   ТЗ.Автомобиль,
       |    ТЗ.Пробег
       |ПОМЕСТИТЬ ПробегАвтомобилей
       |ИЗ
       |    &ТЗ КАК ТЗ
       |;
       |ВЫБРАТЬ
       |    ПробегАвтомобилей.Период,
       |    ПробегАвтомобилей.Автомобиль,
       |    МАКСИМУМ(ПробегАвтомобилей.Пробег) КАК Пробег
       |ИЗ
       |    ПробегАвтомобилей
       |СГРУППИРОВАТЬ ПО
       |    ПробегАвтомобилей.Период,
       |    ПробегАвтомобилей.Автомобиль";
   Запрос.УстановитьПараметр("ТЗ", ТЗ);
   ТЗ = Запрос.Выполнить().Выгрузить();

ТЗ - уже будет почишена от дублирующихся строк
33 Oz11
 
31.08.11
13:07
{Форма.Форма.Форма(126)}: Ошибка при вызове метода контекста (Выполнить)
   ТЗ = Запрос.Выполнить().Выгрузить();    
по причине:

по причине:
{(3, 4)}: Тип не может быть выбран в запросе
<<?>>ТЗ.Период,

Вылазит вот такая неизвестная мне ошибка.
34 Oz11
 
31.08.11
13:08
когда создавал ТЗ - типы колонок не указывал, может в этом причина?
35 Evil-Wisp
 
31.08.11
13:18
(34) Да. И тип колонки Автомобиль -строка ограниченной длины
36 Dен
 
31.08.11
13:28
(35) Почему? Разве там не ссылка на справочник?
37 Evil-Wisp
 
31.08.11
13:31
(36) Как я понял, данные из текстового файла попали в ТЗ.
38 Oz11
 
31.08.11
13:33
(37) все верно, данные попадают из текстового файла, но в ТЗ записывается именно ссылка на элемент справочника.
39 Evil-Wisp
 
31.08.11
13:52
Ну что, получилось? А поблагодарить всех?:)
40 Oz11
 
31.08.11
13:58
Та вроде получилось, но есть один нюанс, не знаю как он важен. в текстовом файле в некоторых записях пробег = 0.
переношу его в ТЗ как число 0, в документ пишу и тут загвоздка - такой пробег отображается как пустое поле, и в регистр идет как пустое поле. не знаю ошибка ли это? то есть в регистре эта запись с визуально пустым полем пробег.
41 Nagaru
 
31.08.11
14:03
(40) Нет, не ошибка, просто 0 в 1с почти везде отображается как пстое поле, фактически же хранится именно 0.
42 Oz11
 
31.08.11
14:58
(41) раз так то все в порядке. всем огромное спасибо за помощь, надеюсь теперь все так как хочет заказчик. )
43 Learn_
 
31.08.11
15:02
вы что там автомобилями торгуете что ли
44 Oz11
 
31.08.11
15:33
Заказчик торгует.