Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Перебор характеристики номенклатуры

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

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

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

При добавлении прибавлять структура[серия] точек и делать инкремент
   Tumakota
 
5 - 20.01.13 - 19:53
(5) А кроме сткрутуры как нить еще делать?
   DirecTwiX
 
6 - 20.01.13 - 19:58
А чем структура не устраивает? Быстрее навряд ли придумаешь.
Пока ЗначениеЗаполнено(НайтиПоНаименованию(Стр1)) Цикл
Стр1=Стр1+".";
КонецЦикла
   Tumakota
 
7 - 20.01.13 - 20:44
(6) Не могу сделать через структуру, а если попробовать при загрузки из екселя если одинаковая серия то добавлять точку, только вот пока не могу понять как это сделать
   Tumakota
 
8 - 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;
    КонецЦикла;

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

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует