Имя: Пароль:
1C
1С v8
Создание списка выбора технологий
,
0 JuixyJes
 
29.04.19
13:21
Имеется Документ заявка, в нем есть 3 тч, 1 главная, две подчиненные. Есть документ ОтчетСотрудника, в котором в ТЧ работа по кнопке Добавить должна добавляться список технологий, связанных с конкретной продукцией, как указано в документе Заявка. Как мне сделать так чтобы заполнялось все так, как указано в Заявке ?
1 craxx
 
29.04.19
13:32
Написать процедуру заполнения ТЧ
2 JuixyJes
 
29.04.19
13:35
(1) Я конечно понимаю, что это не сложно, но у меня не выходит, вот и пишу сюда
3 catena
 
29.04.19
13:37
https://1cers.ru/rules.php

4. Если вы не можете реализовать задуманный код
Если проблема с конкретным кодом, приведите листинг программы, но придерживайтесь принципа разумной достаточности – ошибку проще найти в небольшом листинге, чем изучать весь модуль.
4 craxx
 
29.04.19
13:37
(2) что именно не выходит?
5 craxx
 
29.04.19
13:37
(3) курсовую делаете что ли?
6 JuixyJes
 
29.04.19
13:56
(5) можно и так сказать
7 ejikbeznojek
 
29.04.19
14:09
(6) Сколько ещё можно тебя упрашивать, написать тот код, который ты пробовал и с которым у тебя не получилось?)
8 craxx
 
29.04.19
14:11
(7) это девушка
9 JuixyJes
 
29.04.19
14:13
Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ РАЗЛИЧНЫЕ
        |    ЗаявкаЗаявка.Продукция КАК Продукция
        |ИЗ
        |    Документ.Заявка.Заявка КАК ЗаявкаЗаявка
        |ГДЕ
        |    ЗаявкаЗаявка.Ссылка = &Ссылка";
    
    Запрос.УстановитьПараметр("Ссылка", Наряд.Заявка);
    
    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
    
    
    Для каждого стр из РезультатЗапроса Цикл    
            
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ РАЗЛИЧНЫЕ
        |    ЗаявкаТехнологии.Технологии КАК Технологии,
        |    ЗаявкаЗаявка.Продукция КАК Продукция,
        |    ЗаявкаЗаявка.РазмерФормат КАК РазмерФормат,
        |    ЗаявкаТехнологии.Количество КАК Количество
        |ИЗ
        |    Документ.Заявка.Технологии КАК ЗаявкаТехнологии,
        |    Документ.Заявка.Заявка КАК ЗаявкаЗаявка
        |ГДЕ
        |    ЗаявкаТехнологии.Ссылка = &Ссылка
        |    И ЗаявкаЗаявка.Продукция = &Продукция";
    
    Запрос.УстановитьПараметр("Ссылка", Наряд.Заявка);
    Запрос.УстановитьПараметр("Продукция", стр.Продукция);
    РЗ = Запрос.Выполнить().Выгрузить();
    Сообщить(стр.Продукция);
        Для ИИ = 0 по РЗ.Количество()-1 Цикл
        
        Сообщить(РЗ[ИИ].Технологии);
    КонецЦикла;
    
    КонецЦикла;


Вот этот код работает, но я не соображаю, как мне результатами заполнить ТЗ, чтоб из нее можно было выбрать что-то.
10 craxx
 
29.04.19
14:17
(9) берешь таблицу РЗ из пишешь
ТЧ.Очистить()
Для Каждого СтрРз Из РЗ Цикл
    Стр = ТЧ.Добавить();
    ЗаполнитьЗначенияСвойств(Стр,СтрРЗ);
КонецЦикла;
11 sqr4
 
29.04.19
14:17
Для ИИ = 0 по РЗ.Количество()-1 Цикл
        
        Сообщить(РЗ[ИИ].Технологии);
НоваяСтрока = Объект.ТвояТЧ.Добавить;
НоваяСтрока.ТвоеПоле = РЗ[ИИ].ТвоеПолеИзЗапроса
КонецЦикла;
12 craxx
 
29.04.19
14:18
(10) + ТЧ  = Это твоя табличная часть которую заполнить, и т.д и т.п.
13 JuixyJes
 
29.04.19
14:21
(11) А если мне нужно как форму выбора сделать? Ну чтоб у меня туда записалось например

Вывеска Обработка материала 1шт. 12х21

Вывеска Гравировка 1шт. 12х21

И из этих двух записей я могла выбрать ту, что мне нужно?
14 Мимохожий Однако
 
29.04.19
14:56
В табличной части есть кнопка Добавить. Даже программировать не придётся
15 JuixyJes
 
29.04.19
14:58
(14) Так а мне нужно вытянуть значения из 3 ТЧ документа Заявка в одну строчку для выбора
16 bootini
 
29.04.19
15:00
Таблица = Запрос.Выполнить().Выгрузить();
ВыбСрока = Таблица.ВыбратьСтроку();
17 JuixyJes
 
29.04.19
15:03
Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ РАЗЛИЧНЫЕ
        |    ЗаявкаЗаявка.Продукция КАК Продукция
        |ИЗ
        |    Документ.Заявка.Заявка КАК ЗаявкаЗаявка
        |ГДЕ
        |    ЗаявкаЗаявка.Ссылка = &Ссылка";
    
    Запрос.УстановитьПараметр("Ссылка", Наряд.Заявка);
    
    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
    
    
    Для каждого стр из РезультатЗапроса Цикл    
            
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ РАЗЛИЧНЫЕ
        |    ЗаявкаТехнологии.Технологии КАК Технологии,
        |    ЗаявкаЗаявка.Продукция КАК Продукция,
        |    ЗаявкаЗаявка.РазмерФормат КАК РазмерФормат,
        |    ЗаявкаТехнологии.Количество КАК Количество
        |ИЗ
        |    Документ.Заявка.Технологии КАК ЗаявкаТехнологии,
        |    Документ.Заявка.Заявка КАК ЗаявкаЗаявка
        |ГДЕ
        |    ЗаявкаТехнологии.Ссылка = &Ссылка
        |    И ЗаявкаЗаявка.Продукция = &Продукция
        |    И ЗаявкаЗаявка.Ссылка = &Ссылка";
    
    Запрос.УстановитьПараметр("Ссылка", Наряд.Заявка);
    Запрос.УстановитьПараметр("Продукция", стр.Продукция);
    РЗ = Запрос.Выполнить().Выгрузить();
    Сообщить(стр.Продукция);
    СЗ = Новый СписокЗначений;
    Для ИИ = 0 по РЗ.Количество()-1 Цикл
        
        Сообщить(РЗ[ИИ].Технологии);
        Сообщить(РЗ[ИИ].Количество);
        Сообщить(РЗ[ИИ].РазмерФормат);

    КонецЦикла;
    
    КонецЦикла;

Запрос


Вывеска из акрила
Отлив формы
1
21
вырезка формы
1
21
Гравировка
1
21
Сборка
1
21
изделие из дерева
Отлив формы
1
12
вырезка формы
1
12
Гравировка
1
12
Сборка
1
12


Результат запроса
18 bootini
 
29.04.19
15:05
(17)  не хило )
19 JuixyJes
 
29.04.19
15:13
И вот мне нужно, чтоб был выбор из

Вывеска из акрила  Отлив формы 1шт. 21
Вывеска из акрила  вырезка формы 1шт. 21
Вывеска из акрила  Гравировка 1шт. 21
Вывеска из акрила  Сборка 1шт. 21
изделие из дерева   Отлив формы 1шт. 21
изделие из дерева   вырезка формы 1шт. 21
изделие из дерева   Гравировка 1шт. 21
изделие из дерева   Сборка 1шт. 21

В стандартную кнопку добавить это, как мне кажется не впихнуть)
20 bootini
 
29.04.19
15:34
одним запросом все делается  и

Таблица = Запрос.Выполнить().Выгрузить();
ВыбСрока = Таблица.ВыбратьСтроку();
21 bootini
 
29.04.19
15:35
надо освоить Левое соединене таблиц запросов
22 JuixyJes
 
29.04.19
15:53
(20) Вот это мне очень помогло)) А как мне теперь значением выбранным заполнить табличную часть?
23 bootini
 
29.04.19
16:02
НоваяСтрока = ТабличнаяЧасть.Добавить()
НоваяСтрока.Продукция = ВыбСтрока.Продукция;
НоваяСтрока.Технология = Выбстрока.Технология;

..... и т.д.
24 JuixyJes
 
29.04.19
16:04
(23) О господи, я уж думала там что-то страшное будет, извиняюсь за тупость, каша в голове
25 novichok79
 
29.04.19
16:07
НоваяСтрока = ТабличнаяЧасть.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыбСтрока);

еще можно
26 novichok79
 
29.04.19
16:09
и запроса в цикле надо избегать
27 JuixyJes
 
29.04.19
17:11
У меня в "Заявке" сделано так, что при активной строке "Вывеска из акрила" по идее в список выбора должны попадать только

Вывеска из акрила  Отлив формы 1шт. 21
Вывеска из акрила  вырезка формы 1шт. 21
Вывеска из акрила  Сборка 1шт. 21

и при активном  "изделие из древесины" соответственно

изделие из дерева   вырезка формы 1шт. 21
изделие из дерева   Гравировка 1шт. 21
изделие из дерева   Сборка 1шт. 21

Но заполняется так, как писала выше, можно ли как то поправить?
28 JuixyJes
 
29.04.19
17:22
(23) бутини, не прячьтесь, я вас вижу:D
29 bootini
 
30.04.19
10:41
На Главную табличную часть ставим события ПриАктивациияСтроки() там есть переменная строка, вытаскиваем оттуда продукцию("Вывеска из акрила"), в реквизитах подчиненных ТЧ должен быть реквизит "Продукция", колонка скрыта, и в этойже процедури ПриАктивацииСтроки()  ставим отбор по продукции на подчиненные табличные части по "Продукции"
30 bootini
 
30.04.19
10:48
Запрос должен быть

ВЫБРАТЬ
ЗаявкаЗаявка.Продукция
31 bootini
 
30.04.19
10:54
Выбрать        
ЗаявкаТехнологии.Технологии КАК Технологии,
        ЗаявкаЗаявка.Продукция КАК Продукция,
        ЗаявкаЗаявка.РазмерФормат КАК РазмерФормат,
        ЗаявкаТехнологии.Количество КАК Количество
ИЗ
Документ.Заявка.Заявка КАК ЗаявкаЗаявка
ЛЕВОЕ СОЕДИНЕНИЕ Документ.Заявка.Технологии КАК ЗаявкаТехнологии
ПО ЗаявкаЗаявка.Продуция = ЗаявкаТехнологии.Продукция
ГДЕ
ЗаявкаЗаявка.Ссылка = &Ссылка"
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший