Имя: Пароль:
1C
1С v8
Перебор характеристики номенклатуры
0 Tumakota
 
20.01.13
18:53
Всем доброго времени суток, возникла проблема с перебором характеристики номенклатуры. Есть пустая база Розница 2.0, создал обработку куда из Екселя загоняю все нужные мне данные, чтобы потом уже создавать документы справочники и все остальное из нее, так вот все хорошо складывается, кроме характеристик! Создается характеристика с определенным номером серии, но такой же номеров может быть еще штук 5-6, сказали что если есть такой же номер серии, то прибавить точку или запятую, ну так вот как мне этос делать

  Хар = Справочники.ХарактеристикиНоменклатуры.Выбрать(НайтиПоРеквизиту("ор_СерияПроизводителя", СтрокаТаб.Серия);
         
          Если Хар.ор_СерияПроизводителя = СтрокаТаб.Серия тогда
           Хар = Справочники.ХарактеристикиНоменклатуры.СоздатьЭлемент();
           Хар.Владелец = СтрокаТовара.Номенклатура.Ссылка;
           Хар.ор_СрокГодности = Дата(СтрокаТаб.Срок);
           Хар.ор_СерияПроизводителя = СтрокаТаб.Серия+".";
           Хар.ор_Производитель = СтрокаТаб.Производитель;
           СтрокаНаименованиеСерий=ор_ОтраслевоеРешениеКлиентСервер.СформироватьНаименованиеСерии(Хар.ор_СерияПроизводителя, Хар.ор_СрокГодности)+ "," + Хар.ор_Производитель ;
           Хар.Наименование = СтрокаНаименованиеСерий;
           Хар.Записать();
           СтрокаТовара.Характеристика = Хар.Ссылка;
           
          Иначе
             
          Характеристика = Справочники.ХарактеристикиНоменклатуры.СоздатьЭлемент();
          Характеристика.Владелец = СтрокаТовара.Номенклатура.Ссылка;
          Характеристика.ор_СрокГодности = Дата(СтрокаТаб.Срок);
          Характеристика.ор_СерияПроизводителя = СтрокаТаб.Серия;
          Характеристика.ор_Производитель = СтрокаТаб.Производитель;
          СтрокаНаименованиеСерии=ор_ОтраслевоеРешениеКлиентСервер.СформироватьНаименованиеСерии(Характеристика.ор_СерияПроизводителя, Характеристика.ор_СрокГодности)+ "," + Характеристика.ор_Производитель ;
          Характеристика.Наименование = СтрокаНаименованиеСерии;
          Характеристика.Записать();
          СтрокаТовара.Характеристика = Характеристика.Ссылка;
          КонецЕсли;

я делаю так, но это предполагаю что не правильно так как он только один раз прибавляет точку, ну т.е первая без точки а остальные с одной точкой а надо, чтобы 2 была с одной точкой, 3 с 2 и так далее. Заранее благодарен
1 Tumakota
 
20.01.13
19:13
Что ни кто не может помочь?
2 vicof
 
20.01.13
19:17
Прибавлять все время по точке, после всех прибавлений в получившейся строке удалить последний символ
3 Tumakota
 
20.01.13
19:26
(2) Маленько не понял, у меня загружена таблица там есть 3 серии к примеру  по 1. Я создаю перкую серию он создает 1 все нормально, создаю вторую он создает с точкой, тоже нормально, но дальше он опять создает с одной точкой, т.к он смотрит по таблице значений и оттуда берет, а как мне вычислить теперь с точкой, и к ней прибавить еще 1 точку и такдалее
4 DirecTwiX
 
20.01.13
19:30
Можно создать структуру:
[серия]->сколько уже добавили серий

При добавлении прибавлять структура[серия] точек и делать инкремент
5 Tumakota
 
20.01.13
19:53
(5) А кроме сткрутуры как нить еще делать?
6 DirecTwiX
 
20.01.13
19:58
А чем структура не устраивает? Быстрее навряд ли придумаешь.

Пока ЗначениеЗаполнено(НайтиПоНаименованию(Стр1)) Цикл
Стр1=Стр1+".";
КонецЦикла
7 Tumakota
 
20.01.13
20:44
(6) Не могу сделать через структуру, а если попробовать при загрузки из екселя если одинаковая серия то добавлять точку, только вот пока не могу понять как это сделать
8 Tumakota
 
20.01.13
20:47
Пока СокрЛП(Конец) <> "" Цикл
       стрТЗ = Объект.ТЗ.Добавить();
         стрТЗ.НоменклатураД            = Лист.Cells(СчСтроки,3).Value;
       стрТЗ.ПроизводительД            = Лист.Cells(СчСтроки,4).Value;
       стрТЗ.Серия                    = Строка(Лист.Cells(СчСтроки,5).Value);
       стрТЗ.Срок                        = Лист.Cells(СчСтроки,16).Value;
       стрТЗ.Ставка                    = Лист.Cells(СчСтроки,11).Value;
       стрТЗ.Сумма                        = Лист.Cells(СчСтроки,10).Value;
       стрТЗ.СуммаНДС                    = Лист.Cells(СчСтроки,12).Value;
       стрТЗ.СуммаРозн                = Лист.Cells(СчСтроки,15).Value;
       стрТЗ.ЦенаПри                    = Лист.Cells(СчСтроки,9).Value;
       стрТЗ.ЦенаПро                    = Лист.Cells(СчСтроки,8).Value;
       стрТЗ.ЦенаРозн                    = Лист.Cells(СчСтроки,14).Value;
       стрТЗ.Ед                        = Лист.Cells(СчСтроки,6).Value;
       стрТЗ.Количество                = Лист.Cells(СчСтроки,7).Value;
       стрТЗ.ИтогоНДС                    = Лист.Cells(СчСтроки,13).Value;
       стрТЗ.Штрихкод                    = Лист.Cells(СчСтроки,17).Value;
       стрТЗ.ЖВС                        = Лист.Cells(СчСтроки,18).Value;
       СтрТЗ.Булево                    = истина;
       
       Состояние(Строка(счСтроки));
       счСтроки = счСтроки + 1;
       Конец =  Лист.Cells(счСтроки,17).Value;
   КонецЦикла;

Вот код загрузки из Екселя, если прям тут сделать проверку на одинаковые значения в сериях то добавлять, только вот пока не могу понять как
9 DirecTwiX
 
20.01.13
20:51
>Не могу сделать через структуру

В чём проблема?
10 Tumakota
 
20.01.13
20:53
(9) Да в принципе в том что не работал со структурой, если подскажешь как попробую и буду очень благодарен
11 DirecTwiX
 
21.01.13
00:32
Структура = Новый Структура;
...
Стр="Серия";
Если Не Структура.Найти(Стр) Тогда
 Структура.Вставить(Стр);
 Структура[Стр]=0;
Иначе
 Для Сч=0 По Структура[Стр]
   Стр=Стр+".";
 Структура[Стр]+=1;
КонецЕсли;

Суть, я думаю, ясна =)