Имя: Пароль:
1C
1С v8
Обращение к табличной части РеализацииТоваров и Услуг
0 sirbure
 
24.12.14
16:32
Добрый день! Не могу понять как изменить субконто в табличной части док-та Реализация товаров и услуг. Про Групповую обработку знаю, но хочу сам). Задумка какая: получаю по ссылке нужный документ, короче часть кода:
Ссылка=СтрокаТаблицы.Ссылка;
    Рт=Ссылка.ПолучитьОбъект();
Для каждого СтрокаТаблицы Из Товары Цикл
Субконто=Справочники.НоменклатурныеГруппы.НайтиПоНаименованию("Основная номенклатурная группа");
Рт.Записать();
КонецЦикла;             
            
Соответственно не работает, что не так?
1 lxndr
 
24.12.14
16:33
как бы тебя помягче оскорбить...
2 shuhard
 
24.12.14
16:34
(1) при 3-х ошибках  в  6 строчках кода мягко не выйдет
3 Михаил Козлов
 
24.12.14
16:35
Наверное, СтрокаТаблицы.Субконто =  (если есть такой реквизит ТЧ).
В цикле искать по наименованию не обязательно: можно перед циклом.
4 SerF_2011
 
24.12.14
16:35
каждый когда то писал что то подобное) и не спорьте.
5 lxndr
 
24.12.14
16:36
> Из "Товары" Цикл
Это откуда?
6 lxndr
 
24.12.14
16:36
> Субконто = ...
Это куда?
7 Лефмихалыч
 
24.12.14
16:36
(0) не так решительно всё
8 lxndr
 
24.12.14
16:37
> Ссылка = ....Ссылка
Это зачем?
9 anatoly
 
24.12.14
16:38
суровый код...
10 salvator
 
24.12.14
16:38
Начало нормально. Дальше как-то не очень...
11 Лефмихалыч
 
24.12.14
16:39
РеализацияОбъект = СтрокаТаблицы.Ссылка.ПолучитьОбъект();
ОсновнаяГруппа = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию("Основная номенклатурная группа");
Для каждого ТоварыСтрока из РеализацияОбъект.Товары Цикл
   ТОварыСтрока.Субконто = ОсновнаяГруппа; // но это только в том случае, если Субконто - это реквизит табличной части и у него тип Справочник.НоменклатурныеГруппы
КонецЦикла;
РеализацияОбъект.Записать(); // вот тут возможно еще и провести стоит?
12 sirbure
 
24.12.14
16:40
(8) Получаю ссылку на Объект из другой таблицы, не важно)
13 Chameleon1980
 
24.12.14
16:44
Ладно тс хоть про получитьОбъект догадался или заранее кто подсказал.
14 sirbure
 
24.12.14
16:46
(11) Думал об этом, сейчас проверю) (13) кое-что понимаю))

Не совсем понимаю как работать с полученным объектом)
Изучаю научным тыком)
15 Chameleon1980
 
24.12.14
16:55
(14) просто нередко пытаются работать со ссылкой, как с объектом. Против то ничего не имею.
16 sirbure
 
24.12.14
16:56
(11) Не работает(
17 Chameleon1980
 
24.12.14
16:57
(16) комментарии в примере читайте
18 salvator
 
24.12.14
16:59
(16) Хоть текст ошибки что-ли выложил... Не работает у него...
19 sirbure
 
24.12.14
17:00
(17) Дык так оно и есть!
20 sirbure
 
24.12.14
17:00
(18) Ошибки нет, не изменяется номенклатурная группа.
21 salvator
 
24.12.14
17:03
(20) Заполни субконто с помощью групповой обработки справочников и документов и не мучайся.
22 1976vas
 
24.12.14
17:04
(21) Или посмотри как она заполняет
23 salvator
 
24.12.14
17:07
+(21) Скорее всего у тебя реквизит "Субконто" имеет тип, отличный от СправочникСсылка.НоменклатурныеГруппы.
Посмотри какой счет доходов стоит, и есть ли у него этот вид субконто. Если не ошибаюсь, от него зависит.
24 sirbure
 
24.12.14
17:07
(21) Блин, да в курсе я, про неё, я хочу вот так) Я понимаю как изменить реквизиты док-та, а как изменить значения в таблице не понимаю) как я понимаю если бы я это делал не в цикле, а для отдельной строки например 2, то код был бы примерно таким:
ЭтотОбъект.Товары[2].Субконто="Основная номенклатурная Группа" да?
25 Chameleon1980
 
24.12.14
17:08
типы совпадают?
26 Chameleon1980
 
24.12.14
17:09
(24) тока не строке оно скорее всего равно
27 Chameleon1980
 
24.12.14
17:10
ну и отладчик в руки уже
28 Михаил Козлов
 
24.12.14
17:11
(24) Нет. Субконто вряд ли может быть строкой.
Посмотрите в отладчике значение субконто в строке после присвоения. Если пусто - типы не совпадают. Если нормально, значит объект не записали.
29 floody
 
24.12.14
17:13
(26) (28) Блин, да в курсе он, но хочет вот так)
30 Chameleon1980
 
24.12.14
17:16
(29) :) не уверен
31 sirbure
 
24.12.14
17:18
(25) да, Типы совпадают, стандартная конфа.
32 Chameleon1980
 
24.12.14
17:22
а какая стандартная говорили чтоль?
33 Chameleon1980
 
24.12.14
17:23
(31) как узнал, что типы совпадают?
34 GreatOne
 
24.12.14
17:25
35 GreatOne
 
24.12.14
17:25
(33) стандартная конфа же=)
36 sirbure
 
24.12.14
17:28
(32) Блин, посмотрел в конфигураторе на тип оказалось вот что
Характеристика.ВидыСубконтоХозрасчетные
Но в конфе выбирается из справочника Номенклатурныегруппы
37 salvator
 
24.12.14
17:31
(36) В цикле добавь строку:

Сообщить(ТипЗнч(ТоварыСтрока.Субконто));
38 salvator
 
24.12.14
17:31
И напиши что возвращает
39 Chameleon1980
 
24.12.14
17:35
Пвх там
40 sirbure
 
24.12.14
17:39
Тык что делать то ?))
41 Chameleon1980
 
24.12.14
17:40
а счет в документе какой?
42 Chameleon1980
 
24.12.14
17:40
счет доходов
43 Chameleon1980
 
24.12.14
17:41
скорее всего нужно смотреть счет.
т.к. при выборе счета меняется вид субконто:

Процедура ТоварыСчетДоходовПриИзменении(Элемент)

    СтрокаТЧ = ЭлементыФормы.Товары.ТекущиеДанные;
    Счет   = СтрокаТЧ.СчетДоходов;

    Если Счет.ВидыСубконто.Количество() > 0 Тогда
        СтрокаТЧ.Субконто = Новый(Счет.ВидыСубконто[0].ВидСубконто.ТипЗначения.Типы()[0])
    Иначе
        СтрокаТЧ.Субконто = Неопределено;
    КонецЕсли;

    ЭлементыФормы.Товары.Колонки.Субконто.Доступность = НЕ (НЕ ЗначениеЗаполнено(Счет) ИЛИ (Счет.ВидыСубконто.Количество() = 0));

КонецПроцедуры
44 sirbure
 
24.12.14
17:52
(43) Счет не меняю, и он указан, субконто  пустое, либо задано, но хочу поставить свое. А если я укажу его так:
.Субконто="Основная номенклатурная группа", я понимаю что криво, но не поломает ли чего ?)
45 salvator
 
24.12.14
17:56
(44) На (41)+(42) ответь
46 barrgand
 
24.12.14
17:56
(45) Это уже поломало... людям мозг
47 Chameleon1980
 
24.12.14
17:57
дык говорят же, что не строку нужно присваивать

не так
Субконто="Основная номенклатурная группа"

до цикла:
Нужноесубконто=Справочники.НоменклатурныеГруппы.НайтиПоНаименованию("Основная номенклатурная группа");

а в цикле Субконто=НужноеСубконто;
48 sirbure
 
24.12.14
18:01
Счет Доходов 90.01.1
(47) я делаю так, как Вы говорите, как я понимаю строковые данные просто не запишутся туда?
49 Serg_1960
 
24.12.14
18:03
Типовая обработка "Групповая обработка справочников и документов" и ничего писать не надо.Ну, да, я лентяй :)

В обработке самое важное :) не забыть отметить, что обрабатывать будешь документы и их табличные части.
50 salvator
 
24.12.14
18:04
(48) Запускай отлачик и смотри, что происходит с реквизитом "Субконто" в процессе обработки. Быстрый, и, главное, надежный вариант решения проблемы.
51 hhhh
 
24.12.14
18:05
(48) вот это объясни

Ссылка=СтрокаТаблицы.Ссылка;

и

Для каждого СтрокаТаблицы

что у тебя такое всё-таки СтрокаТаблицы? Это какой-то монстр?
52 Chameleon1980
 
24.12.14
18:12
все верно у этого счета первое субконто "НоменклатурныеГруппы"

текст не присвоишь.
тип значения поля субконто = типу 1 субконто выбранного счета, у тебя 90.1.1.

пробуй:

РеализацияОбъект=СсылкаНаДокумент.ПолучитьОбъект();
Нужноесубконто=Справочники.НоменклатурныеГруппы.НайтиПоНаименованию("Основная номенклатурная группа");
// тут можно проверить на предмет найденности НужногоСубконто

Для каждого ТоварыСтрока из РеализацияОбъект.Товары Цикл
   ТоварыСтрока.Субконто = НужноеСубконто;
КонецЦикла;

РеализацияОбъект.Записать();
53 sirbure
 
24.12.14
18:16
(51) плин, одна и таже СтрокаТаблицы видимо да?)) она как переменная ? для чтения другой таблицы нужно написать СтрокаТаблицы1?
54 Chameleon1980
 
24.12.14
18:22
(53) ответ неправильный
оказывается все хуже.
пардон.

читай:
итераторы, коллекции значений
55 sirbure
 
24.12.14
18:33
(52) Большое спасибо за помощь! Работает)
56 sirbure
 
24.12.14
18:33
Всем кто откликнулся спасибо, можно закрывать)
57 Wirtuozzz
 
24.12.14
18:38
(1) класс!
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.