Имя: Пароль:
1C
1C 7.7
v7: дублирование Инн
0 Pechka
 
27.08.12
13:07
Здравствуйте, нашла обработку по поиску одинаковых ИНН в ТиС 7.7,но когда формирую отчет,выдает ошибку: Табл.ИНН = Табл.Юр.ИНН;
{C:\DOCUMENTS AND SETTINGS\ADM\РАБОЧИЙ СТОЛ\ПОИСКОДИННТОРГ.ERT(25)}: Поле агрегатного объекта не обнаружено (ИНН). Помогите, пожалуйста доработать отчет
Код программы:
Процедура Сформировать()  
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Таблица");
   Таб.ВывестиСекцию("Шапка");

   // Запрос по справочнику
   ТекстЗапроса = "                    
       |Контрагент = Справочник.Контрагенты.ТекущийЭлемент;
       |Юр  = Справочник.Контрагенты.ЮрФизЛицо;        
       |Группировка Контрагент Без Групп;
       |Группировка Юр;        
       |";                                                            
   
   Запрос = СоздатьОбъект("Запрос");
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Возврат;
   КонецЕсли;    
   
   Табл = СоздатьОбъект("ТаблицаЗначений");
   Запрос.Выгрузить(Табл,, 0);
   Табл.НоваяКолонка("ИНН");  
   Табл.ВыбратьСтроки();  
   Пока Табл.ПолучитьСтроку() = 1 Цикл
       Табл.ИНН = Табл.Юр.ИНН;  
   КонецЦикла;
   Табл.НоваяСтрока();
   Табл.Инн = "";
   Табл.НоваяСтрока();
   Табл.Инн = "999999";
   //СчетчикЦикла = 0;
   //Для СчетчикЦикла = 1 по Табл.КоличествоКолонок() Цикл
   //  Табл.ПолучитьПараметрыКолонки(<Колонка>,<Тип>,<Дл,,Стр);
   //КонецЦикла;

   Табл.Сортировать("ИНН");  
   Табл.ВыбратьСтроки();
   ИНН = "";
   Номер = 0;  
   Номер1 = 0;
   Пока Табл.ПолучитьСтроку() = 1 Цикл  
       Номер = Номер + 1;      
       Если (Номер = 1) Или (Номер = Табл.КоличествоСтрок()) Тогда Продолжить; КонецЕсли;
       Если СокрЛП(Табл.Инн) = "" Тогда Продолжить; КонецЕсли;  
       //Сообщить(Ном);
       Если (СокрЛП(Табл.Инн) <>СокрЛП(Табл.ПолучитьЗначение(Номер - 1,"ИНН"))) И
       (СокрЛП(Табл.Инн) <> СокрЛП(Табл.ПолучитьЗначение(Номер + 1,"ИНН"))) Тогда Продолжить; КонецЕсли;
       Если СокрЛП(Табл.Инн) <> СокрЛП(Табл.ПолучитьЗначение(Номер - 1,"ИНН")) Тогда
            Таб.ВывестиСекцию("СтрокаР");
       КонецЕсли;  
       Номер1 = Номер1 + 1;
       ПечНом = Номер1;
       ПечКон = Табл.Контрагент;  
       Расш = Табл.Контрагент;
       ПечИНН = Табл.ИНН;
       Таб.ВывестиСекцию("Строка");
   КонецЦикла;
   Таб.ВывестиСЕкцию("Подвал");  
   Таб.ТолькоПросмотр(1);    
   Таб.Опции(1, 0);
   Таб.Показать("Поиск контрагентов с одинаковыми ИНН");
КонецПроцедуры
1 Sh1ko
 
27.08.12
13:09
фото надо
2 Zmich
 
27.08.12
13:11
Табл.ВыбратьСтроки();  
Пока Табл.ПолучитьСтроку() = 1 Цикл
  Если ПустоеЗначение(Табл.Юр) = 0 Тогда
     Табл.ИНН = Табл.Юр.ИНН;
  КонецЕсли;
КонецЦикла;
3 КонецЦикла
 
27.08.12
13:13
В запросе не судьба получить?
Далее как вариант:
Потом добавить в таблицу счетчик и свернуть по ИНН с суммой по счетчику
Там где значение будет более 1 (отсортировать) и будут дубли

Типа аналог having count :)
4 M0narch
 
27.08.12
13:15
Табл.ВыбратьСтроки();  
Пока Табл.ПолучитьСтроку() = 1 Цикл
  Если ПустоеЗначение(Табл.Юр) = 0 Тогда
     Табл.ИНН = Табл.Контрагент.ИНН;
  КонецЕсли;
КонецЦикла;
5 Pechka
 
27.08.12
13:21
добавила так :
Табл.ВыбратьСтроки();  
Пока Табл.ПолучитьСтроку() = 1 Цикл
  Если ПустоеЗначение(Табл.Юр) = 0 Тогда
     Табл.ИНН = Табл.Контрагент.ИНН;
  КонецЕсли;
КонецЦикла;

и так пробовала:
Табл.ВыбратьСтроки();  
Пока Табл.ПолучитьСтроку() = 1 Цикл
  Если ПустоеЗначение(Табл.Юр) = 0 Тогда
     Табл.ИНН = Табл.Юр.ИНН;
  КонецЕсли;
КонецЦикла;

выдает ошибку : Табл.ИНН = Табл.Юр.ИНН;
{C:\DOCUMENTS AND SETTINGS\ADM\РАБОЧИЙ СТОЛ\ПОИСКОДИННТОРГ.ERT(26)}: Поле агрегатного объекта не обнаружено (ИНН)
6 M0narch
 
27.08.12
13:25
Табл.ВыбратьСтроки();  
Пока Табл.ПолучитьСтроку() = 1 Цикл
  Если Табл.Юр = Перечисление.ЮрФизЛицо.Юр Тогда
     Табл.ИНН = Табл.Контрагент.ИНН;
  КонецЕсли;
КонецЦикла;

как то так
7 Rie
 
27.08.12
13:26
(0) И откуда у Табл взялась колонка ИНН (после того, как в неё выгрузили результат запроса)?
8 miki
 
27.08.12
13:27
(7)
>>Табл.НоваяКолонка("ИНН");
9 CepeLLlka
 
27.08.12
13:28
Кать, ты такая же горячая как и твой ник?
10 miki
 
27.08.12
13:29
+(3)
Добавить переменную в запрос, убрать группировку (да и переменную) по контрагенту (одно ЮФЛ вполне может быть у нескольких контрагентов).
11 Pechka
 
27.08.12
13:33
M0narch, написала как вы и сказали,выдает ошибку все равно:
Если Табл.Юр = Перечисление.ЮрФизЛицо.Юр Тогда
{C:\DOCUMENTS AND SETTINGS\ADM\РАБОЧИЙ СТОЛ\ПОИСКОДИННТОРГ.ERT(25)}: Поле агрегатного объекта не обнаружено (ЮрФизЛицо)
12 Rie
 
27.08.12
13:40
Следующее непонимание с моей стороны. В типовых у справочника Контрагенты ЮрФизЛицо - это справочник. На кой его с перечислением сравнивать?
13 Rie
 
27.08.12
13:40
+(12) Да и перечисления ЮрФизЛицо в типовых - что-то не припомню...
14 aka AMIGO
 
27.08.12
13:41
(0) всё путём, работает твой отчет в ТИС.
что делала с конфигурацией? ничего не меняла в справочниках?
15 Pechka
 
27.08.12
13:42
записала:
   Табл = СоздатьОбъект("ТаблицаЗначений");
   Запрос.Выгрузить(Табл,, 0);
   Табл.НоваяКолонка("ИНН");
       Табл.ВыбратьСтроки();  
   Пока Табл.ПолучитьСтроку() = 1 Цикл
     Если ПустоеЗначение(Табл.Юр) = 0 Тогда
         Табл.ИНН = Табл.Юр.ИНН;
      КонецЕсли;
   КонецЦикла;

добавила новую колонку ИНН, теперь выходят все контрагенты, которые дублируются и нет
16 Pechka
 
27.08.12
13:43
в справочниках ничего не меняла
17 floody
 
27.08.12
13:44
Жаль что традицию с фото отменили.
18 M0narch
 
27.08.12
13:45
(13) смотрю украинскую конфу, там есть ВидКонтрагента, с ЮрФизЛицо попутал
19 Pechka
 
27.08.12
13:50
что делать???? :(((((
20 aka AMIGO
 
27.08.12
13:51
(19)мдшник в зипе можешь выложить?
21 aka AMIGO
 
27.08.12
13:51
Вот сработал код в ТиСе, намеренно ввел два одинаковых инн

Ры    8    
   8    6165127970
   9    6165127970
22 Pechka
 
27.08.12
13:54
у меня не срабатывает((( как выложить то,"прикрепить файлы" нет же
23 Pechka
 
27.08.12
13:55
почту напишите свою,отправлю
24 miki
 
27.08.12
13:56
кошелек тоже выложи, пусть и з/п отправляет
25 aka AMIGO
 
27.08.12
13:56
(22) valeri35(GAFF)bk.ru
26 aka AMIGO
 
27.08.12
13:56
(24) :)
27 aka AMIGO
 
27.08.12
14:02
(23)пароль нужен для открытия
28 aka AMIGO
 
27.08.12
14:03
+27 тоже в мыло, естественно..
29 Oleg_Kag
 
27.08.12
14:23
самое главное ни кто ошибки в цикле не заметил :)
в условиях Если
30 Pechka
 
27.08.12
14:24
какая ошибка??
31 aka AMIGO
 
27.08.12
14:27
(0) в конфигурации версии923 отсутствует справочник ЮрФизЛица..
Есть только ЮрЛица и ФизЛица.
32 Pechka
 
27.08.12
14:29
и что теперь делать?(
33 chief accountant
 
27.08.12
14:30
(32) написать свою обработку
34 aka AMIGO
 
27.08.12
14:32
(32)для контрагентов определены 2 реквизита - ЮрЛицо, ФизЛицо.

так что возможен вариант
      |Юр  = Справочник.Контрагенты.ЮрЛицо;  
      |Физ  = Справочник.Контрагенты.ФизЛицо;  

Определить в при присворении Табл.ИНН вид контрагента, и присвоить соответствующее значение
35 aka AMIGO
 
27.08.12
14:59
+34-му отбой! это в другой версии конфигурации!
36 miki
 
27.08.12
15:03
(35)ни в какой не было. Там неопределенный справочник, а значения у него или ФЛ или ЮЛ.
37 aka AMIGO
 
27.08.12
15:05
(36)да, я уже ей это написал в письме.
38 aka AMIGO
 
27.08.12
15:07
в общем и целом - отчет должен работать нормально..

теперь уж думаю, что в БД есть ошибка в одном из контрагентов, у него не присвоен статус (вид) ЮЛ/ФЛ
39 miki
 
27.08.12
15:08
(38)значит обернуть в Попытку/Исключение
40 aka AMIGO
 
27.08.12
15:13
(39)точно!

   Пока Табл.ПолучитьСтроку() = 1 Цикл
       Попытка
           Табл.ИНН = Табл.Юр.ИНН;  
       Исключение
           Сообщить(""+Табл.Контрагент+" пустой статус ФЛ/ЮЛ!");
       КонецПопытки;
   КонецЦикла;
41 Pechka
 
27.08.12
15:17
все равно выходит та же большая таблица,со всеми контрагентами, и в окошке сообщить : ФС-Договоры пустой статус ФЛ/ЮЛ!
ФС-Договоры пустой статус ФЛ/ЮЛ!
42 miki
 
27.08.12
15:20
"ФС-Договоры" это битые ссылки кто-то восстанавливал...
43 aka AMIGO
 
27.08.12
15:29
(41)а запускала тот код, что в первом посте?
я-ж написал: он у меня работает.. Только дополнительно эта Попытка..
44 aka AMIGO
 
27.08.12
15:32
Посмотрел распечатку: всё правильно выводит отчет! В справочнике Контрагенты задублированы.
45 Pechka
 
27.08.12
15:33
все равно,также выводит
46 aka AMIGO
 
27.08.12
15:34
+44 и выводятся попарно
604    КММ    7735566910/773501001
605    я КММ    7735566910/773501001

а кое-где еще и по 3 штуки:

568    ФБУЗпоЖДТ((с/ф)    7701351634/164502001
569    яяФГУЗпоЖДТ((с/ф)-обновление11г    7701351634/164502001
570    яяФГУЗпоЖДТ (буг)-обновление11г    7701351634/164502001
47 aka AMIGO
 
27.08.12
15:34
(45)у них совпадает ИНН! потому и выводятся
48 Mikeware
 
27.08.12
15:34
(46) забей. год рождения - он свое дело знает крепко...
49 Pechka
 
27.08.12
15:49
спасибо,получилось:)
50 aka AMIGO
 
27.08.12
15:50
(49) ну, вот и хорошо :)

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

   // Подготовка к заполнению выходных форм данными запроса
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Сформировать");
   // Заполнение полей "Заголовок"
   Таб.ВывестиСекцию("Заголовок");
   Состояние("Заполнение выходной таблицы...");
   Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
   //первый элемент
   ИННИщем="";
   Пока Запрос.Группировка(1) = 1 Цикл
       // Заполнение полей ТекущийЭлемент
       Если ИННИщем=СокрЛП(Запрос.ИНН) Тогда
           Таб.ВывестиСекцию("ТекущийЭлемент");
                        //тут выводите в таблицу данные
       Иначе
           ИННИщем=СокрЛП(Запрос.ИНН);
       КонецЕсли;
   КонецЦикла;
   // Вывод заполненной формы
   Таб.ТолькоПросмотр(1);
   Таб.Показать("Сформировать", "");
КонецПроцедуры
52 aka AMIGO
 
27.08.12
15:57
код, видимо для другой конфигурации,
вот это:
   |ИНН = Справочник.Контрагенты.ИНН;
в ТиС не сработает, нет реквизита ИНН в спр.контрагентов, он в двух других
53 aka AMIGO
 
27.08.12
16:00
+52 а код-то короче :) хорошо написано :)
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.