Имя: Пароль:
1C
1С v8
УТ 10.3 Ввод начальных остатков НДС по партиям. Как проставить ставку НДС?
0 orange777
 
17.11.11
14:14
Прошу помочь в таком вопросе: остатки перегружены из 7.7 в УТ 10.3 в документ "Оприходование Товаров". Нужно ввести документ "Ввод начальных остатков НДС по партиям". Автоматически он заполнился, но в табличной части "ДанныеПоСФ" не заполнились реквизиты "ВидЦенности" и "СтавкаНДС". Без них проводиться не желает. Вид ценности заполнила групповой обработкой документов. А ставку пытаюсь выцепить из справочника "Номенклатура" универсальным подбором и обработкой значений. Текст произвольного алгоритма:
СписокСтавок = Новый СписокЗначений;
Для каждого Стр из Объект.ДанныеПоПартиям Цикл
   СтавкаНДС=  УчетНДС.ПолучитьСтавкуНДС(Стр.Номенклатура.СтавкаНДС);
   СписокСтавок.Добавить(СтавкаНДС);
КонецЦикла;
Для каждого Стр1 из Объект.ДанныеПоСФ Цикл
   Ставка = СписокСтавок.Получить(Стр1.НомерСтроки);
   Стр1.СтавкаНДС = СтавкаНДС;
КонецЦикла;
Объект.Записать();
Не получается. Что я делаю не так?
1 orange777
 
17.11.11
14:17
Ошибка при вызове метода контекста (Получить)
   Ставка = СписокСтавок.Получить(Стр1.НомерСтроки);
по причине:
Значение индекса выходит за границы диапазона
2 Fragster
 
гуру
17.11.11
14:18
номер строки -1
3 orange777
 
17.11.11
14:21
номер строки табличной части документа -1? как так?
4 Fragster
 
гуру
17.11.11
14:21
СписокСтавок.Получить(Стр1.НомерСтроки-1);
5 Fragster
 
гуру
17.11.11
14:21
и заменить списокЗначений на Массив
6 Fragster
 
гуру
17.11.11
14:22
ну и совпадает ли количество строк в обеих ТЧ?
7 orange777
 
17.11.11
14:25
табличные части связаны. встаешь на строку тч ДанныеПоПартиям - видишь одну строку в тч ДанныеПоСФ с номером строки = номеру строки тч ДанныеПоПартиям
8 orange777
 
17.11.11
14:25
на массив счас попробую
9 orange777
 
17.11.11
14:35
все равно не работает:(
10 Fragster
 
гуру
17.11.11
14:40
(9) значит разное количество колонок
11 Fragster
 
гуру
17.11.11
14:40
*строк
12 orange777
 
17.11.11
14:50
одинаково. посчитала) как быть?
13 Fragster
 
гуру
17.11.11
14:54
Сообщить(Объект.ДанныеПоПартиям.Количество());
Сообщить(Объект.ДанныеПоСФ.Количество());

Для каждого Стр из Объект.ДанныеПоПартиям Цикл
   Объект.ДанныеПоСФ[Объект.ДанныеПоПартиям.Индекс(Стр)].СтавкаНДС = УчетНДС.ПолучитьСтавкуНДС(Стр.Номенклатура.СтавкаНДС);
КонецЦикла;
14 orange777
 
17.11.11
14:58
круть)))
465
465
ставка по прежнему пустая)
15 Fragster
 
гуру
17.11.11
15:10
так пустая, или ошибка индекса?

Объект.ДанныеПоСФ[Объект.ДанныеПоПартиям.Индекс(Стр)].СтавкаНДС = Стр.Номенклатура.СтавкаНДС;
16 orange777
 
17.11.11
15:16
ошибка индекса ушла после добавления -1. теперь скорее всего проблема в строчке присвоения Стр1.СтавкаНДС = Ставка;
17 orange777
 
17.11.11
15:17
извините, вовремя не сказала
18 orange777
 
17.11.11
15:27
получилось! огромное спасибо за подсказку!

СписокСтавок = Новый ТаблицаЗначений;
СписокСтавок.Колонки.Добавить("Номер");
СписокСтавок.Колонки.Добавить("Ставка");
Для каждого Стр из Объект.ДанныеПоПартиям Цикл
   СтавкаНДС=  Стр.Номенклатура.СтавкаНДС;
   СтрокаТаблицы = СписокСтавок.Добавить();
   СтрокаТаблицы.Номер =Стр.НомерСтроки;
   СтрокаТаблицы.Ставка =СтавкаНДС;
КонецЦикла;
Для каждого Стр1 из Объект.ДанныеПоСФ Цикл
   ТекСтрока = СписокСтавок.Найти(Стр1.НомерСтроки, "Номер");
   Ставка = ТекСтрока.Ставка;
   Стр1.СтавкаНДС = Ставка;
КонецЦикла;
Объект.Записать();

как-то так "по-семерошному" получилось. Может кому понадобится)
19 Fragster
 
гуру
17.11.11
15:28
(18) жесть, юзай

Для каждого Стр из Объект.ДанныеПоПартиям Цикл
   Объект.ДанныеПоСФ[Объект.ДанныеПоПартиям.Индекс(Стр)].СтавкаНДС = Стр.Номенклатура.СтавкаНДС;
КонецЦикла;
20 orange777
 
17.11.11
15:34
(19)спасибо)
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.