|   |   | 
| 
 | Груповое измененение табличной части документов. | ☑ | ||
|---|---|---|---|---|
| 0
    
        Данил Сергеевич 12.06.13✎ 10:48 | 
        Надо в документах "Платёжное Поручение входящее" изменить реквизит табличной части "Проект"(при условии если оно незаполенно) на значение Документ.ДоговорКонтрагента.ОсновнойПроект
  Делаю внешнюю обработку Пишу Процедура КнопкаВыполнитьНажатие(Кнопка) Докум = Документы.ПлатежноеПоручениеВходящее.Выбрать(); Пока Докум.Следующий() Цикл док = Докум.ПолучитьОбъект(); Для Каждого СтрокаТЧ ИЗ док.РасшифровкаПлатежа Цикл Если СтрокаТЧ.Проект = Неопределено Тогда СтрокаТЧ.Проект = Докум.ДоговорКонтрагента.ОсновнойПроект; док.Записать(РежимЗаписиДокумента.Проведение); КонецЕсли; КонецЦикла; КонецЦикла; КонецПроцедуры Всё вроде работает, но часть документов не обрабатывается, а остается так же пусто в табличной части значение "Проект". Что не так? | |||
| 1
    
        Данил Сергеевич 12.06.13✎ 10:48 | 
        Конфигурация УПП, делаю в демобазе     | |||
| 2
    
        shuhard 12.06.13✎ 10:54 | 
        (0)[ док.Записать(РежимЗаписиДокумента.Проведение);
  КонецЕсли; КонецЦикла; КонецЦикла;] всё не так | |||
| 3
    
        jsmith82 12.06.13✎ 10:55 | 
        пустой проект в договоре?     | |||
| 4
    
        Данил Сергеевич 12.06.13✎ 11:03 | 
        (2) А как сделать?     | |||
| 5
    
        Mitriy 12.06.13✎ 11:04 | 
        Сервис - Групповая обработка справочников и документов     | |||
| 6
    
        Kreont 12.06.13✎ 11:06 | 
        (5) через "это" не получится
  (0) так может в договоре "ОсновнойПроект" не заполнен? | |||
| 7
    
        Данил Сергеевич 12.06.13✎ 11:08 | 
        (6)Основной проект заполнен везде, это первым делом сделал и как раз "груповой обработкой..." а вот что мне надо ей не делается вы правы.     | |||
| 8
    
        Kreont 12.06.13✎ 11:12 | 
        ну для начала 100% строку:
  док.Записать(РежимЗаписиДокумента.Проведение); вынеси за цикл внутренний | |||
| 9
    
        Kreont 12.06.13✎ 11:15 | 
        и проверку лучше делать через Если НЕ ЗначениеЗаполнено(СтрокаТЧ.Проект)
  может у тебя определено но не заполнено :) | |||
| 10
    
        Данил Сергеевич 12.06.13✎ 11:24 | 
        (9) Да это уже понял, спасибо и сделал вот так. 
  Процедура КнопкаВыполнитьНажатие(Кнопка) Докум = Документы.ПлатежноеПоручениеВходящее.Выбрать(); //НачДата,КонДата Пока Докум.Следующий() Цикл док = Докум.ПолучитьОбъект(); Для Каждого СтрокаТЧ ИЗ док.РасшифровкаПлатежа Цикл Если ЗначениеЗаполнено(СтрокаТЧ.Проект) = Ложь Тогда СтрокаТЧ.Проект = Докум.ДоговорКонтрагента.ОсновнойПроект; КонецЕсли; КонецЦикла; док.Записать(РежимЗаписиДокумента.Проведение); КонецЦикла; КонецПроцедуры И вроде и там где не получалось изменилось, но остался один документ "Платежное поручение входящее", где в табличной части несколько строк, там не заполнено(. Что ещё можно поменять чтоб машина заработала? | |||
| 11
    
        Данил Сергеевич 12.06.13✎ 11:32 | 
        (9)Kreont выручай я тебе СтартМаню переведу)))     | |||
| 12
    
        Kreont 12.06.13✎ 11:34 | 
        да один док.вручную исправь уже :)     | |||
| 13
    
        Данил Сергеевич 12.06.13✎ 11:41 | 
        (12) Надо чтоб программа отрабатывала, так как я потом на живую базу буду обрабатывать, а там может и все документы будут с множеством строк, да и сюда же мне потом надо будет затолкать такую же обработку для других типов документов: "Платежное поручение искходящее", "Расходный кассовый ордер", и т.д...     | |||
| 14
    
        Dionis Sergeevich 12.06.13✎ 11:50 | 
        (13) Так что не работает? Не все документы в выборку попадают?     | |||
| 15
    
        Kreont 12.06.13✎ 11:51 | 
        Еще неувязку вижу, смотри:
  Докум = Документы.ПлатежноеПоручениеВходящее.Выбрать(); выбирает вроде все документы (и помеченные, и непроведенные тоже), а потом ниже уже проводишь я б вообще выборку через запрос написал... а с тч непонятно, по коду вроде норм :( пройдись пошагово отладчиком по тому документу где несколько строк | |||
| 16
    
        Dionis Sergeevich 12.06.13✎ 11:56 | 
        Да кстати, запросом можно выбрать сразу тч и поставить условия на пустую ссылку, проведение и пометку удаления     | |||
| 17
    
        Данил Сергеевич 12.06.13✎ 17:44 | 
        (15) Разобрался всё работает, щас хочу оптимизировать через запрос, пишу :
  Запрос = Новый Запрос; Запрос.Текст = " ВЫБРАТЬ |Ссылка, |Организация, |РасшифровкаПлатежа.ДоговорКонтрагента, |РасшифровкаПлатежа.Проект КАК Проект |Из |Документ.ПлатежноеПоручениеИсходящее |Где |РасшифровкаПлатежа.Проект = НЕОПРЕДЕЛЕНО"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ... А как дальше то всё это дело написать, чтоб реквизит табличной части "Проект" принял занчение реквизита "ДоговорКонтрагента.ОсновнойПроект" той же табличной части и потом всё это дело записалось... | |||
| 18
    
        Данил Сергеевич 12.06.13✎ 18:07 | 
        Даю СтартМани за подсказку)))     | |||
| 19
    
        Данил Сергеевич 12.06.13✎ 18:32 | 
        Разобрался, может кому поможет:
  Запрос = Новый Запрос; Запрос.Текст = " ВЫБРАТЬ |Ссылка, |Организация, |РасшифровкаПлатежа.Проект |Из |Документ.ПлатежноеПоручениеИсходящее |Где |РасшифровкаПлатежа.Проект = НЕОПРЕДЕЛЕНО"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Док = Выборка.Ссылка.ПолучитьОбъект(); Для каждого Строка Из Док.РасшифровкаПлатежа Цикл Строка.Проект = Строка.ДоговорКонтрагента.ОсновнойПроект; КонецЦикла; Док.Записать(РежимЗаписиДокумента.Проведение); КонецЦикла; | |||
| 20
    
        Kreont 12.06.13✎ 18:46 | 
        да че ты пристал со стартманями, я вообще хз что это такое :)     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |