Имя: Пароль:
1C
1C 7.7
v7: API проверки контрагентов
, ,
0 ЯнСмит
 
28.09.23
14:57
такой вопрос - кто-нибудь прикручивал subj к 1с 7.7 в первую очереди интересен контроль корректности ИНН, КПП и юр.адреса, оценки всяких там рисков вообще не нужны ...
1 ЯнСмит
 
28.09.23
15:11
Все - отбой, что-то ступил, на инфостарте такого как ... за баней
2 ЯнСмит
 
29.09.23
19:21
Так, похоже поспешил я ... нашел на инфостарте вот эту ветку
https://infostart.ru/1c/articles/577575/
по идее, то что надо, подставляешь ИНН - получаешь КПП, юр.адрес и пр., но проблема в, том что ни фига не работает, пробовал по-всякому, подписка 1С:Проф есть, заметил, что в статье устаревший адрес сервиса, нашел новый - с тем же результатом.
P.S. Злоп - ты вроде там плотно отметился, пни в нужном направлении если не сложно )
3 Харлампий Дымба
 
29.09.23
21:59
Обработка по заполнению данных контрагентов по 1С:Контрагент  из моей рабочей базы
https://disk.yandex.ru/d/PcYen_AZGPreSA
Подкрутишь себе, как надо.
Для работы нужен будет логин и пароль ИТС
4 ЯнСмит
 
30.09.23
11:17
(3) премного благодарен
5 MWWRuza
 
гуру
30.09.23
19:47
Вот не пойму - чего такого есть в "1С:Контрагент" по подписке ИТС, чего нет в практически бесплатном(бесплатно до 300 запросов в день) сервисе "DaData" - ???
Обработок для работы с ним есть несколько на ИнфоСтарте, в том числе и для 7.7...
6 MWWRuza
 
гуру
30.09.23
19:46
Вот в моей конфе, на основе одной из разработок с инфостарта:
7 MWWRuza
 
гуру
30.09.23
19:53
Ааа, даже соврал - не 300 запросов в день бесплатно, а вообще 10000 :-)
https://dadata.ru/pricing/
Чего-то мне 300 запало, возможно раньше так было, а теперь добавили.
8 CepeLLlka
 
30.09.23
19:54
(5)Почему вы считаете что до 300? В личном кабинете написано что бесплатно 10 000 запросов в день.
9 CepeLLlka
 
30.09.23
19:55
Я тоже себе сделал такое для БП 3.0, УТ 11.х КА 2.5
10 Харлампий Дымба
 
30.09.23
21:05
(5) Ладно, переделаю когда-нибудь)
11 ЯнСмит
 
30.09.23
21:27
(6) уже неоднократно встречался с мнением, что dadata.ru предоставляют не самые свежие данные ... хотя может это и в прошлом уже
12 Смотрящий
 
30.09.23
21:41
(11) Мнение же ж ... Это как "британские ученые доказали" ...
13 MWWRuza
 
гуру
30.09.23
22:34
(11) Ну... Трудно сказать, но, даже в моем примере(запрашивал только что), дата обновления достаточно свежая. Не думаю, что это одна карточка обновлена. Скорее всего, что есть в ЕГРЮЛ, то и тут есть.
14 Злопчинский
 
30.09.23
22:54
тут на основе инфостартовской делал проверку действительности клиента на моменты взаиморасчетов, может кому пригодится.
https://dropmefiles.net/ru/mKyvPLek
15 Duke1C
 
02.10.23
09:15
(14) Не работает ссыль
16 Builder
 
02.10.23
09:27
(15) Работает, подождать надо до появления ссылки.
17 Кир Пластелинин
 
02.10.23
10:38
(5) "Вот не пойму - чего такого есть в "1С:Контрагент" по подписке ИТС" - мб то, что он прописан во всех типовых?
18 MWWRuza
 
гуру
02.10.23
11:16
(17) Видимо, да.
Если использовать типовые - то однозначно, зачем что-то писать, когда это и так есть :-) А тем более если интересующийся не программист, а какой-нибудь бухгалтер, то даже готовую обработку с инфостарта будет проблематично использовать, особенно, если версия базовая... Сейчас стало модно все расширениями делать, но, они не работают в базовых версиях(кроме подписанных самой 1С)... Хотя, тут тоже можно использовать как внешнюю обработку, вроде никто не запрещал... Да, не очень удобно, но можно - я же привязал базу ШК от ОлегОна к базовой рознице, ничего, работают. Тут можно аналогично.
Но!!! Сабж то изначально по 7.7...А там, какие типовые поддерживают этот сервис? По любому писать с нуля... А тут, если уж делать, то с ДаДатой удобнее и дешевле.
Я так понимаю, подписки на ИТС мало(по крайней мере - техно, в проф может быть), нужно еще и сервис дополнительно подключать и оплачивать(не знаю точно, но что-то 500 руб на слуху, х.з за какой период)...
19 MWWRuza
 
гуру
02.10.23
11:26
(15) А ссылка у меня тоже не работает...
(16) Тут хоть жди, хоть не жди - все ожидания заканчиваются этим:
20 Aleksey
 
02.10.23
11:30
(18) в техно и базовых нет контрагента, он покупается отдельно. В проф там 7200 обращений за год.
Цена 4800 на год (максимум 7200 обращений, нужно больше покупай еще раз). Или 3500 в месяц безлимит
21 Builder
 
02.10.23
11:30
(19) Ну ХЗ, я скачал, может провайдеры блочат?
22 Aleksey
 
02.10.23
11:40
(21) кто провайдер? у меня ростелеком и мегафон не открывают
23 MWWRuza
 
гуру
02.10.23
11:47
(22) У меня тоже РосТелеком... Других не пробовал - без особой надобности. Просто интересно было взглянуть, без практическогй цели применения у себя. Если уж понадобилось бы - обратился бы к Злопу на прямую...
Но, все равно не порядок со ссылкой - какая-то "кривая" файлопомойка :-(
24 Builder
 
02.10.23
11:54
(23) Переложил, ловите :)
https://disk.yandex.ru/d/tsoVwuh0g9NbuQ
25 Aleksey
 
02.10.23
12:39
дом ру и теле2 тоже не открывают, хотя через впн работает
26 MWWRuza
 
гуру
02.10.23
13:00
(24) Там к ней еще как минимум 3 функции из ГМ нужно:
глПолучитьИНН - ну, тут нужно из строки ИНН/КПП выделить ИНН.
глПолучитьКПП - тут, аналогично КПП.
глОчисткаТЗ   - а тут, не совсем понятно по названию, только строки удалить, или вообще всю структуру, с колонками? Разбираться лень :-)
Я не знаю, может это типовые функции ТиС последних релизов, у меня далеко не типовая, хоть и на базе ТиС, таких функций нет.
27 Builder
 
02.10.23
13:03
(26) Я не автор, я просто переложил обработку :)
28 MWWRuza
 
гуру
02.10.23
13:05
(27) Я понял. Это я для Злопа, просто ворчу :-)
29 victuan1
 
03.10.23
05:44
(26) Нет этих функций в релизах типовой ТИС (включая последние).
30 ЯнСмит
 
03.10.23
20:01
(29) глобальных да, нет, но есть локальные ПолучитьИНН и ПолучитьКПП, абсолютно идентичные и раскиданные по десятку-другому куче модулей )
31 Злопчинский
 
03.10.23
22:01
//******************************************************************************
// ОчисткаТЗ()
// Параметры: ТЗ, которую надо очистить
// В ТЗ д.б. Колонки с идентификаторами "НадоУдалить" и "ОПС" (оригинальный порядок строк)
// Описание: очищает ТЗ от ненужных строк
Процедура глОчисткаТЗ(ТЗдляЧистки, ОПС="+ОПС", КолонкаУдалить="НадоУдалить", Режим=0) Экспорт
    
    Попытка     НадоУдалить = ТЗдляЧистки.Итог(КолонкаУдалить);
    Исключение    Возврат;
    КонецПопытки;
    
    ТЗКС = ТЗдляЧистки.КоличествоСтрок();
    Если Режим <> 0 Тогда
        Сообщить("> ["+ТекущееВремя()+"]: *** удаляем "+НадоУдалить+" из "+ТЗКС+" ****");
    КонецЕсли;
    
    Если НадоУдалить <= 0 Тогда Возврат; КонецЕсли;
    
    Если НадоУдалить >= ТЗКС Тогда
        ТЗдляЧистки.УдалитьСтроки();
    Иначе
        ТЗРаб = СоздатьОбъект("ТаблицаЗначений");
        ТЗдляЧистки.Выгрузить(ТЗРаб);
        ТЗРаб.Сортировать("+"+КолонкаУдалить);
        ТЗРаб.Выгрузить(ТЗдляЧистки,1,ТЗКС-НадоУдалить);
        ТЗРаб = 0;
    КонецЕсли;
    Если ПустаяСтрока(ОПС) = 1 Тогда Возврат; КонецЕсли; //сортировать не надо
    Если ОПС = "###" Тогда Возврат; КонецЕсли; //сортировать не надо
    //восстановим оригинальный порядок строк
    ТЗдляЧистки.Сортировать(ОПС);
КонецПроцедуры    //глОчисткаТЗ()
32 Харлампий Дымба
 
04.10.23
00:00
Помню такое, да Пропуск из ТЗ элементов
Только недавно понял, почему всё-таки такой кусок не работает правильно, хотя казалось бы:
ТЗ.Сортировать("НадоОставить-");
ТЗ.КоличествоСтрок(ТЗ.Итог("НадоОставить"));
33 Злопчинский
 
04.10.23
00:21
(32) "Только недавно понял, почему всё-таки такой кусок не работает правильно,"
- и почему? (по ссылке объяснение дано типа "такова данность движка"), ты что-то новое понял?
34 Злопчинский
 
04.10.23
00:24
надо проверить
.
код
        ТЗРаб = СоздатьОбъект("ТаблицаЗначений");
        ТЗдляЧистки.Выгрузить(ТЗРаб);
        ТЗРаб.Сортировать("+"+КолонкаУдалить);
        ТЗРаб.Выгрузить(ТЗдляЧистки,1,ТЗКС-НадоУдалить);
заменить на
        ТЗдляЧистки.Сортировать("+"+КолонкаУдалить);
        ТЗдляЧистки.Выгрузить(ТЗдляЧистки,1,ТЗКС-НадоУдалить);
.
должно сработать
35 Злопчинский
 
04.10.23
00:40
угу.. ТЗ можно выгружать саму в себя
.
//*******************************************
Процедура Сформировать()

    ТЗдляЧистки = СоздатьОбъект("ТаблицаЗначений");
        ТЗдляЧистки.НоваяКолонка("Наименование","Строка");
        ТЗдляЧистки.НоваяКолонка("НадоУдалить","Число",1,0);
        
    Для ы=1 по 20 Цикл    
        ТЗдляЧистки.НоваяСтрока();
            ТЗдляЧистки.Наименование = "строка "+Формат(ы,"Ч(0)2");
            ТЗдляЧистки.НадоУдалить = ы%2;
    КонецЦикла;
    
    //ПечатьТЗ(ТЗдляЧистки,"исходная, ДО");
    ТЗдляЧистки.ВыбратьСтроку(,"исходная, ДО");
    
    ТЗКС = ТЗдляЧистки.КоличествоСтрок();
    НадоУдалить = ТЗдляЧистки.Итог("НадоУдалить");

    ТЗдляЧистки.Сортировать("+НадоУдалить");
    ТЗдляЧистки.Выгрузить(ТЗдляЧистки,1,ТЗдляЧистки.КоличествоСтрок()-НадоУдалить);  //выгружаем в саму себя
    ТЗдляЧистки.Сортировать("Наименование"); // "ОПС"
    
    //ПечатьТЗ(ТЗдляЧистки,"результат, ПОСЛЕ");
    ТЗдляЧистки.ВыбратьСтроку(,"результат, ПОСЛЕ");
    
КонецПроцедуры // Сформировать()
36 Злопчинский
 
04.10.23
00:42
//******************************************************************************
// ОчисткаТЗ()
// Параметры: ТЗ, которую надо очистить
// В ТЗ д.б. Колонки с идентификаторами "НадоУдалить" и "ОПС" (оригинальный порядок строк)
// Описание: очищает ТЗ от ненужных строк
Процедура глОчисткаТЗ(ТЗдляЧистки, ОПС="+ОПС", КолонкаУдалить="НадоУдалить", Режим=0) Экспорт
    
    Попытка     НадоУдалить = ТЗдляЧистки.Итог(КолонкаУдалить);
    Исключение    Возврат;
    КонецПопытки;
    
    ТЗКС = ТЗдляЧистки.КоличествоСтрок();
    Если Режим <> 0 Тогда
        Сообщить("> ["+ТекущееВремя()+"]: *** удаляем "+НадоУдалить+" из "+ТЗКС+" ****");
    КонецЕсли;
    
    Если НадоУдалить <= 0 Тогда Возврат; КонецЕсли;
    
    Если НадоУдалить >= ТЗКС Тогда
        ТЗдляЧистки.УдалитьСтроки();
    Иначе
        ТЗдляЧистки.Сортировать("+"+КолонкаУдалить);
        ТЗдляЧистки.Выгрузить(ТЗдляЧистки,1,ТЗКС-НадоУдалить);
    КонецЕсли;
    Если ПустаяСтрока(ОПС) = 1 Тогда Возврат; КонецЕсли; //сортировать не надо
    Если ОПС = "###" Тогда Возврат; КонецЕсли; //сортировать не надо
    //восстановим оригинальный порядок строк
    ТЗдляЧистки.Сортировать(ОПС);
КонецПроцедуры    //глОчисткаТЗ()
37 Харлампий Дымба
 
04.10.23
00:50
(35) Опа. А я даже и не пытался. Запишу в книжечку > ТЗ можно выгружать саму в себя
38 Злопчинский
 
04.10.23
00:53
(37) я когда-то давно это проверял. но обычно не использую.
решил проверить еще раз, мало ли что...
39 Харлампий Дымба
 
04.10.23
01:54
(34) Суть в том, что Сортировать не меняет саму таблицу, а добавляет к ней просто индекс. И если Выгрузить() или ВыбратьСтроки() отрабатывают потом в такой таблице по индексу, то про Колич в функции ТЗ.КоличествоСтрок(Колич) видимо забыли, и она спокойно себе обрезает таблицу, как будто там остался старый порядок строк. Код для иллюстрации

    ТЗ1=СоздатьОбъект("ТаблицаЗначений");
    ТЗ=СоздатьОбъект("ТаблицаЗначений");
    ТЗ.НоваяКолонка("Кол1");
    ТЗ.НоваяСтрока();
    ТЗ.Кол1=7;
    ТЗ.НоваяСтрока();
    ТЗ.Кол1=3;
    ТЗ.НоваяСтрока();
    ТЗ.Кол1=5;
    Сообщить("Исходная:"+СимволТабуляции+ЗначениеВСтроку(ТЗ));
    ТЗ.Сортировать("Кол1");
    Сообщить("Сортировка:"+СимволТабуляции+ЗначениеВСтроку(ТЗ));
    ТЗ.Выгрузить(ТЗ1);
    Сообщить("Выгрузка:"+СимволТабуляции+ЗначениеВСтроку(ТЗ1));
    ТЗ.КоличествоСтрок(2);
    Сообщить("Подрезка:"+СимволТабуляции+ЗначениеВСтроку(ТЗ));

Обрати внимание:
После сортировки появляется строка с  индексами, но сама таблица остаётся без изменений;
После выгрузки строка индексов исчезает и порядок строк в таблице меняется в соответствие с сортировкой;
После подрезки строки берутся по порядку без учета сортировки, а строка с индексами перестраивается и вместо ожидаемых 3,5 тебе в сортированной и подрезанной таблице приходят исходные 7,3.
Такая же байда будет и с Заполнить() - если ты укажешь конкретные строки для заполнения, то будут изменены не те номера строк которые ты видишь в сортированной таблице, а те которые были в исходной.
40 MWWRuza
 
гуру
04.10.23
11:34
(39) Прикольно... :-(  Такой глюк в работе встретишь, затрахаешься разбираться, "почему все криво".
Спасибо. Буду знать.
41 MWWRuza
 
гуру
04.10.23
11:50
А по сабжу - у Злопа там не 1С:Контрагент и не ДаДата, там:
URL  = "http://npchk.nalog.ru/FNSNDSCAWS_2"
т.е. непосредственно с ФНС данные тянутся, надо попробовать на досуге :-)
42 victuan1
 
05.10.23
05:11
(41) Вроде этот запрос используется в типовых клюшках в регламентированной отчетности "Декларация НДС".
43 Злопчинский
 
05.10.23
23:55
(39) понятно с индексом.
По идее КоличествоСТрок() на УВЕЛИЧЕНИЕ количества должно отработать нормально. Кстати, может и починится трабл после такого оператора...?
44 Харлампий Дымба
 
06.10.23
01:07
(43) Нет, не починит - индексная строка останется и будет увеличена на количество добавленных строк. Но и необходимости чинить трабл нет, потому что отсортированная таблица - нормальная. Просто несколько функций в редко используемых вариантах ведут себя в отсортированной таблице некорректно. Что в общем-то понятно, учитывая что ТаблицаЗначений это абсолютно новый инструмент, отличающий 7.7 от 7.5, поэтому за десяток рабочих релизов её до ума так и не довели. Просто, ну кто использует КоличествоСтрок() с параметром? Никто. Кто использует Заполнить() не для полной таблицы, а для её части? Кто пользуется СдвинутьСтроку()? Кто пользуется  НайтиЗначение(блабла,СтрТЗ,КолТЗ) с непустыми СтрТЗ и КолТЗ одновременно? Отсортировал таблицу и заполняй/выводи перебором или выгружай дальше - а тут она нормально отрабатывает. Если прям надо реально очистить от индексной строки, то сделай ТЗ.Выгрузить(ТЗ1) и ТЗ1 - будет идеальная.

Ну мы от subj куда-то далеко ушли, в ТаблицеЗначений вообще много чудес.
45 Злопчинский
 
22.10.23
02:19
(44) все именно так как ты описал, и это твое последнее замечание не прочитал ранее. А сейчас столкнулся с траблом Заполнить для части таблицы полсе применени Сортировать и СдвинутьСТроки - и все получается плохо... ;-) Только лечить отсортированную ТЗ через выгрузку в промежуточный буфер а из буфера выгружать снова в ТЗ...
2 + 2 = 3.9999999999999999999999999999999...