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


1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Загрузка ТЧ документа из Excel

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

    |Обрабатывать НеПомеченныеНаУдаление;
    |Без итогов;
    |ТекущийЭлемент = Справочник.Номенклатура.ТекущийЭлемент;
    |Артикул        = Справочник.Номенклатура.Артикул;
    |Родитель       = Справочник.Номенклатура.Родитель;
    |Группировка ТекущийЭлемент;
    |Условие(ТекущийЭлемент.ЭтоГруппа()=1);
    |Условие(Родитель <> ГруппаИсключения);
    |"//}}ЗАПРОС

    ;

Что-то типа этого ?
   skafandr
 
10 - 02.09.18 - 12:38
(9)
 |Условие(ТекущийЭлемент.ЭтоГруппа()=1);
лишнее, будет только группы выводить.
Лучше условие на Артикул добавь :)
 
 Рекламное место пустует
   zenon46
 
11 - 02.09.18 - 12:41
(10) да точно, это я набросок сделал.
   zenon46
 
12 - 02.09.18 - 12:42
ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)

    |Обрабатывать НеПомеченныеНаУдаление;
    |Без итогов;
    |ТекущийЭлемент = Справочник.Номенклатура.ТекущийЭлемент;
    |Артикул        = Справочник.Номенклатура.Артикул;
    |Родитель       = Справочник.Номенклатура.Родитель;
    |Группировка ТекущийЭлемент;
    |Условие(Артикул = ТаблицаЗначенийИзФайла.Артикул);
    |Условие(Родитель <> ГруппаИсключения);
    |"//}}ЗАПРОС

    ;
    // Если ошибка в запросе, то выход из процедуры

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует