Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
16 Июн 2021, 16:04
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
МультиВход
 
collapse

Автор Тема: Проблема с результатом запроса  (Прочитано 2035 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн О28

  • *
  • Регистрация: 2017-07-06
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Профессия: Программист 1С
Добрый вечер!
Запрос:
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ПриемНаРаботу.Ссылка КАК Ссылка,
ПриемНаРаботу.Организация.НаименованиеПолное КАК НазваниеОрганизации,
ПриемНаРаботу.Организация.КодПоОКПО КАК КодПоОКПО,
ПриемНаРаботу.Номер КАК НомерДок,
ПриемНаРаботу.Дата КАК ДатаДок,
ПриемНаРаботу.ДатаПриема,
ПриемНаРаботу.ДатаЗавершенияТрудовогоДоговора,
ПриемНаРаботу.Сотрудник КАК Работник,
ПриемНаРаботу.ФизическоеЛицо.Пол КАК Пол,
ПриемНаРаботу.Сотрудник.Код КАК ТабельныйНомер,
ПриемНаРаботу.Подразделение,
ПриемНаРаботу.Должность,
ПриемНаРаботу.РазрядКатегория,
ПриемНаРаботу.УсловияПриема,
ПриемНаРаботу.ВидЗанятости,
ПриемНаРаботу.ИныеУсловияДоговора,
ПриемНаРаботу.КоличествоСтавок,
ПриемНаРаботу.ДатаПриема КАК Период,
ПриемНаРаботу.ДлительностьИспытательногоСрока,
ПриемНаРаботу.ТрудовойДоговорДата,
ПриемНаРаботу.ТрудовойДоговорНомер,
ПриемНаРаботу.Руководитель,
ПриемНаРаботу.ДолжностьРуководителя,
ПриемНаРаботу.Ответственный,
ПриемНаРаботу.Показатели.(
МАКСИМУМ(ВЫБОР
КОГДА ПриемНаРаботу.Показатели.Показатель.ВидТарифнойСтавки В (ЗНАЧЕНИЕ(Перечисление.ВидыТарифныхСтавок.МесячнаяТарифнаяСтавка), ЗНАЧЕНИЕ(Перечисление.ВидыТарифныхСтавок.ЧасоваяТарифнаяСтавка), ЗНАЧЕНИЕ(Перечисление.ВидыТарифныхСтавок.ДневнаяТарифнаяСтавка))
ТОГДА ПриемНаРаботу.Показатели.Значение
ИНАЧЕ 0
КОНЕЦ) КАК Значение
) КАК Оклад
ИЗ
Документ.ПриемНаРаботу КАК ПриемНаРаботу
ГДЕ
ПриемНаРаботу.Проведен
И ПриемНаРаботу.Ссылка В (&МассивОбъектов)

УПОРЯДОЧИТЬ ПО
Ссылка
Вывожу результат в печатную форму. Всё кроме Оклада выводится. Оклад имеет значение "ТаблицаЗначений". Как получить оклад?
Если выполнять запрос с помощью консоли запросов, то там всё прекрасно, оклад имеет значение.


Оффлайн ilyay

  • 1С:Специалист, 1С:Эксперт
  • *****
  • Регистрация: 2011-06-09
  • Сообщений: 562
  • РЕПУТАЦИЯ: 104
  • КПД: 19%
  • Профессия: Разработчик 1С
Выборка = Запрос.Выполнить.Выбрать();
Пока Выборка.Следующий() Цикл
    ВыборкаНовая = Выборка.Оклад.Выбрать();
    Пока ВыборкаНовая.Следующий() Цикл
        ...

Оффлайн О28

  • *
  • Регистрация: 2017-07-06
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Профессия: Программист 1С
Выборка = Запрос.Выполнить.Выбрать();
Пока Выборка.Следующий() Цикл
    ВыборкаНовая = Выборка.Оклад.Выбрать();
    Пока ВыборкаНовая.Следующий() Цикл
        ...
Спасибо, но мне не помогло.
Я результат запроса выгружаю:
ОбщаяВыборка = Запрос.Выполнить().Выгрузить();
Для Каждого СсылкаНаОбъект из МассивОбъектов Цикл
    Отбор = Новый Структура;
    Отбор.Вставить("Ссылка", СсылкаНаОбъект);
    ВыборкаДок = ОбщаяВыборка.НайтиСтроки(Отбор);
    Для Каждого Выборка из ВыборкаДок Цикл
    ...
    ОбластьРаботник.Параметры.ОкладСотр = Выборка.Оклад;

Оффлайн Kironten

  • *****
  • Регистрация: 2013-08-12
  • Сообщений: 906
  • РЕПУТАЦИЯ: 187
  • КПД: 21%
  • Профессия: Ученик 1С
Тогда используйте метод таблицы значений скопировать(). В параметры передаете структуру отбора и на выходе получаете ТЗ с уже отобранными строками.

Оффлайн ilyay

  • 1С:Специалист, 1С:Эксперт
  • *****
  • Регистрация: 2011-06-09
  • Сообщений: 562
  • РЕПУТАЦИЯ: 104
  • КПД: 19%
  • Профессия: Разработчик 1С
Не проще ли было передать этот массив ссылок в отбор в запросе в секции ГДЕ? Выберется меньше данных и не нужных строк не будет. Если предполагается несколько строк с одинаковой ссылкой, можно упорядочить по ним и обходить с помощью Выборка.СледующийПоЗначениюПоля("Ссылка").

Оффлайн О28

  • *
  • Регистрация: 2017-07-06
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Профессия: Программист 1С
Не проще ли было передать этот массив ссылок в отбор в запросе в секции ГДЕ? Выберется меньше данных и не нужных строк не будет. Если предполагается несколько строк с одинаковой ссылкой, можно упорядочить по ним и обходить с помощью Выборка.СледующийПоЗначениюПоля("Ссылка").
Спасибо! У меня получилось с помощью временных таблиц:
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    МАКСИМУМ(ВЫБОР
            КОГДА ПриемНаРаботуПоказатели.Показатель.ВидТарифнойСтавки В (ЗНАЧЕНИЕ(Перечисление.ВидыТарифныхСтавок.МесячнаяТарифнаяСтавка), ЗНАЧЕНИЕ(Перечисление.ВидыТарифныхСтавок.ЧасоваяТарифнаяСтавка), ЗНАЧЕНИЕ(Перечисление.ВидыТарифныхСтавок.ДневнаяТарифнаяСтавка))
                ТОГДА ПриемНаРаботуПоказатели.Значение
            ИНАЧЕ 0
        КОНЕЦ) КАК Оклад
ПОМЕСТИТЬ ТарифнаяСтавка
ИЗ
    Документ.ПриемНаРаботу.Показатели КАК ПриемНаРаботуПоказатели
ГДЕ
    ПриемНаРаботуПоказатели.Ссылка.Проведен
    И ПриемНаРаботуПоказатели.Ссылка В(&МассивОбъектов)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ПриемНаРаботу.Ссылка КАК Ссылка,
    ПриемНаРаботу.Организация.НаименованиеПолное КАК НазваниеОрганизации,
    ПриемНаРаботу.Организация.КодПоОКПО КАК КодПоОКПО,
    ПриемНаРаботу.Номер КАК НомерДок,
    ПриемНаРаботу.Дата КАК ДатаДок,
    ПриемНаРаботу.ДатаПриема КАК ДатаПриема,
    ПриемНаРаботу.ДатаЗавершенияТрудовогоДоговора КАК ДатаЗавершенияТрудовогоДоговора,
    ПриемНаРаботу.Сотрудник КАК Работник,
    ПриемНаРаботу.ФизическоеЛицо.Пол КАК Пол,
    ПриемНаРаботу.Сотрудник.Код КАК ТабельныйНомер,
    ПриемНаРаботу.Подразделение КАК Подразделение,
    ПриемНаРаботу.Должность КАК Должность,
    ПриемНаРаботу.РазрядКатегория КАК РазрядКатегория,
    ПриемНаРаботу.УсловияПриема КАК УсловияПриема,
    ПриемНаРаботу.ВидЗанятости КАК ВидЗанятости,
    ПриемНаРаботу.ИныеУсловияДоговора КАК ИныеУсловияДоговора,
    ПриемНаРаботу.КоличествоСтавок КАК КоличествоСтавок,
    ЕСТЬNULL(ТарифнаяСтавка.Оклад, 0) КАК Оклад,
    ПриемНаРаботу.ДатаПриема КАК Период,
    ПриемНаРаботу.ДлительностьИспытательногоСрока КАК ДлительностьИспытательногоСрока,
    ПриемНаРаботу.ТрудовойДоговорДата КАК ТрудовойДоговорДата,
    ПриемНаРаботу.ТрудовойДоговорНомер КАК ТрудовойДоговорНомер,
    ПриемНаРаботу.Руководитель КАК Руководитель,
    ПриемНаРаботу.ДолжностьРуководителя КАК ДолжностьРуководителя,
    ПриемНаРаботу.Ответственный КАК Ответственный
ИЗ
    Документ.ПриемНаРаботу КАК ПриемНаРаботу,
    ТарифнаяСтавка КАК ТарифнаяСтавка
ГДЕ
    ПриемНаРаботу.Ссылка.Проведен
    И ПриемНаРаботу.Ссылка В(&МассивОбъектов)

УПОРЯДОЧИТЬ ПО
    Ссылка

Оффлайн ilyay

  • 1С:Специалист, 1С:Эксперт
  • *****
  • Регистрация: 2011-06-09
  • Сообщений: 562
  • РЕПУТАЦИЯ: 104
  • КПД: 19%
  • Профессия: Разработчик 1С
В последнем запросе забыли соединить таблицы!

Оффлайн О28

  • *
  • Регистрация: 2017-07-06
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Профессия: Программист 1С
В последнем запросе забыли соединить таблицы!
Поясните, пожалуйста, зачем соединять, если я из временной таблицы выбираю Оклад? Условия одинаковые.
Почему, у меня всё работает без объединения таблиц?

Оффлайн ilyay

  • 1С:Специалист, 1С:Эксперт
  • *****
  • Регистрация: 2011-06-09
  • Сообщений: 562
  • РЕПУТАЦИЯ: 104
  • КПД: 19%
  • Профессия: Разработчик 1С
Не объединение, а соединение. Если у вас есть хотя бы 2 ссылки, вы получите декартово произведение, т.е. документ прием на работу соединится с тарифной ставкой из другого документа. Со своей ставкой тоже соединится, конечно. Количество строк будет n*n. А должно быть n.

Оффлайн О28

  • *
  • Регистрация: 2017-07-06
  • Сообщений: 6
  • РЕПУТАЦИЯ: 0
  • Профессия: Программист 1С
Не объединение, а соединение. Если у вас есть хотя бы 2 ссылки, вы получите декартово произведение, т.е. документ прием на работу соединится с тарифной ставкой из другого документа. Со своей ставкой тоже соединится, конечно. Количество строк будет n*n. А должно быть n.
У меня нет возможности отладить из конфигуратора УФ, проверяю результат запроса в Консоли запросов, там всего одна строка результата. Поэтому не могу представить n*n.
В консоли нет вкладки Связи, где я могла бы показать порядок соединения. Думаю, это потому что первая таблица временная. Пробовала запросы без ВТ, тогда да, можно соединять.


Теги: ЗКГУ 3.1 
 

Проблема с отображением номера счет-фактуры

Автор BitardРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 14
Просмотров: 9558
Последний ответ 29 Мая 2015, 09:57
от Bitard
1С УНФ - Проблема отображения цен при подборе товаров с ценами в разных валютах

Автор ArkashaРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 1844
Последний ответ 24 Апр 2019, 10:24
от Palmer
Проблема с применением периодических регистров в отчетах СКД

Автор ktu78Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 955
Последний ответ 24 Сен 2015, 12:33
от ktu78
Проблема при выводе на печать внешнего отчета

Автор DelphiN91Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 11
Просмотров: 8367
Последний ответ 21 Авг 2014, 08:38
от DelphiN91
Проблема с отображением зп сотрудников работающих по ГПД

Автор leshyРаздел Пользователям "1С - Предприятие 8"

Ответов: 3
Просмотров: 536
Последний ответ 18 Окт 2019, 05:53
от Геннадий ОбьГЭС

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Последние вакансии

* Том 10 авторов за месяц

LexaK
68 Сообщений
Геннадий ОбьГЭС Геннадий ОбьГЭС
68 Сообщений
antoneus antoneus
33 Сообщений
Ивашка
27 Сообщений
neek666
26 Сообщений
KATERINA 861
19 Сообщений
Алексей_1985_06
15 Сообщений
SSC
15 Сообщений
alexandr_ll
14 Сообщений
BuhRust
8 Сообщений

* Кто онлайн

  • Точка Гостей: 579
  • Точка Скрытых: 0
  • Точка Пользователей: 7
  • Точка Сейчас на форуме:

* Облако тэгов

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

* Дополнительно

Поиск