Имя: Пароль:
1C
1С v8
Создание документов на основании ТЗ
,
0 Валидатор
 
10.01.14
14:52
Есть таблица документов, в ней куча строк с другими документами (списание товаров), нужно сделать, чтобы для всех этих списаний создавалось 1 ПТИУ с количеством товаров из каждого списания из ТЗ. Как сделать такое условие? делал так:
Для каждого строка из ВремТаблица Цикл
Если ТипЗНЧ(Строка.ДокументПриемник) = Тип("ДокументСсылка.СписаниеТоваров") Тогда
ДокументПоступления = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
Иначе
Продолжить;
КонецЕсли;

КонецЦикла;
Но ведь в таком случае на каждую строку будет новый документ создаваться
1 Валидатор
 
10.01.14
14:53
А перед циклом тоже не создать документ, потому что мы сначала должны посмотреть какой тип в Строка.Документприменик
2 zladenuw
 
10.01.14
14:54
ДокументПоступления = Неопределено;
Для каждого строка из ВремТаблица Цикл
Если ТипЗНЧ(Строка.ДокументПриемник) = Тип("ДокументСсылка.СписаниеТоваров") и ДокументПоступления = Неопределено Тогда
ДокументПоступления = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
Иначе
//заполняем
КонецЕсли;

КонецЦикла;
3 МихаилМ
 
10.01.14
14:55
офильтруйте в тз нужные данные и создайте  ТЧ на основе отфильтрованной
4 Валидатор
 
10.01.14
14:55
(2) на иначе нужно получать же документ будет так?
5 Валидатор
 
10.01.14
14:58
а хотя нет, у нас же про неопределено есть условие
6 Валидатор
 
10.01.14
15:00
и в ТЗ моей есть документы списания с датами документа, а поступление мне нужно создавать датой на день меньше, чем минимальная дата списания, вот тут как быть?
7 Валидатор
 
10.01.14
15:18
и вот еще:
Для каждого строка из ВремТаблица Цикл
        Если ТипЗНЧ(Строка.ДокументПриемник) = Тип("ДокументСсылка.ТребованиеНакладная") и ДокументПоступления = Неопределено Тогда

в таком случае цикл идет по 1 строке ВремТаблицы, создается документ, потом цикл заканчивается, и идет по второй строчке, тем самым пропуская заполнение данных из ТЧ первого документа
8 Валидатор
 
10.01.14
15:18
ДокументПоступления = Неопределено;
    Для каждого строка из ВремТаблица Цикл
        Если ТипЗНЧ(Строка.ДокументПриемник) = Тип("ДокументСсылка.ТребованиеНакладная") и ДокументПоступления = Неопределено Тогда
            ДокументПоступления = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
            ДокументПоступления.Дата = ТекущаяДата();
        Иначе
            Для каждого стр из строка.ДокументПриемник.Материалы Цикл
            ТЧДокумента = ДокументПоступления.Товары.Добавить();
            ТЧДокумента.Номенклатура = стр. Номенклатура;
            ТЧДокумента.Количество = стр.Количество;
            КонецЦикла;
        КонецЕсли;
        Попытка
        ДокументПоступления.Записать();
    Исключение
        Сообщить(ОписаниеОшибки());
        КонецПопытки;
    КонецЦикла;
9 Валидатор
 
10.01.14
15:40
ап
10 Zubek
 
10.01.14
16:39
Если Нужен один документ ПТИУ, то создай его до цикла по ВремТаблице. А внутри цикла добавляй только новые строки в ТЧ. После выхода из цикла запиши документ
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший