Имя: Пароль:
1C
 
работа со стандартной обработкой "загрузка данны из табличного документа"
0 fdgd98
 
01.12.14
09:37
Скачал данную обработку для загрузки данных в табличную часть документа. В табличной части реквизит "наименование" имеет тип "справочникссылка", так вот в этот реквизит эта обработка не записывает... изза того что тип реквизита справочникссылка. Есть у кого опыт работы с данной обработкой? Может она записывает всетаки в такие типы? Подскажите как ее настроить?
1 Cube
 
01.12.14
09:39
(0) Справку к обработке почитать не предлагать?
2 fdgd98
 
01.12.14
09:45
(1) справку не нашел
3 fdgd98
 
01.12.14
09:52
ап
4 Cube
 
01.12.14
09:57
(2) Открой обработку в режиме "Предприятие" и нажми F1 (кнопочка на клавиатуре такая, в правом верхнем углу клавиатуры ищи)
5 Cube
 
01.12.14
10:32
(4) Хм, странно, но в моей обработке тоже справки нет... :)
Видимо, её выпилили с какого-то момента...

Тогда, в двух словах, для ссылочных типов необходимо на закладке "Настройка" указать алгоритм поиска элементов.
6 fdgd98
 
01.12.14
11:32
(5) вообщем во вкладке ""настройка" режим загрузки выбрал вычислить ...и в выражении написал код:

Спр = Справочники.Номенклатура.СоздатьЭлемент();
Спр.Наименование = ТекстЯчейки;
Спр.Записать();

объект = СсылкаИсточника.ПолучитьОбъект();
таблчасть = объект.Приходная;
стр    = таблчасть.Добавить();
стр.Наименование = Справочники.Номенклатура.НайтиПоНаименованию(ТекстЯчейки);
объект.Записать();
7 fdgd98
 
01.12.14
11:32
Выходит такая ошибка((( в чем дело?


Ошибка при вызове метода контекста (Записать): Операция не может быть выполнена из-за несоответствия версии или отсутствия записи базы данных (возможно, запись была изменена или удалена)!
Объект не записан: ДокументТабличнаяЧастьСтрока.ПриходнаяНакладная.Приходная.
8 Михаил Козлов
 
01.12.14
11:39
Напишите, что Вы хотите (загрузить в справочник, в ТЧ документа или в регистр сведений), и как выглядит исходный табличный документ. Обычно для установки ссылочных данных (например, номенклатура) указывают способ Искать, номер столбца и способ поиска (по коду, наименованию или реквизиту).
9 fdgd98
 
01.12.14
11:47
(8) запись в ТЧ документа в реквизит справочникссылка при этом если данные в справочнике такие не находит , то записывает в этот справочник.
10 fdgd98
 
01.12.14
11:47
(8) такое не прокатывает т.е. способ искать не подходит
11 hhhh
 
01.12.14
11:49
(10) а как же вы найдете нужную номенклатуру без поиска?
12 Cube
 
01.12.14
11:50
(7) Потому что ты не внимательно прочитал описание... Переменная "Результат" у тебя где?
13 fdgd98
 
01.12.14
11:53
(12)где то летает)шутка..не знаю, а в этой переменной что содержиться?
14 Cube
 
01.12.14
11:54
(13) Скопипастю для тебы безвозмездно:

В тексте выражения можно использовать следующие предопределенные параметры:
   Результат      - результат вычисления (на входе - значение по умолчанию)
   ТекстЯчейки    - текст текущей ячейки
   ТекстыЯчеек    - массив текстов ячеек строки
   ТекущиеДанные  - структура загруженных значений
   ОписаниеОшибки - описание ошибки, выводимое в примечание ячейки и в окно сообщений
Встроенные функции, функции общих модулей.
15 fdgd98
 
01.12.14
11:58
(14) куб, объясни где в коде ошибка((((
16 Cube
 
01.12.14
12:04
(15) Да везде - выкинь свой код и пиши как-то так:

Результат = Справочники.Номенклатура.НайтиПоНаименованию(ТекстЯчейки);
Если Результат = Неопределено Тогда
    НоваяНоменклатура = Справочники.Номенклатура.СоздатьЭлемент();
    НоваяНоменклатура.Наименование = ТекстЯчейки;
    НоваяНоменклатура.Записать();
    Результат = НоваяНоменклатура.Ссылка;
КонецЕсли;
17 Cube
 
01.12.14
12:06
+(16) Писал на коленке прямо тут в поле ответа, бантики сам прилепишь...
18 fdgd98
 
01.12.14
13:17
(17) ясно, тут идет запись в справочник, но мне нужно также и в документ, как раз таки в документе и записать невозможно было из=за предыдущей ошибки
19 Cube
 
01.12.14
13:37
(18) Сегодня, вроде, не пятница, а ты уже бухой)))))
Этот (16) код исполняется для каждой строки твоего табличного документа и ищет в справочнике элемент по наименованию, а если не находит - создает его. В переменную "Результат" в любом случае попадает ссылка на элемент справчника, которая подставляется в ТЧ документа, в который ты производишь загрузку....
20 fdgd98
 
01.12.14
14:44
(19) Спасибо, точно!
21 Михаил Козлов
 
01.12.14
16:22
(20) Только не забудьте для новой номенклатуры создать единицы измерения (единица хранения остатков, как минимум).
22 fdgd98
 
10.12.14
10:13
ап
23 fdgd98
 
10.12.14
10:16
интересно работает

Результат = Справочники.Номенклатура.НайтиПоНаименованию(ТекстЯчейки);
Если Результат = Неопределено Тогда
    НоваяНоменклатура = Справочники.Номенклатура.СоздатьЭлемент();
    НоваяНоменклатура.Наименование = ТекстЯчейки;
    НоваяНоменклатура.Записать();
    Результат = НоваяНоменклатура.Ссылка;
КонецЕсли;


гружу новый документ xls в этой обработке, открываю документ(куда парсятся данные из иксель) а в наименовании пусто в некоторых строках. в чем дело не пойму.
24 fdgd98
 
10.12.14
10:22
т.е. если нету в справочнике, то создается номенклатура А вот если она уже есть, то хз что делать
25 Cyberhawk
 
10.12.14
10:25
(24) обновляй наименование в ветке Иначе
26 fdgd98
 
10.12.14
10:27
(25) подскажи как?
27 Cyberhawk
 
10.12.14
10:30
Если Результат = Неопределено Тогда
    НоменклатураОбъект = Справочники.Номенклатура.СоздатьЭлемент();
Иначе
    НоменклатураОбъект = Htpekmnfn/GjkexbnmJ,]trn()$
КонецЕсли;

НоменклатураОбъект.Наименование = ТекстЯчейки;
НоменклатураОбъект.Записать();
Результат = НоменклатураОбъект.Ссылка;
28 Cyberhawk
 
10.12.14
10:30
*Htpekmnfn/GjkexbnmJ,]trn()$ = Результат.ПолучитьОбъект();
29 fdgd98
 
10.12.14
10:55
(27) ошибка: Элемент не выбран! .. че не пойму
30 ВРедная
 
10.12.14
10:56
Результат = Неопределено

надо заменить на сравнение с пустым значением твоего типа
31 ВРедная
 
10.12.14
10:56
НайтиПоНаименованию если не находит - возвращает пустое значение, а не неопределено
32 fdgd98
 
10.12.14
10:57
(30) Результат = Справочники.Номенклатура.ПустаяСсылка()
33 fdgd98
 
10.12.14
11:00
Результат = Справочники.Номенклатура.НайтиПоНаименованию(ТекстЯчейки);
Если Результат = Справочники.Номенклатура.ПустаяСсылка() Тогда
    НоменклатураОбъект = Справочники.Номенклатура.СоздатьЭлемент();
Иначе
    НоменклатураОбъект = Результат.Ссылка.ПолучитьОбъект();
КонецЕсли;

НоменклатураОбъект.Наименование = ТекстЯчейки;
НоменклатураОбъект.Записать();
Результат = НоменклатураОбъект.Ссылка;
34 fdgd98
 
10.12.14
11:01
но также...в документе в некоторых строках в наименовании..пусто
35 fdgd98
 
10.12.14
11:03
а когда загружаю другой документ(хотя этот документ загружался и его данные уже записаны в справочнике), то все ок. В документе во всех наименованиях заполнено.
36 fdgd98
 
10.12.14
11:07
все нормально! не дообновилось похоже
37 fdgd98
 
10.12.14
11:07
последний код верен
38 fdgd98
 
12.12.14
16:33
снова трабла


как сейчас единицу измерения записать в справочник номенклатура, что то написал , но не проходит:

Результат = Справочники.Номенклатура.НайтиПоНаименованию(ТекстЯчейки);
Если Результат = Справочники.Номенклатура.ПустаяСсылка()  Тогда
    НоменклатураОбъект = Справочники.Номенклатура.СоздатьЭлемент();
    НоменклатураОбъект.Наименование = ТекстЯчейки;
    Для каждого стр из ТекстыЯчеек цикл
               НоменклатураОбъект.ЕдиницаИзмерения = стр.ЕдиницаИзмерения
    конеццикла;    
    НоменклатураОбъект.Записать();
Иначе
    НоменклатураОбъект = Результат.Ссылка.ПолучитьОбъект();
КонецЕсли;

    Результат = НоменклатураОбъект.Ссылка;
39 fdgd98
 
12.12.14
16:35
единица измерения в справочнике номенклатуре является реквизитом справочник ссылка
40 fdgd98
 
12.12.14
16:43
ап
41 fdgd98
 
12.12.14
16:49
единицу измерения т.е. в строке 3 , записал в справочник единиц измерений.

номенклатуру в строку 4 , записал в наименование в справочника номекнатуры.

А теперь надо записать единицу измерения в справочник номенклатуры в реквизит единица измерения. Как это сделать?