Имя: Пароль:
1C
1С v8
Конвертация табличной части документа
0 DanJer74
 
15.06.16
16:24
Приветствую!
Впал в жесткий тупняк - не могу сообразить вот какой момент.
Надо выгрузить документ Поступление. ТАм есть реквизит "Контрагент" - он строковый. Мне нужно в табличной части оставить только Контрагентов вот по такому условию (это я написал в событие "Перед выгрузкой" в правиле обмена):

Для каждого Строка Из Объект.Товары Цикл
    Если Найти(Строка.Контрагент,"CHMZ") <> 0 Тогда
///////////////
         ЧТО_ТО НАДО НАПИСАТЬ
//////////////
ОБъект.Товары.Удалить(Строка);
    КонецЕсли;
Конеццикла;

Так не удаляет - ошибка "Недоступен для изменения"
Подскажите пожалуйста, что туда прописать нужно, чтобы остались только нужные мне строки из ТЧ
1 Зая Бусечка
 
15.06.16
16:25
В правиле конвертации группы свойств. И Отказ.
2 DanJer74
 
15.06.16
16:26
Если Найти(Строка.Контрагент,"CHMZ") <> 0 Тогда
Отказ = ИСТИНА;
    КонецЕсли;
Конеццикла;
Вот в таком ключе?
3 DanJer74
 
15.06.16
16:38
Для каждого Строка Из Товары Цикл
    Если Найти(Строка.Контрагент,"CHMZ") = 0 Тогда
            Отказ = Истина;
    КонецЕсли;
Конеццикла;

Пишу вот такое в ПКГС Товары - ошибка вываливается в событии "ПриВЫгрузке"
4 Худой
 
16.06.16
05:08
А что говорит если сделать "ПолучитьОбъект()"?
По моему, без этого оператора никаких изменений делать не получится.
Как пример
Если Пользователь <> Неопределено Тогда
    ПользовательОбъект = Пользователь.ПолучитьОбъект();
    Если ПользовательОбъект <> Неопределено Тогда
        ПользовательОбъект.Удалить();
    КонецЕсли;
КонецЕсли;
5 Mankubus
 
16.06.16
05:59
в ПКГС нужно написать КоллекцияОбъектов = Объект.Товары
И в этой коллекции удалить строки, которые не нужно переносить
6 DanJer74
 
16.06.16
08:08
Все, сделал. В событии ПКГС "Товары" написал следующее

Если ОбъектКоллекции.Контрагент<>"CHMZ"
    Тогда
    Отказ = ИСТИНА;
Конецесли;
Всем спасибо за помощь :)
7 DanJer74
 
16.06.16
08:08
Событие "Перед выгрузкой"
8 DanJer74
 
17.06.16
08:07
Хотелось бы еще вот что чпросить. Как мне у документа после загрузки в другую базу задать склад и организацию?
9 DanJer74
 
17.06.16
08:09
Есть вариант прокатиться после обработкой
10 Mankubus
 
17.06.16
08:30
(8) в событии после загрузки и пиши.
Объект.Склад = мойсклад
11 DanJer74
 
17.06.16
10:12
А можно как-нибудь через конвертацию сделать поступление из реализации?
12 mistеr
 
17.06.16
11:42
(11) Можно, делай.
13 DanJer74
 
17.06.16
13:32
Да я серьезно спрашиваю - такое реально сделать?
14 mistеr
 
17.06.16
14:16
(13) И я серьезно. Можно любой объект сделать из любого, даже просто из ничего.
15 GANR
 
17.06.16
14:29
(13) Делаешь правило конвертации. Объект-источник ставишь реализацию, а приемник - поступление. Ну и свойства прописывай. Можно вообще создать поступление из произвольной структуры.
16 DanJer74
 
17.06.16
23:25
(15) Капец. Вот я долбоящер. Что же я не догадался то....столько времени потерял, не посмотрел толком ничего. Спасибо тебе огромное, добрый человек. Все сделал за пару часов. :)
17 DanJer74
 
21.06.16
12:49
Хотелось бы еще вот что узнать. Не могу сообразить, как выгрузить контрагентов по части наименования?
18 Mankubus
 
21.06.16
12:56
(17) поясни подробнее
19 DanJer74
 
21.06.16
12:58
(18) У меня есть куча контрагентов, у которых в наименовании есть "CHMZ". Вот мне нужно выгрузить только их.
20 Mankubus
 
21.06.16
13:04
(19) В ПВД перед выгрузкой пишешь
Если Найти(Объект.Наименование,"CHMZ") = 0 Тогда Отказ = Истина;
21 DanJer74
 
21.06.16
13:20
Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML(1612)}: Ошибка в обработчике события ПередОбработкойПравилаВыгрузки
    ПВД                    =  Контрагенты
    Обработчик             =  ПередОбработкойВыгрузкиДанных
    ОписаниеОшибки         =  Значение не является значением объектного типа (Наименование)
    ПозицияМодуля          =  (1)
    КодСообщения           =  31
Вот такую ошибку выдает
22 DanJer74
 
21.06.16
13:21
А, не грузит
23 DanJer74
 
21.06.16
13:21
Накосячил
24 DanJer74
 
21.06.16
13:55
А можно это ускорить  - запросом, например дернуть?
25 Mankubus
 
21.06.16
13:57
(24) разрешаю
26 bodri
 
21.06.16
13:57
"CHMZ" в начале наименования или в любой части?
27 DanJer74
 
21.06.16
14:06
(26) В начале
28 bodri
 
21.06.16
14:13
В (0) сказано, что Контрагент - это текстовое поле документа, а в (19), что надо выгрузить контрагентов. Есть справочник контрагентов или вы хотите текстовые поля выгрузить? Если текстовые поля выгрузить, тогда скорей всего в ПВД перед выгрузкой писать:
Если Найти(Объект.Контрагент,"CHMZ") = 0 Тогда
Отказ = Истина;
29 bodri
 
21.06.16
14:14
(28) или  
Если Лев(Объект.Наименование,4) = "CHMZ" Тогда
Отказ = Истина;
30 DanJer74
 
21.06.16
14:15
(28) Мне надо притащить из справочника Контрагенты
31 bodri
 
21.06.16
14:15
(29) поправка Лев(Объект.Наименование,4) = Лев(Объект.Контрагент,4)
32 DanJer74
 
21.06.16
14:15
(28) Я такое писал, но тормоза дичайшие
33 bodri
 
21.06.16
14:16
(30) тогда попробуйте (29)
34 Mankubus
 
21.06.16
14:35
В ПВД выбери способ выборки - Произвольный алгоритм и напиши свой запрос.
Выгружай с помощью процедуры ВыгрузитьПоПравилу
35 DanJer74
 
21.06.16
16:10
ОК
36 GANR
 
21.06.16
17:39
(35) Ты в курсе, что ты можешь отлаживать обработчики КД? http://its.1c.ru/db/metod8dev/content/2942/hdoc