|
как занести значения из ТЗ в одну ячейку документа? | ☑ | ||
---|---|---|---|---|
0
1Слайт
15.06.20
✎
14:47
|
Экземпляры - это таблица на форме с номерами экземпляров, это номера мне нужно вытащить. ТЗ может быть и пустая, а может содержать несколько значений
Отбираю документы. в результате мне дает таблицу, но если если экземпляров несколько, то строки дублируются, при чем бредово(пример, отбираю 3 документа Док1(3 экз.), Док2 )(1 экз) и Док3 (0 экз.): Документ Экземпляр Док1 Док1/1 Док1 Док1/1; Док1/2; Док1 Док1/1; Док1/2; Док1/3 Док2 Док1/1; Док1/2; Док1/3; Док2/1;.... Если в документе нет экземпляров, как в Док3, то номера экземпляров других документов по документу тоже дублируются в его строке Запрос6 = Новый Запрос; Запрос6.Текст = "ВЫБРАТЬ | АрхивныйДокументЭкземпляры.Ссылка КАК Ссылка, | АрхивныйДокументЭкземпляры.Номер КАК Номер |ПОМЕСТИТЬ ВТ |ИЗ | Документ.АрхивныйДокумент.Экземпляры КАК АрхивныйДокументЭкземпляры |ГДЕ | АрхивныйДокументЭкземпляры.Ссылка.ДецНомер В(&ТаблицаДецНомера) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | АрхивныйДокумент.Ссылка КАК Ссылка, | АрхивныйДокумент.Дата КАК Дата, | АрхивныйДокумент.ДецНомер КАК ДецНомер, | АрхивныйДокумент.Наименование КАК Наименование, | АрхивныйДокумент.КолвоПодл КАК КолвоПодл, | АрхивныйДокумент.КолЛистов КАК КолЛистов |ПОМЕСТИТЬ ВТ1 |ИЗ | Документ.АрхивныйДокумент КАК АрхивныйДокумент |ГДЕ | АрхивныйДокумент.ДецНомер В(&ТаблицаДецНомера) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ.Ссылка КАК Ссылка, | ВТ.Номер КАК Номер, | ВТ1.Ссылка КАК Ссылка1, | ВТ1.Дата КАК Дата, | ВТ1.ДецНомер КАК ДецНомер, | ВТ1.Наименование КАК Наименование, | ВТ1.КолвоПодл КАК КолвоПодл, | ВТ1.КолЛистов КАК КолЛистов |ИЗ | ВТ КАК ВТ, | ВТ1 КАК ВТ1"; к = 0; Запрос6.УстановитьПараметр("ТаблицаДецНомера", ТаблицаДецНомера); Выборка6 = Запрос6.Выполнить().Выбрать(); Текст3 = ""; Пока Выборка6.Следующий()Цикл к = к+1; Текст3 = Текст3 + Строка(Выборка6.Номер) + "; "; Сообщить(Текст3); ОбластьЗначенияТабл.Параметры.НомерПП = к; ОбластьЗначенияТабл.Параметры.ДецНомер = Выборка6.ДецНомер; ОбластьЗначенияТабл.Параметры.ДатаРег = Формат(Выборка6.Дата, "ДЛФ=Д"); ОбластьЗначенияТабл.Параметры.НаимДок = Выборка6.Наименование; ОбластьЗначенияТабл.Параметры.КолЭкз = Выборка6.КолвоПодл; ОбластьЗначенияТабл.Параметры.ЛистыЭкз = Выборка6.КолЛистов; ОбластьЗначенияТабл.Параметры.ВсегоЛистов = ЧислоПрописью((Выборка6.КолЛистов*Выборка6.Колвоподл),"Л=ru_RU; НП=Ложь",",,,,,,,,0"); ОбластьЗначенияТабл.Параметры.НомерЭкз = Текст3; ТабДок.Вывести(ОбластьЗначенияТабл); КонецЦикла; |
|||
1
D_E_S_131
15.06.20
✎
15:12
|
Выбирай стразу из ТЧ "Экземпляры" и группируй, суммируя КолвоПодл и КолЛистов.
|
|||
2
1Слайт
15.06.20
✎
15:15
|
(1) прбовала, но тоже что -то не пошло... сейчас еще раз попробую(
|
|||
3
D_E_S_131
15.06.20
✎
15:22
|
(2) У Вас номера из таблицы могут находиться либо в тч "Экземпляры", либо в реквизите "ДецНомер"?
|
|||
4
1Слайт
15.06.20
✎
15:28
|
(3) децНомер - это ТЧ на форме, там пользователь отбирает список номеров документов, которые нужно обработать
ТЧ Экземпляры это таблица непосредственно в документе, который мы отобрали по Децномеру |
|||
5
D_E_S_131
15.06.20
✎
15:33
|
(4) А тогда чего выбираются данные в ВТ1 по данным в таблице?
|
|||
6
Ёпрст
15.06.20
✎
15:35
|
(0) Так примерно:
|ВЫБРАТЬ | АрхивныйДокумент.Ссылка КАК Ссылка, | АрхивныйДокумент.Дата КАК Дата, | АрхивныйДокумент.ДецНомер КАК ДецНомер, | АрхивныйДокумент.Наименование КАК Наименование, | АрхивныйДокумент.КолвоПодл КАК КолвоПодл, | АрхивныйДокумент.КолЛистов КАК КолЛистов, | ЕстьNULL(АрхивныйДокументЭкземпляры.Номер,"""") как НомерЭкземпляра |ИЗ | Документ.АрхивныйДокумент КАК АрхивныйДокумент |левое соединение Документ.АрхивныйДокумент.Экземпляры КАК АрхивныйДокументЭкземпляры ПО АрхивныйДокументЭкземпляры.ССылка = АрхивныйДокумент.ССылка |ГДЕ | АрхивныйДокумент.ДецНомер В(&ТаблицаДецНомера) |ИТОГИ ПО ССылка Далее обход группировки по итогам, на первом уровне твой документ, на втором, твои номера экземпляров, если есть |
|||
7
Ёпрст
15.06.20
✎
15:36
|
+6 и почитайте про cross join, который вы в первом запросе слепили, полезно
|
|||
8
1Слайт
16.06.20
✎
10:35
|
ребят, туплю, в каждую следующую строчку с новым документом записываются номера экземпляров по предыдущим документам+по текущему
тыкните носом где ошибка Запрос6.УстановитьПараметр("ТаблицаДецНомера", ТаблицаДецНомера); ВыборкаДокумента = Запрос6.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Ссылка"); Текст3 = ""; Пока ВыборкаДокумента.Следующий()Цикл ВыборкаЭкземпляров = ВыборкаДокумента.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Номер"); к = к+1; Пока ВыборкаЭкземпляров.Следующий()Цикл ОбластьЗначенияТабл.Параметры.НомерПП = к; ОбластьЗначенияТабл.Параметры.ДецНомер = ВыборкаЭкземпляров.ДецНомер; ОбластьЗначенияТабл.Параметры.ДатаРег = Формат(ВыборкаЭкземпляров.Дата, "ДЛФ=Д"); ОбластьЗначенияТабл.Параметры.НаимДок = ВыборкаЭкземпляров.Наименование; ОбластьЗначенияТабл.Параметры.КолЭкз = ВыборкаЭкземпляров.КолвоПодл; ОбластьЗначенияТабл.Параметры.ЛистыЭкз = ВыборкаЭкземпляров.КолЛистов; ОбластьЗначенияТабл.Параметры.ВсегоЛистов = ЧислоПрописью((ВыборкаЭкземпляров.КолЛистов*ВыборкаЭкземпляров.Колвоподл),"Л=ru_RU; НП=Ложь",",,,,,,,,0"); Текст3 = Текст3 + Строка(ВыборкаЭкземпляров.Номер) + "; "; Сообщить(Текст3); ОбластьЗначенияТабл.Параметры.НомерЭкз = Текст3; КонецЦикла; ТабДок.Вывести(ОбластьЗначенияТабл); КонецЦикла; |
|||
9
Ёпрст
16.06.20
✎
10:47
|
(8) открой для себя метод ЗаполнитьЗначенияСвойств, а так, Параметры очищай.
|
|||
10
1Слайт
16.06.20
✎
10:51
|
(9) спасибо огромное!
|
|||
11
1Слайт
16.06.20
✎
14:04
|
оказалось до бональности тупо - за циклом объявила переменную...
к = 0; Запрос6.УстановитьПараметр("ТаблицаДецНомера", ТаблицаДецНомера); ВыборкаДокумента = Запрос6.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Ссылка"); Пока ВыборкаДокумента.Следующий()Цикл ВыборкаЭкземпляров = ВыборкаДокумента.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Номер"); к = к+1; Текст3 = ""; Пока ВыборкаЭкземпляров.Следующий() Цикл ОбластьЗначенияТабл.Параметры.НомерПП = к; ОбластьЗначенияТабл.Параметры.ДецНомер = ВыборкаЭкземпляров.ДецНомер; ОбластьЗначенияТабл.Параметры.ДатаРег = Формат(ВыборкаЭкземпляров.Дата, "ДЛФ=Д"); ОбластьЗначенияТабл.Параметры.НаимДок = ВыборкаЭкземпляров.Наименование; ОбластьЗначенияТабл.Параметры.КолЭкз = ВыборкаЭкземпляров.КолвоПодл; ОбластьЗначенияТабл.Параметры.ЛистыЭкз = ВыборкаЭкземпляров.КолЛистов; ОбластьЗначенияТабл.Параметры.ВсегоЛистов = ЧислоПрописью((ВыборкаЭкземпляров.КолЛистов*ВыборкаЭкземпляров.Колвоподл),"Л=ru_RU; НП=Ложь",",,,,,,,,0"); Текст3 = Текст3 + Строка(ВыборкаЭкземпляров.Номер) + "; "; Сообщить(Текст3); ОбластьЗначенияТабл.Параметры.НомерЭкз = Текст3; КонецЦикла; ТабДок.Вывести(ОбластьЗначенияТабл); КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |