Имя: Пароль:
1C
1С v8
Найти в ТаблицеЗначений дубли строк
0 Popkorm
 
01.11.11
15:29
Цель задачи:Создать для каждого ИсполЕксель(Контрагент)свой Документ.
С Екселя выгрузил в ТЗ :
   ТаблЕксель = Новый ТаблицаЗначений;
   ТаблЕксель.Колонки.Добавить("НомЕксель");
   ТаблЕксель.Колонки.Добавить("ISBNЕксель");
   ТаблЕксель.Колонки.Добавить("РаботаЕксель");
   ТаблЕксель.Колонки.Добавить("КолЕксель");
   ТаблЕксель.Колонки.Добавить("СтоимЕксель");
   ТаблЕксель.Колонки.Добавить("СуммаЕксель");
   ТаблЕксель.Колонки.Добавить("ИсполЕксель");
   ТаблЕксель.Колонки.Добавить("РедакЕксель");    
           НомерПервойСтроки = 2;
       Для Row = НомерПервойСтроки По RowCount Цикл
           НС           = ТаблЕксель.Добавить();
           НС.НомЕксель    = СокрЛП(ExcelЛист.Cells(Row,1).Text);
           НС.ISBNЕксель   = СтрЗаменить((ExcelЛист.Cells(Row,2).Text)," ","");
           НС.РаботаЕксель = СтрЗаменить((ExcelЛист.Cells(Row,3).Text)," ","");
           НС.КолЕксель    = СтрЗаменить((ExcelЛист.Cells(Row,4).Text)," ","");
           НС.СтоимЕксель  = СтрЗаменить((ExcelЛист.Cells(Row,5).Text)," ","");
           НС.СуммаЕксель  = СтрЗаменить((ExcelЛист.Cells(Row,6).Text)," ","");
           НС.ИсполЕксель  = СокрЛП(ExcelЛист.Cells(Row,7).Text);
           НС.РедакЕксель  = СтрЗаменить((ExcelЛист.Cells(Row,10).Text)," ","");
       КонецЦикла;    
в строках есть повторяющий ИсполЕксель(Контрагент)с разными значениями.Если по одному ИсполЕкселю в ТаблЕксель несколько строк,то это будит отдельный док по этому ИсполЕксель(Контрагент).

Пробывал делать так, но чушь:
   Для Каждого СтрЕксель Из ТаблЕксель Цикл
       НоваяСтр = ТабНовый.Добавить();
       Поиск    = ТабНовый.Найти(СтрЕксель.ИсполЕксель,"ИсполЕксель");
       Если Поиск = Неопределено Тогда
           ЗаполнитьЗначенияСвойств(НоваяСтр,СтрЕксель);
       Иначе
           НСДубли  = ТабДубли.Добавить();      
           ЗаполнитьЗначенияСвойств(НСДубли,СтрЕксель);          
       КонецЕсли;        
   КонецЦикла;
1 Нуф-Нуф
 
01.11.11
15:30
заполни таблицу и выполни к ней запрос
2 Maxus43
 
01.11.11
15:31
я бы в запрос эту таблицу запихнул, сделал бы итоги по контрагенту, и в итоге на каждую группировку получилс бы свой док
3 Рэйв
 
01.11.11
15:33
(0)Долбавь колонку типа Число, заполни ее 1 и сверни.
Там где >1 - дубли
4 Popkorm
 
01.11.11
15:40
(2)а получать из запроса по ДеревоЗначений Группировки?!
5 Maxus43
 
01.11.11
15:49
(4) типа да, ну где ОбходРезуьтатаЗапроса по Группировкам... как обычно с деревом работаем после запроса
6 zbv
 
01.11.11
15:55
можно сразу из экселя в дерево прихать
7 Popkorm
 
01.11.11
16:56
(6)просто там тогда условие придется мудрить
8 Popkorm
 
01.11.11
17:13
почему Выборка ТипЗначения =Неопределено,блин на днях делал по МВТ,обработку найти не могу

   ТабНовый = Новый ТаблицаЗначений;
   ТабНовый.Колонки.Добавить("Номенклатура",Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
   ТабНовый.Колонки.Добавить("ISBN",Новый ОписаниеТипов("Строка"));
   ТабНовый.Колонки.Добавить("НУслуга",Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
   ТабНовый.Колонки.Добавить("Количество",Новый ОписаниеТипов("Число"));
   ТабНовый.Колонки.Добавить("Стоимость",Новый ОписаниеТипов("Число"));
   ТабНовый.Колонки.Добавить("Сумма",Новый ОписаниеТипов("Число"));
   ТабНовый.Колонки.Добавить("Контрагент",Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));

       МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
       Запрос = Новый Запрос;
       Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
       Запрос.Текст =  "ВЫБРАТЬ
                       |    ТабНовый.Номенклатура,
                       |    ТабНовый.ISBN,
                       |    ТабНовый.НУслуга,
                       |    ТабНовый.Количество,
                       |    ТабНовый.Стоимость,
                       |    ТабНовый.Сумма,
                       |    ТабНовый.Контрагент
                       |ПОМЕСТИТЬ ВТ
                       |ИЗ
                       |    &ТабНовый КАК ТабНовый
                       |;
                       |
                       |////////////////////////////////////////////////////////////////////////////////
                       |ВЫБРАТЬ
                       |    ТабНовый.Номенклатура,
                       |    ТабНовый.ISBN,
                       |    ТабНовый.НУслуга,
                       |    ТабНовый.Количество,
                       |    ТабНовый.Стоимость,
                       |    ТабНовый.Сумма,
                       |    ТабНовый.Контрагент КАК Контрагент
                       |ИЗ
                       |    ВТ КАК ТабНовый"  ;
       Запрос.УстановитьПараметр("ТабНовый",ТабНовый);    
       Выборка = Запрос.Выполнить().Выбрать();
9 Popkorm
 
01.11.11
17:29
так тоже не получается:
   ТабНовый = Новый ТаблицаЗначений;
   ТабНовый.Колонки.Добавить("Номенклатура",Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
   ТабНовый.Колонки.Добавить("ISBN",Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(15)));  
   ТабНовый.Колонки.Добавить("НУслуга",Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
   ТабНовый.Колонки.Добавить("Количество",Новый ОписаниеТипов("Число",, Новый КвалификаторыЧисла(15,0)));
   ТабНовый.Колонки.Добавить("Стоимость",Новый ОписаниеТипов("Число",, Новый КвалификаторыЧисла(15,0)));
   ТабНовый.Колонки.Добавить("Сумма",Новый ОписаниеТипов("Число",, Новый КвалификаторыЧисла(15,2)));
   ТабНовый.Колонки.Добавить("Контрагент",Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));
10 FIXXXL
 
01.11.11
17:33
(0) НайтиСтроки пробовал?
11 FIXXXL
 
01.11.11
17:35
+(10) т.е. копируешь свою таблицу, сворачиваешь по ИсполЕксель, а там цикл по поиску строк, где итератор (значение отбора) - ИсполЕксель из свернутой таблицы
12 izekia
 
01.11.11
17:38
а вот скажите, когда я таблицу пихаю в запрос и выполняю его относительно только этой таблицы, она ведь все равно сохраняется и выполняется на сиквеле?
13 Popkorm
 
01.11.11
17:41
(11)а примерик покажи,а то уже во Врменных плаваю
14 Popkorm
 
01.11.11
17:49
(12)Свернуть не получится,т.к. Номенклатура разные у Дубли(ИсполЕксель)
15 Popkorm
 
01.11.11
17:51
(12) ВременТабл помоему все на сиквеле висят
16 Snorkler
 
01.11.11
17:58
(0) Копируешь из ТаблЕксель колонку ИсполЕксель, сворачиваешь и в цикле по контрагенту ищешь нужные строки в ТаблЕксель…
17 Popkorm
 
01.11.11
18:11
(16)покажи примерик по Скопировать и Свернуть
18 Reset
 
01.11.11
18:13
(17)
(с) СП

Пример:
НовТаблицаЦен = ТаблицаЦен.Скопировать();

Пример:
ТаблицаЦен.Свернуть("Товар, Валюта", "Цена");

Не стыдно? Примерчик как к два прибавить три не надо?
19 Popkorm
 
01.11.11
18:22
(18)смысел Свернуть?!Если Товар разный,чего сварачивать?!
20 Reset
 
01.11.11
18:26
(19) Тебе виднее. Ты просил примеры, я тебе их скопировал. В твою задачу я не врубался (и не хочу)
21 FIXXXL
 
02.11.11
07:10
(19) если копию таблицы свернешь по одному полю, получишь в результате таблицу с одним полем
поэтому сначала копируй исходную таблицу
22 izekia
 
02.11.11
13:47
ну и зачем тащить таблицу на сервер и там ее обрабатывать, вместо того чтобы обработать локально?
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс