helpf.pro
Регистрация

В параметрах запроса пишу ЭтотОбъект.Пользователи.Ссылка

bless18
13.04.2010 10:31Прочитано: 6824
Имеется запрос:
Код 1C v 8.х
 Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| РаспределениеЗадачиРаспределениеЗадачиСотрудникам.Ссылка.Дата,
| РаспределениеЗадачиРаспределениеЗадачиСотрудникам.Ссылка.Исполнитель,
| РаспределениеЗадачиРаспределениеЗадачиСотрудникам.НаименованиеЗадачи,
| РаспределениеЗадачиРаспределениеЗадачиСотрудникам.ДатаВыполнения,
| РаспределениеЗадачиРаспределениеЗадачиСотрудникам.Приоритет
|ИЗ
| Справочник.Пользователи КАК Пользователи
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.РаспределениеЗадачи.РаспределениеЗадачиСотрудникам КАК РаспределениеЗадачиРаспределениеЗадачиСотрудникам
| ПО Пользователи.Сотрудник = РаспределениеЗадачиРаспределениеЗадачиСотрудникам.Ссылка.Исполнитель
|ГДЕ
| Пользователи.Ссылка = &Ссылка";

Запрос.УстановитьПараметр("Ссылка", ЭтотОбъект.Пользователи.Получить("Ссылка"));


При выполнении выдается ошибка Поле объекта не обнаружено (Ссылка)
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
13.04.2010 10:59Ответ № 1
Этотобъект - это что?
и что такое Пользователи? ТабПоле ?
bless18
13.04.2010 11:07Ответ № 2
Простите, код немного другой
Код 1C v 8.х
 Процедура ПриОткрытии()
СтрокаТЧ = ЭлементыФормы.Пользователи.ТекущиеДанные;

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

ВыборкаСтрок = Запрос.Выполнить().Выгрузить();


И ошибка: Поле объекта не обнаружено (Ссылка)
Запрос.УстановитьПараметр("Ссылка", ЭтотОбъект.Пользователи.Ссылка);
bless18
13.04.2010 11:08Ответ № 3
Пользователи - это табличная часть обработки
bless18
13.04.2010 11:09Ответ № 4
Пользователи - это так же справочник, в котром хранятся имя пользователя и сотрудника
bless18
13.04.2010 11:13Ответ № 5
При дебаге
Код 1C v 8.х
 ЭтотОбъект.Пользователи   
дает тип
Код 1C v 8.х
 ОбработкаТабличнаяЧасть.РаботаПользователей.Пользователи   
E_Migachev
13.04.2010 11:17Ответ № 6
Тогда тебе нужно писать в запросе условие Пользователи.Ссылка В( &СписокПользоват) и далее выгружать из табличного поляполя список пользоватлей
Код 1C v 8.х
 Запрос.УстановитьПараметр("СписокПользоват", Пользователи.ВыгрузитьКолонку("Ссылка"));   
bless18
13.04.2010 11:21Ответ № 7
Попробовала, выдает ошибку:
Ошибка при вызове метода контекста (ВыгрузитьКолонку): Недопустимое значение параметра (параметр номер '1') (Колонка не принадлежит коллекции)
Запрос.УстановитьПараметр("СписокПользоват", Пользователи.ВыгрузитьКолонку("Ссылка"));
bless18
13.04.2010 12:17Ответ № 8
Пользователи у меня ТЗ, в которой есть колонки:
ДатаВыполнения
Исполнитель
Пользователь

А как параметр мне нужно передать пользователя системы
Пишу:
Код 1C v 8.х
 Запрос.УстановитьПараметр("Ссылка", Пользователи.ВыгрузитьКолонку("Пользователь"));   

Система сообщает, что Ошибка при вызове метода контекста (Выполнить): {(12, 22)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
Пользователи.Ссылка <<?>>= &Ссылка
ВыборкаСтрок = Запрос.Выполнить().Выгрузить();
E_Migachev
13.04.2010 13:05Ответ № 9
Правильно что ругается, так как нужно писать: Пользователи.Ссылка В (&Ссылка)
bless18
13.04.2010 18:48Ответ № 10
Спасибо, заработало ))
Но в цикл заходить не хочет (( Хотя обхожу его по результатам запроса
Код 1C v 8.х
 Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| РаспределениеЗадачиРаспределениеЗадачиСотрудникам.Ссылка.Дата,
| РаспределениеЗадачиРаспределениеЗадачиСотрудникам.Ссылка.Исполнитель,
| РаспределениеЗадачиРаспределениеЗадачиСотрудникам.НаименованиеЗадачи,
| РаспределениеЗадачиРаспределениеЗадачиСотрудникам.ДатаВыполнения,
| РаспределениеЗадачиРаспределениеЗадачиСотрудникам.Приоритет
|ИЗ
| Справочник.Пользователи КАК Пользователи
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.РаспределениеЗадачи.РаспределениеЗадачиСотрудникам КАК РаспределениеЗадачиРаспределениеЗадачиСотрудникам
| ПО Пользователи.Сотрудник = РаспределениеЗадачиРаспределениеЗадачиСотрудникам.Ссылка.Исполнитель
|ГДЕ
| Пользователи.Ссылка В (&Ссылка)";

Запрос.УстановитьПараметр("Ссылка", Пользователи.ВыгрузитьКолонку("Пользователь"));
ВыборкаСтрок = Запрос.Выполнить().Выгрузить();

Для Каждого ТекСтрокаПользователи Из ВыборкаСтрок Цикл

//НоваяСтрока = Пользователи.Добавить();
ВыборкаСтрок.Пользователь = ТекСтрокаПользователи.Пользователь;
ВыборкаСтрок.Приоритет = ТекСтрокаПользователи.Приоритет;
ВыборкаСтрок.ДатаНачалаВыполнения = ТекСтрокаПользователи.ДатаНачалаВыполнения;
ВыборкаСтрок.ДатаВыполненияПоПлану = ТекСтрокаПользователи.ДатаВыполненияПоПлану;
ВыборкаСтрок.Исполнитель = ТекСтрокаПользователи.ИсполнительЗадачи;
//Выборка.ПроцентЗавершенности = ТекСтрокаПользователи.ПроцентЗавершенности;

КонецЦикла;

E_Migachev
13.04.2010 19:19Ответ № 11
А чему равно Запрос.Выполнить().Выгрузить().Количество();
bless18
14.04.2010 08:18Ответ № 12
Запрос.Выполнить().Выгрузить().Количество()
Значение = 0
E_Migachev
14.04.2010 08:45Ответ № 13
Значить либо нет данных к выборке, либо неправильно составлен запрос *09
bless18
14.04.2010 09:01Ответ № 14
Если пишу
РезультатЗапроса = Запрос.Выполнить().Колонки.Количество(), то результат = 7
E_Migachev
14.04.2010 09:11Ответ № 15
Правильно, Таблице результата у тебя 7 колонок, но строк 0. т.е. не данных соответствующих заданной выборке *11
Может так получится, попробуй *13:
Код 1C v 8.х
 Запрос.Текст = "ВЫБРАТЬ
| РаспределениеЗадачиРаспределениеЗадачиСотрудникам.Дата,
| РаспределениеЗадачиРаспределениеЗадачиСотрудникам.Исполнитель,
| РаспределениеЗадачиРаспределениеЗадачиСотрудникам.НаименованиеЗадачи,
| РаспределениеЗадачиРаспределениеЗадачиСотрудникам.ДатаВыполнения,
| РаспределениеЗадачиРаспределениеЗадачиСотрудникам.Приоритет
|ГДЕ
| РаспределениеЗадачиРаспределениеЗадачиСотрудникам.Исполнитель В (&Ссылка)";
bless18
14.04.2010 09:22Ответ № 16
К сожалению не получается, выдается ошибка
Ошибка при вызове метода контекста (Выполнить): {(2, 2)}: Таблица не найдена "РаспределениеЗадачиРаспределениеЗадачиСотрудникам"
<<?>>РаспределениеЗадачиРаспределениеЗадачиСотрудникам.Дата,
РезультатЗапроса = Запрос.Выполнить();
E_Migachev
14.04.2010 09:25Ответ № 17
ой, забыл по КАК )
вот так надо
Запрос.Текст = "ВЫБРАТЬ
| РаспределениеЗадачиРаспределениеЗадачиСотрудникам.Дата,
| РаспределениеЗадачиРаспределениеЗадачиСотрудникам.Исполнитель,
| РаспределениеЗадачиРаспределениеЗадачиСотрудникам.НаименованиеЗадачи,
| РаспределениеЗадачиРаспределениеЗадачиСотрудникам.ДатаВыполнения,
| РаспределениеЗадачиРаспределениеЗадачиСотрудникам.Приоритет
|ИЗ
|Документ.РаспределениеЗадачи.РаспределениеЗадачиСотрудникам КАК РаспределениеЗадачиРаспределениеЗадачиСотрудникам
|ГДЕ
| РаспределениеЗадачиРаспределениеЗадачиСотрудникам.Исполнитель В (&Ссылка)";
bless18
14.04.2010 09:33Ответ № 18
Странно, все равно в цикл не заходит. В чем же может быть дело? *09
E_Migachev
14.04.2010 09:37Ответ № 19
это значит что нет документов РаспределениеЗадачи в которых в табличном поле РаспределениеЗадачиСотрудникам в поле Исполнитель стоит пользователь из списка ссылка *09

А что за конфигурация?
bless18
14.04.2010 09:40Ответ № 20
конфигурация 1С:Предприятие 8.1 (8.1.9.57)
E_Migachev
14.04.2010 09:48Ответ № 21
Это номер Платформы, причем очень устаревшей, уже давно есть - 8.1.15.14. обновиться бы лучше.
А конфигурация какая, в ней кто-нибудь работает? или ты создала новую пустую?
bless18
14.04.2010 09:54Ответ № 22
конфигурация 1С:Предприятие 8.1 (8.1.9.57)
bless18
14.04.2010 09:55Ответ № 23
Я пишу на этой конфигурации диплом. В компании, в которой я нахожусь, установили эту конфигурацию. Надо попросить, чтобы переставили. Вроде как здесь все на такой работают
E_Migachev
14.04.2010 10:08Ответ № 24
Зайди Справка о программе, там первой строчкой буде твое 1С:Предприятие 8.1 (8.1.9.57)
а ниже Конфигурация:
и название... какое?
bless18
14.04.2010 11:14Ответ № 25
Просто "Конфигурация" написано

Попробовала убрать в запросе параметры, все заработало. Видимо проблема все-таки в передаче параметра *09

Код 1C v 8.х
 Процедура ПриОткрытии()

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

РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Для Каждого СтрокаРаспределениеЗадачиСотрудникам Из РезультатЗапроса Цикл
СтрокаТабличнойЧасти = ЭтотОбъект.Пользователи.Добавить();
//СтрокаТабличнойЧасти.Пользователь = СтрокаРаспределениеЗадачиСотрудникам.Пользователь;
СтрокаТабличнойЧасти.ТекущаяЗадача = СтрокаРаспределениеЗадачиСотрудникам.НаименованиеЗадачи;
СтрокаТабличнойЧасти.Приоритет = СтрокаРаспределениеЗадачиСотрудникам.Приоритет;
СтрокаТабличнойЧасти.ДатаНачалаВыполнения = СтрокаРаспределениеЗадачиСотрудникам.Дата;
СтрокаТабличнойЧасти.ДатаВыполненияПоПлану = СтрокаРаспределениеЗадачиСотрудникам.ДатаВыполнения;
СтрокаТабличнойЧасти.ИсполнительЗадачи = СтрокаРаспределениеЗадачиСотрудникам.Исполнитель;
КонецЦикла;
bless18
14.04.2010 11:51Ответ № 26
Только через параметры запроса мне нужно получить пользователя, работающего с системой. Пользователь находится в справочнике Пользователи
E_Migachev
14.04.2010 11:53Ответ № 27
В таком случае правильнее использовать запрос вида:
Код 1C v 8.х
 апрос.Текст = "ВЫБРАТЬ
| РаспределениеЗадачиРаспределениеЗадачиСотрудникам.Дата,
| РаспределениеЗадачиРаспределениеЗадачиСотрудникам.Исполнитель,
| РаспределениеЗадачиРаспределениеЗадачиСотрудникам.НаименованиеЗадачи,
| РаспределениеЗадачиРаспределениеЗадачиСотрудникам.ДатаВыполнения,
| РаспределениеЗадачиРаспределениеЗадачиСотрудникам.Приоритет
|ИЗ
|Документ.РаспределениеЗадачи.РаспределениеЗадачиСотрудникам КАК РаспределениеЗадачиРаспределениеЗадачиСотрудникам";

Так как в левом соединении нет смысла - пользователи и так есть в реквизите Исполнитель

И тепереь у тебя получается вообще по всем пользователям которые есть документах РаспределениеЗадачи!
E_Migachev
25.04.2010 23:35Ответ № 28
Вопрос закрыт!
Подсказка: Для редактирования своего ответа щелкните по значку (справа)
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.