Использование HTTP-сервиса в 1С 8.3 для получ...
-

Использование HTTP-сервиса в 1С 8.3 для получения расчетного листа сотрудником

0
1855
30.09.2019 Роман Барабанов

Содержание:

1.      Получение расчетного листа в 1С

2.      Формирование расчетного листа, формирование табеля и другие возможности  

 

1.      Получение расчетного листа в 1С


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


Для начала стоит опубликовать нашу базу. Ради улучшения безопасности я советую вам развернуть ее локально и не публиковать на весь интернет. Естественно это подразумевает и то, что корпоративный сайт находится в этой же сети.


Далее необходимо создать в нашей конфигурации 1С 8.3 HTTP-Сервис:




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


Теперь нам необходимо определить Шаблон URL:




Название, как обычно, не играет для нас особой роли, интересен шаблон. Указали мы его как /Documents1C/{Пользователь}.

Теперь наша ссылка выглядит следующим образом:

http://<адрес_базы_1с>/hs/GetList/Documents1C/<Пользователь>.

Адрес вы уже знаете из публикации
hs–http-сервис

GetList – Название нашего HTTP-Сервиса.

Documents1C – Наш шаблон.

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

К шаблону я добавил метод GETс следующими свойствами:




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

 

Функция ПолучитьЗарплатуGET(Запрос)

            Попытка

                        // Получим переданный в HTTP-запросе сотрудника. Желательно использовать какой-нибудь шифр.

                        Сотрудник = Справочники.Сотрудники.НайтиПоНаименованию(Запрос.ПараметрыURL["Пользователь"]);

                        Если Сотрудник = Справочники.Сотрудники.ПустаяСсылка() Тогда

                                    ВызватьИсключение;

                        КонецЕсли;

            Исключение

                        // Сотрудник не найден в системе.

                        HTTPОтвет = Новый HTTPСервисОтвет(400); // 400 - BadRequest

                        HTTPОтвет.УстановитьТелоИзСтроки(НСтр("ru='Сотрудник не найден'"));

                        Возврат HTTPОтвет;

            КонецПопытки;

           

            //Далее следуют параметры для формирования расчетного листа в 1С

            Идентификатор = "РасчетныйЛисток";

            ПодготовитьКоллекциюПечатныхФорм(Идентификатор);

           

           

            Если ТипЗнч(Сотрудник) = Тип("СправочникСсылка.Сотрудники") Тогда

                        ФизическоеЛицоСотрудника = СотрудникиКлиентСерверПовтИсп.ФизическиеЛицаСотрудников(Сотрудник)[0];

            Иначе

                        ФизическоеЛицоСотрудника = Сотрудник;

            КонецЕсли;

           

           

            РасчетныйЛисток = ПечатныеФормыСотрудников[Идентификатор].ПечатныеФормы.Получить(ФизическоеЛицоСотрудника);

           

            //Ищем последние начисления зарплаты в 1С

            Запрос = Новый Запрос;

            Запрос.Текст =

                        "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1

                        |          НачислениеЗарплаты.Ссылка КАК Ссылка

                        |ИЗ

                        |          Документ.НачислениеЗарплаты КАК НачислениеЗарплаты

                        |

                        |УПОРЯДОЧИТЬ ПО

                        |          НачислениеЗарплаты.Дата УБЫВ";

           

            Запрос.УстановитьПараметр("Проведен", Проведен);

           

            РезультатЗапроса = Запрос.Выполнить();

           

            ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

           

            Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

                        Ссылка = ВыборкаДетальныеЗаписи.Ссылка;

            КонецЦикла;

           

            //В случае если документов в базе нет, то возвращаем ошибку.

            Если Ссылка = Документы.НачислениеЗарплаты.ПустаяСсылка() Тогда

                        HTTPОтвет = Новый HTTPСервисОтвет(400); // 400 - BadRequest

                        HTTPОтвет.УстановитьТелоИзСтроки(НСтр("ru='Документов нет'"));

                        Возврат HTTPОтвет;

            КонецЕсли;

           

            КарточкаУчета = Новый Массив;

            КарточкаУчета.Добавить(Объект.Ссылка);

            КарточкаУчета.Добавить(РасчетныйЛисток);

           

            //Тут будет ошибка. В нашей реализации мы использовали обходной метод, в котором мы получаем непосредственно табличный документ. Но для примера опустим сложную реализацию.

            ТабДок = УправлениеПечатьюКлиент.ВыполнитьКомандуПечати("Отчет.АнализНачисленийИУдержаний", "РасчетныйЛистокПодробнее",

            КарточкаУчета, Неопределено);

                       

            // Запишем 1С 8 табличный документ в поток в памяти в формате PDF.

            Поток = Новый ПотокВПамяти;

            ТабДок.Записать(Поток, ТипФайлаТабличногоДокумента.PDF);

           

            // Получим двоичные данные файлов для отправки клиенту

            ДвоичныеДанные = Поток.ЗакрытьИПолучитьДвоичныеДанные();

           

            #КонецОбласти

           

            #Область ОтправкаОтветаКлиенту

           

            // Сформируем имя файла, с которым печатная форма будет загружена у клиента.

            ИмяФайла = Строка(ДокументСсылка) + ".pdf";

            // Кодируем строку URL, чтобы избежать проблем с русскими буквами и другими символами (например, пробел).

            ИмяФайла = КодироватьСтроку(ИмяФайла, СпособКодированияСтроки.КодировкаURL);

           

            // Создадим ответ.

            HTTPОтвет = Новый HTTPСервисОтвет(200); // 200 - OK

           

            // Установим заголовки.

            HTTPОтвет.Заголовки.Вставить("Content-Type", "application/pdf"); // Чтобы браузер знал, что это PDF

            HTTPОтвет.Заголовки.Вставить("Content-Disposition", "attachment; filename=""" + ИмяФайла + """");

           

            // Телом ответа являются двоичные данные печатной формы.

            HTTPОтвет.УстановитьТелоИзДвоичныхДанных(ДвоичныеДанные);

           

            // И, наконец, вернем ответ клиенту.

            Возврат HTTPОтвет;

КонецФункции  

    

2.      Формирование расчетного листа, формирование табеля и другие возможности


Осталось только разместить эту функцию, переделать формирование расчетного листа под себя и подумать над тем, как избежать того, чтобы пользователь мог подсмотреть чужую расчетку. Этот пример можно использовать для многих документов. Например, формирование остатка отпуска, формирование табеля. Если развивать мысль дальше, то можно использовать на сайте для клиента, для получения документов реализации в 1С 8.3.


Специалист компании ООО «Кодерлайн» 

Роман Барабанов.

Задать вопрос автору статьи
Тема вопроса*
Ваше имя*
E-mail или телефон*
Ваш вопрос*
 

Добавить комментарий
Текст сообщения*
Защита от автоматических сообщений
 
Теги
# абота Риелторского Агентства # Управление торговлей 11 #Работа Риелторского Агентства # 1C # CRM-система # Cинтаксис-помощник # Cинхронные методы работы # PDF документами # PowerShell # XML-файл # Бизнес-процесс # Виды событий оповещения # Глубина анализа # Графические объекты # Динамический список # Документ заполнен # Документ Отбор (размещение) товаров # Документ Отгрузка товаров ИС МП # Документ Приобретение товаров и услуг # Документ УПД # Документы продажи # Доступ на ТСД # ДтКт # ЕАЭС # Задержка зарплаты работодателем # Закладка Администрирование # Зарплата и кадры # Имя таблицы # ИТС # Кабель NYM(Севкабель) 3x5.5 # Книга учета доходов и расходов # Курс валюты # Лицо с правом подписи # Лицо, имеющее право подписи документов # Маркировка цифровыми кодами # Минимальные цены продажи в 1С # Настройка НСИ и разделов # Настройка ценообразования # НДФЛ # Нематериальные активы # Обмен электронными документами # Оплата через банк # Оптовые продажи # Основное ответственное лицо организации # Передача на комиссию # Перемещение ТС и оборудования # Проведение инструктажа # Продажи или Закупки # Прочие доходы # Пункт Подключить обработки # Пункт Сервис # ПФР и ФФОМС # Работа ТС # Расчёт зарплаты # Расчет налога УСН # Расчетные счета # Режим использования модальности # Система «Честный знак» # Система GS1 # Списание на расходы # Справка-расчет налога УСН # Страховые взносы # Табель учёта рабочего времени # Таблица формы # Таблица формы «Сотрудники» # Товары # Установка цен на товары # Формат Цифровой Маркировки # Форматированное письмо # Функция Дата # Функция ДеньГода # Функция ДеньНедели # Центральный Банк России # Цены номенклатуры 2.5 # Элементы #1.6-НДФЛ #1С Бухгалтерия #1С Договоры #1С: CRM #1С: ERP #1С: ERP Управление строительной организацией #1С: ERP. Управление буровой компанией #1С: WMS Управление складом #1С: Аренда и управление недвижимостью #1С: БУХ #1С: Договорчики #1С: Документооборот #1С: ЗУП #1С: Интеграция #1С: КА #1С: Колледж #1С: Конвертация данных #1С: Модули #1С: Платформа #1С: Предприятие #1С: Розница #1С: Сценарное тестирование #1С: ТОИР #1С: УАТ #1С: УКФ #1С: Университет #1С: УНФ #1С: УПП #1С: Управление строительной организацией #1С: УТ #1С: УХ #1С:ERP #1С:БГУ #1С:БП #1С:Риелтор #1С:Управление холдингом #1С.6-НДФЛ #ADO #APACHE #API #canonical #com-объекты #Cинтаксис-помощник #Cопроводительных документов #Cправочник БИК #Excel #Excel в 1С #GoogleDrive #Googleаккаунт #HTTP #ITIL #Koderline: Управление медиа-холдингом #Koderline: Управление проектами строительства скважин #LINUX #MS SQL Server #PDF #WEB #WEB-сервисы 1С #Word #WS-ссылки #XDTO-объект #XML #XML-обмен #Администрирование 1С #Адрес URL описания #акты в 1С #Банковские счета #Безопасность сервера #Бесшовная интеграция #БИТ.Финанc #Битрикс24 #Блокировки в 1С #БСП #БУ #Бурение скважин #Бухгалтерская отчётность в МСФО #Бюджетирование #Вид договора #Вид Характеристики #Вкладка Документы #Внедрение #Внедрение ERP #Внешний вид формы #Внешнюю обработку #Выбор каталога #Выбранные файлы #Дата действия договора #Документ Отпуск #Документ1 #Журналы #Загрузить Значения #Загрузка цен в 1С #Задача для 1С #Закладка Торговля #Закрытие месяца #Заменить #Запись регистра сведений #Запросы 1С #Интеграция 1С #Интервал dpi #История пользователя #Кадровые документы #КАК ОТРАЖАЮТСЯ ТОВАРЫ В ПУТИ 1С #Как сделать в 1С #Карточка Объекта недвижимости #Классификаторы и курсы валют #Клиент-серверная схема #Код ЦМТ #Код языка #Конвертация данных #Контроль документов #Конфигурация 1С #Конфигурация 1С ЗУП 3.1 #Копирование настроек пользователей #Корпоративное сопровождение #Лизинг #Лицензии 1С #Лицензионный договор #Личные документы #Массив Номенклатур #Массовая регистрация отгулов #Меню Отчет #Механизм Анализа Данных в 1С #Моделирование #Модуль Диадок #МРОТ #МСФО #Налоги #Начисления Арендной платы #Новый Массив #Обмен между базами #Обновления #Общие ознакомительные рассылки #Окно сообщений #Операции в 1С #Оповещение по видам события #Оптимизация #Организация #Отпуск #Отчетность #Отчеты в 1С #Оформление перевода работника #Оценка задач #Параметр «Количество» #Партнер #Передача неисключительных прав #Перенос данных #Перенос цен из Excel в 1С #Периодичность ДЕНЬ #Периодичность МЕСЯЦ #Печатная форма документа #Планирование #Поле Ввода Значение Субконто #Полезные обработки #Пользовательский режим #Поступление основных средств #Правила обмена #предопределенные элементы справочников #Прием на работу #Принцип работы 1С #Проводки 1С #Программа 1С #Программирование в 1С #Программные права #Продажа ТМЦ #Продажи #Продление #Производство #Просмотр #Пункт «Касса» #Путь к файлу #Работа с объектами в 1С #Раздел Справочники #Расторжение #Расчет зарплаты #Расчетные документы #Расширение конфигурации #Регламентированная отчетность #Режим РИБ #Результаты поиска #Реквизит «СпЗнч» #РМК #РСБУ #С # #Сдельный заработок #Сервис-деск #СЗВ-СТАЖ #СКД #Служба ИТ #Служба НСИ #Соединение COM в 1С платформе #Соединение СОМ в 1С платформе #Сравнение конфигураций #Строка «Касса (ККМ)» #Счет-фактура #Табличная часть обработки #Текущая Строка #Территориальная привязка #Территориальные рамки #Тестирование 1С #Техническое задание #Типы данных ссылки #Торговое оборудование #Транспортная логистика #Управление проектами #Установка цен номенклатуры #Финансовый учет #Формат MicrosoftExcel #Функционал МРМ #Х-точка #Характеристики Товаров #Хранилище настроек #Хранить историю изменений #Ценообразование #Чтение #Экзамен 1С #Экспорт товаров #электронные подписи #Яндекс-диск или Google-диск #Яндекс.Касса 1С под Linux 1С:УНФ Email или телефон Работа с объектами в 1С Функциональные опции в 1С
Услуги программиста 1С
Получите специалиста  
для решения всех задач
в области 1С
Программы 1С
Цены и подробное описание программ 1С:Предприятие 8.