Имя: Пароль:
1C
1С v8
Как кодом заполнить Субконто в Хозрасчетных движениях в документе кор. регистро?
,
0 new1snik
 
20.06.13
08:36
Добрый день.
Есть документ корректировки регистров в УПП. С ним я работаю следующим образом:

НовСтрока = ВыбранныйДокументКорректировки.Движения.Хозрасчетный.Добавить();
   НовСтрока.Организация = ОрганизацияКорректировки;
   НовСтрока.Период = ДатаКорректировки;
   НовСтрока.СчетДт = ПланыСчетов.Хозрасчетный.ИздержкиОбращения;
   НовСтрока.СчетКт = ПланыСчетов.Хозрасчетный.ТоварыНаСкладах;    
   НовСтрока.Сумма = Сумма;
   НовСтрока.Активность = 1;
   ВыбранныйДокументКорректировки.Записать();
Каким образом можно заполнить СубконтоДт и СубконтоКт?

Просто дополнить код следующими строчками как оказалось не правильно:
   НовСтрока.СубконтоДт = Справочники.СтатьиЗатрат.СписаниеНДСНаРасходы;
   НовСтрока.СубконтоКт = Справочники.СтатьиЗатрат.НайтиПоНаименованию(СтатьяЗатрат);
1 mikecool
 
20.06.13
08:38
субконто - это коллекция
2 new1snik
 
20.06.13
08:49
нашел вот такой пример:
УстановитьСубконто(НовСтрока.СчетДт, НовСтрока.СубконтоДт, СтатьяЗатрат, Справочники.СтатьиЗатрат.НайтиПоНаименованию(СтатьяЗатрат)) ;
Но конфигуратор пишет, что такой процедуры не существует.
3 bambazamba
 
20.06.13
09:03
(2) работаете? Или студенческая работа?
4 bambazamba
 
20.06.13
09:03
Неправильно вопрос задал. Вы эту задачу за зарплату делаете? Или в рамках какого-нтбудь обучения?
5 new1snik
 
20.06.13
09:11
(4) Стажер я, за зарплату.
6 new1snik
 
20.06.13
09:14
Разобрался.

НовСтрока = ВыбранныйДокументКорректировки.Движения.Хозрасчетный.Добавить();
   НовСтрока.Организация = ОрганизацияКорректировки;
   НовСтрока.Период = ДатаКорректировки;
   НовСтрока.СчетДт = ПланыСчетов.Хозрасчетный.ИздержкиОбращенияНеОблагаемыеЕНВД;
   НовСтрока.СчетКт = ПланыСчетов.Хозрасчетный.ТоварыНаСкладах;    
   НовСтрока.Сумма = Сумма;
   НовСтрока.Активность = 1;
   НовСтрока.СубконтоДт.Вставить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.СтатьиЗатрат, Справочники.СтатьиЗатрат.НайтиПоНаименованию("Возвратные отходы"));
   НовСтрока.СубконтоКт.Вставить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура, Справочники.Номенклатура.НайтиПоНаименованию("Велосипед"));

Вот таким образом субконто проставляется.
7 cw014
 
20.06.13
09:31
СП читать не предлагать?
8 shuhard
 
20.06.13
09:32
(6)[НовСтрока.СубконтоДт.Вставить]
дурной вариант
9 new1snik
 
20.06.13
09:51
(8) А какой не дурной?
10 salvator
 
20.06.13
09:53
НовСтрока.СубконтоДт.СтатьиЗатрат =  Справочники.СтатьиЗатрат.НайтиПоНаименованию("Возвратные отходы"));
11 new1snik
 
20.06.13
10:17
(10) Благодарю.
12 zak555
 
20.06.13
10:20
НовСтрока.СубконтоДт.СтатьиЗатрат
аналогично
НовСтрока.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.СтатьиЗатрат]
13 new1snik
 
20.06.13
10:33
Сейчас пытаюсь в цикле добавлять движения в документ, но ничего не получается - либо создается только 1 документ, либо совсем ничего не создается. Вот код:

   Для Каждого Элемент Из ТаблицаРезультатовЗапроса Цикл
       
       Сообщить(Элемент.Субконто1);
       Сообщить(Элемент.Субконто2);
       Сообщить(Элемент.Сумма);
       Сообщить("_________");
       
       // Движения регистара бухгалтерии
       НовСтрока = ВыбранныйДокументКорректировки.Движения.Хозрасчетный.Добавить();
       НовСтрока.Организация = ОрганизацияКорректировки;
       НовСтрока.Период = ДатаКорректировки;
       НовСтрока.СчетДт = ПланыСчетов.Хозрасчетный.ИздержкиОбращенияНеОблагаемыеЕНВД;
       НовСтрока.СчетКт = ПланыСчетов.Хозрасчетный.ТоварыНаСкладах;    
       НовСтрока.Сумма = Сумма;
       НовСтрока.Активность = 1;
       НовСтрока.СубконтоДт.СтатьиЗатрат =  Справочники.СтатьиЗатрат.НайтиПоНаименованию("Возвратные отходы");
       НовСтрока.СубконтоКт.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("Велосипед");
       НовСтрока.СубконтоКт.Склады =  Справочники.Склады.НайтиПоНаименованию(".Склад1");
       ВыбранныйДокументКорректировки.Записать();        
           
   КонецЦикла;
Что не так?
14 new1snik
 
20.06.13
10:34
(13) Запрос возвращает 8 строк, то есть я рассчитываю создать 8 записей.
15 zak555
 
20.06.13
10:35
ВыбранныйДокументКорректировки.Движения.Хозрасчетный.Записать();
16 new1snik
 
20.06.13
10:41
(15) Не создается 8 записей.
А если вынести код из цикла, то создается только 2 записи, если код повторить 3 и больше раз, то вообще ничего не создается.
17 zak555
 
20.06.13
10:43
Хозрасчетный = ВыбранныйДокументКорректировки.Движения.Хозрасчетный;

Для Каждого Элемент Из ТаблицаРезультатовЗапроса Цикл

НовСтрока = Хозрасчетный.Добавить();
//...

конецЦикла;

Хозрасчетный .Записать();
18 new1snik
 
20.06.13
10:44
(16) Хм, если менять в коде, например, субконто в каждой записи, то записи добавляются. Больше 2 одинаковых не создается, видимо.
19 new1snik
 
20.06.13
12:25
Опять двадцать пять. Сейчас пытаюсь добавить запись в регистр накопления "ПартииТоваровНаСкладахНалоговыйУчет", но ничего не получается.

Добавляю вот так:

ПартииТоваровНаСкладахНалоговыйУчет = ВыбранныйДокументКорректировки.Движения.ПартииТоваровНаСкладахНалоговыйУчет;

НовСтрока = ПартииТоваровНаСкладахНалоговыйУчет.Добавить();
       НовСтрока.ВидДвижения = ВидДвиженияНакопления.Приход;
       НовСтрока.Стоимость = Сумма;
       НовСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(Субконто1);
       НовСтрока.Период = ДатаКорректировки;
       НовСтрока.Организация = ОрганизацияКорректировки;
       НовСтрока.Активность = 1;
       ПартииТоваровНаСкладахНалоговыйУчет.Записать();
ВыбранныйДокументКорректировки.Записать();

Но если записывать подобным образом в регистр накопления "Товары на складах", то там запись появляется.
20 Csar
 
20.06.13
12:42
(19) а в партиях разве не обязательно указывать регистратор?
21 new1snik
 
20.06.13
12:51
(20) Не знаю.
Нашел вот такой код:

Новая = ВыбранныйДокументКорректировки.ТаблицаРегистровНакопления.Добавить();
   Новая.Имя = "ПартииТоваровНаСкладахНалоговыйУчет";
   Новая.Представление = "Партии товаров на складах (налоговый учет)";
   
   Строка = ВыбранныйДокументКорректировки.Движения.ПартииТоваровНаСкладахНалоговыйУчет.Добавить();
   // Добавляешь колонки из таблицы
   Строка.Активность = Истина;
   Строка.Период = ТекущаяДата();
   
   ВыбранныйДокументКорректировки.Записать();

Вроде работает. Но если в выбранном документе корректировки уже был добавлен регистр накопления ПартииТоваровНаСкладахНалоговыйУчет, то при попытке открытия документа выдает оошибку, о том, что возникла ошибка метода контента Вставить.
22 Csar
 
20.06.13
12:56
(21) попробуй в (19) все же вписать регистратор и его заполнение. Вдруг поможет.

PS подсказка в стиле "перезагрузи винду - вдруг поможет".