Имя: Пароль:
1C
 
Как правильно ???
Ø (Волшебник 18.10.2004 23:19)
0 Sh_s
 
18.10.04
18:04
вопрос вот в чем
Дано: Номенклатура, список товара в накладной.
Задача: Однозначно определить каждый элемент из накладной в номенклатуре.
Дополнительно: В номенклатуре есть помеченные на удаление элементы.

Решалось:
ВыбраттьСтроки();   // из текста
Пока ПолучитьСтроку()>0 Цикл
  Ном.НайтиПоНаименованию("Текст",0,0):
  // вот тут то и косяк,
  // так как если встречается элемент с тем же наименованием,
  // но помеченный на удаление, то нас он не устраивает.
Как сделать?

Следует учесть что товара больее 100 единиц, следовательно через запрос не катит, или я гоню?
Помогите!
1 Антон ORIGINAL
 
18.10.04
18:05
Тема не отвечает содержимому сабжа и будет закрыта...
Если такое повторится ещё раз - обратитесь к... Волшебнику...
2 Мулька
 
18.10.04
18:06
Накладная совсем левая ? В смысле ссылок нет на справочник ?
3 Фольшепник
 
18.10.04
18:18
0. Ищи не по имени, а по уникальному коду, одно проверяй наличие пометки на удаление.
4 Фольшепник
 
18.10.04
18:20
+3. "одно проверяй" читай как "заодно проверяй"
2. Не понял мысли, как может не быть ссылок на справочник, если есть пометки на удаление?
5 Dirty boy
 
18.10.04
18:24
Док = СоздатьОбъект("Документ.Накладная");
Спр = СоздатьОбъект("Справочник.Номенклатура");
Док.ВыбратьСтроки()
Пока Док.ПолучитьСтроку = 1 Цикл
Если Спр.НайтиПоНаименованию(Док.Наименование,0,1) = 1 Тогда
Если Спр.ТекущийЭлемент().ПометкаНаУдаление = 1 Тогда
Продолжить;
6 Фольшепник
 
18.10.04
18:30
5. Раз так подробно расписал, дай-ка в эфир описание метода ПометкаНаУдаление :))
7 Sh_s
 
18.10.04
18:33
Спасибо (5) попробую (фишка в том что коды не участвуют по любому, а наименования могут быть одинаковые и не помечены на удаление вот такой косячный справочник).

Для (1) уточни по поводу не соответствия.
8 Archon
 
18.10.04
18:34
Вместо "НайтиПоНаименованию()" используй "НайтиЭлемент()".
9 Sh_s
 
18.10.04
18:38
Элемент не участвует, из текстовика берется его наименование.
10 bsg
 
18.10.04
18:39
(3) Чего чудить-то? Если Наименование - реквизит документа (номенклатура), то Док.Наименование и есть ссылка элемент (однозначная).
11 Фольшепник
 
18.10.04
18:43
9. Тогда однозначно определить не получится
12 miki
 
18.10.04
19:04
(0). Что-то не понятно. Судя по коду, ты обращаещься к методам напрямую, т. е.уже находишься в модуле формы/документа. Тогда должно прокатить "НайтиЭлемент()".
Если только загружаешь из текстовика, то можно создать в номенклатуре реквизит,
дублирующий Наименование с признаком сортировки. А потом как (5), но чуть иначе:
Спр = СоздатьОбъект("Справочник.Номенклатура");
Док.ВыбратьСтроки()
Пока Док.ПолучитьСтроку = 1 Цикл
  Если Спр.ВыбратьЭлементыПоРеквизиту(<ДубльНаим>,"Текст",<РежИер>,<РежГрупп>)=1  Тогда
     Пока Спр.ПолучитьЭлемент()=1 Цикл
        Если Спр.ПометкаУдаления() = 1 Тогда
           Продолжить;
        Иначе
           Док.Номенклатура=Спр.ТекущийЭлемент();
           Прервать;
        КонецЕсли;
     КонецЦикла;
  КонецЕсли;
...
КонецЦикла;
...
13 Sh_s
 
18.10.04
23:15
Спасибо всем!!! Заработало и (12) и (5). Удовлетворен обоими (вариантами).