Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
15 Дек 2017, 12:52
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Одинаковые ИНН  (Прочитано 1686 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн rinaty17

  • *
  • Сообщений: 11
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-10-09
  • Сайт: 
  • Профессия: Программист 1С
Добрый день уважаемые форумчане.
Я в семерке плохо шарю, но некоторые моменты знаю.
к вам такая просьба.
мне нужно сделать отчет который выводит список контрагентов у которых одинаковый ИНН или не заполненный ИНН.
Вот мои наброски
+ Code
//_____________________________________________________________________________
 
Функция ПоискКонтрагента(пПоиск)
    спрФиз = СоздатьОбъект("Справочник.ФизЛица");
    спрЮр = СоздатьОбъект("Справочник.ЮрЛица");
    спрСвои = СоздатьОбъект("Справочник.СвоиЮрЛица");
    Если спрФиз.НайтиПоНаименованию(пПоиск,0,1)=1 Тогда
        СпрЛица = спрФиз.ИНН;
        Возврат СпрЛица;
    ИначеЕсли спрЮр.НайтиПоНаименованию(пПоиск,0,1)=1 Тогда
        СпрЛица = спрЮр.ИНН;
        Возврат СпрЛица;
    ИначеЕсли спрСвои.НайтиПоНаименованию(пПоиск,0,1)=1 Тогда
        СпрЛица = спрСвои.ИНН;
        Возврат СпрЛица;
    Иначе
        Возврат 0;
    КонецЕсли;
КонецФункции //
 

//*******************************************
 
Процедура Сформировать()
    Таб=СоздатьОбъект("Таблица");
    Таб.ВывестиСекцию("Шапка");
    Таб.ТолькоПросмотр(1);
    Спр1 = СоздатьОбъект("Справочник.Контрагенты");
    Спр1.ВыбратьЭлементы();
    Пока Спр1.ПолучитьЭлемент() = 1 Цикл
        Если (Спр1.ЭтоГруппа() = 0) и (Спр1.ПометкаУдаления() = 0) Тогда
            Спр2 = СоздатьОбъект("Справочник.Контрагенты");
            Спр2.ВыбратьЭлементы();
            СпрЛица1 = ПоискКонтрагента(Спр1.ЮрФизЛицо);
            Если СпрЛица1 = "" Тогда
                Таб.ВывестиСекцию("Строка");
            Иначе
                Пока Спр2.ПолучитьЭлемент() = 1 Цикл
                   
                    Если (Спр2.ЭтоГруппа() = 0) и (Спр2.ПометкаУдаления() = 0) Тогда
                   
                        СпрЛица2 = ПоискКонтрагента(Спр2.ЮрФизЛицо);
                        Если СпрЛица1=СпрЛица2 Тогда
                            Таб.ВывестиСекцию("Строка");
                        КонецЕсли;
                   
           
                    КонецЕсли;
                КонецЦикла;
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
    Таб.Показать();
КонецПроцедуры

как можно упрастить данный модуль? может как нибудь через запрос можно сделать? в 8ке я бы без проблем решил бы эту задачу...   


Оффлайн Herby

  • *****
  • Сообщений: 936
  • РЕПУТАЦИЯ: 164
  • КПД: 18%
  • Регистрация: 2010-08-31
  • Сайт: 
  • Профессия: Программист 7.7
Re: Одинаковые ИНН
« Ответ #1: 29 Окт 2012, 11:33 »
в 8ке я бы без проблем решил бы эту задачу...

очень рады за вас...

можно например так:

Процедура Сформировать()
   Перем Запрос, ТекстЗапроса, Таб;
   //Создание объекта типа Запрос
   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Клиенты = Справочник.Клиенты.ТекущийЭлемент;
   |ИНН = Справочник.Клиенты.ИНН;
   |Функция Счётчик = Счётчик();
   |Группировка ИНН;
   |Группировка Клиенты без групп;
   |"//}}ЗАПРОС
   ;
   // Если ошибка в запросе, то выход из процедуры
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
      Возврат;
   КонецЕсли;

   // Подготовка к заполнению выходных форм данными запроса
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Сформировать");
   // Заполнение полей "Заголовок"
   Таб.ВывестиСекцию("Заголовок");
   Состояние("Заполнение выходной таблицы...");
   Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
   Пока Запрос.Группировка(1) = 1 Цикл
      // Заполнение полей ИНН
      
      Если Запрос.Счётчик > 1 Тогда
         Таб.ВывестиСекцию("ИНН");
         Пока Запрос.Группировка(2) = 1 Цикл
            // Заполнение полей Клиенты
            Таб.ВывестиСекцию("Клиенты");
         КонецЦикла;
      КонецЕсли;
   КонецЦикла;
   // Заполнение полей "Итого"
   Таб.ВывестиСекцию("Итого");
   // Вывод заполненной формы
   Таб.ТолькоПросмотр(1);
   Таб.Показать("Сформировать", "");
КонецПроцедуры



Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
177 Сообщений
ilyay ilyay
69 Сообщений
oleg-x
48 Сообщений
AIFrame
46 Сообщений
alex0402
46 Сообщений
andron81_81
41 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
Golickoff Golickoff
31 Сообщений
BuhRust
30 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 799
  • Точка Скрытых: 0
  • Точка Пользователей: 10
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal