gifts2017

Проверка контрагентов по ЕГРН и сверка реквизитов по ним через Контур-Фокус

Опубликовал Александр (ondul) в раздел Обработки - Обработка справочников

1. Обработка позволяет оценивать статус контрагента по базе ЕГРН на дату первой или последней операции с контрагентом по выбранному периоду налоговой отчетности в базе и по персонально выбранному Контрагенту из поля ВыбКонтрагент, при флажке "Персонально", на выбранную дату из поля "по:".
2. Собственно, моя разработка - под рамкой группы на форме "Работа с отдельным Контрагентом" и Таблицей значений.

1. Обработка позволяет оценивать статус контрагента по базе ЕГРН на дату первой или последней операции с контрагентом по выбранному периоду налоговой отчетности в базе.
Эта часть была оптимизацией авторской обработки NicSit73 (Николай Ситников), http://infostart.ru/profile/391038/
с публикацией http://forum.infostart.ru/forum24/topic126433/message1313932/#message1313932

2. Собственно, моя разработка - под рамкой группы на форме "Работа с отдельным Контрагентом".
Так как обе части работают комплексно, дополняя друг друга, представляю их комплексный статус, с благодарностью к автору первоисточника - Николаю Ситникову, заставившему меня, нечаянным образом, обратить внимание на тему работы более чем пристально. :-)

В этой части были написаны процедуры обращения к серверу Контур-Фокус и построены процедуры парсинга реквизитов контрагентов из данных запроса.

Режимы работы.
На форме 2 рабочих поля, контекстно специализации работы
- левое - по статусу контрагентов, отработавших в заданном периоде отчетности,
- правое - по проверке конкретного контрагента на правильность занесения информации по ИНН и адресу.

По флажку "Персонально", и при непустом поле ВыбКонтрагент, можно отработать статус контрагента на дату из поля "по:"
Если поле ВыбКонтрагент пустое - доступны запросы без обращения к базе {по ИНН или произвольному тексту, указывающему на Имя предполагаемой для поиска компании или физического лица}.
Если поле ВыбКонтрагент не пустое - идёт диалог с обращением к базе.

Если у контрагента есть ИНН, запрос доступен для обслуживания по реквизитам контрагента кнопкой Сформировать_ПоКонтрагенту, иначе - следует работать по кнопке ЗадатьВопросСистемеКонтур - но без разницы, по какой из кнопок, в любом случае, в список вываливается некое множество компаний с именем вашего контрагента из поля ВыбКонтрагент, и уже из этого списка вы можете выбрать подходящие реквизиты, скопипастить ИНН в базу к контрагенту и затем по кнопке Сформировать_ПоКонтрагенту, занести реквизиты в базу через кнопку ЗаписатьАдрес.

Если запрос сделан по ИНН, ищется соответствующий ИНН в базе и, если ИНН единственный, то имя компании вставляется в поле ВыбКонтрагент, чтобы иметь возможность сразу переключиться на режим записи в базу.

Есть 2 вида кодирования компаний - обычных смертных {юр-лиц} и {физ-лиц+налоговых+департаментов}.
В этой версии алгоритм отрабатывает оба формата кодирования.
Запросы с выводом ответа на сайт Контур-Фокус или в файл, затем можно отрабатывать по флажку ИзФайла.

Файл регионов теперь в самой обработке.

Обработка существенно переписана, потому описание полностью заменяю.
Теперь обрабатываются юр-физ-лица.
Если в запросе выпадает ссылка на несколько юр-физ-лиц по признаку ФИО первичного запроса или совпадающих ИНН, с разными КПП, такой запрос выгружается по ИНН и ОГРН в Таблицу значений на форме.
Затем кликом по нужной строке Таблицы значений делается запрос к Контур-Фокус по ОГРН из текущей строки и заполняются КПП, ОКПО, Адрес.
На картинке приведён пример множественного запроса, с выбором по 1-й строке в типовой конфигурации Бухгалтерия 7.7, релиз 593, с добавленным реквизитом ОГРН справочника Контрагенты. Для формирования запроса была сделана запись в поле Наименование = "Кубанские казаки", без каких-либо дополнительных реквизитов, затем текущий элемент был выбран в поле ВыбКонтрагент и по кнопке "Сформировать_ПоКонтрагенту", был сделан запрос к Контур-Фокус, и заполнена Таблица значений на форме. Статус картинки - в момент до записи реквизитов в текущий элемент "Кубанские казаки", с подтверждением записи по флажку "Да".

Если запрос не множественный, то Таблица значений на форме не заполняется - данные сразу готовы для загрузки в справочник Контрагенты.
При каждом клике по Таблице значений совершается запрос к Контур-Фокус по ОГРН и полученные реквизиты, и Адрес становятся актуальными для занесения в базу, если в базе контрагент с нужным ИНН имеется.
Если же реквизиты нужно записать принудительно из выпадающего в таблицу значений списка, с актуальными для текущей позиции реквизитами, можно выбрать флажок "Да" и тогда по кнопке "ЗаписатьАдрес", все реквизиты пропишутся контрагенту в поле ВыбКонтрагент.

В этой версии прописал возможность работать с реквизитом ОГРН в справочнике Контрагенты.
Если реквизит ОГРН содержится в метаданных справочника Контрагенты, ОГРН будет прописываться выбранному контрагенту.
Логика работы с ОГРН, ИНН, Наименованием Компании такова, что если в Метаданных базы присутствует ОГРН и ОГРН - не пустой, запрос начинается с ОГРН, иначе - с непустого ИНН, иначе - с Наименования Компании.

В алгоритме предписал для базы Торговли - ОГРН в справочнике Контрагенты, а не в ЮР-Физ-лицах (не следует без надобности множить сущности),
поэтому, если будете настраивать работу с ОГРН в базе Торговля, учтите размещение реквизита в Контрагентах и обеспечьте видимость столбца реквизита ОГРН в ФормаСписка и ДляВыбора рядом с ИНН. 

Аналогично и в базах по типу Бухгалтерии - ОГРН следует разместить рядом с ИНН в формах списка, ну и в карточке контрагента - если захочется видеть ОГРН индивидуально.

Поддерживается возможность работы в конфигурациях на платформе 7.7: Бухгалтерия - ОСН, УСН; ПБУ; Торговля.

При поиске нужной фирмы по наименованию, ставьте сужающий фильтр Регион, район, город, село, улица, дом... и отслеживайте историю компании - по кнопке ЗадатьВопросСистемеКонтур.
В ряде случаев, компании с одним ИНН и разными КПП, ОГРН, сидят в одном доме..., однако - у всех компаний уникален только ОГРН - он и есть результат вашего поиска.
- Это довольно увлекательное и зрелищное действо - найти нужную компанию...!

И ещё - пользуйтесь флажком НеОткрыватьHTM, если окно чтения будет мешать по контексту поиска, или тормозить в работе.

А для полноты записи - чтобы поверх существующих реквизитов писались новые

- ИНН,КПП,ОГРН,ОКПО, используйте флажок "Да".

В версии 6 сделаны исправления по работе с реквизитами. - Если в конфигурации торговля у физЛица появится реквизит ОКПО, то ОКПО автоматически начнёт записываться в базу по признаку реквизита в метаданных.
При подготовке Декларации по НДС, выяснилось, что длина ИНН юр-физ-лица определяется по Виду Контрагента, что приводит к неверному заполнению ИНН для ФизЛиц, с неверно установленным видом контрагента.
- Декларация в таком случае обрезает длину ИНН 10-ю символами и не проходит контроль по ИНН.
Пришлось добавить процедуру с кнопкой на форме "РазделитьЮрФизЛицПоИНН", которая исправляет ситуацию. 
Добавлен вывод ИНН под полем ВыбКонтрагент, чтобы было удобнее отслеживать запросы к Контур-Фокус. 

Версия 7 от 07.04.2015г
- Добавлена работа: - с литерными номерами домов,
- старыми конфигурациями Торговля (Контрагенты без реквизита ЮрФизЛицо),
- конфигурациями без признака ИдентификаторКонфигурации.
- на форму добавлена кнопка "К"=Карта() - для показа положения домовладения на Яндекс-карте.
- для удобства работы добавил вывод ИНН выбранного контрагента в базе под полем формы ВыбКонтрагент.
- установлен счетчик числа запросов к серверу Контур-Фокус - количество халявных запросов ограничено 200 запросов в день - учтите.

- введено сохранение значений формы и восстановление при повторном запуске обработки.

Поскольку литерные номера, например, значение Дом в базе налоговой - "26 литер А, корпус 3, помещение 4Н"
- имеют структуру сильно отличающуюся от стандартной, ориентированной на номер квартиры, как Число(), по маске 9999,
пришлось в обработке ВводАдреса убрать маску 9999 на поле ввода "Квартира",
чтобы символьные номера имеющие фактическое хождение - как в этом примере - "помещ 4Н",
могли учитываться в стандарте Адресного классификатора, в пределах 10 символов поля "Квартира".

Если кто затрудняется убрать маску 9999 с поля ввода "Квартира", прилагаю к архиву обработку "ВводАдреса", с убранной маской.
С помощью технологии замены обработки в составе конфигурации на внешнюю обработу,
получите "ВводАдреса" с убранной маской в составе конфигурации.

Хотелось бы отметить неоценимый вклад в работу над литерными номерами victuan:

http://infostart.ru/profile/2345/

- он предложил поработать над литерной нумерацией, привести её к стандарту Кладра и предоставил множество примеров для этого.

 

Версия 8 от 08.04.2015г
- обновление по литерным номерам домов - встретились новые композиции с литерами.
- исправлена долгое время существовавшая ошибка в поиске соответствия по расширениям, сказывавшаяся в некоторых случаях для улиц и поселков. 
- для возможности в перспективе работы с нечетким поиском по регионам, в состав конфигурации введен справочник "Регионы", с реквизитом "Расширение",
при этом, если справочник "Регионы" в метаданных отсутствует, работает альтернативная часть алгоритма - без справочника "Регионы".
- примерно в 10 раз ускорено сохранение реквизитов формы. Оказалось, оператор СохранитьЗначение(,), по-видимому, самый медленно работающий среди операторов 1С.
Поместив сохраняемые значения реквизитов формы в СписокЗначений, удалось сократить в 10 раз количество операторов СохранитьЗначение(,).

Версия 9 от 10.04.2015г
1. - По просьбам пользователей обработки - вставил модуль чистки справочников базы от спец-символов и установил на форму кнопку "УдСС", связанную с этим модулем.
По этой кнопке:

Будет выполнена очистка наименований
справочников базы, а так же реквизитов - ПолнНаименование и ИНН от спец-символов.

Очистка необходима, если вы заметили, что ваши обработки ведут себя неправильно и
странно, вплоть до частого падения базы.

Зачастую это связано с внедрившимися в строки спец-символами - с кодами символов от 1 до 31.

Появление спец-символов связано с некоторой случайной комбинацией на клавиатуре,
с участием Alt. Так же спец-символы могут попасть в справочники при загрузке
из таблиц эселя.

2. - упустил из виду, но мне напомнили, в строку отбора документов сделки
для формирования запросов по статусу контрагентов в ЕГРН,
добавил список документов для конфигурации "Торговля".

3. - исправлена ситуация с так называемыми перечеркнутыми номерами ИНН, которые отмечены,
как неверные, хотя этот же номер является рабочим для другого ЮрФизЛица.
4. - добавлены варианты литерных номеров домов и домов без номеров,
например обозначенных Магазин "Весна" - характерных объектов для деревень,
когда номер дома ещё не установлен.

p.s.

- Просите своих клиентов-контрагентов, чтобы в документах всегда указывали ОГРН - вам же проще
- недостающую инфу - ИНН,КПП,ОКПО,Адрес - всегда получите из запроса к налоговой через Контур-Фокус.
- пишите о ваших проблемах - порешаем. :-)

Версия 10 от 24.07.2015г
- Контур-фокус изменил формат обращения к яндекс-картам,
пришлось добавить работу с измененным форматом вызова яндекс-карт, чтобы ссылки на карты работали.

Версия 11 от 17.09.2015г.
- Контур-фокус модифицировал строку операторов наименования компании,
в связи с чем соответствующий фрагмент выделения наименования компании в модуле обработки был переписан.

Версия 12 от 28.10.2015г.
- Переписан алгоритм в части процедуры ПоВсем().
Добавлен справочник ОКВЭД, подчиненный справочнику Контрагенты.
Справочник ОКВЭД (код вида экономической деятельности) имеет Наименование длиной 100 символов
и текстовый реквизит "КодПоОКВЭД", длиной 20 символов, как в Константах предприятия.

В работу ПоВсем() включаются документы из периода интервала дат, выбираемого для подготовки к отчетности.

Учитываются ИНН для физ-лиц - по результатам запроса в базу пишутся только ОГРН,ОКПО,
адрес не пишется по причине его усеченной подачи от Контур-Фокус, ну и пишется КодПоОКВЭД.

Для Юр-лиц выставлен фильтр по КПП вида ХХХХХ1001 - то есть, по признаку принадлежности к КПП головной организации.
На форму, рядом с кнопкой "ПоВсем", поставлен флажое БезОГРН.

При флажке БезОГРН=1, будут обрабатываться только элементы справочника Контрагенты, без ОГРН.

Если флажок БезОГРН=0, запись реквизитов в базу будет идти по всем.

Запись будет делаться автоматически, если флажок ДА=1.

И да - обработка ПоВсем учитывает виды конфигураций -
то есть - ВидКонфы, описанные в перечне конф по запросу глИдентификаторКонфигурации():

Попытка
Конфа=глИдентификаторКонфигурации();
Исключение
Конфа="";
КонецПопытки;

Если (Конфа="BU42TK") ИЛИ (Конфа="BUPSB25") ИЛИ (Конфа="PBOUL")Тогда //Бухгалтерия ОСН, ПУБ или Предприниматель
ВидКонфы=1;
ИначеЕсли (Конфа="BASUOR") Тогда //УСН
ВидКонфы=2;
ИначеЕсли (Конфа="OUTK") ИЛИ (Конфа="BUOUSL") Тогда //Торговля или Комплексная
ВидКонфы=3;
Если Метаданные.Справочник("Контрагенты").Реквизит("ЮрФизЛицо").Выбран()=0 Тогда
ВидКонфы = 4
КонецЕсли;
Иначе //Какая-то Конфа
ВидКонфы=4;
КонецЕсли;

 

Пробуйте и пишите - по ситуации - разберёмся. :-)

Скачать файлы

Наименование Файл Версия Размер
ProverkaKontryPoEGRN_vers12.rar 15
.rar 45,98Kb
27.10.15
15
.rar vers12 45,98Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Евгений Долиновский (Dolly_EV) 04.04.15 08:03
Редкая поделка, которая взлетела на моей совсем не типовой конфе без доработки напильником... Даже почти не стал смотреть чего внутри, но пара моментов:
1. кнопу "Копирайт" поправь))) а то приводит второй ссылкой на собственный профиль нажимающего))
2. Конфа=глИдентификаторКонфигурации(); лучше засунуть в Попытку и в Исключении писать ВидКонфы=4;
3. Регионы лучше засунуть в моксель и с него же потом считывать, так удобнее и нагляднее и править легче при изменениях.
2. Александр (ondul) 04.04.15 09:21
(1) Dolly_EV, - всё верно, пропишу. - Ссылка на профиль автора осталась с тех пор, когда работа не была ещё выставлена на инфостарт, но сейчас можно сослаться и на работу, спасибо.
В ближайшее время будет обновление, учту ваше замечание. Скажу сразу - будет добавлен модуль работы с литерными адресами и кнопка показа положения домовладения на Яндекс-карте.
3. Александр (ondul) 24.07.15 10:53
Не добавил в описании, добавлю здесь.
Изменен номер версии до vers10.
Версия 10 от 24.07.2015г Контур-фокус изменил формат обращения к яндекс-картам,
пришлось добавить работу с измененным форматом вызова яндекс-карт, чтобы ссылки на карты работали.
4. Дониэла Иванова (Доня) 28.07.15 10:17
Скачала, пользуюсь, очень помогла плюс
5. Александр (ondul) 16.09.15 23:48
(4) Доня, Версия 11 от 17.09.2015г.
- Контур-фокус модифицировал строку операторов наименования компании,
в связи с чем соответствующий фрагмент выделения наименования компании в модуле обработки был переписан.
6. Евгений Писарев (pisarevEV) 20.10.15 08:34
простите, какова роль данного блока:
	ФлагДЛ=0;
	ФлагЛИ=0;
	//Проверка на вид результата запроса
	Для а=1 По Текст.КоличествоСтрок() Цикл
		Стр=СокрЛП(Текст.ПолучитьСтроку(а));
		Если СокрЛП(Стр) = "" Тогда
			Продолжить;
		КонецЕсли;
		Если Найти(Стр,"</dl>")>0 Тогда
			ФлагДЛ=1;  
			Прервать;
		ИначеЕсли Найти(Стр,"ИНН:")>0 Тогда
			ФлагЛИ=1;
			Прервать;
		КонецЕсли;
	КонецЦикла;
...Показать Скрыть
7. Евгений Писарев (pisarevEV) 20.10.15 11:13
подскажите, в каких случаях в ответе сайта доступна секция fullMargin?
8. Александр (ondul) 20.10.15 13:00
(6) pisarevEV,
ФлагДЛ=0;
ФлагЛИ=0
- флаги по именам управляющих операторов dl или li, от которых зависит ветвление на логику подключаемых модулей анализа полученного текста из запроса к Контур-Фокус. - по флагу определяется точка входа в алгоритм соответствующего анализа.
Если есть оператор li, то отсутствует fullMargin
Из контекста я понял, что li отвечает за листинг - список в ответе, когда ответ порождает множественность.
На основании листинга в обработке заполняется таблица значений на форме, выбирая конкретную строку из списка в таблице - запускаем индивидуальный запрос к Контур-Фокус.
- можете сами попробовать, сделав запрос на ФИО=Иванов Иван Иванович - и поизучайте файлы в каталоге пользователя otvet32.htm и otvet32_.htm
Вывод в таблицу на форме ограничен 10 элементами списка. - Остальное - за кадром, если не пролистывать список дальше.
Однако, можно сузить фильтр, указав, например, в запросе Иванов Иван Иванович, Томск. - в списке будут уже не только директора предприятий, но и индивидуальные предприниматели по г.Томску.
Хочется вытянуть сведения по ОКВЭД ?
9. Евгений Писарев (pisarevEV) 20.10.15 15:34
(8) ondul, понял, спасибо
а вы не пробовали получить от контура описание их данных?
10. Александр (ondul) 20.10.15 16:51
(9) pisarevEV, ну что вы..... - это была сплошная рубка леса... - вопли ужаса и крики МУ-МУ (опыт работы с таким потоком данных был нулевой) - с анализом - где, чьи руки-ноги торчали... :-) )))))))
Если бы я обратился к Контур-Фокус за разъяснениями, наверняка, алгоритм выглядел бы по иному..., но что есть - то и получилось - это было хорошее развлекалово - было интересно ...
- Если посмотреть на модуль формы... - была куча вопросов, как делать запросы (остались следы тестирования подключаемых модулей), чтобы они воспринимались сервером.
- Среди многих, заглянувших на огонёк, были и те, кто дал хорошие подсказки... - так что - результат - труд совместный..., бескорыстный.
- Для меня это было шествие по граблям, но потихоньку - как хотелось сделать - так и получилось - всё утряслось...
Ну и решение обратной задачи - редукция к адресному классификатору налоговой, от некоей беспорядочности потока адреса в тексте запроса, совсем не тривиально..., потому как - попробуйте.... :-)
- На форуме "Территория 1С" было мнение, что уложить в стандарт адресного классификатора этот хаос - не получится...
11. Евгений Писарев (pisarevEV) 21.10.15 05:00
(10) ondul, да, путь вы прошли не маленький, это факт)
12. Админ (Bodyk) 25.10.15 11:20
К сожалению сервер контур-фокус работает крайне не стабильно. В случае потери связи с ним происходит массовое заполнение разных контрагентов одинаковыми данными.
13. Александр (ondul) 25.10.15 15:33
(12) Bodyk, А-ха-ха.... - впервые узнаю о происшествии под таким соусом....
- надо будет отловить такую штучку...
- Скорее всего, переполнен буфер запросов - ограничение порядка 100-200 запросов на бесплатное обслуживание в день - поэтому и написал на кнопке ПоВсем - действовать с осторожностью - из-за ограничения по запросам....
Но всё равно - нехорошо, что заполняет однотипными данными (не могу поверить - Адрес-то должен очищаться!) - проверю - надо будет отловить процесс, хотя бы просто очистив список значений Адреса, при отправке следующего контрагента в запрос к серверу, тогда пустой адрес не будет обслуживаться... - спасибо, предупредили.......!
А ещё могло быть, что поставили режим работы ИзФайла и тогда - да - к самому серверу обращений нет, а запросы идут обращением к файлу и в случае запуска ПоВсем - такое могло произойти - ведь данные идут, стоит флажок записи Адреса "ДА"... и вот - поехало по всем...
- Надо будет исключить при режиме ИзФайла работу ПоВсем. - Всё проверю, спасибо!

Так-с.... - посмотрел...
- Режим ПоВсем - уже правильно блокируется оператором Возврат, при флажке ИзФайла=1.
А в процедуре циклического обращения к серверу ПоВсем()
Предлагаю вам протестировать на своей базе, раз уж вы уже запускали и нарвались на проблему, - поправил модуль процедуры ПоВсем:

Процедура ПоВсем() 
	Если ИзФайла=1 Тогда
		Предупреждение("В режиме настроек из файла, сервис ПоВсем - недоступен!");
		Возврат;
	КонецЕсли;
	Если Вопрос("Вы совершаете рискованную операцию, 
	|так как заполнение адресных данных по ИНН без КПП будет неверным для филиалов.
	|Сейчас в тестовом режиме Контур-Фокус выполняет запросы по головному предприятию,
	|владельцу ИНН
	|- Вы согласны начать массовое заполнение адресов?","Да+Нет") = "Нет" Тогда
		Возврат;
	КонецЕсли;
	
	ЕстьКПП = 0;
	Если Метаданные.Справочник("Контрагенты").Реквизит("КПП").Выбран() = 1 Тогда
		ЕстьКПП = 1;
	КонецЕсли;  
	
	//Для исключения повторов адреса, при переполнении буфера запросов
	АдресПовтора="";
	СЗПовтора=СоздатьОбъект("СписокЗначений");
	СчетчикПовторов=0;
	
	//Отключаем вывод страниц htm 
	НеОткрыватьHTM=1;
	
	Контрагент = СоздатьОбъект("Справочник.Контрагенты"); 
	ПромТЗ = СоздатьОбъект("ТаблицаЗначений");
	ПромТЗ.НоваяКолонка("Контрагент","Контрагенты"); 
	
	Если ДатаПервого=1 Тогда
	Иначе
		Докум.ОбратныйПорядок(1);
	КонецЕсли;
	
	Сообщить("
	|Внимание!
	|Будем обрабатывать Контрагентов, 
	|участвующих в движениях по выбранному периоду дат с "+НачДата+" по "+КонДата+",
	|имеющих предварительно заполненные поля\поле ИНН\КПП для головной организации, 
	|то есть, с КПП, заканчивающихся на """"1001"""" !
	|");
	
	Предупреждение("
	|Внимание!
	|Будем обрабатывать Контрагентов, 
	|участвующих в движениях по выбранному периоду дат с "+НачДата+" по "+КонДата+",
	|имеющих предварительно заполненные поля\поле ИНН\КПП для головной организации, 
	|то есть, с КПП, заканчивающихся на """"1001"""" !
	|");
	
	Если Вопрос("Вы согласны с принятыми условиями?", "Да+Нет", 60) <> "Да" Тогда
		Возврат;
	КонецЕсли;
	
	Докум.ВыбратьДокументы(НачДата,КонДата); 
	Пока Докум.ПолучитьДокумент() = 1 Цикл 
		Если Найти(СписокВидовДокументов,Докум.Вид())>0 Тогда
		Иначе
			Продолжить;
		КонецЕсли;
		Если Метаданные.Документ(Докум.Вид()).РеквизитШапки("Клиент").Выбран() = 1 Тогда 
			Если Докум.Клиент.Выбран() = 1 Тогда
				ПромТЗ.НоваяСтрока();
				ПромТЗ.Контрагент = Докум.Клиент.ТекущийЭлемент(); 
			КонецЕсли;
		ИначеЕсли Метаданные.Документ(Докум.Вид()).РеквизитШапки("Контрагент").Выбран() = 1 Тогда 
			Если Докум.Контрагент.Выбран() = 1 Тогда  
				ПромТЗ.НоваяСтрока();
				ПромТЗ.Контрагент = Докум.Контрагент.ТекущийЭлемент();
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;		
	
	ПромТЗ.Свернуть("Контрагент","");
	
	Если ПромТЗ.КоличествоСтрок() > 10000 Тогда
		Предупреждение("Больше 10000 контрагентов за один раз проверить нельзя",60);
		Возврат;
	КонецЕсли;
	Если ПромТЗ.КоличествоСтрок()=0 Тогда
		Предупреждение("Нет данных для обработки",5);
		Возврат;
	КонецЕсли;	                          

	ПромТЗ.НоваяКолонка("ИНН");
	ПромТЗ.НоваяКолонка("КПП");

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


- В общем, постарался учесть случай повторных адресов - пока не было ошибки, но и не дошёл до переполнения буфера запросов ( в текущей базе у меня оказалось менее 100 контрагентов...

p.s.

- Всё-таки, добрался до переполнения буфера запросов к серверу Контур-Фокус.
- Ничего подобного, что пишете вы - не наблюдаю ! - на цикл повторов - никак не выходит - если переполнение буфера запросов, сервер возвращают сообщение типа: - "Слишком много запросов к серверу. Войдите в систему, чтобы продолжить".
В таком случае Адрес пуст и такой адрес просто не записывается! - сочиняете....?
- Как вариант - на случай сбоя обращения к серверу, поставил защиту - проверка выхода из цикла ПоВсем() в запросе по исключению...
- Отловите ваш случай - попадёте на выход из цикла по исключению?
- отпишитесь!

p.p.s.

Процедура ПоВсем() находилась долгое время в затравочном состоянии, теперь ручки дошли - ПЕРЕПИСАЛ !!! - смотрите текущую вставку с процедурой.
На форму рядом с кнопкой "ПоВсем" будет добавлен флажок "БезОГРН" (если в базе по Контрагенту ещё нет ОГРН, то обрабатываем), так что обязательно внесите в справочник Контрагенты реквизит ОГРН.
Ещё прописал в фильтр отбора по Юр-Лицам - только с КПП, имеющим вид ХХХХХ1001 - то есть - по головному офису организации.
Физ-лица обрабатываются, с записью ОГРН и ОКПО, без адреса, так как Адрес по физ-лицам Контур-Фокус пишет усечённо.
На этом пока Всё! - Ждём новую версию.


После некоторого периода тестирования, выложу обновление.

p.p.p.s.

Итак, обновил версию до 12, от 28.10.2015, изменения смотрите в описании.
- пробуйте.
- пишите, если чего.... :-)
14. Александр Никитин (ManyakRus) 27.10.16 18:02
работает нормально :)
переделаю себе, сделаю кнопку "Заполнить по ИНН" в контрагенте :)