|
|
|
Помогите с запросом: комбинации элементов в таб.части документов Timon1405, AutoAns, Волшебник, Homer, Доминошник, RVN, Ненавижу 1С, Kigo_Kigo, МаленькийВопросик, Бычье сердце, FirstLineSupport, formista2000, lxndr, trad, СвинТуз, Дмитрий, lEvGl, Vstur, , piter3, tir654, tan76, crotnn, SleepyHead, Чеширский, Шурик71, alexela, Ильф, Новичок_1С, Жеглофф, okmail, lucky_, mr_K, , U4Me2
| ☑ | ||
|---|---|---|---|---|
|
0
Новичок_1С
04.03.25
✎
16:02
|
Добрый день.
Подскажите в какую сторону смотреть. Есть документ с табличной частью. В табличной части допустим указаны цвета и количества. Док №1 Синий 1 Красный 2 Док №2 Оранжевый 3 Красный 2 Док №3 Синий 1 Красный 2 Необходимо выгрузить в одну колонку варианты цветов, в другую количество документов Синий,Красный 2 Оранжевый,Красный 1 Понимаю надо какую то группировку делать, но как собрать уникальность комбинаций табличной части ? |
|||
|
1
Волшебник
04.03.25
✎
16:04
|
Заведите строковый реквизит шапки, куда записывайте все цвета, отсортированные по возрастанию.
Потом по нему сгруппируйте в запросе. |
|||
|
2
vicof
04.03.25
✎
16:09
|
(1) +1
|
|||
|
3
Новичок_1С
04.03.25
✎
16:15
|
Да, спасибо. Я думал в запросе собрать все варианты табличных частей. Но не получается. Так действительно легче.
|
|||
|
4
Ильф
05.03.25
✎
09:52
|
||||
|
5
Ильф
05.03.25
✎
09:54
|
если же менять конфу - то справочник "Наборы..."
и при записи выбирать или создавать новый набор и писать его в реквизит документа |
|||
|
6
Ильф
05.03.25
✎
10:26
|
Функция ПолучитьНабор(Знач ТаблицаНабора) Экспорт
Если Ложь Тогда ТаблицаНабора = Новый ТаблицаЗначений КонецЕсли;
Если ТаблицаНабора.Количество() = 0 Тогда
Возврат Справочники.НаборыВыполняемойНоменклатуры.ПустойНабор;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТаблицаНабора", ТаблицаНабора);
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаНабора.Номенклатура КАК Номенклатура,
| ТаблицаНабора.ВыполняетсяКакМедсестра КАК ВыполняетсяКакМедсестра
|ПОМЕСТИТЬ втТаблицаНабораСПустыми
|ИЗ
| &ТаблицаНабора КАК ТаблицаНабора
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| втТаблицаНабора.Номенклатура КАК Номенклатура,
| втТаблицаНабора.ВыполняетсяКакМедсестра КАК ВыполняетсяКакМедсестра
|ПОМЕСТИТЬ втТаблицаНабора
|ИЗ
| втТаблицаНабораСПустыми КАК втТаблицаНабора
|ГДЕ
| втТаблицаНабора.Номенклатура <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| втТаблицаНабора.Номенклатура КАК Номенклатура,
| втТаблицаНабора.ВыполняетсяКакМедсестра КАК ВыполняетсяКакМедсестра,
| НаборыВыполняемойНоменклатуры.Ссылка КАК Ссылка1
|ПОМЕСТИТЬ втУмножение
|ИЗ
| втТаблицаНабора КАК втТаблицаНабора
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НаборыВыполняемойНоменклатуры КАК НаборыВыполняемойНоменклатуры
| ПО (ИСТИНА)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЕСТЬNULL(втУмножение.Ссылка1, СоставНабора.Ссылка) КАК Ссылка1
|ПОМЕСТИТЬ втИсключаемые
|ИЗ
| втУмножение КАК втУмножение
| ПОЛНОЕ СОЕДИНЕНИЕ Справочник.НаборыВыполняемойНоменклатуры.СоставНабора КАК СоставНабора
| ПО втУмножение.Ссылка1 = СоставНабора.Ссылка
| И втУмножение.Номенклатура = СоставНабора.Номенклатура
| И втУмножение.ВыполняетсяКакМедсестра = СоставНабора.ВыполняетсяКакМедсестра
|ГДЕ
| (СоставНабора.Ссылка ЕСТЬ NULL
| ИЛИ втУмножение.Ссылка1 ЕСТЬ NULL)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| НаборыВыполняемойНоменклатуры.Ссылка КАК Ссылка
|ПОМЕСТИТЬ втНаборыВыполняемойНоменклатуры
|ИЗ
| Справочник.НаборыВыполняемойНоменклатуры КАК НаборыВыполняемойНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ втИсключаемые КАК Исключаемые
| ПО (Исключаемые.Ссылка1 = НаборыВыполняемойНоменклатуры.Ссылка)
|ГДЕ
| Исключаемые.Ссылка1 ЕСТЬ NULL
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| СоставНабора.Ссылка КАК Ссылка
|ИЗ
| втТаблицаНабора КАК втТаблицаНабора
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.НаборыВыполняемойНоменклатуры.СоставНабора КАК СоставНабора
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ втНаборыВыполняемойНоменклатуры КАК втНаборыВыполняемойНоменклатуры
| ПО СоставНабора.Ссылка = втНаборыВыполняемойНоменклатуры.Ссылка
| ПО втТаблицаНабора.Номенклатура = СоставНабора.Номенклатура
| И втТаблицаНабора.ВыполняетсяКакМедсестра = СоставНабора.ВыполняетсяКакМедсестра";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаВариаций = РезультатЗапроса.Выбрать();
Если ВыборкаВариаций.Следующий() Тогда
НаборНоменклатуры = ВыборкаВариаций.Ссылка;
Иначе
НаборНоменклатуры = Неопределено;
НовыйНабор = Справочники.НаборыВыполняемойНоменклатуры.СоздатьЭлемент();
Записывать = Ложь;
Для Каждого СтрокаТЗ Из ТаблицаНабора Цикл
Если ЗначениеЗаполнено(СтрокаТЗ.Номенклатура) Тогда
СтрокаТЧ = НовыйНабор.СоставНабора.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЧ,СтрокаТЗ);
Записывать = Истина;
КонецЕсли;
КонецЦикла;
Если Записывать Тогда
НовыйНабор.Записать();
НаборНоменклатуры = НовыйНабор.Ссылка;
КонецЕсли;
КонецЕсли;
Возврат НаборНоменклатуры;
КонецФункции |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |