Казнить нельзя помиловать

26.08.26

Сообщество - О жизни

За долгое время работы программистом 1С какие только занятия ни приходилось выполнять. Хотелки «пользователей» иногда были не то, что странные, а просто неописуемые. Что в это время творилось в их голове, только одному богу известно. Но неизменным оставалось только одно: они это хотели здесь и сейчас, а еще лучше вчера.

Ладно, если это были рядовые пользователи, на которых можно было найти управу. Но в большинстве своём это были ТОП-менеджеры или приближенные к ним, которым отказать было ну никак нельзя. А уж если это «тело» имеет доступ к «хозяину», тот тут точно надо бежать «сломя голову» и выполнять это поручение. Итальянской забастовкой точно отделаться не получится, а вариант с увольнением вовсе не вариант.

Ну так вот. Во время очередного приезда «хозяина», а приезд «хозяина» ничего хорошего не сулит и означает только одно, что всем и вся будет роздано «на орехи».

И вот в очередной приезд «хозяина», назовём его Иван Иванович, приехал на предприятие и начал совершать обход владений своих. В очередной раз его так допекли, то он уже ругался не просто матом и грозил всем «всеми карами небесными», но и перешел к активным действиям. Он начал тыкать пальцем в сотрудника и говорить, что сотрудник уволен. Но этого ему было мало. Он понимал, что пока суть да дело может случится так, что это увольнение может «замылиться» и сотрудника могут в итоге не уволить. А он жаждал крови, причем здесь и сейчас. Поэтому тут же развернувший к своему секретарю, отдал ей приказ, что мол быстро мне в рамках автоматизации сделайте так, чтобы я мог лично увольнять сотрудников при помощи смартфона здесь и сейчас. Сделаю небольшое отступление. Иван Иванович категорически на дух не переносит компьютеры, причем в любом их виде. Будь то стационарный ПК или ноутбук. Работал он либо с последнего iPhone, либо с яблочного планшета. Бумажные варианты тоже «шли лесом». За бумажный вариант он готов был «убить на месте» подателя сего.

Естественно, что после обхода секретарь «хозяина» вызвала к себе директора по IT и озвучила задачу самого главного на предприятии. Директор по IT тут же взял под козырек и вызвал к себе программиста и пересказал всё, что ему было передано. Фраза была довольно простая: - «Надо сделать!»

Когда программист 1С отошел от шока, а работал он в этой организации меньше месяца, и сузить свои глаза от размера ленинского рубля хотя бы до трехкопеечной монеты, после чего попытался задать хоть какие-то наводящие вопросы, типа, а в какой базе это надо реализовывать. На что получил ответ, что давай делай быстрее, а то мало никому не покажется.

В итоге программист 1С отправился ваять.

Поскольку самой главное программой на предприятие был Документооборот, реализация данного функционала решено было реализоваться там. Да, на предприятии были базы ЗУП и Бухгалтерия, но они держались особняком. Все бизнес-процессы протекали именно в Документообороте.

Итак. Если открыть документооборот на компьютере, то мы наблюдаем вот такую начальную страницу.

 

 

А если Документооборот открывать со смартфона или с планшета, то начальная страница будет выглядеть вот так.

 

 

Так как «хозяин» компьютером не пользовался, то, значит, надо остановиться на мобильном варианте, для смартфона или для планшета. Понятно, что слишком много и долго, «хозяин» нажимать ничего не будет. Ему нужен «автомат Калашникова», который работает безотказно и в любое время суток.

Было решено разместить на Рабочем столе для мобильного приложения еще один виджет, который будет находится вверху. На этом виджете будет присутствовать картинка человека с крестом, который будет символизировать увольнение и название «Экстренное увольнение».

 

 

Далее по задумке, как только нажимается эта кнопка, то возникает следующее окно, в котором и будет происходить непосредственное увольнение. Предположительно оно должно выглядеть следующим образом. Указывается сотрудник и нажимается кнопка «Уволить». И всё.

 

ФИО сотрудника можно выбирать из списка, начав вводить первые буквы, или непосредственно из самого справочника.

После того, как кнопка «Уволить» будет нажата, внизу появится сообщение «Сотрудник уволен».

 

 

А в Документообороте будет создан соответствующий документ (элемент справочника «ДокументыПредприятия»), по которому данное увольнение пойдет по исполнителям.

 

 

В принципе, любой, кто работал с Документооборотом, может представить и понять этот механизм работы. Думаю, что всем понятно, что при нажатии на кнопку «Уволить» происходит программное создание элемента справочника «ДокументыПредприятия». После чего происходит заполнение необходимых реквизитов в этом справочнике, и идет отправка его по исполнителям.

Вот так, кратенько, можно обрисовать теорию.

А теперь приступает непосредственно к реализации. Делалось это следующим образом.

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

В новом расширении загрузил из Интернета картинку «человечка с крестом».  «Общие» – «Общие картинки» – «КартинкаЭкстренноеУвольнение».

Была скопирована роль «БазовыеПраваБСП» из основной конфигурации в расширение  через команду «Добавить в расширение».

Также через команду «Добавить в расширение» была скопирована общая форма «РабочийСтол».

 

 

Для этой формы была созданная команда «ЭкстренноеУвольнение» и прописан для неё следующий код.

&НаКлиенте

Процедура СЧ_ЭкстренноеУвольнениеПосле(Команда)        

ОткрытьФорму("Обработка.СЧ_ЭкстренноеУвольнение.Форма.ФормаЭлемента",,ЭтаФорма,,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);

КонецПроцедуры

По этому коду открывается новая форма в которой и будет происходить непосредственное удаление сотрудника. Этой формы еще нет, но мы её обязательно создадим позднее.

После чего эту команду размещаю на форме. Самое главное не забыть в свойства для отображения выбрать «Картинка и текст» и подгрузить нашу ранее загруженную картинку человека.

Там же в свойствах кнопки меняю цвет фона, цвет текста, шрифт и высоту этой кнопки, как показано на скриншоте ниже.

 

 

Затем мы должны учесть, видимость этой кнопки. Эта кнопка должна быть видима только в мобильном приложении! Поэтом при открытии пишем следующий код.

&НаКлиенте

Процедура СЧ_ПриОткрытииПосле(Отказ)

               

                Элементы.ЭкстренноеУвольнение.Видимость = Ложь;

               

                #Если МобильноеПриложениеКлиент или МобильныйКлиент Тогда

                 

                               Если ПроверкаДоступаКЭкстренномуУдалениюСотрудников() Тогда

                                               Элементы.ЭкстренноеУвольнение.Видимость = Истина;

                               КонецЕсли;      

                              

                #КонецЕсли

               

КонецПроцедуры



&НаСервере

Функция ПроверкаДоступаКЭкстренномуУдалениюСотрудников()

               

                ПолученноеЗначение = Ложь;

               

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

                Запрос.УстановитьПараметр("ТекущийПользователь", Пользователи.ТекущийПользователь());

                Запрос.Текст = "ВЫБРАТЬ

                               |             СЧ_Топы_ЭкстренноеУвольнение.ПользователиТопы КАК ПользователиТопы

                               |ИЗ

                               |             РегистрСведений.СЧ_Топы_ЭкстренноеУвольнение КАК СЧ_Топы_ЭкстренноеУвольнение

                               |ГДЕ

                               |             СЧ_Топы_ЭкстренноеУвольнение.ПользователиТопы = &ТекущийПользователь

                               |             И СЧ_Топы_ЭкстренноеУвольнение.ПользователиТопы.ПометкаУдаления = Ложь";

               

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

                Если Результат.Следующий() Тогда

                               ПолученноеЗначение = Истина;

                КонецЕсли;      

                              

                Возврат ПолученноеЗначение;

               

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

 

Если внимательно посмотреть на вышеуказанный код, то на сервере идет обращение к регистру сведений «СЧ_Топы_ЭкстренноеУвольнение», который также будет создан чуть позднее.

На этом работа с общей формой «Рабочий стол» завершена.

Переходим теперь к созданию регистра сведений, который у нас будет непериодическим и независимым. Назовем его «СЧ_Топы_ЭкстренноеУвольнение». У него будет единственное измерение «ПользователиТОПы». В этот регистр мы будем помещать тех людей, которые могут выполнить экстренное увольнение. Это будет правильным решением, так как позволяет быстро расширить или сузить круг таких лиц в реальном времени. Если это делать в коде, то каждый раз надо выгонять пользователей. Вот поэтому пришлось создавать этот регистр сведений. Код здесь никакой писать не надо.  Надо только указать Подсистему и права для роли «БазовыеПраваБСП».

Далее переходим к последнему объекту, который нам надо создать в этом расширении. Это обработка «СЧ_ЭкстренноеУвольнение». Сразу указываем подсистему и права для роли «БазовыеПраваБСП». В качестве данных указываем два реквизита: «Сотрудник» и «ВидДокумента».

Реквизит «Сотрудник»  имеет тип данных «СправочникСсылка.Сотрудники», а Реквизит «ВидДокумента» имеет тип данных «СправочникСсылка.ВидыДокументов».

Затем создаем форму элемента обработки и размещаем реквизиты на форме и добавляем еще команду «КомандаУволить» и декорацию в качестве надписи, которая будет отображать информацию, что сотрудник уволен.

И в итоге на форме обработки это будет следующим образом.

 

 

В качестве обработки кода, для кнопки «Уволить» будет применен следующий код.

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

                ВидДокумента = Справочники.ВидыДокументов.НайтиПоНаименованию("Экстренное увольнение");

КонецПроцедуры



&НаКлиенте

Процедура КомандаУволить(Команда)

               

                Если Не ЗначениеЗаполнено(Объект.Сотрудник) Тогда

                               Сообщить("Не указан сотрудник для увольнения!");

                               Возврат;

                КонецЕсли;           

               

                Док_ЭкстренноеУвольнение = СоздатьДокументЭкстренноеУвольнение();

                Если Док_ЭкстренноеУвольнение = Неопределено Тогда

                               Сообщить("Документ не был создан!");

                               Возврат;

                КонецЕсли;                              

                ПараметрыФормы = Новый Структура("Ключ", Док_ЭкстренноеУвольнение);

                МояФорма = ПолучитьФорму("Справочник.ДокументыПредприятия.Форма.ФормаЭлемента", ПараметрыФормы);

              

                МояФорма.ДействияЗаполнитьДляМобильногоПриложения();

                МояФорма.ОбновитьОтображениеДанных();

                МояФорма.НТ_ДействияОтправить();

               

                Элементы.Декорация1.Заголовок = "Сотрудник уволен!..";

               

КонецПроцедуры



&НаСервере

Функция СоздатьДокументЭкстренноеУвольнение()

               

                ДокЭкстренноеУвольнение = Справочники.ДокументыПредприятия.СоздатьЭлемент();

                ДокЭкстренноеУвольнение.ВидДокумента             = Справочники.ВидыДокументов.НайтиПоНаименованию("Экстренное увольнение");

                ДокЭкстренноеУвольнение.ДатаНачалаДействия       = ТекущаяДата();

                ДокЭкстренноеУвольнение.ДатаСоздания             = ТекущаяДата();

                ДокЭкстренноеУвольнение.Заголовок                = "Увольнение сотрудника: " + Строка(Объект.Сотрудник);

                ДокЭкстренноеУвольнение.Наименование             = "Увольнение сотрудника: " + Строка(Объект.Сотрудник);

                ДокЭкстренноеУвольнение.Комментарий              = "Экстренное увольнение.";

                ДокЭкстренноеУвольнение.Важность                 = ПредопределенноеЗначение("Перечисление.ВариантыВажностиОбъектов.Обычная");

                ДокЭкстренноеУвольнение.НеДействует              = Ложь;  

                ДокЭкстренноеУвольнение.Бессрочный               = Ложь;

                ДокЭкстренноеУвольнение.ПодписанВсеми            = Ложь; 

                ДокЭкстренноеУвольнение.Подразделение            = ОпределитьПодразделение();

                ДокЭкстренноеУвольнение.ФормаДокумента           = ПредопределенноеЗначение("Перечисление.ВариантыФормДокументов.Бумажная");

                ДокЭкстренноеУвольнение.КоличествоЛистов         = 1;

                ДокЭкстренноеУвольнение.ЛистовВПриложениях       = 1;

               

                ДокЭкстренноеУвольнение.Подготовил               = Пользователи.ТекущийПользователь();

                ДокЭкстренноеУвольнение.Ответственный            = Пользователи.ТекущийПользователь();

               

                ДокЭкстренноеУвольнение.Записать();

               

                Возврат ДокЭкстренноеУвольнение.Ссылка;

               

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



Функция ОпределитьПодразделение()

                Возврат Справочники.СтруктураПредприятия.НайтиПоНаименованию("Администрация");

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

 

Код довольно несложный. Сначала «ПриСозданииНаСервере» определятся вид документов, который ранее был созданный в Документообороте «Экстренное увольнение».

После чего, когда нажимается кнопка «Уволить». Если вдруг забыли указать сотрудника, то программа прекратить выполнение дальнейшего кода и выдаст информацию о том, что не указали сотрудника для увольнения.

Если сотрудник был указан, то выполнится создание элемента справочника, которое будет выполняться на сервере. При этом заполнятся все перечисленные реквизиты в коде, и элемент справочника будет записан.

Если запись произошла, то  на клиенте обратимся к форме этого объекта и выполним процедуры.

МояФорма.ДействияЗаполнитьДляМобильногоПриложения();

МояФорма.ОбновитьОтображениеДанных();

МояФорма.НТ_ДействияОтправить()

И в конце на форме появится надпись «Сотрудник уволен!..».

Если запустить Документооборот на ПК, то там увидим сформированный документ, который уже запущен на исполнителей.

 

 

Так как база у нас была уже опубликована на веб-сервере, то осталось только запустить программу на смартфоне (планшете) и посмотреть, как это всё выполняется. Покажу это просто скриншотами.

 

 

Когда этот функционал был показан «хозяину», то он сначала офигел и единственной фразой его было: «Вы что, ребята, шуток не понимаете!». Но потом настолько проникся и тут же уволил одного сотрудника, со словами: — «Как давно я мечтал это сделать!».

И тут же по предприятию пошел слух, что теперь хозяин не только может грозиться уволить, но и реально может уволить любого сотрудника при помощи своего смартфона простым нажатием кнопки. Поэтому бояться теперь надо еще больше, ведь за воротами стоит целая толпа страждущих на замену!

За этот функционал мне выписали огромную премию, на которую я мог теперь спокойно не работать и ждать пенсию, что было, конечно же, шуткой. Я просто продолжил работать дальше, ведь впереди было внедрение ERP, но это уже совершенно другая история, о которой я, может быть, расскажу через некоторое время.

 

P.S. Данная статья была мною опубликована для коллег, особенно начинающих, чтобы они имели хоть небольшое представление о том, что их ждет на работе программистом 1С. Отнеситесь это как к шутливому рассказу, хотя в каждой шутке есть доля правды.

Всем всего наилучшего и терпения!

Вступайте в нашу телеграмм-группу Инфостарт

Статья о жизни программист 1С жизнь замечательных людей работа

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

О жизни Россия Бесплатно (free)

Расскажу, как это было у меня. Собеседования я не умею проходить от слова совсем, особенно когда начинают задавать вопросы типа: • Что такое структура? • Что такое соответствие? • Чем соответствие отличается от структуры? • Как обратиться к общему модулю из формы документа? • Как надо обновлять доработанную конфигурацию?

28.07.2026    3986    chuevsf    160    

38

О жизни Россия Бесплатно (free)

Моё личное мнение о перспективах ИИ в среде 1С.

23.06.2026    3987    1c-intelligence    113    

37

О жизни Бесплатно (free)

30 лет в 1С, 51 год, жёсткие требования к формату работы. За 1.5 месяца нашёл работу, используя DeepSeek как персонального HR-ассистента. Один раз настроил, отправил три своих резюме - дальше просто скидывал вакансии в чат и наговаривал ощущения через микрофон. ИИ анализировал, отсеивал фейки, писал сопроводительные письма, готовил к собеседованиям и разбирал ошибки. Результат: 127 откликов, 2 оффера, выход на работу 1 июня с достойной зарплатой (гибрид, к сожалению, мы с ним не нашли)

20.05.2026    6938    GarriSoft    224    

64

О жизни Россия Бесплатно (free)

Еще совсем недавно у программистов 1С было всё хорошо. Задачи на выполнение сыпались, как из рога изобилия. Счетчик времени зашкаливало от быстроты их выполнения. Чуть ли не каждый месяц был новый рекорд. Новые идеи генерировались бизнесом одна за другой. Но общее состояние экономики в России в 2026 году уже давали о себе знать, и группу компаний также стало лихорадить.

17.04.2026    10212    chuevsf    242    

187

О жизни Бесплатно (free)

Личные заметки о том, как 1С-разработка столкнулась с вызовом времени. От FoxPro до "гаражной инженерии" - тридцать лет по одним и тем же граблям.

02.04.2026    11173    GarriSoft    271    

48

О жизни Бесплатно (free)

Команда Инфостарта проделала огромную работу. Спасибо за эту сложную работу и важные данные. Цифры - это круто, они заменяют собственные ощущения, конкретными фактами, но когда я проанализировал их, результат меня не порадовал

02.02.2026    8508    GarriSoft    195    

40

О жизни Россия Бесплатно (free)

Личная история смены профессии — честно и с юмором. Как решиться на первый шаг, что помогло на старте и почему даже отчёты в 1С могут приносить радость.

17.07.2025    6630    user2154904    13    

60

О жизни Бесплатно (free)

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

11.07.2025    10024    hexhoc    32    

66
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. gybson 13 26.08.26 16:19 Сейчас в теме
Надо еще вид документа создать в справочнике и не ошибиться с наименованием, а то запись то не обернута в попытку, есть риск показать себя начальнику не лучшей стороной.
2. chuevsf 445 26.08.26 16:30 Сейчас в теме
(1)
не ошибиться с наименованием

Надо не по наименованию обращаться, а через ГУИД. Тогда точно проблем не будет, если через некоторое время надумают переименовать.

И записывать результат ошибки Записать() в журнал регистрации является обязательной.)))
3. DmitryKlimushkin 26.08.26 16:47 Сейчас в теме
Какая-то городская легенда)
А мог бы просто нарисовать в интерфейсе большую красную кнопку с надписью "Исполнение всех желаний" - и пусть босс жмёт её, пуская слюни!) Действие выполнять вообще необязательно, ибо как говаривал мудрый старый еврей: "Когда меня нет, можете меня даже бить!"))
4. chuevsf 445 26.08.26 16:59 Сейчас в теме
(3)
А мог бы просто нарисовать в интерфейсе большую красную кнопку с надписью "Исполнение всех желаний" - и пусть босс жмёт её, пуская слюни!)

Такое желание уже было озвучено.)))
5. slavik27 128 26.08.26 17:20 Сейчас в теме
мой первый)) прошлый босс - никогда не обходил владения, просто бухал в кабинете, а потом путал как меня зовут
6. chuevsf 445 26.08.26 17:37 Сейчас в теме
(5) Так поди ничего и не вкладывал в предприятие. Наверное только бабки снимал.)))
7. slavik27 128 26.08.26 18:11 Сейчас в теме
(6) так как было отношение типа ты ж программист, пришлось идти как-то просить деньги на новый принтер
захожу в этот кабинет - так и так мол .. сломался принтер... нужны деньги на покупку нового
тот разворачивается - от меня в сторону сейфа, достает кучу бабла
начинает при мне пересчитывать ..... считает считает ... часть остается на столе.. часть обратно в сейф

нет слав денег нет - (имя не перепутал в этот момент был трезв)
10. SirAlex 26.08.26 19:57 Сейчас в теме
(7) Принтер сломался? Почини! Тыжпрограммист! :))
8. SergeyTerentyev 26.08.26 19:45 Сейчас в теме
Какое счастье, что я с такими мудаками не работал.

Но верю.
9. SirAlex 26.08.26 19:56 Сейчас в теме
Где же завершающая фраза "Хорошего всем настроения!"? :)
Для отправки сообщения требуется регистрация/авторизация