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

0
Шарипов Камиль (ИП Шарипов Камиль Рашитович, Анапа)
25.07.2020 12:37

хм, странно, насколько мне известно, на внутр. бирже там можно 1sm купить рублей за 60 по тек. курсу :)

если нет доступа, ловите код новой кнопки, сама обработка сделана на основе расширения данной ветки, скорее всего достаточно будет просто добавить кнопку на форму обработки и "навесить" след. код:
 

&НаКлиенте
Процедура ЗагрузитьИзФайла(Команда)
    
    ПриЗавершении         = Новый ОписаниеОповещения("ПоместитьФайлКомандаЗавершение", ЭтотОбъект);
    ДиалогВыбораФайлов     = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    ДиалогВыбораФайлов.Заголовок = "Выбор файла для обработки";
    ДиалогВыбораФайлов.МножественныйВыбор = Ложь;
    ДиалогВыбораФайлов.Фильтр =
    "Файл выгрузки из моб. приложения проверки чеков ФНС (*.json)|*.json";
    НачатьПомещениеФайлов(ПриЗавершении, , ДиалогВыбораФайлов, Истина, УникальныйИдентификатор);
    
КонецПроцедуры

&НаКлиенте
Процедура ПоместитьФайлКомандаЗавершение(ПомещенныеФайлы, ДополнительныеПараметры) Экспорт
    
    Если ПомещенныеФайлы = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    ЗагрузитьИзФайлаНаСервере(ПомещенныеФайлы[0].Хранение);    
    
КонецПроцедуры


&НаСервере
Процедура ЗагрузитьИзФайлаНаСервере(АдресВХ)
            
    // Получаем сам файл с выпиской
    СписокЧеков = ПолучитьДанныеФайла(АдресВХ);
    Если СписокЧеков = Неопределено Тогда
        Возврат;
    КонецЕсли;
    ВывестиОтветСервера(СписокЧеков);
    Объект.Чеки.Очистить();
    СоставЧека.Очистить();
    
    Инд = 0;
    Для Каждого ПолныйЧек из СписокЧеков Цикл
        
        СтрокаЧеков = Объект.Чеки.Добавить();
        СтрокаЧеков.Дата = Дата(1970,1,1,1,0,0) + ПолныйЧек.dateTime + 2*3600;
        СтрокаЧеков.СуммаДокумента = ПолныйЧек.totalSum / 100;
        
        Если ЗначениеЗаполнено (ПолныйЧек.cashTotalSum) Тогда
            СтрокаЧеков.ФормаОплаты = "Наличные";
        ИначеЕсли ЗначениеЗаполнено (ПолныйЧек.ecashTotalSum) Тогда
            СтрокаЧеков.ФормаОплаты = "Карта";
        КонецЕсли;

        СтрокаЧеков.ИНН = СокрЛП(ПолныйЧек.userInn);    
        Если ПолныйЧек.Свойство("user") Тогда
            СтрокаЧеков.Магазин = СокрЛП(ПолныйЧек.user);    
        КонецЕсли;
        
        Попытка
            СтрокаЧеков.Адрес = СокрЛП(ПолныйЧек.retailPlaceAddress);
        Исключение
            Попытка
                СтрокаЧеков.Адрес = СокрЛП(ПолныйЧек.retailAddress);
            Исключение
            КонецПопытки;
        КонецПопытки;
                
        СтрокаЧеков.ФН = Формат(ПолныйЧек.fiscalDriveNumber,"ЧГ=0");
        СтрокаЧеков.ФП = Формат(ПолныйЧек.fiscalSign,"ЧГ=0");
        СтрокаЧеков.ФД = Формат(ПолныйЧек.fiscalDocumentNumber,"ЧГ=0");
        
                
        Запись = Новый ЗаписьJSON;
        Запись.УстановитьСтроку();
        ЗаписатьJSON(Запись,Чек);
        СтрокаЧеков.СодержимоеЧека = Запись.Закрыть();
        
        // Ищем документ расхода с нужной суммой из последних
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1    
        |    Расход.Ссылка КАК Документ,
        |    Расход.Проведен Как Проведен    
        |ИЗ
        |    Документ.Расход КАК Расход
        |ГДЕ
        |   ВЫБОР
        |       Когда Расход.СуммаОплаты > &СуммаРасхода
        |           тогда Расход.СуммаОплаты - &СуммаРасхода
        |       иначе &СуммаРасхода -  Расход.СуммаОплаты  
        |   КОНЕЦ < 1
        |    И НАЧАЛОПЕРИОДА(Расход.Дата, ДЕНЬ) = НАЧАЛОПЕРИОДА(&ДатаДокумента, ДЕНЬ)
        |
        |УПОРЯДОЧИТЬ ПО
        |    ВЫБОР
        |        КОГДА &ДатаДокумента > Расход.Дата
        |            ТОГДА -РАЗНОСТЬДАТ(&ДатаДокумента, Расход.Дата, СЕКУНДА)
        |        ИНАЧЕ РАЗНОСТЬДАТ(&ДатаДокумента, Расход.Дата, СЕКУНДА)
        |    КОНЕЦ";
        
        Запрос.УстановитьПараметр("СуммаРасхода", СтрокаЧеков.СуммаДокумента);
        Запрос.УстановитьПараметр("ДатаДокумента", СтрокаЧеков.Дата);
        
        РезультатЗапроса = Запрос.Выполнить();
        
        ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
        
        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
            СтрокаЧеков.ДокументРасхода         = ВыборкаДетальныеЗаписи.Документ;
            СтрокаЧеков.ДокументРасходаПроведен = ВыборкаДетальныеЗаписи.Проведен;    
        КонецЦикла;
        Инд = Инд + 1;
    КонецЦикла;
    
    Объект.Чеки.Сортировать("Дата Убыв");
    
КонецПроцедуры

&НаСервере
Функция ПолучитьДанныеФайла(СтрокаАдреса)
    
    ФайлИзХранилища = ПолучитьИзВременногоХранилища(СтрокаАдреса);
    ВременныйФайл = ПолучитьИмяВременногоФайла("json");
    ФайлИзХранилища.Записать(ВременныйФайл);
    
    Попытка
        Чтение          = Новый ЧтениеJSON;
        Чтение.ОткрытьФайл(ВременныйФайл,"utf-8");
        ОтветОбъект  = ПрочитатьJSON(Чтение);
    Исключение                       
        ТекстОшибки  = ОписаниеОшибки();
        Сообщить("Ошибка: "+ТекстОшибки);
    КонецПопытки;
    
    Возврат ОтветОбъект;
КонецФункции

 

0
Тикунова Мария (HomeProduct, Москва)
25.07.2020 12:46

По бирже посмотрю, я там была один-единственный раз, на этом Инфостарте.
А по кнопкам - Вы только что предложили мне поговорить с фараоном Рамзезом-ХIV, не меньше. ) Для меня это все равно что египетские иероглифы. Я бухгалтер, не разработчик. )))

0
Булыгина Любовь
06.08.2020 9:26

Коллеги, ФНС приложение обновила. Вариантов не обновляться не было (не работало)

Теперь наша обработка на вкладке «загрузить список » чеков не видит. Есть ли надежда, что  и обработки новая версия появится?

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

Все уже давно обновлено.

https://forum.1c.ru/money/t/13800/m/13858

0
Александр ( Москва)
20.08.2020 19:31

Может быть это поможет: http://leftjoin.ru/all/nalog-ru-client/

Еще пишут про альтернативный сервис proverkacheka.com, который вроде как по обращению предоставляет свой api.

0
Мавликаева Алена (1С:Первый Бит, Москва - Центр по бюджетному учету, Москва)
20.08.2020 20:14

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

 

!!Это расширение из предыдущего сообщения от Петра. Я всего лишь его модернизировал!!

upd. исправлена ошибка включения автозагрузки

0
Мавликаева Алена (1С:Первый Бит, Москва - Центр по бюджетному учету, Москва)
20.08.2020 20:15

Спасибо за наводку, я уже сделал по своему разумению :-).

Смотрите ниже, выложил под сообщением Петра.

Всем шалом. Слабо разбираюсь в 1с, но как я понял из частичного прочтения темы расширения не работают с базовой версией программы, за 600р. которая. Вопрос к знатокам, какой самый дешёвый способ это исправить?

+1
Соловьев Константин
28.08.2020 13:44

Ответ уже был, и возможно даже в этой ветке. Купить бухгалтерию, например.

+1
Шушлебин Дмитрий (частное лицо, Краснодар)
28.08.2020 22:42

вот )

https://forum.1c.ru/money/t/13800/m/13858