Как выбрать все виды документов

Тема в разделе "1C и всё что с ней связано", создана пользователем Ramzay, 25 мар 2009.

  1. Ramzay

    Ramzay Гость

    Мы используем конфигурацию "Зарплата и кадры" 7.7. В ней есть "Журналы документов", внутри которого есть журнал "Полный". Мне нужно выяснить все виды документов, которые мы использовали за все время.

    Пробую написать запрос:

    Код (Text):
    ДокИмя = ЖурналДокументов.Полный.Документ.Индентификатор;
    //ДокИмя = ЖурналыДокументов.Полный.Документ.Индентификатор; // Пробовал
    //               написать так (как определено в конфикураторе) - таже песня.
    Группировка ДокИмя;
    Ругается так: Неверно заданный путь 'ЖурналДокументов'
    Подскажите, как решить задачу.

    Ps. Подобным образом я обращался к журналу расчетов зарплата. В конфигураторе журнал расчетов определен как "Журналы расчетов". Однако, когда я писал запрос, и руководстве об этом написано, нужно писать "ЖурналРасчетов". В руководстве о том как обращаться к журналу документов я не нашел. Поэтому написал в запросе по аналогии "ЖурналДокументов", но похоже это не правильно. А как правильно?
     
  2. NomadSoul

    NomadSoul Гость

    Ramzay, если Вам надо выбрать все документы, то проанализируйте следующий код, он как раз это делает:

    Процедура Сформировать()
    Док = СоздатьОбъект("Документ");
    Док.ВыбратьДокументы();
    Пока Док.ПолучитьДокумент() = 1 Цикл
    Сообщить(Док.Вид()+" "+Док.НомерДок+" "+Док.ДатаДок);
    КонецЦикла;
    КонецПроцедуры
     
  3. Ramzay

    Ramzay Гость

    Спасибо. Несколько изменив код:

    Процедура ВыпКод()
    ДокСпис=СоздатьОбъект("СписокЗначений");
    Док = СоздатьОбъект("Документ");
    Док.ВыбратьДокументы();
    Пока Док.ПолучитьДокумент() = 1 Цикл
    Если ДокСпис.НайтиЗначение(Док.Вид())=0 тогда
    ДокСпис.ДобавитьЗначение(Док.Вид());
    Сообщить(Док.Вид());
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры

    Я получил то, что хотел.

    ПриказОПриеме
    Табель
    ВводЛюбогоРасчета
    ПлатежнаяВедомость
    ПриказПоОтпуску
    РасчетСредней
    РасчетЗаработнойПлаты
    НачалоМесяца
    ПриказОКадровомПеремещении
    Пересчет
    ПриказОбУвольнении
    РасчетНалогов

    Это работа разовая и я почти удовлетворен результатом. А можно ли эту задачу решить через запрос?
     
  4. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Можно и через запрос. Вот только - зачем? Черный запрос в 7.7 - зло!
     
  5. NomadSoul

    NomadSoul Гость

    KiR, не согласен. Иногда (особенно при SQL базе) правильно написанный запрос работает в разы быстрее чем цикл.
     
  6. Ramzay

    Ramzay Гость

    Когда мы работаем с циклом, мы работаем с кажлой записью в отдельности. Когда мы работаем с запросом, мы работаем с набором записей. Работать с набором записей лучше по нескольким причинам.

    Более наглядный, более понятный и более короткий код, Более высокая переносимость кода и т.д..

    Вообще весь мир идет по пути работы с набором записей. А работа через цикл это 60-е годы прошлого века.

    Вопрос в том, насколько позволяет работать с набором записей 1с?
     
  7. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    вот я ж и говорю - черный запрос, реалиованный в 1С7.7 (без ВК) - лучше использовать только в самом крайнем случае
     
  8. NomadSoul

    NomadSoul Гость

    В 7.7 надо понимать где лучше использовать цикл, а где запрос. При построении отчетов лучше использовать правильно составленные запросы.
     
  9. Ramzay

    Ramzay Гость

    KiR, я извиняюсь, а что такое ВК? И что такое "черный" запрос"?
     
  10. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    У цикла есть, по крайней мере, одно неоспоримое преимущество - в случае возможных ошибок, всегда легко выяснить, в чем проблема.
    Если же запрос работает не так - умрешь докапываться.
    А что касается скорости - при нынешнем уровне железа подобные сравнения делаются уже где-то чуть ли не на "наноуровне"
     
  11. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    ВК - внешний компонент. А черный запрос - это запрос, реализованный в 1С7.7 (Объект Запрос) к примеру в восьмерке я сам в основном тока запросами и пользуюсь, а в семерке зачастую все равно прицдется циклом обход результатов делать.
     
  12. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    ...зацикливаться!
    Есть задачи, которые без запроса вообще решить не реально. Пример нужен? :)
     
  13. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Можно подумать, что я такой консерватор, что запросами не пользуюсь !
    Но довольно часто употр*цензура*ю и циклы. При этом с годами научился все-таки, чтобы они не повисали. :rolleyes:
     
  14. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Запросы это сила. Сравнивал вывод в ТЗ 170 тысяч позиций номенклатуры ( в 7.7). Через циклы - около 30 мин, запрос языком 1с - 10 минут, прямым запросом - 15 секунд.
     
  15. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    ну может при таких объемах данных лучше действительно использовать запрос. хотя смотря что потом с этим объемом данных делать нада...
     
Загрузка...

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