Имя: Пароль:
1C
1С v8
Внешняя обработка Заказы
,
0 FransisDrake
 
27.02.20
13:50
Коллеги, добрый день!
Столкнулся с такой проблемой, существует 4 Задачи.
Мне нужно сделать внешнюю обработку, которая собрала информацию с этих задач и вывела бы их мне.
Как построить запрос, чтобы он совсех четырех собрал информацию?
1 ДенисЧ
 
27.02.20
13:52
Лучше всего - запрос построить правильно.
А ещё лучше - показать, с чего начал, что не получилось
2 FransisDrake
 
27.02.20
13:58
Нууу...немного всё не получается..
Мне нужно, чтобы в итоговом списке были данные: Дата, Наименование, Предмет, Автор, ДатаВыполнения.
выбрал я данные, а как их дальше сгруппировать?


"ВЫБРАТЬ
|    НА_СогласованиеБюджетаПроекта.Дата,
|    НА_СогласованиеВыбораПоставщика.Дата КАК Дата1,
|    НА_СогласованиеЗаказаПоставщику.Дата КАК Дата2,
|    НА_СогласованиеСоглашенияНаВыполненияРабот.Дата КАК Дата3,
|    НА_ЗадачаСогласованияВыбораПоставщика.Наименование,
|    НА_СогласованиеЗаказаПоставщику1.Наименование КАК Наименование1,
|    НА_ЗадачаСогласования.Наименование КАК Наименование2,
|    НА_ЗадачаСогласованияЗадачиПоИсполнителю.Наименование КАК Наименование3,
|    НА_СогласованиеБюджетаПроекта.Предмет,
|    НА_СогласованиеВыбораПоставщика.Предмет КАК Предмет1,
|    НА_СогласованиеЗаказаПоставщику.Предмет КАК Предмет2,
|    НА_СогласованиеСоглашенияНаВыполненияРабот.Предмет КАК Предмет3,
|    НА_СогласованиеБюджетаПроекта.Автор,
|    НА_СогласованиеВыбораПоставщика.Автор КАК Автор1,
|    НА_СогласованиеЗаказаПоставщику.Автор КАК Автор2,
|    НА_СогласованиеСоглашенияНаВыполненияРабот.Автор КАК Автор3,
|    НА_ЗадачаСогласования.ДатаВыполнения,
|    НА_ЗадачаСогласованияВыбораПоставщика.ДатаВыполнения КАК ДатаВыполнения1,
|    НА_ЗадачаСогласованияЗадачиПоИсполнителю.ДатаВыполнения КАК ДатаВыполнения2,
|    НА_СогласованиеЗаказаПоставщику1.ДатаВыполнения КАК ДатаВыполнения3
|ИЗ
|    БизнесПроцесс.НА_СогласованиеВыбораПоставщика КАК НА_СогласованиеВыбораПоставщика
|        ЛЕВОЕ СОЕДИНЕНИЕ Задача.НА_ЗадачаСогласованияВыбораПоставщика КАК НА_ЗадачаСогласованияВыбораПоставщика
|        ПО НА_СогласованиеВыбораПоставщика.ВедущаяЗадача = НА_ЗадачаСогласованияВыбораПоставщика.Ссылка
|        ЛЕВОЕ СОЕДИНЕНИЕ Задача.НА_СогласованиеЗаказаПоставщику КАК НА_СогласованиеЗаказаПоставщику1
|            ЛЕВОЕ СОЕДИНЕНИЕ БизнесПроцесс.НА_СогласованиеЗаказаПоставщику КАК НА_СогласованиеЗаказаПоставщику
|            ПО НА_СогласованиеЗаказаПоставщику1.БизнесПроцесс = НА_СогласованиеЗаказаПоставщику.Ссылка
|        ПО НА_СогласованиеВыбораПоставщика.ВедущаяЗадача = НА_СогласованиеЗаказаПоставщику1.Ссылка
|        ЛЕВОЕ СОЕДИНЕНИЕ Задача.НА_ЗадачаСогласования КАК НА_ЗадачаСогласования
|            ЛЕВОЕ СОЕДИНЕНИЕ БизнесПроцесс.НА_СогласованиеСоглашенияНаВыполненияРабот КАК НА_СогласованиеСоглашенияНаВыполненияРабот
|            ПО НА_ЗадачаСогласования.БизнесПроцесс = НА_СогласованиеСоглашенияНаВыполненияРабот.Ссылка
|            ЛЕВОЕ СОЕДИНЕНИЕ БизнесПроцесс.НА_СогласованиеБюджетаПроекта КАК НА_СогласованиеБюджетаПроекта
|            ПО НА_ЗадачаСогласования.БизнесПроцесс = НА_СогласованиеБюджетаПроекта.Ссылка
|        ПО НА_СогласованиеВыбораПоставщика.ВедущаяЗадача = НА_ЗадачаСогласования.Ссылка,
|    Задача.НА_ЗадачаСогласования.ЗадачиПоИсполнителю КАК НА_ЗадачаСогласованияЗадачиПоИсполнителю"
3 hhhh
 
27.02.20
14:09
(2) лишние строчки выкиньте просто.
4 FransisDrake
 
27.02.20
14:14
(2) разве там есть лишние?
5 D_E_S_131
 
27.02.20
15:32
Зачем у Вас все через левое соединение связывается?
6 hhhh
 
27.02.20
15:38
(4) что это за хрень, Автор1, Автор2, Автор3? Нафига вам столько авторов? Они не лишние?
7 FransisDrake
 
28.02.20
09:27
Коллеги, добрый день!
С запросом я разобрался, всем спасибо!
Но теперь у меня другой вопрос:
На форме у меня есть реквизит Исполнитель с типом Справочники.Пользователи;
мне нужно, чтобы при изменении исполнителя, изменялись данные.
Сейчас он выводит все данные, независимо от выбора исполнителя:

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

Результат = Запрос.Выполнить();  
ЭлементыФормы.Список.СоздатьКолонки();
Список.Загрузить(Запрос.Выполнить().Выгрузить());
8 Мимохожий Однако
 
28.02.20
09:30
Добавь условие в каждую таблицу
9 FransisDrake
 
28.02.20
09:34
(8) Теперь ничего не выводит


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

Результат = Запрос.Выполнить();  
ЭлементыФормы.Список.СоздатьКолонки();
Список.Загрузить(Запрос.Выполнить().Выгрузить());
10 vicof
 
28.02.20
09:39
Исполнитель это не элемент формы, а элемент справочника.
11 FransisDrake
 
28.02.20
09:42
(10) Всё равно, он выводит колонки, но не содержимое.
12 FransisDrake
 
28.02.20
10:02
Хелп?))
13 vicof
 
28.02.20
10:14
намеков не понимаешь, ладно
Исполнитель = ЭлементыФормы.Исполнитель.Значение;
14 D_E_S_131
 
28.02.20
10:48
(9) "Исполнитель = ЭлементыФормы.Исполнитель;" - это лишнее. Если запрос выполняется в процедуре с контекстом формы, то ты его и так по имени "Исполнитель" получишь.
15 FransisDrake
 
28.02.20
11:25
На форме у меня стоит булево кнопка,
не могу сообразить, как сделать так, чтобы если выбрано  "ДА", вывелись только выполненные задачи
а если "НЕТ", то все задачи?

Запрос = Новый Запрос;

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

Результат = Запрос.Выполнить();  
ЭлементыФормы.Список.СоздатьКолонки();
Список.Загрузить(Запрос.Выполнить().Выгрузить());
16 FransisDrake
 
28.02.20
11:26
(15) На форме у меня стоит булево кнопка,
не могу сообразить, как сделать так, чтобы если выбрано  "ДА", вывелись только выполненные задачи
а если "НЕТ", то все задачи?
17 D_E_S_131
 
28.02.20
12:31
(16) Запрос.УстановитьПараметр("ТолькоВыполненные", <путь к данным, которые связаны с кнопкой>); А в самом запросе поставь условие "НЕ &ТолькоВыполненные ИЛИ Задача.Выполнена".

"Исполнитель = ЭлементыФормы.Исполнитель.Значение;
Выполнена = ЭлементыФормы.Выполнено.Значение;" - да хорош уже "пробираться в анус через гланды". Один ляпнул фигню, а другой зафиксировал в "стандартах разработки"...
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший