Архив рубрики: 1С 8.3

Пример использования PUSH-сообщений

На базе приложения Агент был реализован интересный способ использования PUSH-сообщений в 1С. Документы, переданные сотрудниками с мобильных устройств в базу, в конце дня собираются в итоговые ведомости по каждому сотруднику отдельно. Ведомости распечатывают и подписывают две стороны – бухгалтерия и торговый агент. Поскольку в 1С уже налажен канал связи между сервером и мобильным приложением, возникла идея подписывать ведомости электронным способом – в сформированном в 1С документе инициируется запрос агенту на подтверждение, при получении положительного ответа с устройства, в документе появляется соответствующая отметка.

Читать далее

Отправка PUSH сообщений

Это заметка о том, как отправить PUSH сообщение из 1С на Андроид-устойство с использованием сервиса Firebase Cloud Messaging.

  • если нужно отправить сообщение на определенное устройство, понадобится его токен – он формируется сервисом FirebaseMessagingService, его нужно прочитать в приложении и передать на сервер для последующего использования
  • понадобится ключ API приложения, его можно найти в параметрах проекта в Firebase Console, на вкладке Cloud Messaging
  • используя токен и ключ нужно составить и отправить на сервер службы сообщений POST-запрос.
Читать далее

Язык платформы в Ubuntu

Чтобы запустить 1С с нужным языком интерфейса в Ubuntu можно отредактировать ярлык запуска: в папке пользователя ~/.local/share/applications/1cestart.desktop в строку Exec нужно добавить параметр “/L uk” или “/L ru” например.

Но! Стандарнтый ярлык запуска, с именем 1cestart.desktop переписывается после каждого запуска 1с, по этому лучше сделать копию ярлыка и в ней прописать нужный ключ языка.

Ошибка формата потока

Еще один способ вылечить базу при появлении сообщения “Ошибка формата потока”. Если база работает в формате SQL и возможности зайти в режим конфигуратора нет, то можно откатить изменения в конфигурации, скопировав рабочую версию конфигурации из резервной копии. Конфигурация хранится в таблице dbo.Config, т.е. достаточно выполнить скрипт:

USE [MyDB]
GO
DELETE FROM [MyDB].[dbo].[Config]
GO
INSERT INTO [MyDB].[dbo].[Config] SELECT * FROM [MyDBcopy].[dbo].[Config]
GO

Здесь MyDB – поврежденная база, MyDBcopy – рабочая резервная копия.

Расчет алиментов

В типовой конфигурации “Бухгалтерия для Украины” есть возможность настроить автоматический расчет и удержание алиментов. Если способ расчета указан “Процентом”, то в качестве базы для расчета берется начисленный доход, в то время как правильным было-бы облагать процентом фактический доход, т.е. начисленный минус удержания. Что нужно сделать:

  1. В общем модуле ПроведениеРасчетов в процедуре РассчитатьЗаписиРегистраРасчета, перед вызовом функции получения исходных данных для расчета ПолучитьДанныеДляРасчета, добавить в структуру НеобходимыеДанные параметр ИсчисленныйНДФЛ. НеобходимыеДанные.Вставить(“ИсчисленныйНДФЛ”,Истина);
  2. В теле функции ПолучитьДанныеДляРасчета пришлось исправить текст запроса ИсчисленныйНДФЛТекст, в нем просто все обращения к реквизиту ФизЛицо нужно заменить на Сотрудник.
  3. В процедуре РасчитатьЗаписьРегистраРасчета, в структуре ИсходныеДанные теперь будет доступна сумма рассчитанного НДФЛ с военным сбором, а в Переменной ВидРасчета есть признак того, что наш расчет является именно алиментами – ВидРасчета.ЭтоАлименты. Остается только вычесть из базы начисленные налоги перед применением процента.

Что изменилось?

При сохранении объекта, справочника или документа, в его модуле, в процедуре ПередЗаписью можно легко определить, какие реквизиты объекта изменились. Для этого достаточно сравнить значение по идентификатору со значением через Ссылку. Например, узнаем, что изменилась группа элемента справочника:

Если Родитель <> Ссылка.Родитель Тогда

...

Коды ошибок HTTP

При работе с веб-сервисами 1С, в процессе отладки, удобно сразу понимать, в каком месте что-то пошло не так. Если данные через сервис совсем не проходят, обычно можно понять причину в логе веб-сервера. При использовании Apache лог находится в файле \logs\access.log
Нормальный запрос от клиента выглядит примерно так:
46.211.159.63 - - [23/May/2017:11:41:22 +0300] "POST /base/ws/AgentExchange HTTP/1.1" 200 321
В этой строке виден ip адрес клиента, время, имя веб-сервиса “AgentExchange”, код ответа – “200”

Коды ответов при ошибках:
500 – ошибка обращения к веб-сервису, обычно из-за нарушения прав доступа в 1С
401 – ошибка авторизации в 1С

Расчет зарплаты

В конфигурации “Бухгалтерия для Ураины”, редакция 2.0, при подсчете количества часов не учитываются предпраздничные дни. Простой способ исправить ситуацию:

Модуль РасчетЗарплатыБазовый
Функция РабочихДнейЧасовВПериоде
было: РабочихДнейЧасов.Часов = РабочиеДни * 8 + ПредпраздничныеДни * 8;
нужно: РабочихДнейЧасов.Часов = РабочиеДни * 8 + ПредпраздничныеДни * 7;
Читать далее

Бета-тест программы Агент

Агент. Приложение для торговых представителей

Агент. Приложение для торговых представителей

С сегодняшнего дня доступна для тестирования бета-версия андроид-приложения, которое будет обмениваться информацией с учетной системой в 1С.
Сейчас работают такие функции: загрузка списка товаров с ценами и остатками, загрузка списка клиентов с долгами, набор заявки клиента, отправка заявки в 1С.
Для установки приложения нужно пройти по ссылке: Вход для тестировщиков, там будет доступна ссылка на маркет. В самом приложении, в настройках подключения нужно ввести адрес сервера “demo” и имя базы “demo”.
В целях тестирования будем пробовать обмен с базой 1С “Простой учет”: вход в веб-интерфейс. Логин “Пользователь”, без пароля.
Общие правила для тестировщиков таковы: нажимать и вводить что угодно, как угодно, но при возникновении сбоя обязательно отправлять отчет если это предложит сама система или оставить отзыв в маркете.
Группа в Телеграме для обсуждения программы: ссылка.

Sic С 7 февраля 2017 бета-тестирование окончено, программа доступна в плей-маркете

Целое число в запросе

Для округления чисел в запросе необходимо применять функцию ВЫРАЗИТЬ, для отсечения дробной части придется использовать конструкцию ВЫБОР.

Пример округления до целого:

ВЫРАЗИТЬ(ЦеныМагазина.Цена КАК ЧИСЛО(12, 0))

Пример получения целой части (отсечение дробной):

ВЫБОР
КОГДА (ВЫРАЗИТЬ(ЦеныМагазина.Цена КАК ЧИСЛО(12, 0))) > ЦеныМагазина.Цена
ТОГДА (ВЫРАЗИТЬ(ЦеныМагазина.Цена КАК ЧИСЛО(12, 0))) - 1
ИНАЧЕ ВЫРАЗИТЬ(ЦеныМагазина.Цена КАК ЧИСЛО(12, 0))
КОНЕЦ