Рег1 = СоздатьОбъект("Регистр.Взаиморасчеты"); Если Режим = "Подробно" Тогда Рег1.УстановитьФильтр(Клиент); Рег1.ВыбратьДвижения(ДатаНачало, ); Пока Рег1.ПолучитьДвижение() > 0 Цикл Док = Рег1.ТекущийДокумент(); Дв_Баз_Сум = Рег1.СуммаБазовая; Дв_Вал_Сум = Рег1.СуммаВалютная; Если Рег1.Расход = 1 Тогда Таб.ВывестиСекцию("Расход2"); Иначе Таб.ВывестиСекцию("Приход2"); КонецЕсли; КонецЦикла; КонецЕсли;
Процедура Взаиморасчеты(ВыбКлиент, ДатаНачало, ДатаКонец) // Создание Таблицы для выходного отчета Заг = "Неизвестно."; Таб = СоздатьОбъект("Таблица"); Клн = СоздатьОбъект("Справочник.Клиенты"); Клн.ИспользоватьДату(ДатаКонец); Док = СоздатьОбъект("Документ"); Рег = СоздатьОбъект("Регистр.Взаиморасчеты"); Рег1 = СоздатьОбъект("Регистр.Взаиморасчеты"); Рег.ВременныйРасчет(); РассчитатьРегистрыНа(ДатаКонец); Если ВыбКлиент.Выбран() = 0 Тогда //Без условий Заг = "По всем клиентам."; ИначеЕсли ВыбКлиент.ЭтоГруппа() = 1 Тогда Клн.ВключатьПодчиненные(ВыбКлиент); Клн.ИспользоватьРодителя(ВыбКлиент); Заг = "По клиентам группы " + ВыбКлиент.Наименование; Иначе Предупреждение("Выберите группу клиентов!"); Возврат; КонецЕсли; Таб.ВывестиСекцию("Отчет"); Клн.ВыбратьЭлементы(); Пока Клн.ПолучитьЭлемент() > 0 Цикл Если Клн.ЭтоГруппа() = 1 Тогда Таб.ВывестиСекцию("Группа"); Иначе Рег.Клиент = Клн.ТекущийЭлемент(); Рег.ОстаткиПолучить(); Баз_сум = Рег.СуммаБазовая; Вал_сум = Рег.СуммаВалютная; Таб.ВывестиСекцию("Клиент"); // цикл по всем документам Док.ВыбратьДокументы(ДатаНачало, ДатаКонец); Пока Док.ПолучитьДокумент() > 0 Цикл // отфильтруем документы Если (Док.Вид() = "Перемещение") ИЛИ (Док.Вид() = "Счет") ИЛИ (Док.Вид() = "Списание") ИЛИ (Док.Вид() = "РучноеИзмОстатка") Тогда // Эти Документы не изменяют Взаиморасчеты Продолжить; КонецЕсли; // выберем все движения регистра по документу Рег1.ВыбратьДвиженияДокумента(Док.ТекущийДокумент()); Пока Рег1.ПолучитьДвижение() > 0 Цикл Если Строка(Рег1.Клиент.Код) <> Строка(Клн.Код) Тогда // не тот клиент Продолжить; КонецЕсли; Дв_Баз_Сум = Рег1.СуммаБазовая; Дв_Вал_Сум = Рег1.СуммаВалютная; Если Рег1.Приход = 1 Тогда Таб.ВывестиСекцию("Приход"); Иначе Таб.ВывестиСекцию("Расход"); КонецЕсли; КонецЦикла; КонецЦикла; КонецЕсли; КонецЦикла; //Вызов выходного отчета в окно просмотра и редактирования. Таб.ТолькоПросмотр(1); Таб.Опции(0, 0, 4, 0); Таб.Показать("Взаиморасчеты с клиентами", ""); ВыбКлиент = 0; КонецПроцедуры
// Пример 1 Рег1 = СоздатьОбъект("Регистр.Взаиморасчеты"); Если Режим = "Подробно" Тогда Рег1.УстановитьФильтр(Клиент); // Открываем выборку Рег1.ВыбратьДвижения(ДатаНачало, ); // Цикл выбора движений по регистру Пока Рег1.ПолучитьДвижение() > 0 Цикл Если Строка(Рег1.Клиент.Код) <> Строка(Запрос.Клиент.Код) Тогда Продолжить; КонецЕсли; Док = Рег1.ТекущийДокумент(); Дв_Баз_Сум = Рег1.СуммаБазовая; Дв_Вал_Сум = Рег1.СуммаВалютная; Если Рег1.Расход = 1 Тогда Таб.ВывестиСекцию("Расход2"); Иначе Таб.ВывестиСекцию("Приход2"); КонецЕсли; КонецЦикла; КонецЕсли; //Пример 2 РегТовары = СоздатьОбъект("Регистр.Товары"); РегТовары.ВыбратьДвижения(ДатаНач, ДатаКон); Пока РегТовары.ПолучитьДвижение()=1 Цикл Сообщить("Дата движения " + Строка(РегТовары.ТекущийДокумент.ДатаДок)); Сообщить("Клиент: " + РегТовары.Клиент); Сообщить("Товар: " + РегТовары.Товар); Сообщить("Сумма: " + РегТовары.Доход); КонецЦикла;