Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Определение 1-е 2 -е событие 1с 7.7
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
Змейкин
Народ помогите есть 2 документа приходная накладная и расходный кассовый для приходной накладной я понял ее движения но для расходно кассового не пойму по чему он мою таблицу значений тбДолги не видит . и она пустая( вот пример
Процедура РассчитатьШапку()

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

//*****************************************************
Процедура ДвиженияКредДокумент()
Перем тбДолги;
ВремРегистры = СоздатьОбъект("Регистры");

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

Рег.ВыгрузитьИтоги(тбДолги,1,1);

СуммаПогашения = СуммаОплаты;
СтавкаНДСПогашения = ВидНДС;

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

КонецПроцедуры
//и в глобальном ---------------------------------------------------------------------------------------------------------------------
   Процедура глПогашениеДолга(Конт, тбДолги, Фирма, Контрагент, Договор, ВидНДС, Счет, СуммаПогашения) Экспорт

ВидДок = Конт.Вид();

тбДолги.ВыбратьСтроки();
Пока тбДолги.ПолучитьСтроку()>0 Цикл

Если тбДолги.СуммаДолга<0 Тогда
Продолжить;
КонецЕсли;

Если СуммаПогашения=0 Тогда
Продолжить;
ИначеЕсли тбДолги.СуммаДолга<=СуммаПогашения Тогда
//полное погашение документа долга
тДокументДолга = тбДолги.ДокументДолга;
тСчет = тбДолги.Счет;
тСуммаПогашения = тбДолги.СуммаДолга;
глПогаситьДокументВзаиморасчетов(Конт,1, Фирма, Контрагент, Договор, ВидНДС, тСчет, тДокументДолга, тСуммаПогашения);
СуммаПогашения = СуммаПогашения - тСуммаПогашения;
ИначеЕсли тбДолги.СуммаДолга > СуммаПогашения Тогда
//частичное погашение
тДокументДолга = тбДолги.ДокументДолга;
тСчет = тбДолги.Счет;
тСуммаПогашения = СуммаПогашения;
глПогаситьДокументВзаиморасчетов(Конт,1, Фирма, Контрагент, Договор, ВидНДС, тСчет, тДокументДолга, тСуммаПогашения);
СуммаПогашения = 0;
КонецЕсли;
    Если тбДолги.СуммаОплаты < СуммаПогашения Тогда // Для расходного кассвого
   тДокументДолга = тбДолги.ДокументДолга;
   тСчет = тбДолги.Счет;
тСуммаПогашения = СуммаПогашения;
глПогаситьДокументВзаиморасчетов(Конт,-1, Фирма, Контрагент, Договор, ВидНДС, тСчет, тДокументДолга, тСуммаПогашения);

КонецЕсли;
КонецЦикла;
1Cv77
Цитата(Змейкин @ 22.09.13, 12:38) необходимо зарегистрироваться для просмотра ссылки
Перем тбДолги;


Самое простое что в голову приходит:

перенеси Перем тбДолги;
в глобалку

сделай так
Перем тбДолги Экспорт;
Sanyk
Можливі ситуації:
1) Подивіться по часу як записані документи (внутрішня хронологія документів). Ви отримаєте підсумки на момент документу;
2) Перевірте фільтри отримання підсумків, особливо "ДокуменОснование". Далі по коду, ви припускаєте, що він може бути не заповненний;

P.S. Маю надію що "тбДолги.ВыбратьСтроку();" лише для тестування.
-=VJ=-
Цитата(Змейкин @ 22.09.13, 14:38) необходимо зарегистрироваться для просмотра ссылки
Рег.УстановитьЗначениеФильтра("Фирма",Фирма,1);
Рег.УстановитьЗначениеФильтра("ДокументДолга",ДокументОснование,1);
Рег.УстановитьЗначениеФильтра("ВидНДС",ВидНДС,1);
ВремРегистры.РассчитатьРегистрыНа(ТекущийДокумент());


Вроде бы из этих четырёх строк любому понятно, что если фильтр возвращает пустое значение - значит нужно стандартным образом проверить регистры на эти фильтры. Вполне возможно, движений просто нет.
Zaval
Один из вариантов, почему пуста таблица долгов:
КО формируют на основании Счета, а документом долга могут выступать документы отгрузки/оплаты.
Тогда для КО долг по ДокументОснование = 0.

Как-то слишком просто Вы все это себе представвили smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.