Имя: Пароль:
1C
1С v8
Загрузка из табличного документа, создание номенклатуры
, ,
0 enmelnik
 
14.08.15
17:52
Необходимо добавить в документ из файла строки, встречаются дубли номенклатуры с разной ценой. Как создать номенклатуру не используя ее поиск по артикулу+наименование в цикле, иначе получается дубль?
1 igork1966
 
14.08.15
17:54
(0) Использовать соответствие с кэшем или предварительную группировку не предлагать?  ;-))))
2 enmelnik
 
14.08.15
17:55
группировка не пойдет, цены разные могут быть на один и тот же товар
3 igork1966
 
14.08.15
17:56
(2) Мда...
4 enmelnik
 
14.08.15
18:09
(3) изложи подробнее
5 igork1966
 
14.08.15
18:11
(4) Для (0) подробнее невозможно.
(4) => (0)
6 igork1966
 
14.08.15
18:12
(5) + из (0) даже непонятно тебе код загрузки нужно написать или еще чего...
7 enmelnik
 
14.08.15
18:12
(5) более доступным языком можно?
8 igork1966
 
14.08.15
18:15
(7)  http://www.forum.mista.ru/rules.php
http://www.forum.mista.ru/rules.php
5.Не ставьте "общих" вопросов. Если Вы даже не знаете, как подступиться к задаче, все равно скажите, какие у Вас есть идеи.
9.Чем полнее вы опишите свою проблему, тем быстрее Вам смогут помочь. Следующие пункты помогут Вам сориентироваться, какая информация наиболее важна.
9 enmelnik
 
14.08.15
18:16
Номенклатура    Количество    Цена    Сумма
товар1    1    100    100
товар2    1    150    150
товар1    2    200    400
10 Defender aka LINN
 
14.08.15
18:16
(2) Ну так не группируй по цене, неужели так сложно межушным ганглием-то пошевелить?
11 enmelnik
 
14.08.15
18:23
я не пойму как правильнее сделать:
- сначала найти всю номенклатуру, ненайденную создать, потом добавлять строку в документ;

или

- при добавлении строки искать номенклатуру?
12 igork1966
 
14.08.15
18:28
Кэш = Новый Соответствие();

Внутри цикла по строкам

Ключ = ......

Найдено = Кэш.Получить(Ключ);
Если Найдено = Неопределено Тогда
   Найдено = НайтиСоздатьНоменклатуру(....);
КонецЕсли;
13 igork1966
 
14.08.15
18:28
(12) +
Кэш[Ключ] = Найдено;
14 enmelnik
 
14.08.15
19:17
(13) спасибо разобрался))
вот так получилось:

Для Каждого Строка Из Результат Цикл
            
            Ключ = Строка.Артикул + "___" + Строка.НаименованиеПолное;
            Найдено = Кэш.Получить(Ключ);
            
            Если Найдено = Неопределено Тогда
                Найдено = СоздатьЭлементНоменклатуры(Строка);
            КонецЕсли;
            
            Кэш[Ключ] = Найдено;
        КонецЦикла;