Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Занесение в таблицу значений
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
Nervosa
Здравствуйте!

Имеется следующий кусок кода:



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



...и всё бы ничего, работает, да только в ТаблицаДвижений (это кстати таблица значений, чуть что) не заносится дебет. Типы Дебет и СуммаКОплате совпадают - проверено.

Подскажите, пожалуйста. хотя бы примерно - по каким причинам такое может происходить.
Заранее спасибо.
Nervosa
Ах да, забыл сказать, что СуммаКОплате - это реквизит табличной части документа, может тут собака зарыта?
MATEVI
Цитата(Nervosa @ 20.01.10, 15:37) необходимо зарегистрироваться для просмотра ссылки
Ах да, забыл сказать, что СуммаКОплате - это реквизит табличной части документа, может тут собака зарыта?

Тогда конечно в этом. А где ДокИск.ВыбратьСтроки(); И Пока ДокИск.ПолучитьСтроку()=1 Цикл?
А что за документ обрабатывается?
Nervosa
2 MATEVI

В смысле - что за документ? Называется СчётФактураПоНДС, имеет и шапку, и табличную часть. Собственно всё...
sarius
Ну так тогда или итог по этой колонке нужно лепить в присвоение (имхо это и требуется) либо перебирать строки
Batchir
MATEVI имел ввиду если СуммаКОплате - это реквизит табличной части документа, ту нужно получать суиму через цикл
ДокИск.ВыбратьСтроки();

Пока ДокИск.ПолучитьСтроку()=1 Цикл
// суммируем суммы в строках
КонецЦикла;

и только после этого записываем полученную сумму в ТаблицаДвижений.Дебет

Если включен итог по колонке, то сумму можно поллучить с помощью команды Итог()
Nervosa
Ну вот смотрите -



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

Если ДокИск.СуммаКОплате = Дебет Тогда

Суммакоп = ДокИск.СуммаКОплате;

КонецЕсли;

КонецЦикла;
ТаблицаДвижений.Операция = "Счёт №" + ДокИск.НомерДок + "от"+ДокИск.ДатаДок;
ТаблицаДвижений.Документ = "Счёт №" + ДокИск.НомерДок + "от"+ДокИск.ДатаДок;
ТаблицаДвижений.Дебет = Суммакоп;


КонецЕсли;


так тоже не работает.(
MATEVI
Цитата(Nervosa @ 20.01.10, 17:27) необходимо зарегистрироваться для просмотра ссылки
Ну вот смотрите -


так тоже не работает.(

А зачем это? Если ДокИск.СуммаКОплате = Дебет Тогда
Что такое дебет?

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

А если нужно использовать только выборочные строки из ТЧ тогда должен быть перебор строк и использование условия.
Я не телепат и предположу что Дебет это какой то реквизит документа и тогда условие должно быть
ДокИск.ВыбратьСтроки();
Пока ДокИск.ПолучитьСтроку()=1 Цикл
Если Дебет = <Значение условия> Тогда
ТаблицаДвижений.Дебет = ДокИск.СуммаКОплате;
Batchir
1. Вариант


ДокИск.ВыбратьСтроки();
Суммакоп = 0;
Пока ДокИск.ПолучитьСтроку()=1 Цикл
Суммакоп = Суммакоп + ДокИск.СуммаКОплате;
КонецЦикла;


2. Вариант - сообщение №8 через команду Итог()
Nervosa
Фуф, всё !!! ДокИск.Итог("СуммаКОплате") помогло. Спасибо всем огромное smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.