Простой Запрос

Форум 1С: Одинэс.Ру

Найти!

Простой Запрос

qwertypirogov
27.01.2009 - 09:24
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|ОбрабатыватьДокументы все;
|Оклад = Справочник.Сотрудники.Оклад;
|Наименование1 = Справочник.Сотрудники.Подразделение.Наименование;
|Наименование = Справочник.Сотрудники.Наименование;
|Д = Справочник.Сотрудники.Должность.Наименование;
|СостояниеФизлица = Справочник.Сотрудники.СостояниеФизлица;
|Группировка Наименование1;
|Группировка Наименование;
|Условие(СостояниеФизлица =Перечисление.СостояниеФизлица.СотрудникОсновной);
что надо, чтоб запрос и совместителей выбирал
К списку тем 1 > К списку форумов

Интересные темы

odines.ru
24.10.2020 - 12:32
Смотри также:
Не могу открыть по под терминалкой базу !!!
Бюджетка. Прислали файлы из казначейства. Через что их загружать?
Загрузить правила в Конвертацию 1.0!

Re: Простой Запрос

Arden
1 - 27.01.2009 - 10:09
каких совместителей?
одного реквизита СостояниеФизлица не достаточно для определения внутреннего совместителя.
.
ЗЫ
Если ТекущийЭлемент().ОсновнойЭлемент<>ТекущийЭлемент() Тогда
ОписаниеСостояния = "Внутреннее совместительство";
Если СостояниеФЗ=Перечисление.СостояниеФизлица.ВременноНеРаботает Тогда
ОписаниеСостояния = "Внутреннее совмест-во, временно не работает";
ИначеЕсли СостояниеФЗ=Перечисление.СостояниеФизлица.ВременноНеРаботаетВоеннослужащий Тогда
ОписаниеСостояния = "Внутреннее совмест-во, военнослужащий, временно не работает";
КонецЕсли;
ИначеЕсли СостояниеФЗ=Перечисление.СостояниеФизлица.СотрудникОсновной Тогда
ОписаниеСостояния = "Штатный сотрудник";
ИначеЕсли СостояниеФЗ=Перечисление.СостояниеФизлица.СотрудникНеосновной Тогда
ОписаниеСостояния = "Внешний совместитель";
ИначеЕсли СостояниеФЗ=Перечисление.СостояниеФизлица.Госслужащий Тогда
Если Константа.ЕстьМуниципальныеСлужащие = 1 Тогда
ОписаниеСостояния = "Муниципальный служащий";
Иначе
ОписаниеСостояния = "Государственный служащий";
КонецЕсли;
 
ИначеЕсли СостояниеФЗ=Перечисление.СостояниеФизлица.ВременноНеРаботает Тогда
ОписаниеСостояния = "Временно не работает";
ИначеЕсли СостояниеФЗ=Перечисление.СостояниеФизлица.ВременноНеРаботаетВоеннослужащий Тогда
ОписаниеСостояния = "Военнослужащий временно не работает";
Иначе
ОписаниеСостояния = "Военнослужащий";
КонецЕсли;

Re: Простой Запрос

qwertypirogov
2 - 27.01.2009 - 11:07
Сейчас запрос выбирает всех основных работников //|Условие(СостояниеФизлица =Перечисление.СостояниеФизлица.СотрудникОсновной)
Как зделать чтоб он выбирал и работников посовместительству и внут и внеш., т.е второе условие: Условие(СостояниеФизлица =Перечисление.СостояниеФизлица.СотрудникНеосновной)как их обьеденить

Re: Простой Запрос

qwertypirogov
3 - 27.01.2009 - 11:24
Ещё вопрос: Как сделать, чтоб в расчетной ведомости было две колонки 1-я -аванс, 2-я -ост.часть з/п.

Re: Простой Запрос

Arden
4 - 27.01.2009 - 11:28
Условие((СостояниеФизлица =Перечисление.СостояниеФизлица.СотрудникОсновной)ИЛИ
(СостояниеФизлица =Перечисление.СостояниеФизлица.СотрудникНеосновной))

Re: Простой Запрос

qwertypirogov
5 - 27.01.2009 - 11:34
ИЛИ пробовал только без двойных скобок. теперь все получилось.Спасибо.А с ведомостью, что подскажишь Arden

Интересные темы

odines.ru
24.10.2020 - 12:32
Смотри также:
ЗиК 286
ошибка во время работы с 1С
Как программно сделать подчинение одного документа другому

Re: Простой Запрос

Arden
6 - 27.01.2009 - 11:37
(3) попробуй посмотреть как это сделано для формы Ф-49 в документе ВыплатаЗарплаты, сложность еще в том что программа не отличает Авансовой выплаты от окончательной (отличить можно только по комментарию в документе).
отчет Расчетная ведомость, довольно сложен.

Re: Простой Запрос

qwertypirogov
7 - 27.01.2009 - 11:47
(6)Благодарю.

Re: Простой Запрос

qwertypirogov
8 - 30.01.2009 - 06:13
Пока Запрос.Группировка(2) = 1 Цикл  
окл=Запрос.Ставка*Запрос.Оклад ;
ПриказОПриеме = глПриказПоСотруднику(Запрос.Наименование,РабочаяДата(),"ПриказОПриемеНаРаботу");
Принят=ПриказОПриеме.ДатаПриема;
н=н+1;  
Как сделать, чтоб Перем Принят дату приема выводила.Спасибо.

Re: Простой Запрос

Arden
9 - 30.01.2009 - 06:26
куда выводила ?

Re: Простой Запрос

qwertypirogov
10 - 30.01.2009 - 06:42
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос  
н=0;
с=0;
о=0;
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|ОбрабатыватьДокументы все;  
 
|Ставка= Справочник.Сотрудники.Ставка;
|Оклад = Справочник.Сотрудники.Оклад;
|Наименование1 = Справочник.Сотрудники.Подразделение.Наименование;
|Наименование = Справочник.Сотрудники.Наименование;
|Д = Справочник.Сотрудники.Должность.Наименование;
|СостояниеФизлица = Справочник.Сотрудники.СостояниеФизлица;
|Группировка Наименование1;
|Группировка Наименование;
|Условие((СостояниеФизлица =Перечисление.СостояниеФизлица.СотрудникОсновной)ИЛИ(СостояниеФизлица =Перечисление.СостояниеФизлица.СотрудникНеосновной));
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
 
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
Таб.ВывестиСекцию("Заголовок");
Состояние("Заполнение выходной таблицы...");
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
Пока Запрос.Группировка(1) = 1 Цикл
// Заполнение полей Наименование1
Таб.ВывестиСекцию("Наименование1");
Пока Запрос.Группировка(2) = 1 Цикл  
окл=Запрос.Ставка*Запрос.Оклад ;
ПриказОПриеме = глПриказПоСотруднику(Запрос.Наименование,РабочаяДата(),"ПриказОПриемеНаРаботу");
Принят=ПриказОПриеме.ДатаПриема;
н=н+1;  
Если    Запрос.СостояниеФизлица =Перечисление.СостояниеФизлица.СотрудникОсновной Тогда
        
в="+";
о=о+1;
Иначе
в="-";
с=с+1;
КонецЕсли;      
 
// Заполнение полей Наименование
Таб.ВывестиСекцию("Наименование");
КонецЦикла;
КонецЦикла;
Таб.ВывестиСекцию("Всего");
// Вывод заполненной формы
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать", "");
Предупреждение("Есть!!"+РазделительСтрок+"товарищ");

Re: Простой Запрос

Arden
11 - 30.01.2009 - 06:48
заполнить секцию таблицы не получается чтоли ?
http://www.firststeps.ru/1c/1cbuh1.html - Шаг 7

Re: Простой Запрос

qwertypirogov
12 - 30.01.2009 - 07:23
Выдает: СостояниеСотрудника.ИспользоватьОбъект("СостояниеФизлица",Сотрудник);
{Глобальный модуль(1847)}: СостояниеФизлица не является константой или периодическим параметром!

Re: Простой Запрос

Arden
13 - 30.01.2009 - 08:12
ааа, вот у тебя что.
1С не идентифицирует сотрудников по строковому реквизиту ФИО
ты не правильно группируешь сотрудников в запросе (вернее не по тому реквизиту).
ты группируешь по ФИО, а если у тебя на предприятии будет 2 полных однофамильца ? редко но такое встречается, тогда у тебя 1 сотрудник выпадет из результатов запроса.
в запрос надо вставить строку
|Объект = Справочник.Сотрудники.ТекущийЭлемент;
.
вместо
|Группировка Наименование;
написать
|Группировка Объект;
тогда
ПриказОПриеме = глПриказПоСотруднику(Запрос.Объект,РабочаяДата(),"ПриказОПриемеНаРаботу");
.
кстати
|Группировка Наименование1;
теоретически тоже не правильно, но в конкретной ситуации будет работать.

Re: Простой Запрос

qwertypirogov
14 - 30.01.2009 - 08:25
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
н=0;
с=0;
о=0;
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|ОбрабатыватьДокументы все;  
    |Объект = Справочник.Сотрудники.ТекущийЭлемент;
|Ставка= Справочник.Сотрудники.Ставка;
|Оклад = Справочник.Сотрудники.Оклад;
|Наименование1 = Справочник.Сотрудники.Подразделение.Наименование;
|Д = Справочник.Сотрудники.Должность.Наименование;
|СостояниеФизлица = Справочник.Сотрудники.СостояниеФизлица;
|Группировка Наименование1;
|Группировка Объект;
|Условие((СостояниеФизлица =Перечисление.СостояниеФизлица.СотрудникОсновной)ИЛИ(СостояниеФизлица =Перечисление.СостояниеФизлица.СотрудникНеосновной));
|"//}}ЗАПРОС
;
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
Таб.ВывестиСекцию("Заголовок");
Состояние("Заполнение выходной таблицы...");
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
Пока Запрос.Группировка(1) = 1 Цикл
Таб.ВывестиСекцию("Наименование1");
Пока Запрос.Группировка(2) = 1 Цикл  
окл=Запрос.Ставка*Запрос.Оклад ;
ПриказОПриеме = глПриказПоСотруднику(Запрос.Объект,РабочаяДата(),"ПриказОПриемеНаРаботу");
Принят=ПриказОПриеме.ДатаПриема;
н=н+1;  
Если    Запрос.СостояниеФизлица =Перечисление.СостояниеФизлица.СотрудникОсновной Тогда
в="+";
о=о+1;
Иначе
в="-";
с=с+1;
КонецЕсли;      
Таб.ВывестиСекцию("Наименование");
КонецЦикла;
КонецЦикла;
Таб.ВывестиСекцию("Всего");
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать", "");
Предупреждение("Есть!!"+РазделительСтрок+"товарищ");
КонецПроцедуры
Все равно Выдает: СостояниеСотрудника.ИспользоватьОбъект("СостояниеФизлица",Сотрудник);
{Глобальный модуль(1847)}: СостояниеФизлица не является константой или периодическим параметром!

Re: Простой Запрос

Arden
15 - 30.01.2009 - 08:38
блин, про группы забыл :(
у тебя там наверное сотрудники по папочкам разложены, а они в запрос попадают ?
а какое у папочки "Состояние физлица"
|Группировка Объект без групп;

Re: Простой Запрос

qwertypirogov
16 - 30.01.2009 - 09:01
Все получилось.Спасибо.

Re: Простой Запрос

Jimbo
17 - 02.04.2009 - 08:44
многабукф - устал читать (зачем столько кода??? 3 строчки подправили)
К списку тем 1 > К списку форумов
Тема закрыта и находится в архиве.
Но Вы можете начать новую тему.
« Можно ли быстро посчитать кол-во документов? Расшифровка - не пойму((( »
© 2009 Форум 1С: Одинэс.Ру