{"id":14275,"url":"\/distributions\/14275\/click?bit=1&hash=bccbaeb320d3784aa2d1badbee38ca8d11406e8938daaca7e74be177682eb28b","title":"\u041d\u0430 \u0447\u0451\u043c \u0437\u0430\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0434\u0430\u0432\u0446\u044b \u0430\u0432\u0442\u043e?","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"f72066c6-8459-501b-aea6-770cd3ac60a6"}

Как и зачем работать с чеками? Часть 1

Продолжаем серию статей, где рассказываем вам о решениях из Маркет42. Сервисы расширяют стандартный функционал 1С, упрощают работу бухгалтерам, кадровым специалистам, директорам и пользователям.

Разработчик Андрей Важдаев (ООО «Дельта») рассказал, как у него появилась идея создать сервис по загрузке данных из кассовых чеков, и что в итоге получилось.

Описание задачи

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

Дано

Есть сеть магазинов (СМ) с одним общим ИНН. В сеть входит N магазинов, каждый из которых располагается по своему i-адресу (где i *224; 1…N). Адрес каждого магазина является уникальным идентификатором магазина. В каждом магазине есть Mi кассовых аппаратов (ККТ), у каждой ККТ свой уникальный идентификатор (РН) и порядковый номер ij (где j *224; 1…Mi). За время работы в каждую ККТ помещается Fij фискальных накопителей, имеющих свой уникальный идентификатор (ФН) и порядковый номер ijk (где k *224; 1…Fij). За время работы фискального накопителя в КТТ может быть создано Lijf кассовых чеков, имеющих свой идентификатор (ФД), который одновременно является порядковым номером ijkz (где z *224; 1…Lijf), и дату tijkz.

Условия и ограничения:

  • нет доступа к внутренним информационным системам и процессам сети магазинов;
  • есть только отдельные кассовые чеки из сети магазинов. На чеках указана следующая информация: ИНН, адрес магазина, РН, ФН, ФД и дата.

Что можно сделать

Имея несколько разных чеков с одинаковыми ИНН, адресом магазина, РН и ФН, можно вычислить:

  • Tijk – период в днях между самыми минимальным и максимальными чеками ijkz по датам tijkz;
  • Dijk – количество фискальных документов, разница между самыми максимальными и минимальным чеками ijkz по датам tijkz;
  • dijk – среднее число чеков в день: dijk = Dijk/Tijk.

Зачем это нужно

Среднее число чеков в день позволяет судить о динамике пробития чеков отдельной ККТ, отдельного магазина (при наличии необходимого количества чеков с ККТ этого магазина) или всей сети магазинов (при наличии необходимого количества чеков с ККТ разных магазинов одной сети).

Вы можете самостоятельно создать обработку и выполнить анализ чеков. В этом вам помогут структура обработки и текст запроса. Разработка и тестирование обработки осуществлялись на типовой конфигурации «1С:Бухгалтерия предприятия, редакция 3.0» (3.0.105.31) и платформе 1С:Предприятие 8.3 (8.3.19.1229). Работать данная обработка должна практически на любой управляемой конфигурации 1С под управляемой более-менее современной платформы 1С 8.

Структура обработки

Текст запроса (для указанной выше структуры обработки)

ВЫБРАТЬ ВнешниеДанные.НаименованиеКонтрагента КАК НаименованиеКонтрагента, ВнешниеДанные.ИННКонтрагента КАК ИННКонтрагента, ВнешниеДанные.АдресМагазина КАК АдресМагазина, ВнешниеДанные.РНКонтрагента КАК РНКонтрагента, ВнешниеДанные.ФНКонтрагента КАК ФНКонтрагента, ВнешниеДанные.ФДПокупки КАК ФДПокупки, ВнешниеДанные.ДатаПокупки КАК ДатаПокупки ПОМЕСТИТЬ ВТ_ПокупкиДляАнализа ИЗ &ВнешниеДанные КАК ВнешниеДанные ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Покупка.ФНКонтрагента КАК ФНКонтрагента, МИНИМУМ(Покупка.ДатаПокупки) КАК СамаяРанняяДата, МИНИМУМ(Покупка.ФДПокупки) КАК ФДПокупки ПОМЕСТИТЬ ВТ_РанняяДата ИЗ ВТ_ПокупкиДляАнализа КАК Покупка СГРУППИРОВАТЬ ПО Покупка.ФНКонтрагента ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Покупка.ИННКонтрагента КАК ИННКонтрагента, Покупка.РНКонтрагента КАК РНКонтрагента, ВТ_РанняяДата.ФНКонтрагента КАК ФНКонтрагента, ВТ_РанняяДата.СамаяРанняяДата КАК СамаяРанняяДата, Покупка.ФДПокупки КАК РаннийФДЧисло ПОМЕСТИТЬ ВТ_РанняяДатаФД ИЗ ВТ_РанняяДата КАК ВТ_РанняяДата ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ПокупкиДляАнализа КАК Покупка ПО ВТ_РанняяДата.ФНКонтрагента = Покупка.ФНКонтрагента И ВТ_РанняяДата.СамаяРанняяДата = Покупка.ДатаПокупки И ВТ_РанняяДата.ФДПокупки = Покупка.ФДПокупки ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Покупка.ФНКонтрагента КАК ФНКонтрагента, МАКСИМУМ(Покупка.ДатаПокупки) КАК СамаяПоздняяДата, МАКСИМУМ(Покупка.ФДПокупки) КАК ФДПокупки ПОМЕСТИТЬ ВТ_ПоздняяДата ИЗ ВТ_ПокупкиДляАнализа КАК Покупка СГРУППИРОВАТЬ ПО Покупка.ФНКонтрагента ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Покупка.НаименованиеКонтрагента КАК НаименованиеКонтрагента, Покупка.АдресМагазина КАК АдресМагазина, Покупка.ИННКонтрагента КАК ИННКонтрагента, Покупка.РНКонтрагента КАК РНКонтрагента, ВТ_ПоздняяДата.ФНКонтрагента КАК ФНКонтрагента, ВТ_ПоздняяДата.СамаяПоздняяДата КАК СамаяПоздняяДата, Покупка.ФДПокупки КАК ПозднийФДЧисло ПОМЕСТИТЬ ВТ_ПоздняяДатаФД ИЗ ВТ_ПоздняяДата КАК ВТ_ПоздняяДата ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ПокупкиДляАнализа КАК Покупка ПО ВТ_ПоздняяДата.ФНКонтрагента = Покупка.ФНКонтрагента И ВТ_ПоздняяДата.СамаяПоздняяДата = Покупка.ДатаПокупки И ВТ_ПоздняяДата.ФДПокупки = Покупка.ФДПокупки ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_РанняяДатаФДЧисло.ФНКонтрагента КАК ФНКонтрагента, ВТ_ПоздняяДатаФДЧисло.РНКонтрагента КАК РН_ККТ, РАЗНОСТЬДАТ(ВТ_РанняяДатаФДЧисло.СамаяРанняяДата, ВТ_ПоздняяДатаФДЧисло.СамаяПоздняяДата, ДЕНЬ) КАК ПериодВДнях, ВТ_ПоздняяДатаФДЧисло.НаименованиеКонтрагента КАК НаименованиеКонтрагента, ВТ_ПоздняяДатаФДЧисло.АдресМагазина КАК АдресМагазина, ВТ_ПоздняяДатаФДЧисло.ИННКонтрагента КАК ИННКонтрагента, ВТ_РанняяДатаФДЧисло.СамаяРанняяДата КАК СамаяРанняяДата, ВТ_ПоздняяДатаФДЧисло.СамаяПоздняяДата КАК СамаяПоздняяДата, ВТ_РанняяДатаФДЧисло.РаннийФДЧисло КАК РаннийФДЧисло, ВТ_ПоздняяДатаФДЧисло.ПозднийФДЧисло КАК ПозднийФДЧисло, ВТ_ПоздняяДатаФДЧисло.ПозднийФДЧисло - ВТ_РанняяДатаФДЧисло.РаннийФДЧисло КАК ЧислоФД, (ВТ_ПоздняяДатаФДЧисло.ПозднийФДЧисло - ВТ_РанняяДатаФДЧисло.РаннийФДЧисло) / ВЫБОР КОГДА РАЗНОСТЬДАТ(ВТ_РанняяДатаФДЧисло.СамаяРанняяДата, ВТ_ПоздняяДатаФДЧисло.СамаяПоздняяДата, ДЕНЬ) = 0 ТОГДА 1 ИНАЧЕ РАЗНОСТЬДАТ(ВТ_РанняяДатаФДЧисло.СамаяРанняяДата, ВТ_ПоздняяДатаФДЧисло.СамаяПоздняяДата, ДЕНЬ) КОНЕЦ КАК ФДвДень ИЗ ВТ_РанняяДатаФД КАК ВТ_РанняяДатаФДЧисло ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ПоздняяДатаФД КАК ВТ_ПоздняяДатаФДЧисло ПО ВТ_РанняяДатаФДЧисло.ФНКонтрагента = ВТ_ПоздняяДатаФДЧисло.ФНКонтрагента ГДЕ РАЗНОСТЬДАТ(ВТ_РанняяДатаФДЧисло.СамаяРанняяДата, ВТ_ПоздняяДатаФДЧисло.СамаяПоздняяДата, ДЕНЬ) > 0 УПОРЯДОЧИТЬ ПО ФДвДень УБЫВ, СамаяРанняяДата

Готовое решение

Расширение «Загрузка кассовых чеков в 1С:Бухгалтерия» позволяет сканировать QR-коды на чеках. Чеки автоматически загружаются в документы «Авансовые отчет», «Расходы предпринимателя», «Путевой лист», «Поступление (акты, накладные, УПД)», «Отчет о розничных продажах», «Поступление денежных документов».

Тестируйте расширение «Загрузка кассовых чеков в 1С:Бухгалтерия» 7 дней бесплатно. Если вы используете другие конфигурации, подключите в Маркет42 этот сервис для 1С:УНФ, 1С:КА и 1С:УТ.

0
Комментарии
-3 комментариев
Раскрывать всегда