Имя: Пароль:
1C
1С v8
КД. Создать новый элемент справочника в приемнике, при отсутствии источника.
0 LoydWeb
 
24.07.11
13:02
Добрый день!
ПКО - "СчетНаОплатуПокупателю", ПКС (Источник - Пусто, Приемник - Контрагент)

Хочу создать новый элемент справочника контрагенты при следующей ситуации:

В ПКС пишу "ПередВыгрузкой"

Если ЗначениеЗаполнено(Источник.Customer) Тогда
    Значение = Источник.Customer;
    ИмяПКО = "Контрагенты";
ИначеЕсли Не ЗначениеЗаполнено(Источник.Customer) И ЗначениеЗаполнено(Источник.Client) Тогда
    Значение = Источник.Client;
    ИмяПКО = "Клиенты";
Иначе
    Сообщить("Оба поля пусты");
Собственно что дальше делать, необходимо создать новый элемент справочника контрагенты с наименованием допустим "ФизЛицо" если в источнике оба поля Customer и Client пусты.
1 Генератор
 
24.07.11
13:04
Значение = Новый Структура("Код,Наименование","12345","ФизЛицо");
2 LoydWeb
 
24.07.11
13:12
Если ЗначениеЗаполнено(Источник.Customer) Тогда
    Сообщить("Контрагенты");
    Значение = Источник.Customer;
    ИмяПКО = "Контрагенты";
ИначеЕсли Не ЗначениеЗаполнено(Источник.Customer) И ЗначениеЗаполнено(Источник.Client) Тогда
    Сообщить("Клиенты");
    Значение = Источник.Client;
    ИмяПКО = "Клиенты";
Иначе
    Сообщить("Оба поля пусты");
Значение = Новый Структура("Код,Наименование","12345","ФизЛицо");
Элемент не хочет создаваться(
3 Aleksey
 
24.07.11
13:18
А имя ПКО что не указал?
4 Генератор
 
24.07.11
13:19
я те не готовое решение написал, поля все предусмотри которые у тебя по правилу идут
5 LoydWeb
 
24.07.11
13:32
Делал так

Если ЗначениеЗаполнено(Источник.Customer) Тогда
    Сообщить("Контрагенты");
    Значение = Источник.Customer;
    ИмяПКО = "Контрагенты";
ИначеЕсли Не ЗначениеЗаполнено(Источник.Customer) И ЗначениеЗаполнено(Источник.Client) Тогда
    Сообщить("Клиенты");
    Значение = Источник.Client;
    ИмяПКО = "Клиенты";
Иначе
    Сообщить("Оба поля пусты");
    //Значение = Новый Структура("Код,Наименование,ЮрФизЛицо",Источник.Номер,"ФизЛицо","ФизЛицо");
    ИмяПКО = "Контрагенты";
     ИсходящиеДанные = Новый Структура;
     ИсходящиеДанные.Вставить("Код", Источник.Номер);
        ИсходящиеДанные.Вставить("Наименование", "Физ.Лицо");
     ИсходящиеДанные.Вставить("ПометкаУдаления", Ложь);
     ИсходящиеДанные.Вставить("ЭтоГруппа", Ложь);
     ИсходящиеДанные.Вставить("Родитель", "");
     ИсходящиеДанные.Вставить("TIN", "");
     ИсходящиеДанные.Вставить("KPP", "");
     ИсходящиеДанные.Вставить("LegacyName","Физ.Лицо");
     ИсходящиеДанные.Вставить("ContactPersons", "");
     ИсходящиеДанные.Вставить("ContactPerson", "");
     ИсходящиеДанные.Вставить("Remarks", "");
     ИсходящиеДанные.Вставить("Ref", "");
     ИсходящиеДанные.Вставить("LegacyAddress", "");
         ИсходящиеДанные.Вставить("PostAddress", "");
         ИсходящиеДанные.Вставить("Phone", "");
         ИсходящиеДанные.Вставить("Fax", "");
     ИсходящиеДанные.Вставить("EMail", "");
         Значение = ИсходящиеДанные;
    КонецЕсли;
Т.е все поля что есть указал. Но есть нюанс(
В ПКО Контрагенты в ПКС Родитель прописано следующие
Если Источник.Уровень() = 0 Тогда
    Значение = 1;
    ИмяПКО = "СоздатьПапкуКонтрагентыИзРумбы";
КонецЕсли;
Соответственно если это закомментить то все работает, но мне нужно контрагентов по папкам ложить, а если не комментить то вылетает следующая ошибка

ОписаниеОшибки         =  Ошибка в обработчике события ПередВыгрузкой (свойства)
   ПКО                    =  Контрагенты  (Справочник: Контрагенты)
   ПКС                    =  4  (Родитель --> Родитель)
   Объект                 =  Structure  (Структура)
   СвойствоПриемника      =  Родитель  (СправочникСсылка.Контрагенты)
   Обработчик             =  ПередВыгрузкойСвойства
   ОписаниеОшибки         =  Метод объекта не обнаружен (Уровень)
   ПозицияМодуля          =  (1)
   КодСообщения           =  55
   ПозицияМодуля          =  ExternalDataProcessor.УниверсальныйОбменДаннымиXML.ObjectModule(1618)
Почему так происходит подскажите пожалуйста
6 Генератор
 
24.07.11
13:37
проверяй тип источника в пкс родитель, у тебя он "структура", а у нее нет метода "уровень"
7 LoydWeb
 
24.07.11
13:42
Если просто ПВД Контрагенты использовать то он контрагентов нормально по папкам раскидывает, а вот если через создание структуры делать, то начинаются ошибки(
8 Генератор
 
24.07.11
13:52
(7) ну я про это и пишу, поставь условие по типу источника
9 LoydWeb
 
24.07.11
14:13
Генератор спасибо большое за совет, вот что написал
Если ТипЗНЧ(Источник) = Тип("СправочникСсылка.Customers") Тогда
     Если Источник.Уровень() = 0 Тогда
      Значение = 1;
      ИмяПКО = "СоздатьПапкуКонтрагентыИзРумбы";
   КонецЕсли;
ИначеЕсли ТипЗНЧ(Источник) = Тип("Структура")Тогда
   Если Источник.ЭтоГруппа Тогда
        Значение = 1;
        ИмяПКО = "СоздатьПапкуКонтрагентыИзРумбы";
   КонецЕсли;    
КонецЕсли;

Вот только вновь созданое физ.лицо в папку не хочет идти(
10 Генератор
 
24.07.11
14:17
А зачем где структура условие источник.этоГруппа ? убери его
11 LoydWeb
 
24.07.11
14:21
Все заработало)) спасибо большое!