8.х Как сделать отбор ПРОГРАММНО

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем wolf3d, 10 окт 2014.

  1. TopicStarter Overlay
    wolf3d
    Offline

    wolf3d Опытный в 1С

    Регистрация:
    5 мар 2011
    Сообщения:
    83
    Симпатии:
    0
    Баллы:
    26
    суть проблемы такова:
    есть файлик из более чем 3000 строк с товаром в формате csv
    есть моя самописная конфа.в которой уже есть товар
    связь файлика и моего справочника возможна через поле ШТРИХКОД
    в файлике у каждого товара есть или нет штрихкод, причем штрихкод если есть то только один
    в моем справочнике у каждого товара может быть от ноля до бесконечности штрихкодов
    перебором справочника в конфе долго - у меня порядка 100000 записей - 1 строчка в файлике порядка 10 минут обрабатывает - так что это не вариант.
    думал в сторону отбора - но никак не могу написать обработку...
    а да - сам вопрос - как быстро загрузить данные из файлика?
    хелп ми!

    зы. Если написал непонятно - спрашивайте - объясню - просто уже башка кипит :)
  2. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    Файл csv обрабатывается как обычный текстовый документ. Сначала об работайте файл и поместите все данные в таблицу значений. Дальше ее в запрос и сравнить уже со справочником.


    Отправлено из моего iPhone используя Tapatalk
  3. TopicStarter Overlay
    wolf3d
    Offline

    wolf3d Опытный в 1С

    Регистрация:
    5 мар 2011
    Сообщения:
    83
    Симпатии:
    0
    Баллы:
    26
    Может я чтото неправильно объяснил ? повторяю - у мня в справочнике порядка 100 000 записей и вариант который ты предложил - не катит - ибо долго, тем более - у меня делается еще прощще - читается строка из файла и погнал цикл в справочнике. а таблица значений сократит время исполнения буквально на пару минут. так что это не вариант. Единственный вариант - это отбор, но как его реализовать в отчете а не в форме справочника увы не знаю :(
  4. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    Во-первых, я к тебе на ты не обращался. Во-вторых, это ты не понял. Внимательнее прочитай, что я написал.
  5. TopicStarter Overlay
    wolf3d
    Offline

    wolf3d Опытный в 1С

    Регистрация:
    5 мар 2011
    Сообщения:
    83
    Симпатии:
    0
    Баллы:
    26
    извиняюсь - перечел и действительно - про запрос я не заметил - пасиба, буду пробовать

    а насчет обращения на "ты" - так было принято в fido, типа сеть друзей, все дела. А я являлся NC (Net Coordinator) вот и привык :). Так что сорри - обидеть не хотел
  6. LordMaverick
    Online

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.438
    Симпатии:
    373
    Баллы:
    104
    не совсем логичное решение, ибо ШК не уникален, обычно к коду товара привязываются в загрузке, или артикулу
    единственно где голимый ШК в обмене - ТСД, особенно на DOS подобных системах

    ну и как же тогда грузить товар у которого нет ШК?

    сие как и нафига? и самое главное, как они там в справочнике записаны ?

    что-то всё одно весьма долго, используемый код загрузки код в студию

    начало уже подсказали, юзать ТЗ
    ибо ТЗ при обработке файла можно придать любую структуру, чтоб не переиначивать потом

    PS
    заметь, выше ни одно обращения на ВЫ или ТЫ
    и что-то не припоминаю чтоб в фидошке было привязано обращение на ТЫ, это сугубо поведение человека
    2:5004/37.9
  7. TopicStarter Overlay
    wolf3d
    Offline

    wolf3d Опытный в 1С

    Регистрация:
    5 мар 2011
    Сообщения:
    83
    Симпатии:
    0
    Баллы:
    26
    сперва спрошу потом отвечу...
    запросы неписал уже года 4 поэтому может чавойта подзабыл - тем более помнится язык запросов в 1с был очень капризный. Написал я запрос но он не работает - ругается. вот текст ошибки:

    {Отчет.ЗагрузкаОстатков.Форма.Форма(61)}: Ошибка при вызове метода контекста (Выполнить): Поле не найдено "Товары.ШтрихКод"
    Выборка = Запрос.Выполнить().Выбрать();

    а вот текст запроса:

    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ШтрихКод",ф.штрихкод);

    запрос.текст="ВЫБРАТЬ *
    |ИЗ справочник.товары
    |ГДЕ Товары.ШтрихКод ПОДОБНО &Штрихкод";
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл

    КонецЦикла;


    Что я делаю не так? напишите пожалуйста полный текст запроса...

    теперь ответ:

    да - решение не совсем логичное, но единственное поле по которому я могу завязаться- это штрихкод, потому что их прога велась как попало - например номер (артикул) товара мог быть и в поле "кодтовара" и в поле "наименование" и в поле "артикль" - короче как кому из продавцов, или кто там вел бд, взбредет в голову.... А штрихкоды у них - уникальные - принадлежат белорусскому поставщику Шате-М. - а у них с этим строго - бухгалтерия отписывает на склад не наименования, а, как я в свое время понял, именно по штрихкодам. их загружал один мой товарисчь, тоже программер, так что я ему верю :).

    Как,как... загружу данные - сделаю 2 документа - один с найденными товарами - другой с НTнайденными. Второй документ распечатают - и проверят наличие. потом ВРУЧНУЮ занесут в мою конфу. согласись - внести 100-200 позиций прощще чем вносить 3000...
    да обычное текствое поле. реально ограничене на длину строки еть - символов 160 гдето - лень смотреть
    вот типичный представитель :):
    EPS=8012510237458,FAC=8012510037454,VER=013094
    три штрихкода разделенных запятой. формат прост - три символа производителя (сделал на будущее - вдруг пригодится) знак "=" и собственно сам штрихкод в конце запятая
    вот, собственно и все. производители - чтобы не возникало путаницы - в отдельном справочнике.

    начало точно подсказали - я про запросы
    а насчет ТЗ - я так и не понял в чем ее преимущество и чем мне это поможет. я сам использховал ТЗ чисто для удобства - мне это ничем не поможет...

    ну драсьте - это считалось правилами хорошего тона - некоторые даже обижались если обращался на "Вы" - просто ты (Вы) наверно мало общался в фидо... Привет от 2:4522/1, мой робот был 2:4522/1.2 - можетт помнишь - его многие знали - раздавал нетмейлом всякие программки.
  8. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    wolf3d
    1) покажите текущий ваш код (рабочий, у которого 1 строчка 10 минут выполняется)
    2) покажите структуру метаданных в вашей конфигурации (то, что связано со штрихкодами, где и как хранится)
  9. LordMaverick
    Online

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.438
    Симпатии:
    373
    Баллы:
    104
    боюсь что использование внутри цикла запроса(-ов) и ведёт к такому временному провалу при загрузке :D:D:D:D:D

    кстати, прошлый программер и загнал вас в эту "ловушку"

    есть таки вещи
    Код:
    //     НайтиПоКоду(,,,)
    //     НайтиПоНаименованию(,,,)
    //     НайтиПоРеквизиту(,,,)
    
    и используя их достаточно пройтись всего столько раз, сколько у вас строк по товару в файле
    а сейчас вы вынуждены обходить весь справочник столько раз, сколько строк в файле

    если сильно не переделывать, то можно сделать запрос к справочнику номенклатуры и результат выгрузить в ТЗ
    и в этой ТЗ уже искать по ТЗ составленной из вашего файла

    вот что точно уникальное обычно в справочниках 1С так это код по справочнику

    скорость работы

    PS
    нормально общались, и если с года 1995 это мало - то уж не знаю
    плюс легко выстроить фразу без подобных обращений

Поделиться этой страницей