|
Груповое измененение табличной части документов. | ☑ | ||
---|---|---|---|---|
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
|
да че ты пристал со стартманями, я вообще хз что это такое :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |