Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> не отрабатывае запрос в 7.7          
Циган Подменю пользователя
сообщение 14.10.13, 13:30
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

Здравствуйте уважемые. Работаю в предприятии 7.7 релиз (7.70.027).
Проблема следующего плана: создал обработку, которая должна проверять наличие выходного дня в регистре если за этот день для определенного работки есть "приказ на работу в выходной день".
Создал вот такую процедуру, но она отрабатывает только до запроса. Сам запрос не отрабатывает, в чем может быть проблема?
Процедура Проведение() 
    сообщить("1");
    ПР = СоздатьОбъект("Документ.ПриказРабота");
    Запрос2=СоздатьОбъект("Запрос");
    ТекстЗапроса="
    |Период с Дата1 по Дата2;
    |РегСотрудник           = Регистр.Время.Сотрудник;
    |РегВремяПоДням         = Регистр.Время.ВремяПоДням;
    |РегДатаДок                = Регистр.время.датадок;
    
    |Группировка РегДатаДок;
    |Группировка РегСотрудник Без Групп;
    |Группировка РегВремяПоДням;
        
    |";                                
    
    
    Если Запрос2.Выполнить(ТекстЗапроса)=0 тогда Предупреждение("Запит не виконано!"); Возврат; КонецЕсли;
    ПР.ВыбратьДокументы(Дата1,Дата2);
    Пока ПР.ПолучитьДокумент()=1 Цикл
        сообщить("2");
        ПР.ВыбратьСтроки();
        Пока ПР.ПолучитьСтроку()=1 Цикл
            сообщить("3 "+пр.сотрудник+" дата "+пр.датадок);
            Пока Запрос2.Группировка("РегДатаДок") = 1 цикл
                сообщить("4");
                Если ПР.датадок = Запрос2.РегдатаДок тогда
                    сообщить("5");
                    Пока Запрос2.Группировка("РегСотрудник")=1 Цикл
                        сообщить("6");
                        Если запрос2.регсотрудник = пр.сотрудник тогда
                            сообщить("7");
                            Пока Запрос2.Группировка("РегВремяПоДням")=1 Цикл
                                сообщить("8");
                                Если запрос2.регвремяподням = Перечисление.ВремяПоДням.Выходные тогда
                                    сообщить("Все документы перепроведены");
                                иначе      
                                    сообщить("Документ"+пр+"не має відповідності з шляховим листом. Перевірте проведення шляхового листа");
                                КонецЕсли;
                                
                            КонецЦикла;
                        иначе
                            продолжить;
                        КонецЕсли;
                    КонецЦикла;
                КонецЕсли;
            КонецЦикла;
        КонецЦикла;
    КонецЦикла;
Конецпроцедуры


Signature
Использую 1С 7.7 (7.70.027)

pablo Подменю пользователя
сообщение 14.10.13, 13:45
Сообщение #2

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0

Мне кажется, что в запрос нужно параметры передать.


Signature
Правильно поставленный вопрос содержит до 90% ответа.

Циган Подменю пользователя
сообщение 14.10.13, 13:57
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(pablo @ 14.10.13, 13:45) *
Мне кажется, что в запрос нужно параметры передать.

То есть параметри? можно с примером, а то я салабон еще в этом деле)))


Signature
Использую 1С 7.7 (7.70.027)

Домовик Подменю пользователя
сообщение 14.10.13, 13:57
Сообщение #4

Ветеран
Иконка группы
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0

Интересно вы как с предупреждением сделали. раз - и вылетели.

на да. параметры Дата1, Дата2 не указаны. (если на форме обработки не указаны)
вот эту строчку попробуйте закоментить и посмотреть.
  
  |Период с Дата1 по Дата2;


Сообщение отредактировал Домовик - 14.10.13, 13:58

Циган Подменю пользователя
сообщение 14.10.13, 13:57
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

"Сообщить" я вывел для того чтобы было видно на каком месте прекращается исполнение.


Signature
Использую 1С 7.7 (7.70.027)

Домовик Подменю пользователя
сообщение 14.10.13, 14:01
Сообщение #6

Ветеран
Иконка группы
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0

не. у вас предупреждение. и оно вас к "сообщить" не допустит, пока не закроете его форму.

    Если Запрос2.Выполнить(ТекстЗапроса)=0 тогда Предупреждение("Запит не виконано!"); Возврат; КонецЕсли;




Сообщение отредактировал Домовик - 14.10.13, 14:05

Циган Подменю пользователя
сообщение 14.10.13, 14:06
Сообщение #7

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Домовик @ 14.10.13, 13:57) *
Интересно вы как с предупреждением сделали. раз - и вылетели.

на да. параметры Дата1, Дата2 не указаны. (если на форме обработки не указаны)
вот эту строчку попробуйте закоментить и посмотреть.
  
  |Период с Дата1 по Дата2;


На форме диалога указаны Дата1 и Дата2.
Но все же закоментировал. Это ничего не дало, отрабатывается только до 3 сообщения.


Signature
Использую 1С 7.7 (7.70.027)

pablo Подменю пользователя
сообщение 14.10.13, 14:09
Сообщение #8

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0

Значит у вас нет подходящих заполненных документов в базе.


Signature
Правильно поставленный вопрос содержит до 90% ответа.

Домовик Подменю пользователя
сообщение 14.10.13, 14:16
Сообщение #9

Ветеран
Иконка группы
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0

с троечкой у вас сообщение выводится?


а сразу запрос сделать, чтобы не циклы в циклах? лучше так(по сотруднику таблицы связать)..


но пока посмотрите, какое сообщение при выполнении кода - последнее.

Сообщение отредактировал Домовик - 14.10.13, 14:20

Циган Подменю пользователя
сообщение 14.10.13, 14:19
Сообщение #10

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(pablo @ 14.10.13, 14:09) *
Значит у вас нет подходящих заполненных документов в базе.

Документы есть, ведь выполнение програмы выдает мне сообщение №3
сообщить("3 "+пр.сотрудник+" дата "+пр.датадок);

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

Цитата(Домовик @ 14.10.13, 14:16) *
а сразу запрос сделать, чтобы не циклы в циклах? лучше так..

А как мне тогда проверять каждый день в заданном периоде? Тоесть приказы на некий день, и в этот день нужно проверить регистр.


Signature
Использую 1С 7.7 (7.70.027)

sava1 Подменю пользователя
сообщение 14.10.13, 15:25
Сообщение #11

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2697
Из: Проскуров
Спасибо сказали: 682 раз
Рейтинг: 661

Результат запроса не пустой? Кажется мне, что там нужна функция...

Спасибо сказали: Домовик,

Циган Подменю пользователя
сообщение 14.10.13, 15:49
Сообщение #12

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(sava1 @ 14.10.13, 15:25) *
Результат запроса не пустой? Кажется мне, что там нужна функция...

Ну мне не нужны какие нибудь значения. Мне нужно проверить тот факт, если есть документ "приказ" (пр), то в регистре "время" за этот день в этого сотрудника в одном из столбцов "ВремяПоДням" было значение "выходной", если же документ, есть а "выходного" нет, выдавать сообщение.


Signature
Использую 1С 7.7 (7.70.027)

Домовик Подменю пользователя
сообщение 14.10.13, 17:02
Сообщение #13

Ветеран
Иконка группы
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0

стоп. а что в вашем регистре Время есть измрениями, а что ресурсами?




Домовик Подменю пользователя
сообщение 14.10.13, 19:45
Сообщение #14

Ветеран
Иконка группы
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0

попробуйте еще добавить функцию, как вам и подсказывали
        |Функция  Результат     =1 Когда (РегВремяПоДням=ПараметрВремяПоДням);



где ПараметрВремяПоДням значение нужного типа ВремяПоДням.="Выходной".


второй вариант ... убрать группировку по регВремяПоДням

а еще лучше - и функцию поставить, и группировку убрать.. проигрывайте у себя.


по хорошему, нужно все сделать одним запросом, связав таблицы документа и регистра

Сообщение отредактировал Домовик - 14.10.13, 19:55

Спасибо сказали: Циган,

mister-x Подменю пользователя
сообщение 14.10.13, 20:45
Сообщение #15

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

Цитата(sava1 @ 14.10.13, 15:25) *
Кажется мне, что там нужна функция...

не здається, а точно - в документації по програмуванню щодо запитів по регістрах вказано, що повинна бути обов'язково функція, інакше вибірка буде пустою
Вибирай собі любу: НачОст, КонОст, Приход, Расход.

Сообщение отредактировал mister-x - 14.10.13, 20:47

Спасибо сказали: Циган,

Домовик Подменю пользователя
сообщение 14.10.13, 21:10
Сообщение #16

Ветеран
Иконка группы
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0

а ще автор навів на ідею, що в і 7.7 можна в принципі організувать "регістр відомостей", використовуючи, наприклад оборотний регістр, та й регістр залишків теж..

Vofka Подменю пользователя
сообщение 14.10.13, 21:26
Сообщение #17

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13956
Из: Киев
Спасибо сказали: 4523 раз
Рейтинг: 3646.4

Цитата(Домовик @ 14.10.13, 22:10) *
а ще автор навів на ідею, що в і 7.7 можна в принципі організувать "регістр відомостей", використовуючи, наприклад оборотний регістр, та й регістр залишків теж..

Я думаю, не проблема создать тот же регистр сведений хоть с помощью справочника. Тут главные вопросы:
- эффективность работы такого "регистра сведений" (что на справочнике, что на регистре в 7.7) на уровне структуры базы данных; в т.ч. со временем использования и наполнения ИБ какими-то данными;
- удобство при работе с таким объектом со стороны программиста;
А то можно регистры вообще не использовать, делать все на документах. И да, оно таки даже будет работать. Но стоит учесть те 2 вопроса, которые я выше озвучил. smile.gif

Спасибо сказали: Домовик,

sava1 Подменю пользователя
сообщение 15.10.13, 6:57
Сообщение #18

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2697
Из: Проскуров
Спасибо сказали: 682 раз
Рейтинг: 661

По поводу РС на 77 идея была "обсосана" лет 10 назад: вместо ресурсов использовать реквизиты (для ускорения пересчета)

Спасибо сказали: Домовик,

Циган Подменю пользователя
сообщение 15.10.13, 7:42
Сообщение #19

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

Всем спасибо. и таки правда нужна была функция. Запрос с выборкой из регистра, обязательно должен быть с функцией) Еще на одну долю стал умнее))))
Спасибо всем за помощь. icon_beer17.gif


Signature
Использую 1С 7.7 (7.70.027)

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 04.06.24, 6:46
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!