| 
    
            
         
         | 
    
  | 
как занести значения из ТЗ в одну ячейку документа? | ☑ | ||
|---|---|---|---|---|
| 
    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; КонецЦикла; ТабДок.Вывести(ОбластьЗначенияТабл); КонецЦикла;  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |