Непредвиденный символ при чтении json 1с ошибка как исправить

   Vito

25.07.22 — 21:48

Столкнулся с ошибкой «Непредвиденный символ при чтении JSON». Причем именно этот JSON парсится: php (работает существующий сервис), в GAS на google.

Погуглив понял, что, видимо, где-то пакет не совсем точно соответствует стандарту JSON.

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

Погуглив я понял, что проблема встречается достаточно часто, но ответов не нашел.

Что делать:

1. Искать какой-то другой невстроенный парсер? Посоветуете?

2. Прогонять запрос через какой-то транзитный сервер, там исправлять и уже потом передавать в 1С? Например, на гугле?

   Мультук

1 — 25.07.22 — 22:00

   Aleksey

2 — 25.07.22 — 22:01

а что нельзя по старинке парсить как текст?

   Мультук

3 — 25.07.22 — 22:03

(0)

думми = ПрочитатьJSON(чтениеЖсон, ИСТИНА);

или всё гораздо хуже?

   Garykom

4 — 25.07.22 — 22:11

(0)

Глобальный контекст (Global context)
ПрочитатьJSON (ReadJSON)
Синтаксис:
ПрочитатьJSON(<ЧтениеJSON>, <ПрочитатьВСоответствие>, <ИменаСвойствСоЗначениямиДата>, <ОжидаемыйФорматДаты>, <ИмяФункцииВосстановления>, <МодульФункцииВосстановления>, <ДополнительныеПараметрыФункцииВосстановления>, <ИменаСвойствДляОбработкиВосстановления>, <МаксимальнаяВложенность>)
Параметры:
<ЧтениеJSON> (обязательный)
Тип: ЧтениеJSON. 
Объект чтения JSON.
<ПрочитатьВСоответствие> (необязательный)
Тип: Булево. 
Если установлено Истина, чтение объекта JSON будет выполнено в Соответствие.
Если установлено Ложь, объекты будут считываться в объект типа Структура.
Примечание. При десериализации объектов JSON в структуру необходимо помнить о требованиях к ключам структуры. Если при десериализации объекта будет найдено имя свойства, недопустимое для ключа структуры, то будет вызвано исключение.
Значение по умолчанию: Ложь.
<ИменаСвойствСоЗначениямиДата> (необязательный)
Тип: Массив, Строка, ФиксированныйМассив. 
Массив, элементы которого содержат имена свойств JSON, для которых нужно вызывать восстановление даты из строки.
Если имя свойства указано в этом параметре и указано в параметре ИменаСвойствДляОбработкиВосстановления, то для таких свойств восстановление осуществляется в функции восстановления.
Если восстановление даты из значения свойства невозможно, то будет сгенерировано исключение.
Значение по умолчанию: Неопределено.
<ОжидаемыйФорматДаты> (необязательный)
Тип: ФорматДатыJSON. 
Ожидаемый формат даты при десериализации объекта в формате JSON.
Если в результате десериализации значение не является строкой и имеет формат даты, отличный от ожидаемого, то будет вызвано исключение.
Значение по умолчанию: ISO.
<ИмяФункцииВосстановления> (необязательный)
Тип: Строка. 
Данная функция вызывается при чтении каждого свойства и должна иметь следующие параметры:
<Свойство> - значение типа Строка, указывается только при чтении объектов JSON,
<Значение> - значение допустимого для сериализации типа,
<ДополнительныеПараметры>.
Возвращаемое значение - произвольного типа.
Если данный параметр задан и не задан параметр <МодульФункцииВосстановления>, и наоборот, будет вызвано исключение.
Если функция не установлена, то при вызове метода ПрочитатьJSON параметр <ИменаСвойствСоЗначениямиДата> игнорируется.
Значение по умолчанию: Неопределено.
<МодульФункцииВосстановления> (необязательный)
Тип: Произвольный. 
Указывает модуль, процедура которого будет использована для восстановления значения.
Значение по умолчанию: Неопределено.
<ДополнительныеПараметрыФункцииВосстановления> (необязательный)
Тип: Произвольный. 
Дополнительные параметры, которые будут переданы в функцию восстановления значений.
Значение по умолчанию: Неопределено.
<ИменаСвойствДляОбработкиВосстановления> (необязательный)
Тип: Массив. 
Массив имен свойств JSON, для которых будет вызвана функция восстановления.
Параметр игнорируется, если не установлен параметр ИмяФункцииВосстановления.
Значение по умолчанию: Неопределено.
<МаксимальнаяВложенность> (необязательный)
Тип: Число. 
Максимальный уровень вложенности объекта JSON.
При превышении уровня вложенности будет сгенерировано исключение.
Значение по умолчанию: 500.
Возвращаемое значение:
Тип: Произвольный. 
Описание:
Считывает значение из JSON-текста или файла. JSON-текст должен быть корректным.
Доступность:
Тонкий клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер, интеграция.
Примечание:
Массив будет десериализован в массив. Объект JSON будет преобразован в соответствие или структуру (если ключ структуры окажется недопустимым, будет вызвано исключение).
Для дат действует аналогично методу ПрочитатьДатуJSON.
Во время выполнения метода может быть вызвана пользовательская функция для восстановления значения - для этого следует использовать параметр <ИмяФункцииВосстановления>. Функция восстановления должна быть описана с директивой &НаСервере или &НаКлиенте. Использование функции вне контекста не допускается.
Использование в версии:
Доступен, начиная с версии 8.3.6.
     Методическая информация
   Vito

5 — 25.07.22 — 22:30

(1) не знаю точно, объем информации большой.

(2) Надо писать, поэтому и спрашиваю.

(3) Этот код и выдает ошибку

(4) вот и получается исключение, возможно, из-за превышения уровня вложенности :)

   Кура-Цеце

6 — 25.07.22 — 22:36

Ставлю на BOM

   Garykom

7 — 25.07.22 — 22:50

(5) сохрани json в файл и глянь hex

   ДедМорроз

8 — 26.07.22 — 00:03

Проверить кодировку,т.к.php однобайтовый и прекрасно читает,а 1с,по умолчанию,предполагает кодировку utf-8,и если это неверно,то ничего не прочитается.

   Vito

9 — 26.07.22 — 09:51

(7) (8) Не успел сделать, т.к. нашел другое решение:

заюзал вот эту библиотеку: https://github.com/vbondarevsky/Connector/blob/master/README.md

Все прочиталось сразу, очень удобный инструмент, все возможности библиотеки не тестил,

   Kigo_Kigo

10 — 26.07.22 — 10:11

У меня такое выдавало когда сервер «не отвечал», точнее отвечал но типа с ошибками , типа Еррор 404, 403, 405

   trad

11 — 26.07.22 — 10:45

(6) ставлю на промо ветку )

   1Сергей

12 — 26.07.22 — 11:34

т.к. автор про кодировку так ничего и не сказал. Ставлю на неё

   СеменовСемен

13 — 26.07.22 — 11:36

Ставлю на редирект

   Vito

14 — 26.07.22 — 12:13

(10) ошибок нет

(12) кодировку не знаю

(13) редиректа нет, это стопудово

   СеменовСемен

15 — 26.07.22 — 12:16

Покажи текст и код ответа

   trad

16 — 26.07.22 — 12:31

(14) кодировка в заголовке Content-Type ответа

   Vito

17 — 26.07.22 — 13:40

(16) Заголовок ответа:

cache-control: no-store, no-cache, must-revalidate

content-encoding: gzip

content-type: text/html; charset=utf-8

date: Tue, 26 Jul 2022 10:29:11 GMT

expires: Thu, 19 Nov 1981 08:52:00 GMT

pragma: no-cache

server: nginx

set-cookie: ad=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0

vary: Accept-Encoding

vary: Accept-Encoding

vary: User-Agent

   Кура-Цеце

18 — 26.07.22 — 14:09

(17) > content-encoding: gzip

О.

  

Vito

19 — 26.07.22 — 14:11

(18) Может быть в этом и есть проблема

Для устранения ошибки «Непредвиденный символ при чтении JSON» 

1С ЕРП. Ошибка при сохранении контрагента

Необходимо обновить следующие колонки в Табличной части «Контактная информация»:

Значение и ЗначенияПолей, для этого нужно перебрать ошибочные строки и применить для колонок следующий код 


ТекСтр.Значение = УправлениеКонтактнойИнформациейСлужебныйВызовСервера.КонтактнаяИнформацияПоПредставлению(ТекСтр.Представление, ТекСтр.Тип);

ТекСтр.ЗначенияПолей = УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияИзJSONВXML(ТекСтр.Значение);

получаю ответ на запрос.
Ответ приходит в виде Json

так вот при выполнении кода:
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.ОткрытьФайл(ПутьКФайлу);
Ответ=ПрочитатьJSON(ЧтениеJSON);

Выдет ошибку:
<ВнешняяОбработка.ЭкспериментыJSON.Форма.Форма.Форма(67)>: Ошибка при вызове метода контекста (ПрочитатьJSON)
Ответ=ПрочитатьJSON(ЧтениеJSON);
по причине:
Недопустимое имя свойства: ‘800’ для чтения JSON в объект Структура

Подскажите как быть?

Формат ваших данных не соответствует стандарту JSON. Ключ должен быть строкой и 1с тут ни при чем.

Далее в стандарте (стр. 2) спецификация объекта JSON:

Непредвиденный символ при чтении json 1с ошибка как исправить

Глобальный контекст.ПрочитатьJSON (Global context.ReadJSON)
Глобальный контекст (Global context)
ПрочитатьJSON (ReadJSON)
Синтаксис:

Тут вот какая «петрушка». Получается как с программами переводчиками: переводишь слово на английский, и тут же полученное значение пытаешься перевести обратно на русский и получаешь совершенно другой результат.
Выгружаю пакет XDTO в JSON и пытаюсь его тут же прочитать в структуру и появляется ошибка «недопустимое имя свойства #value». Я понимаю, что это означает и, в результате, вынужден «читать» JSON в соответствие, но вот правильно ли это?
Запись пакета XDTO в JSON:
Запись = Новый ЗаписьJSON;
Запись.ПроверятьСтруктуру=Истина;
ПараметрыЗаписи = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Unix);
Запись.УстановитьСтроку(ПараметрыЗаписи);
ФабрикаXDTO.ЗаписатьJSON(Запись, МойОбъектXDTO);
ДанныеJSON = Запись.Закрыть();

И ту же пытаюсь прочитать его в структуру
обЧтениеJSON = Новый ЧтениеJSON;
обЧтениеJSON.УстановитьСтроку(ДанныеJSON );
стСтруктураСхемы = ПрочитатьJSON(обЧтениеJSON);
и тут же получаем сообщение об ошибке «недопустимое имя свойства #value». Ну, все, поворчал, пошел работать дальше.

Источник

HTTP ответ нужно прочитать в структуру. Код состояния 200, все норм.

На ПрочитатьJSON(ЧтениеJSON) Ошибка при вызове метода контекста (ПрочитатьJSON). Что не так не пойму. перечитала синтакс помощник раз 10 уже, даже если пустую строку «<>» дать, то ошибка контекста. Вызывается в общем модуле с галками клиент, сервер, внешнее соединение.

//Разбираем ответ
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(СтрокаJSON);

Попытка
РезультатСоответствие = ПрочитатьJSON(ЧтениеJSON);
Исключение
Сообщить(«1»);
КонецПопытки;

В СтрJSON получается
<

Параметры:
(обязательный)
Тип: ЧтениеJSON.
Тип: Булево.
Если установлено Истина, чтение объекта JSON будет выполнено в Соответствие.
Если установлено Ложь, объекты будут считываться в объект типа Структура.

(17) что-то туплю.. а как записать HTTPОтвет в файл?

(21) все равно валится с Недопустимое состояние потока записи JSON. видимо в строке серьезные косяки для 1с

(28) какая-то странная фигня происходит..

в общем если поставить одну точку останова на Сообщить(«5 все ок») или Сообщить(«5») то до нее доходит без ошибок, читает в соответствие, и ссылки со слешами верно читает, только дата в виде строки в итоге «2020-05-14T09:34:23+03:00»
в структуру не читает, т.к. есть такое вот в строке «. «edit.originator»:true. » ну а в структуре нельзя точку в заголовок, ок, допустим, пусть соответствие.

но если поставить точку останова где-то до попытки и идти пошагово, то вываливается на ПрочитатьJSON в исключение.

Источник

Заметки из Зазеркалья

Реализовано в версии 8.3.6.1977.

JSON (JavaScript Object Notation) это текстовый формат обмена данными, широко используемый в веб-приложениях. По сравнению с XML он является более лаконичным и занимает меньше места. Кроме этого все браузеры имеют встроенные средства для работы с JSON.

Необходимость работы с этим форматом на уровне платформы обусловлена не только тем, что это «модный современный» формат, который прикладные решения 1С:Предприятия сами по себе могут использовать для интеграции со сторонними приложениями. Другая причина заключается ещё и в том, что JSON активно используется в HTTP интерфейсах. А в 1С:Предприятии как раз есть такие механизмы, в которых хочется использовать этот формат. Это REST интерфейс приложения, автоматически генерируемый платформой, и HTTP-сервисы, которые вы можете создавать самостоятельно.

Мы видим несколько основных сценариев использования JSON.

Во-первых, это интеграция с внешними системами через их HTTP интерфейсы: Google Calendar, Salesforce.com, REST интерфейс 1С:Предприятия, SharePoint и т.д.

Во-вторых, это организация собственного HTTP интерфейса прикладного решения.

В-третьих, обмен файлами JSON с внешними системами. Формирование конфигурационных, настроечных файлов. Использование их в процедурах обмена данными, например, с интернет-магазинами.

В-четвертых, это использование файлов JSON для обмена данными между разными приложениями 1С:Предприятия.

Потоковое чтение и запись JSON

В качестве иллюстрации потокового чтения JSON можно привести следующий пример:

Непредвиденный символ при чтении json 1с ошибка как исправить

При записи JSON вы самостоятельно формируете его структуру. Чтобы «подстраховать» вас от ошибок, объект ЗаписьJSON автоматически проверяет правильность записываемой структуры. Для увеличения скорости работы эту проверку можно отключить. В примере ниже это строка:

Непредвиденный символ при чтении json 1с ошибка как исправить

Также при записи вы можете управлять некоторыми параметрами формируемого текста, например использованием двойных кавычек, переносом строк, символами отступа и экранированием символов. В примере ниже для форматирования текста используется символ табуляции:

Непредвиденный символ при чтении json 1с ошибка как исправить

Непредвиденный символ при чтении json 1с ошибка как исправить

Результат такой записи:

Сериализация примитивных типов и коллекций в JSON

Вторая группа средств работы с JSON хороша тем, что избавляет вас от рутинной работы по чтению/записи каждого отдельного значения или свойства. При чтении документы JSON отображаются в фиксированный набор типов платформы: Строка, Число, Булево, Неопределено, Массив, ФиксированныйМассив, Структура, ФиксированнаяСтруктура, Соответствие, Дата. Соответственно, в обратную сторону, композиция объектов этих типов позволяет сформировать в памяти и быстро записать в файл структуру JSON. Таким образом, чтение и запись небольшого объема JSON заранее известной структуры можно производить немногими строчками кода.

Основное назначение этих средств мы видим в обмене информацией с внешними системами, чтении конфигурационных файлов в формате JSON.

Сериализацию вы можете выполнять с помощью методов глобального контекста ПрочитатьJSON() и ЗаписатьJSON(). Они работают в связке с объектами ЧтениеJSON и ЗаписьJSON.

В качестве примера десериализации JSON можно рассмотреть чтение массива из двух объектов:

Код 1С:Предприятия, выполняющий десериализацию, может выглядеть следующим образом:

Непредвиденный символ при чтении json 1с ошибка как исправить

А пример сериализации (записи) в JSON может выглядеть так:

Непредвиденный символ при чтении json 1с ошибка как исправить

Функции преобразования и восстановления при сериализации

Не всегда сериализация может быть выполнена полностью автоматически. В жизни встречаются самые разные ситуации. Поэтому мы добавили возможность использовать «самописную» функцию обработки значений при записи в JSON и при чтении из JSON.

В методе ЗаписатьJSON() она называется Функция преобразования и описывается с помощью трёх параметров:

В методе ПрочитатьJSON() она называется Функция восстановления и для неё есть аналогичные параметры:

При записи в JSON эта функция полезна потому, что позволяет самостоятельно преобразовать в JSON те типы, которые не подлежат автоматическому преобразованию. Или даже совсем отказаться от их сериализации.

Непредвиденный символ при чтении json 1с ошибка как исправить

Результат выполнения примера:

При чтении из JSON функция восстановления может использоваться для того, чтобы преобразовать данные JSON в типы 1С, которые не могут являться результатом автоматического преобразования, или для того, чтобы самостоятельно (не автоматически) преобразовать даты JSON в даты 1С:Предприятия.

Сериализация типа Дата

Данные типа Дата сериализуются в JSON автоматически, а вот обратное преобразование (десериализация) может быть выполнено не всегда. JSON не содержит типа Дата, значения даты представляются в нём строкой. Конечно, существуют некоторые форматы представления дат, но вообще говоря, внешний вид такой строки может быть самым разнообразным.

Для сериализации типа Дата в JSON у метода ЗаписатьJSON() вы можете использовать параметр НастройкиСериализации. Это объект встроенного языка, который позволяет указать, в каком варианте будет записана дата (UTC, локальная дата или локальная дата со смещением) и в каком формате (ISO, JavaScript или Microsoft).

Непредвиденный символ при чтении json 1с ошибка как исправить

При чтении даты из JSON всё обстоит сложнее. В параметре ИменаСвойствСоЗначениямиДата вы можете перечислить те свойства JSON, значения которых нужно преобразовать в дату 1С:Предприятия (тип Дата). А в параметре ОжидаемыйФорматДаты вам нужно указать, в каком формате эти данные содержатся в JSON (ISO, JavaScript или Microsoft).

Непредвиденный символ при чтении json 1с ошибка как исправить

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

Использование JSON в HTTP интерфейсах приложений

Автоматически генерируемый REST интерфейс прикладных решений

Детальность представления метаданных вы можете указать, например, в адресной строке.

Сведения о метаданных не передаются:

Вся информация о метаданных включается в выгрузку:

HTTP-сервисы прикладного решения

HTTP-сервисы, реализованные в прикладном решении, также могут возвращать ответ в формате JSON. Для этого вам проще всего сформировать тело ответа в JSON, получить его как строку, а затем установить из этой строки тело HTTP ответа сервиса. При этом желательно указать, что BOM (Byte Order Mark, метка порядка байтов) использоваться не должна.

Непредвиденный символ при чтении json 1с ошибка как исправить

Последний параметр (ИспользованиеByteOrderMark.НеИспользовать) вы можете и не указывать, если режим совместимости конфигурации не установлен, или он больше чем Версия8_3_5. Потому что в этом случае BOM автоматически будет использоваться только для кодировок UTF-16 и UTF-32, а для UTF-8, UTF-16LE/UTF-16BE, UTF-32LE/UTF-32BE и других она использоваться не будет.

Взаимодействие со сторонними HTTP сервисами

При взаимодействии со сторонними HTTP интерфейсами у вас также может возникнуть необходимость формирования запросов к ним в формате JSON. В этом случае алгоритм ваших действий будет аналогичным. Формируете тело запроса в JSON. Получаете тело в виде строки. Из этой строки устанавливаете тело HTTP запроса. BOM не используете.

Непредвиденный символ при чтении json 1с ошибка как исправить

Дальнейшее развитие

Мы думаем над тем, чтобы предоставить вам возможность сериализации в JSON прикладных типов 1С:Предприятия: ссылок, объектов, наборов записей и т.д. Поэтому есть вероятность появления ещё одного, третьего уровня средств работы с JSON. Этот уровень позволит вам преобразовывать в JSON любые типы 1С:Предприятия, для которых поддерживается XDTO-сериализация в XML.

Источник

Непредвиденный символ при чтении JSON

Внимание! Данный форум является модерируемым.
Для получения к нему доступа необходимо зарегистрироваться или авторизоваться на сайте.

Добрый день! Пробовали настроить интеграцию с облачной телефонией Ростелеком. Т.к. инструкции по настройке с конфигурацией «Управление торговлей и взаимоотношениями с клиентами (CRM)» нигде нет, то, вероятно, при настройке совершили ошибку, т.к. теперь при начале настройки телефонии выходит ошибка «Непредвиденный символ при чтении JSON». Ошибка в закрытом модуле:
<ОбщийМодуль.сфпЛицензированиеСервер.Модуль(504)>: Ошибка при вызове метода контекста (ПрочитатьJSON)

Конфигурация: Управление торговлей и взаимоотношениями с клиентами:
1С:Управление торговлей (11.4.12.75) + 1С:CRM (3.0.19.33)
Версия продукта (3.0.19.42)
Рег. номер: 13181299

Сможете показать скриншот настроек телефонии?

Цитата
Людмила Шишкина написал:
Добрый день!

Сможете показать скриншот настроек телефонии?

Попробуйте очистить константы «Используемая АТС (Константы)» и «Используемая версия СофтФон (Константы)» (через «Все функции»).

Открылось окно настройки облачной телефонии, заново нажимаю Ростелеком. В результате ошибка (в файле прикрепил).

Т.е. я могу предположить, что программа загружает где-то сохраненные некорректные настройки по Ростелекому, и выходит такая ошибка. На самом деле как я полагаю сам модуль РАРУСу тоже необходимо доработать, чтобы можно было продолжить настройки, даже если они некорректные. Но это я так полагаю не быстро. А сейчас хотелось бы узнать, где именно сами настройки по телефонии хранятся, чтобы их можно было очистить?

Источник

1С 8.3 : Обмен данными с сайтом используя формат JSON в 1С

Формат JSON в 1С до версии 8.3.6 не реализован, но нижет я приведу примеры функций которые можно использовать для полноценной работы JSON в 1С предыдущий версий.

JSON (JavaScript Object Notation) это текстовый формат обмена данными, широко используемый в веб-приложениях. По сравнению с XML он является более лаконичным и занимает меньше места. Кроме этого все браузеры имеют встроенные средства для работы с JSON.

Непредвиденный символ при чтении json 1с ошибка как исправитьНеобходимость работы с этим форматом на уровне платформы обусловлена не только тем, что это «модный современный» формат, который прикладные решения 1С:Предприятия сами по себе могут использовать для интеграции со сторонними приложениями. Другая причина заключается ещё и в том, что JSON активно используется в HTTP интерфейсах. А в 1С:Предприятии как раз есть такие механизмы, в которых хочется использовать этот формат. Это REST интерфейс приложения, автоматически генерируемый платформой, и HTTP-сервисы, которые вы можете создавать самостоятельно.

В платформе с версии 8.3.6:

Потоковое чтение и запись JSON:

В качестве иллюстрации потокового чтения JSON можно привести следующий пример:

Результат такой записи:

Сериализация примитивных типов и коллекций в JSON

Вторая группа средств работы с JSON хороша тем, что избавляет вас от рутинной работы по чтению/записи каждого отдельного значения или свойства. При чтении документы JSON отображаются в фиксированный набор типов платформы: Строка, Число, Булево, Неопределено, Массив, ФиксированныйМассив, Структура, ФиксированнаяСтруктура, Соответствие, Дата. Соответственно, в обратную сторону, композиция объектов этих типов позволяет сформировать в памяти и быстро записать в файл структуру JSON. Таким образом, чтение и запись небольшого объема JSON заранее известной структуры можно производить немногими строчками кода.

Основное назначение этих средств мы видим в обмене информацией с внешними системами, чтении конфигурационных файлов в формате JSON.

Сериализацию вы можете выполнять с помощью методов глобального контекста ПрочитатьJSON() и ЗаписатьJSON(). Они работают в связке с объектами ЧтениеJSON и ЗаписьJSON.

В качестве примера десериализации JSON можно рассмотреть чтение массива из двух объектов:

Подробнее вы можете посмотреть здесь

В платформе с версии 8.3.7:

Прежде всего, и в основном, XDTO сериализацию в JSON мы рекомендуем использовать при обмене данными между двумя прикладными решениями 1С:Предприятия. По сравнению с XML формат JSON более компактный, сериализация/десериализация в/из JSON выполняется быстрее. Кроме этого мы предприняли дополнительные меры для того, чтобы сократить объём передаваемых данных.

Кроме обмена между приложениями 1С:Предприятия этот механизм можно использовать и для обмена с внешними системами, готовыми принимать типы данных 1С:Предприятия. Например, XDTO сериализацию в JSON можно использовать для организации собственного HTTP интерфейса прикладного решения. Сервис на платформе 1С:Предприятия будет формировать ответ в памяти в виде строки JSON. А затем передавать её при помощи объекта HTTPСервисОтвет. Реализованный нами механизм сериализации полностью соответствует стандарту JSON. Поэтому внешняя система не должна испытывать каких-либо трудностей с десериализацией.

Использование XDTO сериализации в JSON для других задач видится нам маловероятным. Потому что если внешняя система не готова работать с прикладными типами 1С:Предприятия, то зачем их ей передавать? А если предполагается обмениваться только примитивными типами и коллекциями, то для этой задачи хорошо подходят методы ПрочитатьJSON() и ЗаписатьJSON(). Подробнее здесь

ДО платформы версии 8.3.6, т.е. 8.3.5 и ниже:

На HelpF уже есть статья где описан пример: Работа с форматом JSON в 1С но не приведены функции, вот они:

Примеры их использования:

Пишите комменты Непредвиденный символ при чтении json 1с ошибка как исправить

Источник

Обмен опытом → 
Обработка загрузки чеков с сайта налоговой

Внимание!

Предлагаю ветку использовать только для размещения обработок по загрузке данных с сайта налоговой.

Если вы доработали чью-то доработку — то размещайте ее как ответ на то сообщение, где скачивали доработку. В тексте предлагаю писать отличия от предыдущей обработки (версии). 

Обсуждение предлагаю проводить в этой ветке: https://forum.1c.ru/money/user/message/10611/create

===============================================================================

Доработана обработка Голубева Алексея.

В бета-версии Мини-денег в комментарий добавлен третий необходимый параметр — fn,fd,i. Обработка доработана до автоматического получения всех 3 параметров из комментария.

+6



Астахов Петр (ООО ИК Каскад, Наро-Фоминск)

07.06.2017 21:46

Добрый день!

Изменилась концепция обработки. Теперь основной принцип работы — работа не с МиниДеньги, а с программой «Проверка чека» от налоговой.

При совершении покупок код сканируется программой «Проверка чеков» и попадает в личный кабинет на сайте налоговой.

Обработка загружает список операций за период с сайта налоговой и позволяет загружать выбранные чеки.

Версия работоспособная, но планируются изменения, связанные с изменением интерфейса пользователя, а также оптимизация кода.

Краткая инструкция в обработке присутствует.

0



Беликов Сергей Алексеевич

08.06.2017 17:40

Супер, мне понравилось. Только пара дополнений на вскидку:

1. Прокси (ну стоит у меня прокси :) ):

Функция ПолучитьДанныеССайтаНалоговой(СтрокаАдреса)
    Заголовки = ПодготовитьЗаголовки();
    //HTTPСоединение = Новый HTTPСоединение(«proverkacheka.nalog.ru», 8888);
    лПрокси = ПолучениеФайловИзИнтернетаКлиентСервер.ПолучитьПрокси(«http»);    //БСА. Вставка
    HTTPСоединение = Новый HTTPСоединение(«proverkacheka.nalog.ru», 8888,,,лПрокси);    //БСА. Вставка
    HTTPЗапрос = Новый HTTPЗапрос(СтрокаАдреса, Заголовки);
    лСтрукт = HTTPСоединение.ПолучитьЗаголовки(HTTPЗапрос);
    Результат = HTTPСоединение.Получить(HTTPЗапрос);
    Ответ = Результат.ПолучитьТелоКакСтроку(«UTF-8»);
    ОтветСервера = Ответ;
        //БСА. Начало вставки
    Если Результат.КодСостояния = 407 Тогда
        Сообщить («Ошибка 407 (авторазиции на Прокси)»);
        Возврат «»;
    КонецЕсли;
        //БСА. Конец вставки
    Возврат Ответ;
КонецФункции
 

ну и в местах вызова проверка:

Если Не ЗначениеЗаполнено (Ответ) Тогда Возврат; КонецЕсли;    //БСА. Вставка.

2. ЗагрузитьВыделенныйЧекСервер в цикл вставить 

ПолеФН = СтрокаТаблицы.ФН; ПолеФД = СтрокаТаблицы.ФД; ПолеФП = СтрокаТаблицы.ФП; //БСА. Вставка

А то руками потом перебывать лениво :)

Кстати не заполняется доп.аналитика по статьям затрат.

зы: Еще с запросом фигня, решение кину позже.

0



Марков Сергей ( Иваново)

08.06.2017 22:20

Замечательно получилось!

Вот бы подтягивание доп.аналитик в статьи затрат прикрутить — цены бы не было этой обработке!

+2



Беликов Сергей Алексеевич

09.06.2017 18:25

1. Прикрутил заполнение Аналитики.

2. Изменил СопоставитьСтатьи. Поиск по точному совпадению.

3. Кое где вставил СокрЛП

В остальном пока не трогал.

(13.06.2017)

Добавил раскраску в таблицу, чтобы видеть когда чек загружен, по двойному щелчку переходит на страницу загрузки чека. Добавил несколько информативных полей. В комментарий вписывается информация ФН,ФП,ФД.

Вроде нормально получилось. Завел таким образом 6 чеков, что накопились.

Из минусов пока вижу только если повторно нажать «Перенести документ», то будет создан второй документ (потому что поле Расход еще не заполнено). Ну и при повторном переносе документа (когда он уже найден), произойдет сброс аналитик на значения по-умолчанию.

+2



Астахов Петр (ООО ИК Каскад, Наро-Фоминск)

13.06.2017 19:42

Добрый день!

Список изменений

1. Список чеков сортируется в обратном хронологическом порядке

2. Ответ сервера в формате json красиво форматируется.

3. Множественные внутренние оптимизации и исправления

0



Беликов Сергей Алексеевич

14.06.2017 11:06

Я вам в письме отправил исправления, чтобы небыло 2-х источников, посмотрите, что может пригодиться.

0



Астахов Петр (ООО ИК Каскад, Наро-Фоминск)

15.06.2017 21:51

Выложена новая версия. Немного доработан интерфейс.

0



Александр1

26.06.2017 22:28

У всех всё в порядке? До меня не весе чеки не доходят.

0



Важенин Владимир ( Российская Империя)

27.06.2017 7:52

Происки американских хакеров? :)

0



Александр1

27.06.2017 8:02

)

0



Беликов Сергей Алексеевич

27.06.2017 10:23

Я заметил такую тенденцию: если чек получен в субботу или воскресенье, то он до налоговой толи не долетает, толи еще что-то. Причем разные магазины и большие и маленькие. Видимо Налоговая в выходные не работает и сервера выключает :)

А вот в приложении никак не запросить повторно, а пока чек не получен и в 1С его получить нельзя.

А в последнее время еще и часто налетаю на «сервис временно не доступен».

0



Александр1

27.06.2017 11:44

Да в основном выходные, у меня чек висит от 20.06. Похоже налоговая не справляется.

0



ЦБУ Первый БИТ (Москва, Москва)

27.06.2017 19:13

А нормально, что:

модуль формы 28: Чтение.УстановитьСтроку(Ответ);

результат нет, падает по ошибке, т.к. в <Ответ> содержится значение   <«Internal exception: Not Found»> 

дополнил:

Результат = HTTPСоединение.Получить(HTTPЗапрос); По факту получается код состояния 404:

Ключ                      Значение
«Content-Type»       «text/plain; charset=utf-8»
«ETag»                   «W/»1d-1BcJJQOtKltaQExtAbZYzA»»
«Connection»           «keep-alive»
«X-Powered-By»       «Express»
«Date»                     «Tue, 27 Jun 2017 16:46:43 GMT»
«Content-Length»      «29»

0



Беликов Сергей Алексеевич

28.06.2017 10:44

Да, в коде нет обработки ошибки. Ожидается, что сервера нормально работают :).

А у налоговой сейчас завал. Я получал сообщение timeout. Они даже чеки отсканированные проверить не могут (вчера дооолго висело).

0



Александр1

29.06.2017 17:59

Наконец пришли все чеки, за две недели.

0



Кауров Вячеслав ( Кемерово)

29.06.2017 21:47

Пришли-то, пришли… Но вот незадача — «наш» модуль загрузки ошибку выдает!

Странно…

Я уже думал, что пароль «слетел». Перазашел в налоговое приложение, получил новый смс-пароль, ввел его на телефоне и модуль.

Ошибка не исчезла!

0



Астахов Петр (Группа компаний Остов, Наро-Фоминск)

29.06.2017 22:01

А какая ошибка? У меня сегодня все без ошибок загрузилось.

0



Кауров Вячеслав ( Кемерово)

29.06.2017 22:04

«Непредвиденный символ при чтении JSON»

У меня такая уже была. Но тогда я просто просил новый пароль для мобильного приложения налоговой и всё работало…

Запрошу ка я пароль ещё разок!..

<через 5 минут>

Не! Такая же ерунда.

0



Александр1

29.06.2017 22:56

Я в таких случаях, пароль не меняю. Запрашиваю чек ещё раз. А лучше посмотреть, ответ с сервера налоговой.

0



Кауров Вячеслав ( Кемерово)

29.06.2017 23:21

В том то и дело, что до ответа от сервера не доходило!

Но минут 10 назад — всё заработало!!! Чудеса ФНС, наверно…

<2 минуты спустя>

Но если нажимаю «Настройки» -> «Проверка соединения» он также выдает ошибку про JSON.

0



ЦБУ Первый БИТ (Москва, Москва)

30.06.2017 10:54

Ага, есть такое дело (ошибка при проверке соединения), но при этом загрузка осуществляется. Странно это :-)

&НаСервереБезКонтекста Процедура НазначитьКлючевыеСловаНаСервере(СтатьяРасходов, ИдентификаторОбъекта, КлючевоеСлово)          НаборЗаписей = РегистрыСведений.КлючевыеСловаОбъектов.СоздатьНаборЗаписей();     НаборЗаписей.Отбор.КлючевоеСлово.Установить(КлючевоеСлово);          Запись = НаборЗаписей.Добавить();     Запись.КлючевоеСлово = КлючевоеСлово;     Запись.ИдентификаторОбъекта = ИдентификаторОбъекта;     Запись.Объект = СтатьяРасходов;          НаборЗаписей.Записать();      КонецПроцедуры 

Вот эта процедура работает странно. Суть в том, чтобы сохранить запись в регистре соответствий, дабы пользователь потом сам проставил соответствие. Ну это же ересь чистой воды. Каждый продавец называет товар так как его душе угодно, вариаций тысячи. Но это ладно, тут другая тема. Зачем создавать запись в которой резквизит «объект», а это статья расходов, является обязательным полем, а изначально мы его не знаем, при попытке записи набора происходит ошибка.

В своей версии удалил нафиг эту процедуру.

Лучше брать строку наименования и раскладывать в массив. Т.е. разложить на отдельные слова или сокращения (найти буквы можно по ацкому коду :-)) и далее нужно произвести сопоставление с наименованиями существующих статей расходов и выдать рейтинг соответствия. Чем больше букв одного слова совпало, тем выше рейтинг. Дальше берем статью с максимальным рейтингом — profit.

Пояснение «на кошках». Имеем такую запись в чеке: «3334702 Ч.ЛИН.Морож.плом.ван.12% 450г» 

Разбив на отдельные слова в массиве получаем 6 значений:

Ч

ЛИН

Морож

плом

ван

г

У третьего элемента «Морож» при сопоставлении (поиск по части строки) будет максимальный рейтинг.

Косяк будет только если у вас несколько статей с такой вариацией, например «Мороженное» и «Мороженная рыба» (или несколько видов «Мороженное <вид>»). Но я думаю, что так подробно никто не ведёт. Лично у меня статьях расходов «Мороженное» один вид.

0



Беликов Сергей Алексеевич

30.06.2017 11:02

Там проблема в том, что в поле ОтветСервера пишется после ПрочитатьJSON, а результат полученный от сервера «HTTPСоединение.Получить» не является JSON. Надо Попытку-Исключение вставить и Ответ от сервера напрямую записать в поле. Пусть будет некрасиво, но можно понять, что же за ответ получили. А так да — при ответе «timeout» действительно дает «Недопустимый символ».

Проверка соединения действительно выдает ошибку, потому что строка сайта пустая и ответ от сервера 404. Надо какую-то строку нормальную.

0



Голубев Алексей

30.06.2017 11:11

если там кусок от моей поделки — то ты просто код не дочитал =)

его суть — выбрать неопределившуюся статью, разбить описание на блоки и записать — в следующий раз будет попадание. но проверять определение статей все равно нужно.

в примере:

Статья «мороженное», маска «#морож #плом #ван». В следующий раз попадет и «3334702 Ч.ЛИН.Морож.плом.ван.12% 450г» и «»Пломбир с ванилью (мороженное)».

А проверять нужно потому, что «Замороженная и опломбированная ванная» тоже пойдет по статье мороженное =)

0



Беликов Сергей Алексеевич

30.06.2017 11:25

Изначально, откуда взялась обработка (как я понял), подразумевалось, что чек толи выдается уже так, толи пользователь должен, строку чека превратить в нечто из ключевых слов. Например: «3334702 Ч.ЛИН.Морож.плом.ван.12% 450г»  превратить в «#морож #плом», строка разбиралась и искалось соответствие, причем первое попавшееся.

Сделать разбор по пробелам, запятым и точкам — можно, вопрос как определить дальше. У меня например Мороженное отдельно, а Мороженные овощи — сами по себе. С маслом еще хуже: Растительное, Сливочное, Авто, Хозяйственное. И можно в принципе написать подбор: чем больше слов и букв в слове совпало, тем выше рейтинг, но код действительно будет «ацкий» и не ясно как будет с производительностью. Да и корректировка непопаданий должна какая-то быть. Только для этого потребуется вмешательство в конфигурацию (пусть и минимальное в виде добавленного реквизита в регистр), но «лицензия этого не допускает».

Мне сейчас быстрее выбрать статью, чем писать «ключевые слова». А поскольку покупки делаются в ограниченном количестве магазинов, то чеки сейчас практически все заполнены.

Ну а закомментировав процедуру, вы отказались от соответствий вообще (см. СопоставитьСтатьи). Суть — сохранить установленное в обработке соответствия.

0



Астахов Петр (ООО ИК Каскад, Наро-Фоминск)

30.06.2017 11:31

Думаю, на днях переделаю — буду в ответ сервера и сам ответ сервера писать, а потом — красивенький json. Если json нет — там останется ответ сервера.

Работу с определением статей планирую переделать, но мысль пока не вылежалась в голове. Общая идея такая: у меня уже содержимое чека переносится в описание строки покупок. Поэтому можно поиск таким образом:

1. Сначала ищем именно такую строку в таком же магазине в старых документах и берем оттуда статью расходов.

2. Если такой нет — ищем такую же строку в любом магазине и берем оттуда

3. Если и тут обломинго — производим поиск в регистре соответствий по ключевым словам.

Какие проблемы я пока не придумал, как решить:

1. Мы сегодня покупаем водку по статье «Мероприятия», завтра «Подарок», а после завтра — «Протирочные жидкости» (утрирую, конечно). Придется руками переставлять. Но тут, наверное, ничего не сделаешь.

2. Поиск по ключевым словам — пока нет красивого интерфейса для правки этого регистра. Надо как-то удобно для пользователя сделать возможность правки ключевых слов. Может быть, в форму загрузки добавить колонку «ключевые слова», и, при ее заполнении, их в регистр соответствий?

0



ЦБУ Первый БИТ (Москва, Москва)

30.06.2017 12:54

Вот кусок кода, который создаёт список значений слов

    Для Каждого СтрокаТЗ Из ТЗ Цикл //ТЗ это РеквизитФормыВЗначение("СоставЧека")         Элемент = СокрЛП(СтрокаТЗ.Наименование);         СписокЗначений = Новый СписокЗначений;         Слово = "";         Для Сч = 1 По СтрДлина(Элемент) Цикл             Стр = Элемент;             Символ = Сред(Стр,Сч,1);             Если КодСимвола(Символ) >= 1040 и КодСимвола(Символ) <= 1103 Тогда                 //Это буква :-)                 Слово = Слово + Символ;             Иначе                 Если СтрДлина(Слово) Тогда                     СписокЗначений.Добавить(Слово,СтрДлина(Слово));                     Слово = "";                 КонецЕсли;             КонецЕсли;         КонецЦикла;    КонецЦикла;        

На выходе будет список значений со словами и их размерностью. (как на картинке ниже)

http://s019.radikal.ru/i634/1706/35/8c1982a224fe.jpg

+1



Астахов Петр (Группа компаний Остов, Наро-Фоминск)

03.07.2017 20:27

Новый вариант загрузки. Для программистов — что-то я внутри перемудрил с запросом на определение статьи затрат. Либо сам попозже посмотрю, либо готов принять исправленный вариант запроса

Описание изменений

При загрузке чеков для определения статьи затрат ищем самую позднюю покупку с таким же наименованием и берем статью затрат из нее. Я исхожу из того, что основные покупки в одних и тех же магазинах и совпадают побуквенно.

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

+1



Кондрашкин Андрей

03.07.2017 23:11

Здравствуйте, Пётр. Спасибо за обработку — реально сокращает время на ввод больших чеков. Я себе немного изменил старую версию в части интерфейса. Частично это сделано настройками формы. Код не трогал.

1. Скриншот 4. Убрал сворачивающуюся группу, т.к. не понял, зачем она там. Перенёс кнопку «Загрузить список» к периоду, тем самым получив еще одну строку на экране. Таблицу сделал только на просмотр, хотя сейчас подумал, что, возможно, внеся руками данные чека в таблицу, можно его загрузить. Но то же самое можно сделать и на второй закладке.

2. Скриншот 6. Поле рядом с «магазином» называется «Наименование магазина», но у него путь к данным указан «Форма оплаты». Исправил у себя. Наименование магазина и ИНН берутся из чека, поэтому поля сделал только на просмотр. Кнопку «Получить от ФНС» перенес в группу к полям чека — ведь именно по ним идет запрос. Кнопку «Перенести в документ» можно разместить над таблицей, т.к. она под таблицей совсем теряется.

Из пожеланий — на второй закладке логично бы иметь функционал установки количественного учета по статье, раз из чека читаются количество и цена.

+2



ЦБУ Первый БИТ (Москва, Москва)

05.07.2017 19:10

Пожелание — Запилить автоматическую работу по расписанию. Поясню.

В программе можно настроить расписание синхронизации. На телефоне очень удобно, в плане оперативности, работать с приложением. Специально садиться за компьютер чтобы разнести эти чеки не очень удобно. У меня настольная программа для анализа доходоврасходов и планирования бюджета и только. Ну еще как архив накопленных данных (аж с 2014 года). 

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

Кто возьмётся за реализацию идеи? :-)

0



Костюков Руслан

06.07.2017 10:14

А где и от чьего имени будет запускаться настольная программа?

+1



ЦБУ Первый БИТ (Москва, Москва)

06.07.2017 12:20

Настольная программа у меня всегда запущена и всегда работает. У меня так-то компьютер не выключается вообще.

Можно сказать, что это домашний сервер :-)

Но запускать 1С в пакетном режиме никто не запрещает, для этого можно написать батник и сунуть его в расписание винды (самая распространенная ОС).

0



Кондрашкин Андрей

09.07.2017 23:49

Здравствуйте, Пётр. Столкнулся со следующей особенностью. Если очистить поле «Наименование» таблицы статей при загрузке чека, Деньги дадут ошибку «Значение поля Ключевое слово не может быть пустым». Можно ли добавить проверку на заполненность данного поля перед внесением изменений в регистр? 

0



Кудряшов Дмитрий ( Санкт-Петербург )

13.07.2017 22:00

Петр, спасибо за обработку!

Приём чеком из налоговой работает, хотя «Проверка соединения» на вкладке Настройка выдаёт ошибку.

Можно пару пожеланий?

1. В информации налоговой есть название магазина (собственника) в поле 

"user"

можно ли его сопоставлять названию магазина из справочника Контакты.

2. В информации налоговой присутствует способ оплаты карта/наличный, который переносится  в соответствующее поле обработки — хорошо бы в нём сделать выбор кошелька.

Ещё раз спасибо,

Дмитрий Кудряшов.

+2



Беликов Сергей Алексеевич

14.07.2017 8:30

На второй вопрос могу сказать так: если бы кошельки были по одному — можно, но в случае электронно это может быть любая ваша карта. У меня 2 карты, у жены 4, плюс 2 кошелька наличных. В общем я не придумал, как можно сделать выбор. Поэтому у себя сделал выбор кошелька в обработке и проверку типа кошелька и чека.

+2



Астахов Петр (ООО ИК Каскад, Наро-Фоминск)

25.07.2017 20:27

Добрый день!

Что нового:

После сопоставления статей пытаемся сопоставить статьи по ключевым словам. Актуально для тех, у кого заполняется регистр «Ключевые слова объектов».

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

0



ЦБУ Первый БИТ (Москва, Москва)

26.07.2017 11:45

А никто из участвующих в обсуждении не принимает участие в разработке мобильного приложения?

На сколько я знаю, оно реализовано через мобильную платформу 1С, а значит есть отдельная конфигурация в виде cf. Где бы её достать для самостоятельной «обработки напильником»?

Нареканий к мобильному приложению очень много. Письма в 1С отправлены, результата ноль на массу.

Добавил:

Конфигурацию нашёл на портале релизов 1С, однако там (опять косяк) выложен старый релиз 2.0.15.2, хотя актуальный 2.0.19.2. В любом случае возможность самостоятельной доработки и разработкиразвития мобильного приложения у меня появилась, что очень радует :-)

0



Беликов Сергей Алексеевич

26.07.2017 12:46

Я вообще раньше думал, что они сделают 2 в 1.

В свойствах конфигурации в «назначении использования» можно поставить 2 флажка… 

+2



ЦБУ Первый БИТ (Москва, Москва)

26.07.2017 13:00

Я тоже так думал, но есть же отдельная конфигурация в списке релизов «Мобильное приложение «миниденьги»».

Жалко, что пишешь им письма с ошибками, с пожеланиями и прочее, а результата практически никакого. Такое ощущение, что там (в 1С) — это мало кому нужно. Хотя зарабатывать можно и на бесплатном контенте, было бы желание (не говорю уже про то, что конфигурация стоит 600 рублей и рублей 30 приложение).

Сама по себе декларация 3-НДФЛ стоит многого — это же мега полезный функционал. Только никто эту тему не развивает. Кругом грусть и печаль :-)

0



Кудряшов Дмитрий ( Санкт-Петербург )

21.09.2017 23:03

Здравствуйте, Пётр!

При приёме чека (во вложении) в программе выдаётся ошибка — копия экрана с сообщением об ошибке во вложении.

0



Астахов Петр (ООО ИК Каскад, Наро-Фоминск)

21.09.2017 23:21

Как я понимаю, проблема в кавычках у Активии.

У Вас точно последняя версия обработки? Насколько я помню, экранирование кавычек уже делалось. 

Попробую на днях прикрутить отладочную загрузку списка в файл и из файла, чтобы можно было подробнее смотреть конкретную проблему.

0



Кудряшов Дмитрий ( Санкт-Петербург )

22.09.2017 16:35

У Вас точно последняя версия обработки?

Версия от 25 июля 2017 г. 

0



Астахов Петр (ООО ИК Каскад, Наро-Фоминск)

22.09.2017 16:50

Странно. У меня в истории сохранилось, а здесь в топике не отображается.

Актуальная версия здесь:

https://forum.1c.ru/money/t/11348/m/11474

Обмен опытом → 
Обработка загрузки чеков с сайта налоговой

Внимание!

Предлагаю ветку использовать только для размещения обработок по загрузке данных с сайта налоговой.

Если вы доработали чью-то доработку — то размещайте ее как ответ на то сообщение, где скачивали доработку. В тексте предлагаю писать отличия от предыдущей обработки (версии). 

Обсуждение предлагаю проводить в этой ветке: https://forum.1c.ru/money/user/message/10611/create

===============================================================================

Доработана обработка Голубева Алексея.

В бета-версии Мини-денег в комментарий добавлен третий необходимый параметр — fn,fd,i. Обработка доработана до автоматического получения всех 3 параметров из комментария.

ЗагрузкаЧеков.epf (11.73 KB)

+6



Астахов Петр (ООО ИК Каскад, Наро-Фоминск)

07.06.2017 21:46

Добрый день!

Изменилась концепция обработки. Теперь основной принцип работы — работа не с МиниДеньги, а с программой «Проверка чека» от налоговой.

При совершении покупок код сканируется программой «Проверка чеков» и попадает в личный кабинет на сайте налоговой.

Обработка загружает список операций за период с сайта налоговой и позволяет загружать выбранные чеки.

Версия работоспособная, но планируются изменения, связанные с изменением интерфейса пользователя, а также оптимизация кода.

Краткая инструкция в обработке присутствует.

ЗагрузкаЧеков.epf (14.69 KB)

0



Беликов Сергей Алексеевич

08.06.2017 17:40

Супер, мне понравилось. Только пара дополнений на вскидку:

1. Прокси (ну стоит у меня прокси :) ):

Функция ПолучитьДанныеССайтаНалоговой(СтрокаАдреса)
    Заголовки = ПодготовитьЗаголовки();
    //HTTPСоединение = Новый HTTPСоединение(«proverkacheka.nalog.ru», 8888);
    лПрокси = ПолучениеФайловИзИнтернетаКлиентСервер.ПолучитьПрокси(«http»);    //БСА. Вставка
    HTTPСоединение = Новый HTTPСоединение(«proverkacheka.nalog.ru», 8888,,,лПрокси);    //БСА. Вставка
    HTTPЗапрос = Новый HTTPЗапрос(СтрокаАдреса, Заголовки);
    лСтрукт = HTTPСоединение.ПолучитьЗаголовки(HTTPЗапрос);
    Результат = HTTPСоединение.Получить(HTTPЗапрос);
    Ответ = Результат.ПолучитьТелоКакСтроку(«UTF-8»);
    ОтветСервера = Ответ;
        //БСА. Начало вставки
    Если Результат.КодСостояния = 407 Тогда
        Сообщить («Ошибка 407 (авторазиции на Прокси)»);
        Возврат «»;
    КонецЕсли;
        //БСА. Конец вставки
    Возврат Ответ;
КонецФункции
 

ну и в местах вызова проверка:

Если Не ЗначениеЗаполнено (Ответ) Тогда Возврат; КонецЕсли;    //БСА. Вставка.

2. ЗагрузитьВыделенныйЧекСервер в цикл вставить 

ПолеФН = СтрокаТаблицы.ФН; ПолеФД = СтрокаТаблицы.ФД; ПолеФП = СтрокаТаблицы.ФП; //БСА. Вставка

А то руками потом перебывать лениво :)

Кстати не заполняется доп.аналитика по статьям затрат.

зы: Еще с запросом фигня, решение кину позже.

0



Марков Сергей ( Иваново)

08.06.2017 22:20

Замечательно получилось!

Вот бы подтягивание доп.аналитик в статьи затрат прикрутить — цены бы не было этой обработке!

+2



Беликов Сергей Алексеевич

09.06.2017 18:25

1. Прикрутил заполнение Аналитики.

2. Изменил СопоставитьСтатьи. Поиск по точному совпадению.

3. Кое где вставил СокрЛП

В остальном пока не трогал.

(13.06.2017)

Добавил раскраску в таблицу, чтобы видеть когда чек загружен, по двойному щелчку переходит на страницу загрузки чека. Добавил несколько информативных полей. В комментарий вписывается информация ФН,ФП,ФД.

Вроде нормально получилось. Завел таким образом 6 чеков, что накопились.

Из минусов пока вижу только если повторно нажать «Перенести документ», то будет создан второй документ (потому что поле Расход еще не заполнено). Ну и при повторном переносе документа (когда он уже найден), произойдет сброс аналитик на значения по-умолчанию.

ЗагрузкаЧеков.epf (22.96 KB)

+2



Астахов Петр (ООО ИК Каскад, Наро-Фоминск)

13.06.2017 19:42

Добрый день!

Список изменений

1. Список чеков сортируется в обратном хронологическом порядке

2. Ответ сервера в формате json красиво форматируется.

3. Множественные внутренние оптимизации и исправления

ЗагрузкаЧеков (1).epf (20.26 KB)

0



Беликов Сергей Алексеевич

14.06.2017 11:06

Я вам в письме отправил исправления, чтобы небыло 2-х источников, посмотрите, что может пригодиться.

0



Астахов Петр (ООО ИК Каскад, Наро-Фоминск)

15.06.2017 21:51

Выложена новая версия. Немного доработан интерфейс.

ЗагрузкаЧеков (1).epf (23.18 KB)

0



Александр1

26.06.2017 22:28

У всех всё в порядке? До меня не весе чеки не доходят.

0



Важенин Владимир ( Российская Империя)

27.06.2017 7:52

Происки американских хакеров? :)

0



Александр1

27.06.2017 8:02

)

0



Беликов Сергей Алексеевич

27.06.2017 10:23

Я заметил такую тенденцию: если чек получен в субботу или воскресенье, то он до налоговой толи не долетает, толи еще что-то. Причем разные магазины и большие и маленькие. Видимо Налоговая в выходные не работает и сервера выключает :)

А вот в приложении никак не запросить повторно, а пока чек не получен и в 1С его получить нельзя.

А в последнее время еще и часто налетаю на «сервис временно не доступен».

0



Александр1

27.06.2017 11:44

Да в основном выходные, у меня чек висит от 20.06. Похоже налоговая не справляется.

0



ЦБУ Первый БИТ (Москва, Москва)

27.06.2017 19:13

А нормально, что:

модуль формы 28: Чтение.УстановитьСтроку(Ответ);

результат нет, падает по ошибке, т.к. в <Ответ> содержится значение   <«Internal exception: Not Found»> 

дополнил:

Результат = HTTPСоединение.Получить(HTTPЗапрос); По факту получается код состояния 404:

Ключ                      Значение
«Content-Type»       «text/plain; charset=utf-8»
«ETag»                   «W/»1d-1BcJJQOtKltaQExtAbZYzA»»
«Connection»           «keep-alive»
«X-Powered-By»       «Express»
«Date»                     «Tue, 27 Jun 2017 16:46:43 GMT»
«Content-Length»      «29»

0



Беликов Сергей Алексеевич

28.06.2017 10:44

Да, в коде нет обработки ошибки. Ожидается, что сервера нормально работают :).

А у налоговой сейчас завал. Я получал сообщение timeout. Они даже чеки отсканированные проверить не могут (вчера дооолго висело).

0



Александр1

29.06.2017 17:59

Наконец пришли все чеки, за две недели.

0



Кауров Вячеслав ( Кемерово)

29.06.2017 21:47

Пришли-то, пришли… Но вот незадача — «наш» модуль загрузки ошибку выдает!

Странно…

Я уже думал, что пароль «слетел». Перазашел в налоговое приложение, получил новый смс-пароль, ввел его на телефоне и модуль.

Ошибка не исчезла!

0



Астахов Петр (Группа компаний Остов, Наро-Фоминск)

29.06.2017 22:01

А какая ошибка? У меня сегодня все без ошибок загрузилось.

0



Кауров Вячеслав ( Кемерово)

29.06.2017 22:04

«Непредвиденный символ при чтении JSON»

У меня такая уже была. Но тогда я просто просил новый пароль для мобильного приложения налоговой и всё работало…

Запрошу ка я пароль ещё разок!..

<через 5 минут>

Не! Такая же ерунда.

0



Александр1

29.06.2017 22:56

Я в таких случаях, пароль не меняю. Запрашиваю чек ещё раз. А лучше посмотреть, ответ с сервера налоговой.

0



Кауров Вячеслав ( Кемерово)

29.06.2017 23:21

В том то и дело, что до ответа от сервера не доходило!

Но минут 10 назад — всё заработало!!! Чудеса ФНС, наверно…

<2 минуты спустя>

Но если нажимаю «Настройки» -> «Проверка соединения» он также выдает ошибку про JSON.

0



ЦБУ Первый БИТ (Москва, Москва)

30.06.2017 10:54

Ага, есть такое дело (ошибка при проверке соединения), но при этом загрузка осуществляется. Странно это :-)

&НаСервереБезКонтекста
Процедура НазначитьКлючевыеСловаНаСервере(СтатьяРасходов, ИдентификаторОбъекта, КлючевоеСлово)
    
    НаборЗаписей = РегистрыСведений.КлючевыеСловаОбъектов.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.КлючевоеСлово.Установить(КлючевоеСлово);
    
    Запись = НаборЗаписей.Добавить();
    Запись.КлючевоеСлово = КлючевоеСлово;
    Запись.ИдентификаторОбъекта = ИдентификаторОбъекта;
    Запись.Объект = СтатьяРасходов;
    
    НаборЗаписей.Записать();
    
КонецПроцедуры

Вот эта процедура работает странно. Суть в том, чтобы сохранить запись в регистре соответствий, дабы пользователь потом сам проставил соответствие. Ну это же ересь чистой воды. Каждый продавец называет товар так как его душе угодно, вариаций тысячи. Но это ладно, тут другая тема. Зачем создавать запись в которой резквизит «объект», а это статья расходов, является обязательным полем, а изначально мы его не знаем, при попытке записи набора происходит ошибка.

В своей версии удалил нафиг эту процедуру.

Лучше брать строку наименования и раскладывать в массив. Т.е. разложить на отдельные слова или сокращения (найти буквы можно по ацкому коду :-)) и далее нужно произвести сопоставление с наименованиями существующих статей расходов и выдать рейтинг соответствия. Чем больше букв одного слова совпало, тем выше рейтинг. Дальше берем статью с максимальным рейтингом — profit.

Пояснение «на кошках». Имеем такую запись в чеке: «3334702 Ч.ЛИН.Морож.плом.ван.12% 450г» 

Разбив на отдельные слова в массиве получаем 6 значений:

Ч

ЛИН

Морож

плом

ван

г

У третьего элемента «Морож» при сопоставлении (поиск по части строки) будет максимальный рейтинг.

Косяк будет только если у вас несколько статей с такой вариацией, например «Мороженное» и «Мороженная рыба» (или несколько видов «Мороженное <вид>»). Но я думаю, что так подробно никто не ведёт. Лично у меня статьях расходов «Мороженное» один вид.

0



Беликов Сергей Алексеевич

30.06.2017 11:02

Там проблема в том, что в поле ОтветСервера пишется после ПрочитатьJSON, а результат полученный от сервера «HTTPСоединение.Получить» не является JSON. Надо Попытку-Исключение вставить и Ответ от сервера напрямую записать в поле. Пусть будет некрасиво, но можно понять, что же за ответ получили. А так да — при ответе «timeout» действительно дает «Недопустимый символ».

Проверка соединения действительно выдает ошибку, потому что строка сайта пустая и ответ от сервера 404. Надо какую-то строку нормальную.

0



Голубев Алексей

30.06.2017 11:11

если там кусок от моей поделки — то ты просто код не дочитал =)

его суть — выбрать неопределившуюся статью, разбить описание на блоки и записать — в следующий раз будет попадание. но проверять определение статей все равно нужно.

в примере:

Статья «мороженное», маска «#морож #плом #ван». В следующий раз попадет и «3334702 Ч.ЛИН.Морож.плом.ван.12% 450г» и «»Пломбир с ванилью (мороженное)».

А проверять нужно потому, что «Замороженная и опломбированная ванная» тоже пойдет по статье мороженное =)

0



Беликов Сергей Алексеевич

30.06.2017 11:25

Изначально, откуда взялась обработка (как я понял), подразумевалось, что чек толи выдается уже так, толи пользователь должен, строку чека превратить в нечто из ключевых слов. Например: «3334702 Ч.ЛИН.Морож.плом.ван.12% 450г»  превратить в «#морож #плом», строка разбиралась и искалось соответствие, причем первое попавшееся.

Сделать разбор по пробелам, запятым и точкам — можно, вопрос как определить дальше. У меня например Мороженное отдельно, а Мороженные овощи — сами по себе. С маслом еще хуже: Растительное, Сливочное, Авто, Хозяйственное. И можно в принципе написать подбор: чем больше слов и букв в слове совпало, тем выше рейтинг, но код действительно будет «ацкий» и не ясно как будет с производительностью. Да и корректировка непопаданий должна какая-то быть. Только для этого потребуется вмешательство в конфигурацию (пусть и минимальное в виде добавленного реквизита в регистр), но «лицензия этого не допускает».

Мне сейчас быстрее выбрать статью, чем писать «ключевые слова». А поскольку покупки делаются в ограниченном количестве магазинов, то чеки сейчас практически все заполнены.

Ну а закомментировав процедуру, вы отказались от соответствий вообще (см. СопоставитьСтатьи). Суть — сохранить установленное в обработке соответствия.

0



Астахов Петр (ООО ИК Каскад, Наро-Фоминск)

30.06.2017 11:31

Думаю, на днях переделаю — буду в ответ сервера и сам ответ сервера писать, а потом — красивенький json. Если json нет — там останется ответ сервера.

Работу с определением статей планирую переделать, но мысль пока не вылежалась в голове. Общая идея такая: у меня уже содержимое чека переносится в описание строки покупок. Поэтому можно поиск таким образом:

1. Сначала ищем именно такую строку в таком же магазине в старых документах и берем оттуда статью расходов.

2. Если такой нет — ищем такую же строку в любом магазине и берем оттуда

3. Если и тут обломинго — производим поиск в регистре соответствий по ключевым словам.

Какие проблемы я пока не придумал, как решить:

1. Мы сегодня покупаем водку по статье «Мероприятия», завтра «Подарок», а после завтра — «Протирочные жидкости» (утрирую, конечно). Придется руками переставлять. Но тут, наверное, ничего не сделаешь.

2. Поиск по ключевым словам — пока нет красивого интерфейса для правки этого регистра. Надо как-то удобно для пользователя сделать возможность правки ключевых слов. Может быть, в форму загрузки добавить колонку «ключевые слова», и, при ее заполнении, их в регистр соответствий?

0



ЦБУ Первый БИТ (Москва, Москва)

30.06.2017 12:54

Вот кусок кода, который создаёт список значений слов

    Для Каждого СтрокаТЗ Из ТЗ Цикл //ТЗ это РеквизитФормыВЗначение("СоставЧека")
        Элемент = СокрЛП(СтрокаТЗ.Наименование);
        СписокЗначений = Новый СписокЗначений;
        Слово = "";
        Для Сч = 1 По СтрДлина(Элемент) Цикл
            Стр = Элемент;
            Символ = Сред(Стр,Сч,1);
            Если КодСимвола(Символ) >= 1040 и КодСимвола(Символ) <= 1103 Тогда
                //Это буква :-)
                Слово = Слово + Символ;
            Иначе
                Если СтрДлина(Слово) Тогда
                    СписокЗначений.Добавить(Слово,СтрДлина(Слово));
                    Слово = "";
                КонецЕсли;
            КонецЕсли;
        КонецЦикла;
   КонецЦикла;       

На выходе будет список значений со словами и их размерностью. (как на картинке ниже)

http://s019.radikal.ru/i634/1706/35/8c1982a224fe.jpg

+1



Астахов Петр (Группа компаний Остов, Наро-Фоминск)

03.07.2017 20:27

Новый вариант загрузки. Для программистов — что-то я внутри перемудрил с запросом на определение статьи затрат. Либо сам попозже посмотрю, либо готов принять исправленный вариант запроса

Описание изменений

При загрузке чеков для определения статьи затрат ищем самую позднюю покупку с таким же наименованием и берем статью затрат из нее. Я исхожу из того, что основные покупки в одних и тех же магазинах и совпадают побуквенно.

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

ЗагрузкаЧеков — новый вариант тест.epf (23.65 KB)

+1



Кондрашкин Андрей

03.07.2017 23:11

Здравствуйте, Пётр. Спасибо за обработку — реально сокращает время на ввод больших чеков. Я себе немного изменил старую версию в части интерфейса. Частично это сделано настройками формы. Код не трогал.

1. Скриншот 4. Убрал сворачивающуюся группу, т.к. не понял, зачем она там. Перенёс кнопку «Загрузить список» к периоду, тем самым получив еще одну строку на экране. Таблицу сделал только на просмотр, хотя сейчас подумал, что, возможно, внеся руками данные чека в таблицу, можно его загрузить. Но то же самое можно сделать и на второй закладке.

2. Скриншот 6. Поле рядом с «магазином» называется «Наименование магазина», но у него путь к данным указан «Форма оплаты». Исправил у себя. Наименование магазина и ИНН берутся из чека, поэтому поля сделал только на просмотр. Кнопку «Получить от ФНС» перенес в группу к полям чека — ведь именно по ним идет запрос. Кнопку «Перенести в документ» можно разместить над таблицей, т.к. она под таблицей совсем теряется.

Из пожеланий — на второй закладке логично бы иметь функционал установки количественного учета по статье, раз из чека читаются количество и цена.

+2



ЦБУ Первый БИТ (Москва, Москва)

05.07.2017 19:10

Пожелание — Запилить автоматическую работу по расписанию. Поясню.

В программе можно настроить расписание синхронизации. На телефоне очень удобно, в плане оперативности, работать с приложением. Специально садиться за компьютер чтобы разнести эти чеки не очень удобно. У меня настольная программа для анализа доходоврасходов и планирования бюджета и только. Ну еще как архив накопленных данных (аж с 2014 года). 

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

Кто возьмётся за реализацию идеи? :-)

0



Костюков Руслан

06.07.2017 10:14

А где и от чьего имени будет запускаться настольная программа?

+1



ЦБУ Первый БИТ (Москва, Москва)

06.07.2017 12:20

Настольная программа у меня всегда запущена и всегда работает. У меня так-то компьютер не выключается вообще.

Можно сказать, что это домашний сервер :-)

Но запускать 1С в пакетном режиме никто не запрещает, для этого можно написать батник и сунуть его в расписание винды (самая распространенная ОС).

0



Кондрашкин Андрей

09.07.2017 23:49

Здравствуйте, Пётр. Столкнулся со следующей особенностью. Если очистить поле «Наименование» таблицы статей при загрузке чека, Деньги дадут ошибку «Значение поля Ключевое слово не может быть пустым». Можно ли добавить проверку на заполненность данного поля перед внесением изменений в регистр? 

0



Кудряшов Дмитрий ( Санкт-Петербург )

13.07.2017 22:00

Петр, спасибо за обработку!

Приём чеком из налоговой работает, хотя «Проверка соединения» на вкладке Настройка выдаёт ошибку.

Можно пару пожеланий?

1. В информации налоговой есть название магазина (собственника) в поле 

"user"

можно ли его сопоставлять названию магазина из справочника Контакты.

2. В информации налоговой присутствует способ оплаты карта/наличный, который переносится  в соответствующее поле обработки — хорошо бы в нём сделать выбор кошелька.

Ещё раз спасибо,

Дмитрий Кудряшов.

+2



Беликов Сергей Алексеевич

14.07.2017 8:30

На второй вопрос могу сказать так: если бы кошельки были по одному — можно, но в случае электронно это может быть любая ваша карта. У меня 2 карты, у жены 4, плюс 2 кошелька наличных. В общем я не придумал, как можно сделать выбор. Поэтому у себя сделал выбор кошелька в обработке и проверку типа кошелька и чека.

+2



Астахов Петр (ООО ИК Каскад, Наро-Фоминск)

25.07.2017 20:27

Добрый день!

Что нового:

После сопоставления статей пытаемся сопоставить статьи по ключевым словам. Актуально для тех, у кого заполняется регистр «Ключевые слова объектов».

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

ЗагрузкаЧеков (1).epf (24.19 KB)

0



ЦБУ Первый БИТ (Москва, Москва)

26.07.2017 11:45

А никто из участвующих в обсуждении не принимает участие в разработке мобильного приложения?

На сколько я знаю, оно реализовано через мобильную платформу 1С, а значит есть отдельная конфигурация в виде cf. Где бы её достать для самостоятельной «обработки напильником»?

Нареканий к мобильному приложению очень много. Письма в 1С отправлены, результата ноль на массу.

Добавил:

Конфигурацию нашёл на портале релизов 1С, однако там (опять косяк) выложен старый релиз 2.0.15.2, хотя актуальный 2.0.19.2. В любом случае возможность самостоятельной доработки и разработкиразвития мобильного приложения у меня появилась, что очень радует :-)

0



Беликов Сергей Алексеевич

26.07.2017 12:46

Я вообще раньше думал, что они сделают 2 в 1.

В свойствах конфигурации в «назначении использования» можно поставить 2 флажка… 

+2



ЦБУ Первый БИТ (Москва, Москва)

26.07.2017 13:00

Я тоже так думал, но есть же отдельная конфигурация в списке релизов «Мобильное приложение «миниденьги»».

Жалко, что пишешь им письма с ошибками, с пожеланиями и прочее, а результата практически никакого. Такое ощущение, что там (в 1С) — это мало кому нужно. Хотя зарабатывать можно и на бесплатном контенте, было бы желание (не говорю уже про то, что конфигурация стоит 600 рублей и рублей 30 приложение).

Сама по себе декларация 3-НДФЛ стоит многого — это же мега полезный функционал. Только никто эту тему не развивает. Кругом грусть и печаль :-)

0



Кудряшов Дмитрий ( Санкт-Петербург )

21.09.2017 23:03

Здравствуйте, Пётр!

При приёме чека (во вложении) в программе выдаётся ошибка — копия экрана с сообщением об ошибке во вложении.

21_09_2017_10_47_50-1511650678.json (1.36 KB)

21_09_2017_10_50_52381050834.html (4.96 KB)

ticket-1923662647.png (177.41 KB)

Screenshot — 21_09.png (94.12 KB)

0



Астахов Петр (ООО ИК Каскад, Наро-Фоминск)

21.09.2017 23:21

Как я понимаю, проблема в кавычках у Активии.

У Вас точно последняя версия обработки? Насколько я помню, экранирование кавычек уже делалось. 

Попробую на днях прикрутить отладочную загрузку списка в файл и из файла, чтобы можно было подробнее смотреть конкретную проблему.

0



Кудряшов Дмитрий ( Санкт-Петербург )

22.09.2017 16:35

У Вас точно последняя версия обработки?

Версия от 25 июля 2017 г. 

0



Астахов Петр (ООО ИК Каскад, Наро-Фоминск)

22.09.2017 16:50

Странно. У меня в истории сохранилось, а здесь в топике не отображается.

Актуальная версия здесь:

https://forum.1c.ru/money/t/11348/m/11474

 

Михаил Анянов

Заглянувший

Сообщений: 5
Авторитет:

0

Регистрация: 03.07.2010

Добрый день! Пробовали настроить интеграцию с облачной телефонией Ростелеком. Т.к. инструкции по настройке с конфигурацией «Управление торговлей и взаимоотношениями с клиентами (CRM)» нигде нет, то, вероятно, при настройке совершили ошибку, т.к. теперь при начале настройки телефонии выходит ошибка «Непредвиденный символ при чтении JSON». Ошибка в закрытом модуле:
{ОбщийМодуль.сфпЛицензированиеСервер.Модуль(504)}: Ошибка при вызове метода контекста (ПрочитатьJSON)

Как проверить, в каких данных ошибка, не понятно. Отладчиком в закрытый модуль не попасть. Как очистить некорректные настройки тоже не ясно, где они хранятся? Т.к. ругается именно модуль лицензирования — прошу помочь.

Конфигурация: Управление торговлей и взаимоотношениями с клиентами:
1С:Управление торговлей (11.4.12.75) + 1С:CRM (3.0.19.33)
Версия продукта (3.0.19.42)
Рег. номер: 13181299

Изменено: Михаил Анянов19.07.2020 10:13:58

 

Добрый день!

Сможете показать скриншот настроек телефонии?

 

Михаил Анянов

Заглянувший

Сообщений: 5
Авторитет:

0

Регистрация: 03.07.2010

#3



0


05.08.2020 11:18:27

Цитата
Людмила Шишкина написал:
Добрый день!

Сможете показать скриншот настроек телефонии?

Нет. Т.к. при открытии данной настройки выходит такая ошибка и ничего не открывается. Как удалить некорректно созданную настройку?

 

Добрый день!

Попробуйте очистить константы «Используемая АТС (Константы)» и «Используемая версия СофтФон (Константы)» (через «Все функции»).

 

Михаил Анянов

Заглянувший

Сообщений: 5
Авторитет:

0

Регистрация: 03.07.2010

Открылось окно настройки облачной телефонии, заново нажимаю Ростелеком. В результате ошибка (в файле прикрепил).

Т.е. я могу предположить, что программа загружает где-то сохраненные некорректные настройки по Ростелекому, и выходит такая ошибка. На самом деле как я полагаю сам модуль РАРУСу тоже необходимо доработать, чтобы можно было продолжить настройки, даже если они некорректные. Но это я так полагаю не быстро. А сейчас хотелось бы узнать, где именно сами настройки по телефонии хранятся, чтобы их можно было очистить?

Прикрепленные файлы

 

Людмила Шишкина

Заглянувший

Сообщений: 177
Авторитет:

5

Регистрация: 04.07.2019

#6



0


07.08.2020 09:38:47

Вопрос передан в отдел разработки. При поступлении ответа он будет Вам предоставлен.

Понравилась статья? Поделить с друзьями:
  • Формула как составить изомеры для пентанола
  • Skyrim has failed to allocate memory possibly running out of memory как исправить
  • 0х4453 превышение длины реквизита как исправить
  • Пересолила жульен как исправить
  • Как найти аккаунт в спотифай по нику