Имя: Пароль:
1C
1C 7.7
v7: Загрузка ТЧ документа из Excel
0 zenon46
 
02.09.18
08:54
Доброго дня!
Сделал заполнение ТЧ документа из Excel файла поставщика, поиск элементов справочника ведется по полю "Артикул", все бы ничего, но всплыл один нюанс, есть в справочнике Номенклатура, Группа, содержащая элементы с таки-ми же артикулами как и в общей папке (типа папка была сделана давно с ней работает удаленный магазин, что бы не лезли в основную папку), ест-но при НайтиПоРеквизиту частенько вываливается номенклатура из этой папки, а нужно из общей, есть ли более быстрый способ, решить эту проблему, нежели делать перебор элементов справочника с сравнением с родителем ?
1 bolder
 
02.09.18
09:00
(0) Запрос с фильтром.
2 Мимохожий Однако
 
02.09.18
09:01
При поиске добавь отбор по Группе
3 Cthulhu
 
02.09.18
09:56
ВыбратьЭлементыПоРеквизиту(<?>,,,)
SelectItemsByAttribute(<?>,,,)
Синтаксис:
ВыбратьЭлементыПоРеквизиту(<ИмяРеквизита>,<Значение>,<РежимИерархии>,<РежимГрупп>)
Назначение:
Открыть выборку элементов справочника по значению реквизита.
Возвращает: 1 - если действие выполнено и в выборке есть хотя бы один элемент;
0 - если действие не выполнено или в выборке нет ни одного элемента.
Параметры:
<ИмяРеквизита> - строка с именем реквизита, по которому выполняется выборка;
<Значение> - значение реквизита для выборки;
<РежимИерархии> - как выбирать:
1 - выбирать элементы с учетом иерархии,
0 - выбирать элементы без учета иерархии (необязателен, по умолчанию - 1);
<РежимГрупп> - что выбирать:
1 - выбирать среди групп справочника,
0 - выбирать только среди элементов справочника.
Замечание:
Метод можно использовать только для реквизитов с установленным признаком ''Сортировка''.
Метод  можно использовать только для объектов, созданных функцией СоздатьОбъект.
4 zenon46
 
02.09.18
10:00
(3) это я видел, только я не понял чем мне это поможет, если нужно искать везде КРОМЕ одной группы.
5 Cool_Profi
 
02.09.18
10:11
Хочешь, напишу тебе запрос для поиска элемента по артикулу без групп?
Потрогай кошелёк, хватит денег?
6 bolder
 
02.09.18
10:58
(5) +100500.Я уже давно ему это советую (1).
7 Chameleon1980
 
02.09.18
12:02
+ только прямой или устанешь ждать
8 Злопчинский
 
02.09.18
12:08
Спр.Аналоги подчиненный Спр.Номенклатура ест в ТиС штатно. В Аналоги пихай привязку по артикулу поставщика. И похрен что где в каких группах лежит
9 zenon46
 
02.09.18
12:21
(1)
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Обрабатывать НеПомеченныеНаУдаление;
    |Без итогов;
    |ТекущийЭлемент = Справочник.Номенклатура.ТекущийЭлемент;
    |Артикул        = Справочник.Номенклатура.Артикул;
    |Родитель       = Справочник.Номенклатура.Родитель;
    |Группировка ТекущийЭлемент;
    |Условие(ТекущийЭлемент.ЭтоГруппа()=1);
    |Условие(Родитель <> ГруппаИсключения);
    |"//}}ЗАПРОС
    ;

Что-то типа этого ?
10 skafandr
 
02.09.18
12:38
(9)
|Условие(ТекущийЭлемент.ЭтоГруппа()=1);
лишнее, будет только группы выводить.
Лучше условие на Артикул добавь :)
11 zenon46
 
02.09.18
12:41
(10) да точно, это я набросок сделал.
12 zenon46
 
02.09.18
12:42
ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Обрабатывать НеПомеченныеНаУдаление;
    |Без итогов;
    |ТекущийЭлемент = Справочник.Номенклатура.ТекущийЭлемент;
    |Артикул        = Справочник.Номенклатура.Артикул;
    |Родитель       = Справочник.Номенклатура.Родитель;
    |Группировка ТекущийЭлемент;
    |Условие(Артикул = ТаблицаЗначенийИзФайла.Артикул);
    |Условие(Родитель <> ГруппаИсключения);
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;
13 skafandr
 
02.09.18
12:51
(12) только может быть так
|Группировка ТекущийЭлемент без Групп ;
14 zenon46
 
02.09.18
13:36
(13) странно, но не работает, на выходе пусто каждый раз.
15 Kigo_Kigo
 
02.09.18
16:11
я бы просто артикул перекодировал бы в ненужной группе и все, к примеру было 2343, стало 2343_
16 Lazy Stranger
 
02.09.18
16:32
(14) условия со сравнением строк иногда глючат из-за пробелов в конце, попробуй
Условие(СокрП(Артикул) = СокрП(ТаблицаЗначенийИзФайла.Артикул));
17 zenon46
 
02.09.18
18:53
(15) не это не вариант, там есть обработки по поиску по этому артикулу, каталог з/ч.
18 Харлампий Дымба
 
02.09.18
22:13
Перед загрузкой запихни все товары из нужных групп и у которых есть артикулы в ТЗ или СписокЗначений и ищи там.
19 zenon46
 
03.09.18
09:21
(16) да именно так и получилось.
С запросом получилось не очень быстро + если номенклатура лежит еще в подпапке из не нужно группы, то условие уже не работает и она снова валится в выборку.
20 zenon46
 
03.09.18
10:08
Короче, сделал как в (18) посоветовали, работает кстати быстрей чем по каждому искомому запрос отрабатывал. Сваливаем все в ТЗ за исключением той Группы (и подгрупп), которые не нужны, и ищем уже в самой ТЗ, при нахождении кидаем в ТЧ документа, не находим сообщаем об этом.
21 skafandr
 
03.09.18
10:27
(20) Если программист - то должен сразу описывать все условия, про подпапки до (19) не было ничего сказано
22 zenon46
 
03.09.18
10:32
(21) я блин сам их только сегодня увидел на живой базе
23 Злопчинский
 
03.09.18
10:41
(22) ну да, приехал на охоту в африку с мелкашкой - блин, а слона-то не возмет, слона-то только сегодня увидел...
24 zenon46
 
03.09.18
10:48
(23) так бывает, не всегда есть возможность сразу поработать с боевой базой.