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

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

В последней версии конфигурации “Бухгалтерский учет для Украины” 1.2.48.1 для получения в расчете суммы уже рассчитанного НДФЛ пришлось немного сложнее поправить запрос – нужно убрать инструкцию ИНДЕКСИРОВАТЬ. Полный текст запроса ниже, полное описание правок тут: ссылка.

Читать далее

Пример функции для вычисления MD5 hash

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

Читать далее

Ошибка обмена: конфигурация не соответствует ожидаемой

Возможно, это связано с какими-то особенностями новых версий платформ, но вот на версии 8.3.12 столкнулся с ошибкой в распределенной базе – при обмене загрузка данных в периферийную базу проходит без проблем, а центральная база при получении данных от периферийной сообщает: “Конфигурация не соответствует ожидаемой”.

Манипуляции с файлом конфигурации на периферийной базе проблему не решили. В сети нашел варианты с подменой или редактированием поля Digest непосредственно в файле XML, но это обычно помогает для одной загрузки, а при следующем обмене ошибка повторяется.

Читать далее

Пример использования 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С