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

Хранилище

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

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



> Выборка значений реквизитов из документов в 1С:Предприятии 8.2          
mabuta009 Подменю пользователя
сообщение 27.10.11, 2:27
Сообщение #1

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

Добрый день!

У меня возникла такая проблема:

Нужно выбрать из документа НачислениеОтпускаРаботникамОрганизаций значение реквизита ДниОтпуска и вывести их в табличный документс группировкой по сотрудникам организации.

При использовании Схемы компоновки данных у меня вышел такой вот запрос, который работает:

ВЫБРАТЬ
    НачислениеОтпускаРаботникамОрганизаций.Начисления.(
        Сотрудник,
        СУММА(ОплаченоДнейЧасов)
    )
ИЗ
    Документ.НачислениеОтпускаРаботникамОрганизаций КАК НачислениеОтпускаРаботникамОрганизаций
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
        ПО НачислениеОтпускаРаботникамОрганизаций.Сотрудник = СотрудникиОрганизаций.Ссылка

СГРУППИРОВАТЬ ПО
    НачислениеОтпускаРаботникамОрганизаций.Начисления.(Сотрудник)


И его внешняя форма
[ночью лучше спать, чем читать какие-то глупые правила...]

Но мне не устаивает использование Схемы компоновки данных, то есть мне надо иметь возможность еще работать с полученными из запроса параметрами.
Поэтому отчет я делаю программно, но в этом варианте ничего не выводиться на екран:

Запрос.Текст = "ВЫБРАТЬ 
                  |    НачислениеОтпускаРаботникамОрганизаций.Начисления.(Сотрудник, СУММА(ОплаченоДнейЧасов)) КАК РезервОтпуска
                  |    НачислениеОтпускаРаботникамОрганизаций.Начисления.(Сотрудник) КАК Сотрудники
                  |ИЗ
    |Документ.НачислениеОтпускаРаботникамОрганизаций КАК НачислениеОтпускаРаботникамОрганизаций
    |ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
    |    ПО НачислениеОтпускаРаботникамОрганизаций.Сотрудник = СотрудникиОрганизаций.Ссылка
    |
    |СГРУППИРОВАТЬ ПО
    |НачислениеОтпускаРаботникамОрганизаций.Начисления.(Сотрудник)";
Результат = Запрос.Выполнить().Выбрать();
    
    Пока Результат.Следующий() Цикл
                    ОбработкаПрерыванияПользователя();
                    СтрОснова = Макет.ПолучитьОбласть("Основа");
                    //СтрОснова.Параметры.Сотрудники = Результат.Сотрудники;
                    СтрОснова.Параметры.РезервОтпуска = Результат.РезервОтпуска;
                    ТабДокумент.Вывести(СтрОснова);


Помогите плиз
Или бросьте ссылку где можно посмотреть на примеры построения сложных запросов из документов.
Заранее благодарен.

MATEVI Подменю пользователя
сообщение 27.10.11, 8:21
Сообщение #2

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2203
Из: Одесса
Спасибо сказали: 968 раз
Рейтинг: 796.3

ТабДок = ЭлементыФормы.ДокументРезультат;
ТабДок.Очистить();
Макет = ЭтотОбъект.ПолучитьМакет("Макет");
//............
ОбластьМакета = Макет.ПолучитьОбласть("СтрокаСчет");
ОбластьМакета.Параметры.Заполнить(ВыборкаПоСчету);
ТабДок.Вывести(ОбластьМакета);

mabuta009 Подменю пользователя
сообщение 27.10.11, 9:10
Сообщение #3

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

так тоже не работает, я так пробовал, поэтому перешел и на указывание конкретных параметров

logist Подменю пользователя
сообщение 27.10.11, 9:46
Сообщение #4

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0

А у Вас там в Результате выборки вообще что-то есть?


Signature
Личные бесплатные консультации не даю, для этого есть форум!

mabuta009 Подменю пользователя
сообщение 28.10.11, 17:41
Сообщение #5

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

Спасибо за помощь
Разобрался
Вот как должно быть
Запрос.Текст = "ВЫБРАТЬ 
    |    НачислениеОтпускаРаботникамОрганизаций.Сотрудник КАК Сотрудник,
    |    СУММА(НачислениеОтпускаРаботникамОрганизаций.ОплаченоДнейЧасов) КАК РезервОтпуска
        |ИЗ
    |    Документ.НачислениеОтпускаРаботникамОрганизаций.Начисления КАК НачислениеОтпускаРаботникамОрганизаций
    |ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
    |    ПО НачислениеОтпускаРаботникамОрганизаций.Сотрудник = СотрудникиОрганизаций.Ссылка
    |
    |СГРУППИРОВАТЬ ПО
    |НачислениеОтпускаРаботникамОрганизаций.Сотрудник
    |УПОРЯДОЧИТЬ ПО
    |Сотрудник";


И еще вопросик

Как можно сделать выборку сразу из двух документов одновременно, то есть

ИЗ Документа1 и Документа2

(То есть как это представить синтаксически)

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

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0

        |ИЗ
    |    Документ.НачислениеОтпускаРаботникамОрганизаций.Начисления КАК НачислениеОтпускаРаботникамОрганизаций,
    |    Документ.БлаБлабла КАК Блаблабла


Signature
Личные бесплатные консультации не даю, для этого есть форум!

mabuta009 Подменю пользователя
сообщение 28.10.11, 22:12
Сообщение #7

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

если так, то он портит первую выборку, то есть превращает с нормальной выборки черт знает что, так что так не работает я уже пробовал

logist Подменю пользователя
сообщение 28.10.11, 22:27
Сообщение #8

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0

faceoff.gif
все нормально работает, если правильно описать поля выборки


Signature
Личные бесплатные консультации не даю, для этого есть форум!

kivals Подменю пользователя
сообщение 29.10.11, 12:58
Сообщение #9

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 105
Из: Киев
Спасибо сказали: 27 раз
Рейтинг: 0

Точнее если описать связи между выборками
"Какой вопрос - такой ответ"
Logist написал вариант выбора из двух независимых таблиц - в итоге получем декартово произвеение 2х таблиц:

A:
a1 a2
1  11
2  22

B:
b1 b2
1  33
2  44

select * from A,B:
a1 a2 b1 b2
1  11 1  33
2  22 1  33
1  11 2  44
2  22 2  44


Т.е. для каждой строки из A выбираются все строки из B и в итоговой таблице общее количество строк будет: КвоАВ=КвоА*КвоВ

Чтобы получить выборку, связанную по определенным полям нужно использовать СОЕДИНЕНИЕ, например ЛЕВОЕ СОЕДИНЕНИЕ (LEFT JOIN):
select * from A left join B on A.a1=B.b1:
a1 a2 b1 b2
1  11 1  33
2  22 2  44


Сообщение отредактировал kivals - 29.10.11, 12:58

mabuta009 Подменю пользователя
сообщение 02.11.11, 3:27
Сообщение #10

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

Добрый день еще раз.

У меня есть маленький вопросик, возможно ли вывести эти два запроса (выборки) (по отдельности все работает):

Первый запрос(выборка) (основная):

    Запрос.Текст = "ВЫБРАТЬ 
    |    НачислениеОтпускаРаботникамОрганизаций.Сотрудник КАК Сотрудник,
    |    СУММА(НачислениеОтпускаРаботникамОрганизаций.ОплаченоДнейЧасов) КАК РезервОтпуска,
    |   СотрудникиОрганизаций.Резерв2010 КАК Резерв2010
    |ИЗ
    |    Документ.НачислениеОтпускаРаботникамОрганизаций.Начисления КАК НачислениеОтпускаРаботникамОрганизаций    
    |    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
    |    ПО НачислениеОтпускаРаботникамОрганизаций.Сотрудник = СотрудникиОрганизаций.Ссылка
    |     ГДЕ
    |    НачислениеОтпускаРаботникамОрганизаций.Ссылка.Дата Между &ДатаНач и &ДатаКон    
    |
    |СГРУППИРОВАТЬ ПО
    |НачислениеОтпускаРаботникамОрганизаций.Сотрудник,
    |СотрудникиОрганизаций.Резерв2010
    |УПОРЯДОЧИТЬ ПО
    |НачислениеОтпускаРаботникамОрганизаций.Сотрудник ВОЗР
    |АВТОУПОРЯДОЧИВАНИЕ";


И вторая выборка:

    ТекстЗапроса_Сотрудник = "ВЫБРАТЬ 
    |    Начисления.Сотрудник КАК СотрудникиНач,
    |       СУММА(Начисления.Результат) КАК РезультатСреднего
        |    
    |ИЗ
    |     РегистрРасчета.Начисления КАК Начисления
    |
    |СГРУППИРОВАТЬ ПО
    |Начисления.Сотрудник";


Или выполнить их одновременно через левое соединение?

Пытался в конструкторе, но ничего не вышло.

Заранее спасибо за помощь.

То есть не могу понять как синхронизировать эти два запроса по Сотрудникам, так как таблица одна и список сотрудников тянеться с первой выборки.

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

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

Запрос.Текст = "ВЫБРАТЬ 
    |    НачислениеОтпускаРаботникамОрганизаций.Сотрудник КАК Сотрудник,
    |    СУММА(НачислениеОтпускаРаботникамОрганизаций.ОплаченоДнейЧасов) КАК РезервОтпуска,
    |   СотрудникиОрганизаций.Резерв2010 КАК Резерв2010
    |ИЗ
    |    Документ.НачислениеОтпускаРаботникамОрганизаций.Начисления КАК НачислениеОтпускаРаботникамОрганизаций    
    |    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
    |    ПО НачислениеОтпускаРаботникамОрганизаций.Сотрудник = СотрудникиОрганизаций.Ссылка

         ЛевоеСоединение (ВЫБРАТЬ
    |    Начисления.Сотрудник КАК СотрудникиНач,
    |       СУММА(Начисления.Результат) КАК РезультатСреднего
    |    
       |ИЗ  
    |     РегистрРасчета.Начисления КАК Начисления
    |
    |СГРУППИРОВАТЬ ПО
    |Начисления.Сотрудник) как ААА
|   ПО  ААА.СотрудникиНач = СотрудникиОрганизаций.Ссылка


ОтформатируйТЕ самИ. Да и Сотрудника в выборке брать из справочника (коль привязали)
Причина редактирования: На ВЫ. И используйте теги. В следущий раз удалю!

kivals Подменю пользователя
сообщение 02.11.11, 10:38
Сообщение #12

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 105
Из: Киев
Спасибо сказали: 27 раз
Рейтинг: 0

Предупреждение:
Если в документе НачислениеОтпускаРаботникамОрганизаций будет больше чем 1 строка по какому-либо Сотруднику (например - по разным периодам) результат запроса будет отличаться от ожидаемого - РезультатСреднего будет одинаков по все строкам с одним сотрудником

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

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

Всем спасибо за помощь.

Я все таки поборол этот запрос, вот он кому интересно:

Запрос = Новый Запрос();
Запрос.Текст = "ВЫБРАТЬ
|    НачислениеОтпускаРаботникамОрганизаций.Сотрудник КАК Сотрудник,
|    СУММА(НачислениеОтпускаРаботникамОрганизаций.ОплаченоДнейЧасов) КАК РезервОтпуска,
|    СотрудникиОрганизаций.Резерв2010 КАК Резерв2010
|ПОМЕСТИТЬ ОсновнаяВыборка
|ИЗ
|    Документ.НачислениеОтпускаРаботникамОрганизаций.Начисления КАК НачислениеОтпускаРаботникамОрганизаций
|    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
|    ПО НачислениеОтпускаРаботникамОрганизаций.Сотрудник = СотрудникиОрганизаций.Ссылка
|ГДЕ
|    НачислениеОтпускаРаботникамОрганизаций.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаКон
|
|СГРУППИРОВАТЬ ПО
|    НачислениеОтпускаРаботникамОрганизаций.Сотрудник,
|    СотрудникиОрганизаций.Резерв2010
|;
|
|////////////////////////////////////////////////////////////////////////////////

|ВЫБРАТЬ
|    Начисления.Сотрудник КАК СотрудникиНач,
|    СУММА(Начисления.Результат) КАК РезультатСреднего
|ПОМЕСТИТЬ НачисленияРезультат
|ИЗ
|    РегистрРасчета.Начисления КАК Начисления
|ГДЕ
|    Начисления.ПериодРегистрации МЕЖДУ ДОБАВИТЬКДАТЕ(&ДатаКон, МЕСЯЦ, -12) И &ДатаКон
|
|СГРУППИРОВАТЬ ПО
|    Начисления.Сотрудник
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    ОсновнаяВыборка.Сотрудник КАК Сотрудник,
|    ОсновнаяВыборка.РезервОтпуска - ОсновнаяВыборка.Резерв2010 КАК РезервРазница,
|    ЕСТЬNULL(НачисленияРезультат.РезультатСреднего, 0) КАК РезультатСреднего
|ИЗ
|    ОсновнаяВыборка КАК ОсновнаяВыборка
|        ЛЕВОЕ СОЕДИНЕНИЕ НачисленияРезультат КАК НачисленияРезультат
|        ПО ОсновнаяВыборка.Сотрудник = НачисленияРезультат.СотрудникиНач
|
|УПОРЯДОЧИТЬ ПО
|    Сотрудник
|АВТОУПОРЯДОЧИВАНИЕ";

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


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

 

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