[РЕШЕНО] Глюк? метода найтиПоНомеру и платформы

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

  1. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    Суть задачи в переносе документов. Для обработки ситуации когда в исходной базе что-то поменяли в документе и переносят повторно - используется метод НайтиПоНомеру.
    Первый "косяк": При переносе у меня номер документа 4-хзначный, при создании документа платформа автоматически добавляет завершающие пробелы. И потом при поиске она не находит ни номер без пробелов, ни с пробелами. Хотя при записи документа ругается, что "документ с таким номером существует"....
    Второй косяк.: Указываю Дату в качестве второго параметра метода (ну на всякий случай), и в отладчике вижу, что найдДок - у меня пустая ссылка, а если по точке останова вычислю тоже самое выражение - то получаю нужный мне док. (тут см вложение)

    Вложения:

  2. TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    А какой релиз платформы?
    А то похожая ветка на ИС есть. Там по номеру то же не находит документ.

    Я вчера то же обработку писал. Код из одной процедуры в другую скопировал перестала работать процедура. Пишет что "учётная политика не установлена" хотя она установлена....
  3. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    8,3,6,2100
    На ИС не видела, а так по сети основной совет - запрос вам в руки. Но у меня там цикл по нескольким тысячам документов - не хочется запрос.
  4. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.580
    Симпатии:
    717
    Баллы:
    204
    Так запросом сразу выбрать эти тысячи документов.....
  5. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    А потом искать номер в результате запроса? Перебором?
    А ларчик как всегда через спинку открывался -Banghead- Во-первых необязательный параметр Дата оказался обязательным + передавать надо именно дату, а не функцию получения даты.
    Т.е. вот так
    Код:
    ДатаДок = Дата(элМс.ДатаДок);
            найдДок = док.НайтиПоНомеру(Номер,ДатаДок);
    все работает. Спасибо всем за внимание
  6. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.580
    Симпатии:
    717
    Баллы:
    204
    Это будет всяко быстрее, чем каждый документ искать по номеру в БД, ибо метод НайтиПоНомеру("номер", Дата) платформой преобразуется в запрос вида:

    Код:
    Выбрать
    Ссылка
    ИЗ
    Документ.<Документ>
    ГДЕ
    Дата Между НачалоПериода(&Дата, ПериодНумерации) И КонецПериода(&Дата, ПериодНумерации)
    И Номер = &Номер
    
    Ссылку по номеру в результате запроса можно и методами ТЗ/Выборка найти, если уж без этого никак.
  7. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    Ссылку по номеру в результате запроса можно и методами ТЗ/Выборка найти, если уж без этого никак.[/QUOTE] вот я это имею ввиду. Платформа выполняет один запрос, а мне надо будет сначала выполнить более объектный запрос, а потом накладывать еще и отбор на ТЗ - не, не айс
  8. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.580
    Симпатии:
    717
    Баллы:
    204
    Так отбор по ТЗ работает заметно быстрее "прямой" выборки из БД, т.к. ТЗ находится на клиенте в памяти.

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