В начало

Процедура Взаиморасчеты

 

Процедура Взаиморасчеты (ВыбКлиент, ДатаНачало, ДатаКонец)

   // Создание Таблицы для выходного отчета

   Заг = "Неизвестно.";

   Таб = СоздатьОбъект ("Таблица");

   Клн = СоздатьОбъект ("Справочниклиенты");

   КлнспользоватьДату (ДатаКонец);

   Док = СоздатьОбъект ("Документ");

   Рег = СоздатьОбъект ("Регистрзаиморасчеты");

   Рег1 = СоздатьОбъект ("Регистрзаиморасчеты");

   РегременныйРасчет ();

   РассчитатьРегистрыНа (ДатаКонец);

   Если ВыбКлиентыбран () = 0 Тогда

      //Без условий

      Заг = "По всем клиентам.";

   ИначеЕсли ВыбКлиенттоГруппа () = 1 Тогда

      КлнключатьПодчиненные (ВыбКлиент);

      КлнспользоватьРодителя (ВыбКлиент);

      Заг = "По клиентам группы " + ВыбКлиентаименование;

   Иначе

      Предупреждение ("Выберите группу клиентов!");

      Возврат;

   КонецЕсли;

   ТабывестиСекцию ("Отчет");

   КлныбратьЭлементы ();

   Пока КлнолучитьЭлемент () > 0 Цикл

      Если КлнтоГруппа () = 1 Тогда

         ТабывестиСекцию ("Группа");

      Иначе

         Реглиент = Клн.ТекущийЭлемент ();

         РегстаткиПолучить ();

         Баз_сум = РегуммаБазовая;

         Вал_сум = РегуммаВалютная;

         ТабывестиСекцию ("Клиент");

         // Цикл по всем документам

         ДокыбратьДокументы (ДатаНачало, ДатаКонец);

         Пока ДоколучитьДокумент () > 0 Цикл

            // Отфильтруем документы

            Если  (Докид () = "Перемещение") ИЛИ  (Док.Вид () = "Счет") ИЛИ

                  (Докид () = "Списание") ИЛИ

                  (Докид () = "РучноеИзмОстатка") Тогда

               // Эти Документы не изменяют Взаиморасчеты

               Продолжить;

            КонецЕсли;

            // Выберем все движения регистра по документу

            Рег1.ВыбратьДвиженияДокумента (ДокекущийДокумент ());

            Пока Рег1.ПолучитьДвижение () > 0 Цикл

               Если Строка (Рег1.Клиентод) <> Строка (Клн.Код) Тогда

                  // Не тот клиент

                  Продолжить;

               КонецЕсли;

               Дв_Баз_Сум = Рег1.СуммаБазовая;

               Дв_Вал_Сум = Рег1.СуммаВалютная;

               Если Рег1.Приход = 1 Тогда

                  ТабывестиСекцию ("Приход");

               Иначе

                  ТабывестиСекцию ("Расход");

               КонецЕсли;

            КонецЦикла;

         КонецЦикла;

      КонецЕсли;

   КонецЦикла;

   //Вызов выходного отчета в окно просмотра и редактирования.

   ТаболькоПросмотр (1);

   Табпции (0, 0, 4, 0);

   Табоказать ("Взаиморасчеты с клиентами", "");

   ВыбКлиент = 0;

КонецПроцедуры