Имя: Пароль:
1C
 
Загрузка из excel в ТП
,
0 maptbln
 
26.12.18
03:40
С наступающим,есть вопрос
Как можно избежать поиска по наименованию, если необходимо загрузить в колонку табличного поля
,которая имеет тип СправочникСсылка  значение этого справочника,учитывая то,что в входных данных имеем наименование лишь наименование.

Предварительно создать запрос ,содержащий все возможные значения и искать в нем по колонке наименования или есть более оптимальный способ?
1 shadow_sw
 
26.12.18
04:31
артикул, код УС, еще какие то синтетические значения?
2 seevkik
 
26.12.18
04:36
Вопрос походу в том чтобы отказаться от "Справочники.Справочник.НайтиПоНаименовани()"
3 shadow_sw
 
26.12.18
04:56
(2) тогда Подобно  %товар% в помощь, в запросе
4 seevkik
 
26.12.18
05:06
(3) а если наименования в массив, а в запросе условие "ГДЕ номенклатура.наименование В (&МассивНаименований)", после этого как сказал ТС сравнивать наименования, то будет ли быстрее чем "Справочники.Справочник.НайтиПоНаименовани()" если строк будет, скажем, 700?
5 shadow_sw
 
26.12.18
05:10
(4) подобно тоже самое выдаст, не?
6 seevkik
 
26.12.18
05:15
(5) я про массив наименований, например стул, стол, хлеб в массиве
7 shadow_sw
 
26.12.18
05:18
(6) а недопонял, в целом да
8 shadow_sw
 
26.12.18
05:18
ТС один черт спит :)
9 maptbln
 
26.12.18
10:11
да,найти по наимнованию ведь вредно для кода
да и если есть несколько одинаковых наименований , он ведь берёт буквально первый попавшийся,может и помеченный на удаление подтянуть
(4)
насчёт быстрее не знаю,но наверное ошибок будет меньше

(8) всё в порядке,пробудился)
10 bolder
 
26.12.18
10:17
(9)  При одинаковых наименованиях - бредовая идея автоматизировать подобное.Поиск по наименованию вполне годная штука- процессор работает быстро)
11 maptbln
 
26.12.18
18:31
Что темы не плодить , спрошу здесь , это конечно дикость,но как установить отбор по группе справочника , папка имеет код 001

пишу

ГруппаСтатей = Справочники.СтатьиДвиженияДенежныхСредств.НайтиПоКоду("001");    
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ГруппаСтатей",ГруппаСтатей);
    Запрос.Текст = "ВЫБРАТЬ
                   |    СтатьиДвиженияДенежныхСредств.Ссылка КАК Ссылка,
                   |    СтатьиДвиженияДенежныхСредств.Наименование КАК Наименование
                   |ИЗ
                   |    Справочник.СтатьиДвиженияДенежныхСредств КАК СтатьиДвиженияДенежныхСредств
                   |ГДЕ
                   |    СтатьиДвиженияДенежныхСредств.Ссылка В ИЕРАРХИИ(&ГруппаСтатей)
                   |    И СтатьиДвиженияДенежныхСредств.ЭтоГруппа = ЛОЖЬ
                   |;
                   |
                   |////////////////////////////////////////////////////////////////////////////////
                   |ВЫБРАТЬ
                   |    ИС_Проекты.Ссылка КАК Ссылка,
                   |    ИС_Проекты.Наименование КАК Наименование
                   |ИЗ
                   |    Справочник.ИС_Проекты КАК ИС_Проекты";

не отрабатывает
12 Fram
 
26.12.18
18:40
Читаешь результат каждого запроса или только последнего?
13 maptbln
 
26.12.18
18:41
ВыполнитьПакет()
14 maptbln
 
26.12.18
18:58
ошибка настолько очевидна ,никто не хочет говорить?
15 Fram
 
26.12.18
20:09
(13) отладчиком конечно же уже убедился что ГруппаСтатей находится по коду корректно?
16 maptbln
 
27.12.18
09:04
корректно
17 hhhh
 
27.12.18
09:09
(16) информации недостаточно. Давай скрины. И как обрабатываешь результат запроса тоже.
18 maptbln
 
27.12.18
09:25
МассивРезультатов = Запрос.ВыполнитьПакет();
        
    СтатьиДвижения = МассивРезультатов[0].Выбрать();
может тут проблема,
СтатьиДвижения не заполняется

https://ibb.co/qBtDfDX
https://ibb.co/M2Xr0k2
19 Скиурус
 
27.12.18
09:38
(0) "НайтиПоНаимеванию" не то чтобы вредно по коду. Просто каждый раз когда ты его вызываешь, происходит обращение к серверу БД и поиск. Сам поиск неизбежен, но факт обращения несет "накладные расходы" на вызов. Можно представить, что поиск одного значения по наименованию занимает условно 1 секунду, а обращение к серверу дополнительно еще 2 секунды. Т.е. если ты 700 раз выполнишь "найтиПоНаименованию", то это займет 700 * (1 + 2) = 2100 секунд, а если найдешь все за один раз, то это займет 700 * 1 + 2 = 702 секунды. (Цифры для примера)
Для того чтобы реализовать второй вариант, нужно загнать в ТаблицуЗначений все наименования и прочие данные, Поместить эту ТЗ во временную таблицу с помощью запроса, и следующим запросом Связить это временную таблицу со справочником и получить ссылки.
Нужно понимать, критична ли эта разница. Если дело происходит в проведении документа - очень критична. А если в ночной загрузке, которая автоматом стартует по расписанию, то в общем по фигу и можно не заморачиваться.
20 zuza
 
27.12.18
09:38
(18) а где Следующий()?
21 maptbln
 
27.12.18
09:45
(19) спасибо за математику
какая-то замысловатая схема ,учитывая то , что можно получить все что нужно за раз 1 запросом ,правда у меня чёт пробуксовки
22 Скиурус
 
27.12.18
09:58
(21) Если у тебя в источнике ничего кроме наименования нет, то да, временные таблицы не нужны. а если в источнике Наименование, плюс пара цифер, то лучше их скопом загнать в ТЗ, чтобы потом не искать, какая ссылка из полученных к какому наименованию относится.
23 maptbln
 
27.12.18
10:11
(22) Вот теперь понял ,спасибо большое за науку