Имя: Пароль:
1C
1С v8
Вывести все номера документов через запятую
0 OASU
 
18.10.11
08:45
Документ "Инвентаризация расчетов с кнтрагентами". Необходимо в поле "Документы" для каждого контрагента и договора, вывести наименование документа и все номера. Например перечислить все плтежки.
Данные по Платежкам получаю с помощью запроса.

ТЗ = Запрос.Выполнить().Выгрузить();
Конт = неопределено;
Для Каждого Стр Из Контрагенты Цикл
   ...
   СтрокиДок = ТЗ.НайтиСтроки(Новый Структура("СчетРасчетов,Контрагент,ДоговорКонтрагента", Стр.СчетРасчетов, Стр.Контрагент, Стр.ДоговорКонтрагента));
   дд="";  кк=СтрокиДок.Количество();
   Док = Неопределено;
   Для Каждого Ст Из СтрокиДок Цикл            
       Если Стр.ВидЗадолженности = Перечисления.ВидыЗадолженности.Дебиторская И Ст.СуммаДт > 0 Тогда                
           Если Конт = Ст.Контрагент тогда
               Док = Ст.ДокументВозникновенияЗадолженности;
               ДокументАктСверки = Ст.ДокументАктСверки;
               дд = дд + ?(ЗначениеЗаполнено(дд), ", " , "" ) + Строка(Док.Номер);
           Иначе                    
               Док = Ст.ДокументВозникновенияЗадолженности;
               ДокументАктСверки = Ст.ДокументАктСверки;
               Конт = Ст.Контрагент;
               дд = Док;
               Прервать;
           КонецЕсли;
       ИначеЕсли Стр.ВидЗадолженности = Перечисления.ВидыЗадолженности.Кредиторская И Ст.СуммаКт > 0 Тогда
           // тоже самое как для Дебета
       КонецЕсли;
   КонецЦикла;
   Стр.ДокументВозникновенияЗадолженности = Док;
   Стр.НомераДок = дд;
   Стр.АктСверки = ДокументАктСверки;
КонецЦикла;

Цикл как то не верно организован, на одних контрагентах все нормально срабатывает, а на других номера повторяются.
1 lamme
 
18.10.11
08:47
либо запрос смотри - корректируй на дубли
либо свою ТЗ с данными - сверни (освободись от дублей)
2 OASU
 
18.10.11
08:51
(1) в запросе нет дублей, проверено.
3 OASU
 
18.10.11
08:52
и в ТЗ их нет
4 НЕА123
 
18.10.11
09:18
(0)

   Для Каждого Ст Из СтрокиДок Цикл            
       Если Стр.ВидЗадолженности = Перечисления.ВидыЗадолженности.Дебиторская И Ст.СуммаДт > 0 Тогда                
//            Если Конт = Ст.Контрагент тогда
               Док = Ст.ДокументВозникновенияЗадолженности;
               ДокументАктСверки = Ст.ДокументАктСверки;
               дд = дд + ?(ЗначениеЗаполнено(дд), ", " , "" ) + Строка(Док.Номер);
 //          Иначе                    
 //              Док = Ст.ДокументВозникновенияЗадолженности;
 //              ДокументАктСверки = Ст.ДокументАктСверки;
 //              Конт = Ст.Контрагент;
 //              дд = Док;
 //              Прервать;
 //          КонецЕсли;
       ИначеЕсли Стр.ВидЗадолженности = Перечисления.ВидыЗадолженности.Кредиторская И Ст.СуммаКт > 0 Тогда
.......

1. закомментировал то, что считаю вредным;
2. док может быть по Дт и Кт одновременно?
5 OASU
 
18.10.11
09:29
(4) 1. да, спасибо, у меня уже тоже получилось ))
2. ничего страшного для Дт и Кт разные кнопки и разные таблицы предусмотренны.

Еще подскажите пожалуйста, нужно сначало вывести название документов (например: Платежное поручение №11, 12, 13...), без даты и времени документа.
Как сделать? использовать "Формат"?
6 jenny_tea
 
18.10.11
09:32
можно использовать типЗнч
7 НЕА123
 
18.10.11
09:34
Док.Метаданные().Синоним
8 OASU
 
18.10.11
10:45
(7) о, здорово. Спасибо всем.