• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

  • Автор темы Ramzay
  • Дата начала
R

Ramzay

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

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

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

Ругается так: Неверно заданный путь 'ЖурналДокументов'
Подскажите, как решить задачу.

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

NomadSoul

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

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

Ramzay

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

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

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

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

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

KiR

Можно и через запрос. Вот только - зачем? Черный запрос в 7.7 - зло!
 
N

NomadSoul

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

Ramzay

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

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

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

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

KiR

вот я ж и говорю - черный запрос, реалиованный в 1С7.7 (без ВК) - лучше использовать только в самом крайнем случае
 
N

NomadSoul

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

Ramzay

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

vbs

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

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

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

Вопрос в том, насколько позволяет работать с набором записей 1с?
У цикла есть, по крайней мере, одно неоспоримое преимущество - в случае возможных ошибок, всегда легко выяснить, в чем проблема.
Если же запрос работает не так - умрешь докапываться.
А что касается скорости - при нынешнем уровне железа подобные сравнения делаются уже где-то чуть ли не на "наноуровне"
 
K

KiR

ВК - внешний компонент. А черный запрос - это запрос, реализованный в 1С7.7 (Объект Запрос) к примеру в восьмерке я сам в основном тока запросами и пользуюсь, а в семерке зачастую все равно прицдется циклом обход результатов делать.
 
V

vitfil

У цикла есть, по крайней мере, одно неоспоримое преимущество
...зацикливаться!
Если же запрос работает не так - умрешь докапываться.
Есть задачи, которые без запроса вообще решить не реально. Пример нужен? :)
 
V

vbs

Есть задачи, которые без запроса вообще решить не реально. Пример нужен?
Можно подумать, что я такой консерватор, что запросами не пользуюсь !
Но довольно часто употр*цензура*ю и циклы. При этом с годами научился все-таки, чтобы они не повисали. :rolleyes:
 
P

puh14

Запросы это сила. Сравнивал вывод в ТЗ 170 тысяч позиций номенклатуры ( в 7.7). Через циклы - около 30 мин, запрос языком 1с - 10 минут, прямым запросом - 15 секунд.
 
K

KiR

Запросы это сила. Сравнивал вывод в ТЗ 170 тысяч позиций номенклатуры ( в 7.7). Через циклы - около 30 мин, запрос языком 1с - 10 минут, прямым запросом - 15 секунд.
ну может при таких объемах данных лучше действительно использовать запрос. хотя смотря что потом с этим объемом данных делать нада...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!