Имя: Пароль:
1C
1C 7.7
v7: Один ПК, две базы 1С77, в одной обработка не работает.
0 Lsr1
 
20.07.19
13:46
Доброго времени суток. Выручайте, сломал себе мозг. Есть компьютер на нём работает 2 базы 1С77 (движок 27) разных конфигураций Мисофт. Из стандартной бухгалтерии с порталом ЭСЧФ(vat.gov.by) работает без проблем (авторизуется, проверяет наличие ЭСЧФ), из второй конфигурации (УСН+розница) только авторизуется, при запросе списка ЭСЧФ получает от сервера сообщение об ошибке. Но весь прикол в том, что используется одна и та же обработка. Привожу участок кода, на котором глючит.
//2.    Устанавливает соединение с АС портала и запрашивает список поступивших счетов-фактур.

АдресСервера = СокрЛП(Константа.АдресСервераОбменаЭСЧФ);
Если ПустоеЗначение(АдресСервера) = 1 Тогда
АдресСервера = "https://ws.vat.gov.by:...cesPort";;
КонецЕсли;

if EVatService.Connect(АдресСервера) = 0 then
Сообщить( "Подключение успешно");
else
Сообщить( "Ошибка подключения: " + EVatService.LastError);
возврат;
endif;

//*********в коде ниже проблема********
Попытка
InvList = EVatService.GetList(ПреобразоватьДату(НаДату)+"T00:00:00Z");
Исключение
Сообщить(Лев("243_Не удалось получить список ЭСЧФ "+EVatService.LastError,450));
Возврат;
КонецПопытки;

В бухгалтерии ругательства из 243 строки нет. В УСН выдается ругательство, что файлы не найдены (типа: 404 not found)
Как такое возможно? Повторяю - обработки ОДИНАКОВЫЕ! Из браузера для двух фирм vat.gov.by работает.
Такое чувство, что из 1С77 в EVatService.GetList передаётся неправильная дата. Выводил, что передается (ПреобразоватьДату(НаДату)+"T00:00:00Z")- в двух базах (как и ожидалось) информация одинаковая.

Если воспользоваться фирменным способом проверки с помощью файла ...eInvVat\simpleapp\vbs\receive2Dir.bat - файлы ЭСЧФ принимаются.
1 Alexor
 
20.07.19
14:16
Посмотри в настройках. Дата начала и формат даты год 2 знака или 4
2 Alexor
 
20.07.19
14:17
+1 Дата начала столетия вроде так называется
3 Lsr1
 
20.07.19
15:06
Alexor, 2 знака в формате даты, начало столетия 1959. Это в проблемной базе. В работающей скорее всего так же, но утверждать не могу, так как бухгалтер пока не снимает трубку.
Но хочу повторить, что я проверял в 1С77, какой она передает параметр (ПреобразоватьДату(НаДату)+"T00:00:00Z"). В двух базах ОДИНАКОВЫЙ.
Еще... ответ из техподдежки на полученное сообщение об ошибке:
"Ошибка "Error 404 NOT_FOUND/HTTP ERROR: 404" говорит о некорректно указанном адресе соединения с Порталом."
Понятное дело, что я первым делом проверил адрес. Опять же, если бы был неправильный адрес, не происходила бы авторизация на портале.
4 Lsr1
 
20.07.19
15:13
Для предметности разговора...В двух базах передаваемый параметр выглядит так: ДатаФормата=2019-07-19T00:00:00Z, т.е.
Попытка
InvList = EVatService.GetList(2019-07-19T00:00:00Z);
5 Злопчинский
 
20.07.19
23:07
скорее всего то что тебе сказали - проверяй ПАРАМЕТРЫ коннета с порталом
6 Lsr1
 
21.07.19
02:38
Злопчинский, что проверять, если происходит авторизация?!!!! И выводится сообщение  "Подключение успешно". Если бы этого не было, я здесь не задавал бы этот вопрос. Всё явно логичное я уже проверил. У меня идеи кончились. Теперь готов проверять даже бредовые.
7 GreyK
 
21.07.19
03:52
(6) в (0) полный текст модуля?
8 Туц
 
21.07.19
09:51
(0) Конфигурации разные!!! Обработка может вызывать процедуры глобального модуля.
9 Консультант Баранов
 
21.07.19
10:22
Добавить строчку Сообщить и посмотреть.
Попытка
Сообщить("х"+Строка(НаДату)+" "+Строка(ПреобразоватьДату(НаДату)) );
InvList = EVatService.GetList(ПреобразоватьДату(НаДату)
10 Lsr1
 
21.07.19
10:46
GreyK, "полный текст модуля?". Нет конечно. Но это именно тот код, где одна конфигурация работает, а вторая спотыкается. Мне не трудно выложить и полный код, но зачем? Здесь же ярко видно, что запрашивается всего лишь список ЭСЧФ до указанной даты. По крайне мере так в рабочей происходит.

Туц, я не зря приложил код. Посмотрите. Нет никаких других вызовов, кроме тех, что в коде!!!

Консультант Баранов, мне Ваша идея нравится. Прямо сейчас могу сделать только:
Попытка
Сообщить("х"+Строка(НаДату)+" "+Строка(ПреобразоватьДату(НаДату)) );
Результат:
х20.07.19 2019-07-20
Я понимаю, что это надо сделать на двух базах, но сейчас бухгалтер недоступен. Как только свяжусь отпишусь.
11 Lsr1
 
21.07.19
10:55
Бух откликнулась, через пол часика отпишусь по двум базам.
12 Lsr1
 
21.07.19
13:31
Ответ-ругательство сервера выглядит так(да, с несколькими строками с пробелами):
Ответ сервера: <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<title>Error 404 NOT_FOUND</title>
</head>
<body>
<h2>HTTP ERROR: 404</h2>
<p>Problem accessing /Invoices/InvoicesPort. Reason:
<pre>    NOT_FOUND</pre></p>
<hr /><i><small>Powered by Jetty://</small></i>
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                
Строку немного изменил:
Сообщить("х="+Строка(НаДату)+"*"+Строка(ПреобразоватьДату(НаДату)) );
результат в двух базах одинаковый:
х=01.04.19*2019-04-01
х=01.04.19*2019-04-01
13 hhhh
 
21.07.19
13:57
(12) а точно разные логины используете для двух этих фирм? Может вы под одним логином заходите?
14 Консультант Баранов
 
21.07.19
14:01
А если вот так:

InvList = EVatService.GetList(СокрЛП(Строка(ПреобразоватьДату(НаДату))+"T00:00:00Z");
Исключение
Сообщить(""+ОписаниеОшибки());
Сообщить(Лев("243_Не удалось получить список ЭСЧФ "+EVatService.LastError,450));
Возврат;
КонецПопытки;
15 Alexor
 
21.07.19
14:02
EVatService - как инициализируется?
Может какая dll запускается, а она в базе размещена.

Скопируй рабочую базу, попробуй подключиться, если успешно,
то из другой базы сделай выгрузку в dat и загрузи в эту копию, и пробуй.
16 Lsr1
 
21.07.19
14:08
Еще. Проверил вид даты в настройках. В двух базах 2 цифры. Начало столетия 1959год.
Для исключения "чертовского места" сохранил из конфигуратора две базы и залил их друг в друга, перекрестно, так сказать.
Результат тот же - ИП не работает, вторая работает.
Создал в базе ИП Пользователя (раньше не было) с правами администратора. Результат тот же - сообщение об ошибке.
Проверил на разных датах, а не только с даты 1-й ЭСЧФ. Результат тот же - сообщение об ошибке.
hhhh, логины разные.Точно. Кроме того, в этом коде логин не отслеживается. Сервер определяет пользователя по ключу. Так вот, я из 1С ИП логинился ключом другого пользователя. РАБОТАЕТ!!! Т.е. казалось бы проблема в ключе. Так вот фиг.
1) При подключении на портал с этим ключом из браузера всё работает.
2) И при подключении при помощи bat-файла eInvVat\simpleapp\vbs\receive2Dir.bat тоже работает!
На основании этих двух фактов техподдержка говорит мне, что проблемы на моей стороне. Я думаю, что это не так. Но доказательств у меня нет!
17 Lsr1
 
21.07.19
15:00
Мне стыдно!!!! Смотрю в код - вижу фигу.
Решение. В коде указан правильный адрес, если он не забит в константе. А в константе указан чуть-чуть неправильный, ведущий на портал, только на тестовый. поэтому авторизация и происходила. Итак, в коде
АдресСервера = "https://ws.vat.gov.by:443/InvoicesWS/services/InvoicesPort";;
в константе
https://ws.vat.gov.by:443/Invoices/InvoicesPort
Разница в этом: WS/services/
Ни в коем случае не снимаю с себя ответственности за свою невнимательность, но очевидно и другое, что техподдержка должна была догадаться и подсказать, что коль проходит авторизация, но далее не работает, значит я залогинился на тестовый адрес. Кроме того, этот случай выявил еще явный косяк службы поддержки. Приведенный в первом посте код фактически взят из их мануала "Процедуры ЭСФЧ для 1с8(+1с7).docx", скаченного 18.07.2019 по указанной ими ссылки http://vat.gov.by/mainPage/xml/
Так вот в нем используется конструкция, которая не предполагает получение сообщения более 499 символов.
Сообщить(EVatService.LastError);
Тем не менее их сервер генерирует сообщения длинее. Для нас, программистов, это хорошо. Пользователи будут обращаться. Но не люблю зарабатывать деньги на чужом несчастье.

Всем откликнувшимся огромное СПАСИБО !!!! И успехов!
18 Злопчинский
 
21.07.19
18:47
(17) главное, что тебе следует вынести (но вынес ты совсем мало, в недостаточеном количестве) - в свою непогрешимость - верит не надо. тебе и раньше в самом начале и я в (5) проблему казали. но ты наплевал, типа - я тут ближе к проблеме и лучше вас знаю в чем проблема.
основное, чему ты должен научиться пр  расследовании проблемы - уметь отключаться от самого ctmz и смотреть на свое произведение - как на чужое.
19 Lsr1
 
21.07.19
21:12
Злопчинский, не злопыхайте! Нравоучения, пожалуйста, своим детям и жене. А "проверяй ПАРАМЕТРЫ коннета с порталом", так это из серии "Будьте здоровы и богаты". Как только появился новый контекст, что есть еще и ТЕСТОВЫЙ портал, взгляд на проблему стал совсем другим и проблема решилась очень быстро. Вот если бы Вы написали "сравни адрес в коде и адрес в константе" - это решение. Так что уважаемый господь бог Злопчинский, решение предложили НЕ Вы и не надо надевать себе лавры.
Но тем не менее я БЛАГОДАРЕН и Вам и другим участникам, откликнувшихся на мою проблему!!! Главное - желание помочь.
Кстати, Злопчинский, Гераклу не засчитали один подвиг, потому что он потребовал за него деньги.
20 Злопчинский
 
21.07.19
23:41
(19) Я лавровый венок ношу с удовольствием, мне он не жмет.
"Вот если бы Вы написали "сравни адрес в коде и адрес в константе" - это решение."
- ну, я могу еще и свечку подержать или пожевать и отрыгнуть если самому жевать влом...
AdBlock убивает бесплатный контент. 1Сергей