Имя: Пароль:
1C
 
1с Удалять из таблицы значений одинаковые строки
0 Hикита
 
12.12.14
10:55
Подскажите пожалуйста, как Удалять из Таблицы Значений одинаковые строки. Причем удалять не только дубликаты а удалять и оригинал.
То есть например:
Карандаш,
Ручка,
Ластик,
Дырокол,
Карандаш,
Дырокол.
А должно остаться :
Ручка,
Ластик.
1 chelentano
 
12.12.14
10:57
(0) добавляешь колонку со счётчиком, сворачиваешь, обходишь ТЗ и удаляешь строки, где счётчик больше 1
2 Ёпрст
 
12.12.14
10:58
ДопКолонка, забить еденичкой, свернуть, отбор по допколонке=1..всё.
3 Ёпрст
 
12.12.14
10:58
Обход никакой нигде не нужен, если что.
4 chelentano
 
12.12.14
10:59
(3) а если 7.7?
5 Ёпрст
 
12.12.14
10:59
Можешь и запросом, но это будет медленнее, если тз ужо есть.
6 Ёпрст
 
12.12.14
10:59
(4) ИндексированнаяТЗ и отбор.
7 chelentano
 
12.12.14
11:01
(6) ну, ИТЗ не у всех есть, я просто в общем случае написал
8 Ёпрст
 
12.12.14
11:03
(7) да не вопрос, сортировка и выгрузить + найтиЗначение для получения первой 1.
9 Hикита
 
12.12.14
11:06
(4) 1c 8.3
10 Hикита
 
12.12.14
11:07
(2)А есть пример цикла?
11 Ёпрст
 
12.12.14
11:09
(10) какого цикла ?
12 Hикита
 
12.12.14
11:09
(11) удаления одинаковых строк
13 DCKiller
 
12.12.14
11:11
(12) запросом к ТЗ. Или через "НайтиСтроки" отобрать нужные, а остальные убрать
14 Hикита
 
12.12.14
11:12
(13) Это просто обработка
15 Ёпрст
 
12.12.14
11:14
На вот, занимайся

    Объект = Новый ТаблицаЗначений;
    Объект.Колонки.Добавить("Вася");
    Для к = 1 По 10 Цикл
        НоваяСтрока = Объект.Добавить();
        НоваяСтрока.Вася = к;
    КонецЦикла;
    Для к = 1 По 5 Цикл
        НоваяСтрока = Объект.Добавить();
        НоваяСтрока.Вася = к;
    КонецЦикла;
    Объект.Колонки.Добавить("СлужебнаяКолонка");
    Объект.ЗаполнитьЗначения(1,"СлужебнаяКолонка");
    Объект.Свернуть("Вася","СлужебнаяКолонка");
    Отбор = Новый Структура("СлужебнаяКолонка",1);
    Объект = Объект.Скопировать(Объект.НайтиСтроки(Отбор));
    Объект.ВыбратьСтроку();
    Возврат;
16 Hикита
 
12.12.14
11:22
(15) Не вижу тут удалить или отчистить . Таблицу
17 Ненавижу 1С
 
гуру
12.12.14
11:27
(16) он сделал копию и заместил:

Объект = Объект.Скопировать(Объект.НайтиСтроки(Отбор));
18 DCKiller
 
12.12.14
11:32
(14) И?
19 Ёпрст
 
12.12.14
11:33
(16)
Видишь суслика ?
Нет
И я не вижу, а он есть!
©ДМБ
20 Hикита
 
12.12.14
11:41
НоваяСтрока.Вася = к;
  это что ?
21 DmitriyDI
 
12.12.14
11:43
а почему бы не сделать запросом ?
22 vicof
 
12.12.14
11:43
(20) Это код
23 Hикита
 
12.12.14
11:44
(15) Вася это колонка что ли?
24 Ёпрст
 
12.12.14
11:44
(20)

Это пример заполнения таблицы значений с "дублями" строк.
Чего, детский пример не в состоянии осилить ?
25 Ёпрст
 
12.12.14
11:44
(21) будет медленнее, если ТЗ уже создана
26 Ёпрст
 
12.12.14
11:44
(23) догадливый.
27 Hикита
 
12.12.14
11:51
(26) Пишет ошибку "Нельзя изменять поле, содержащее объект данных формы"
28 vicof
 
12.12.14
11:54
(27) Обзови объект по-другому
29 DmitriyDI
 
12.12.14
11:57
(25) ясно)!
30 Hикита
 
12.12.14
12:00
(28) Помогло :)
Объект1 = Новый ТаблицаЗначений;
Мы должны предварительно создать ТаблицуЗначений и назвать её "Объект1" ?
31 Ёпрст
 
12.12.14
12:02
(30) Да хоть Машей её назови, лишь бы не мяукала.

ЗЫ: Домашку в школе задали что ле ?
32 Hикита
 
12.12.14
12:08
(31) Да домашку  гдз нет
33 Hикита
 
12.12.14
12:09
(31) Ну я к тому что Объект1 -это название ТаблицыЗначений?
34 Hикита
 
12.12.14
12:19
сделал так
Объект1 = Новый ТаблицаЗначений;
    Объект1.Колонки.Добавить("Номенклатура");
    Для к = 1 По 10 Цикл
        НоваяСтрока = Объект1.Добавить();
        НоваяСтрока.Номенклатура = к;
    КонецЦикла;
    Для к = 1 По 5 Цикл
        НоваяСтрока = Объект1.Добавить();
        НоваяСтрока.Номенклатура = к;
    КонецЦикла;
    Объект1.Колонки.Добавить("СлужебнаяКолонка");
    Объект1.ЗаполнитьЗначения(1,"СлужебнаяКолонка");
    Объект1.Свернуть("Номенклатура","СлужебнаяКолонка");
    Отбор = Новый Структура("СлужебнаяКолонка",1);
    Объект1= Объект1.Скопировать(Объект1.НайтиСтроки(Отбор));
    Объект1.ВыбратьСтроку();
    Возврат;

Что то не работает.......... так же создал таблицу значений с наименованием "Объект1"
35 Ёпрст
 
12.12.14
12:20
(34) чего не работает ?
36 Hикита
 
12.12.14
12:22
Ну кажет все строчки.
37 Ёпрст
 
12.12.14
12:22
Кто калитку забыл прикрыть ?
38 Ёпрст
 
12.12.14
12:22
(36) все, это какие ?
39 Hикита
 
12.12.14
12:28
Ну изначально я с двух таблиц (ТЗнач и ТЗнач2)  по кнопке копирую данные в одну таблицу (ТаблСравнения).
ТЗнач и ТЗнач2 содержат одинаковые строки за исключением некоторых. В итоге в ТаблСравнения мы видим все строки из (ТЗнач и ТЗнач2). А хотелась бы видеть только различные строки.
(38) Все, это строки из 2-х таблиц  с одинаковыми Номенклатурами
40 vicof
 
12.12.14
12:34
"Подскажите пожалуйста, как Удалять из Таблицы Значений одинаковые строки. Причем удалять не только дубликаты а удалять и оригинал. "

"Ну изначально я с двух таблиц (ТЗнач и ТЗнач2)  по кнопке копирую данные в одну таблицу (ТаблСравнения).
ТЗнач и ТЗнач2 содержат одинаковые строки за исключением некоторых. В итоге в ТаблСравнения мы видим все строки из (ТЗнач и ТЗнач2). А хотелась бы видеть только различные строки."

Автор, ты мысли свои можешь понятно излагать?
41 Ёпрст
 
12.12.14
12:34
Мот так будет понятнее ??


    ТаблицаЗначений = Новый ТаблицаЗначений;//создаем новую таблицу значений
    ТаблицаЗначений.Колонки.Добавить("Вася");//создаем колонку в ней
    Для к = 1 По 10 Цикл //делаем цикл от 1 до 10
        НоваяСтрока = ТаблицаЗначений.Добавить();//добавляем новую строку в созданную ранее таблицу значений
        НоваяСтрока.Вася = "Мармелад "+к; //присваиваем новой строке в колонке Вася значение
    КонецЦикла;//заканчиваем цикл, когда к станет равным 10
    Для к = 1 По 5 Цикл  //делаем еще один цикл для создания "дублей" в колонке Вася
        НоваяСтрока = ТаблицаЗначений.Добавить();//добавляем новую строку
        НоваяСтрока.Вася = "Мармелад "+к;//присваиваем новой строке в колонке Вася значение
    КонецЦикла;//заканчиваем цикл, когда к станет равным 5
    ТаблицаЗначений.ВыбратьСтроку();//погляди вниматочно  на созданную таблицу значений
    //смотрим, смотрим - в ней есть одинаковые строки в колонке Вася!!
    ТаблицаЗначений.Колонки.Добавить("СлужебнаяКолонка"); //добавляем ЫШО одну колонку в нашу таблицу значений
    ТаблицаЗначений.ЗаполнитьЗначения(1,"СлужебнаяКолонка"); //заполняем нашу колоночку "единичками"
    ТаблицаЗначений.Свернуть("Вася","СлужебнаяКолонка");//сворачиваем табличку значений, суммируя по колонке "СлужебнаяКолонка"
    ТаблицаЗначений = ТаблицаЗначений.Скопировать(ТаблицаЗначений.НайтиСтроки( Новый Структура("СлужебнаяКолонка",1))); //убираем "дубли"
    //из таблички значений, делая отбор  по колонке СлужебнаяКолонка, где значения=1
    ТаблицаЗначений.ВыбратьСтроку(); //глядим вниматочно на результат
    //УРРА! Дублей больше нет, совсем.
    //наслаждаемся положительными эмоциями,
    //кушаем печенки.
42 vicof
 
12.12.14
12:36
(41) Ты автора сейчас в кататонический ступор вогнал
43 Ёпрст
 
12.12.14
12:38
(39) завязывай уже с наркотой.
44 Filin
 
12.12.14
12:39
(41)Мощно ! :)) Особенно про кушание печёнок :))
45 riv40rus
 
12.12.14
12:49
(41) воу, воу, воу, полегче кавбой! ©
46 Hикита
 
12.12.14
12:58
(41) Круто все понятно...только пишет Нельзя изменять поле, содержащее объект данных формы.
47 Крошка Ру
 
12.12.14
13:01
Круто.

Школа 1С.
48 Крошка Ру
 
12.12.14
13:01
*Ясли 1С.
49 Ёпрст
 
12.12.14
13:02
(46) полное описание ошибки в студию
50 ssh2QQ6
 
12.12.14
13:04
Наверное у него таблица значений - реквизит упр формы
51 Aleksandr N
 
12.12.14
13:06
Ура! Еще одна пятничная ветка открылась)))
52 Hикита
 
12.12.14
13:07
(49) {Обработка.СравнениеТаблиц.Форма.Форма.Форма(56)}: Ошибка при установке значения атрибута контекста (ТаблицаЗначений)
    ТаблицаЗначений = Новый ТаблицаЗначений;//создаем новую таблицу значений
по причине:
Нельзя изменять поле, содержащее объект данных формы
53 Hикита
 
12.12.14
13:07
(50) ДА управляемые формы
54 Ёпрст
 
12.12.14
13:09
(52) нажимаем Ctrl+H в пофигураторе, заменяем ТаблицаЗначений на Федя, исправляем строку

Федя = Новый Федя;//создаем новую таблицу значений

на

Федя = Новый ТаблицаЗначений;//создаем новую таблицу значений

сохраняем, запускаем, кушаем печенки
55 Hикита
 
12.12.14
13:18
(54) Ошибки нету,   отбор серавно не загружается в таблицу "Федя"
56 Ёпрст
 
12.12.14
13:19
чей-то ?
57 vicof
 
12.12.14
13:21
(56) Потому что надо писать
Никита = Новый ТаблицаЗначений;
58 Hикита
 
12.12.14
13:21
//Созд табл и отражаем то что нам нужно
    ТТаблицаЗначений = Новый ТаблицаЗначений;//создаем новую таблицу значений
    ТТаблицаЗначений.Колонки.Добавить("Номенклатура");//создаем колонку в ней
Для к = 1 По 10 Цикл //делаем цикл от 1 до 10
    НоваяСтрока = ТТаблицаЗначений.Добавить();//добавляем новую строку в созданную ранее таблицу значений
    НоваяСтрока.Номенклатура = "Номенклатура"+к; //присваиваем новой строке в колонке Номнклатура значение
КонецЦикла;//заканчиваем цикл, когда к станет равным 10
Для к = 1 По 5 Цикл  //делаем еще один цикл для создания "дублей"
    НоваяСтрока = ТТаблицаЗначений.Добавить();//добавляем новую строку
    НоваяСтрока.Номенклатура = "Номенклатура"+к;
КонецЦикла;//заканчиваем цикл, когда к станет равным 5
    ТТаблицаЗначений.ВыбратьСтроку();
    ТТаблицаЗначений.Колонки.Добавить("СлужебнаяКолонка"); //добавляем  одну колонку в нашу таблицу значений
    ТТаблицаЗначений.ЗаполнитьЗначения(1,"СлужебнаяКолонка"); //заполняем нашу колонку "единичками"
    ТТаблицаЗначений.Свернуть("Номенклатура","СлужебнаяКолонка");//сворачиваем табличку значений, суммируя по колонке "СлужебнаяКолонка"
    ТТаблицаЗначений = ТТаблицаЗначений.Скопировать(ТТаблицаЗначений.НайтиСтроки( Новый Структура("СлужебнаяКолонка",1))); //убираем "дубли"
    ТТаблицаЗначений.ВыбратьСтроку();


ошибка {Обработка.СравнениеТаблиц.Форма.Форма.Форма(56)}: Ошибка при установке значения атрибута контекста (ТТаблицаЗначений)
    ТТаблицаЗначений = Новый ТаблицаЗначений;//создаем новую таблицу значений
по причине:
Нельзя изменять поле, содержащее объект данных формы
59 Hикита
 
12.12.14
13:22
ТТаблицаЗначений - Это реквизит с типом ТаблицаЗначений + сделал колонку "Номенклатура"
60 vicof
 
12.12.14
13:23
(59) Удали ее нах
61 Diman000
 
12.12.14
13:24
Выбрось управляемые формы с такими вопросами
62 ssh2QQ6
 
12.12.14
13:24
(59)

вместо    

ТТаблицаЗначений = Новый ТаблицаЗначений;//создаем новую таблицу значений

    ТТаблицаЗначений.Колонки.Добавить("Номенклатура");//создаем колонку в ней

пиши:

ТТаблицаЗначений = РеквизитФормыВзначение(ТТаблицаЗначений );

А в конце ЗначениеВРекизитФормы
63 vicof
 
12.12.14
13:25
(62) Не осилит
64 Ёпрст
 
12.12.14
13:26
Чорт, думаю..

печенки - обломись, ходи голодный!
65 Hикита
 
12.12.14
13:26
(62) {Обработка.СравнениеТаблиц.Форма.Форма.Форма(58)}: Ошибка при вызове метода контекста (РеквизитФормыВЗначение)
    ТТаблицаЗначений = РеквизитФормыВзначение(ТТаблицаЗначений );
по причине:
Несоответствие типов (параметр номер '1')
66 ssh2QQ6
 
12.12.14
13:27
(65) ТТаблицаЗначений = РеквизитФормыВзначение("ТТаблицаЗначений" );
67 ssh2QQ6
 
12.12.14
13:28
В кавычках имя реквизита должно быть
68 Hикита
 
12.12.14
13:33
(66) Та же самая ошибка
69 vicof
 
12.12.14
13:35
ТаблицаЗначений = РеквизитФормыВзначение("ТТаблицаЗначений" );
(68) иди за метлой
70 Hикита
 
12.12.14
13:39
(69) ТаблицаЗначений причем здесь  это если у нас переменная ТТаблицаЗначений ?
71 vicof
 
12.12.14
13:42
(70) Потому что сначала книжки надо читать, а потом уже программировать пытаться.

Для начала дай определение реквизиту формы и объекту формы.
72 ssh2QQ6
 
12.12.14
13:43
(70)  ты пытаешься изменить поле ТТаблицаЗначений,
ТТаблицаЗначений в контекстном серверном вызове это обращение к реквизиту формы. Платформа не дает его изменить, нельзя менять "Нельзя изменять поле, содержащее объект данных формы"
Поэтому см (69)
73 Diman000
 
12.12.14
13:44
Никит, детский сад тут устроил чесслово.
Основный алгоритм тебе нарисовали, разбирайся дальше сам с управляемыми формами.
Представляю у меня бы сын в третьем классе создал где-нить тему "делю столбиком, не получается, помогите".
И на 3 страницы.
74 vicof
 
12.12.14
13:46
(73) А ты почитай детские форумы, мож он так и поступает)
75 Hикита
 
12.12.14
13:47
Хорошо спасибо :)
AdBlock убивает бесплатный контент. 1Сергей