Эпизод I. Скрытая угроза
Давным-давно, в далекой-далекой галактике одна молодая, но быстрорастущая, фирма решила автоматизировать учет договоров. Фирма занималась производством и продажей пластиковых окон через сеть из дюжины офисов, находящихся в разных городах. Менеджеры в офисах заключали договоры с клиентами, принимали оплату, в том числе и по рассрочкам, и присылали отчеты о приходах и расходах. Решение об автоматизации пришло не просто так: у директора возникло вполне естественное желание оперативно узнавать, сколько денег приходит и уходит, откуда и куда. Также, хотелось узнать, кто сколько тырит контролировать работу менеджеров в удаленных офисах. Конечно, учет в великом и могучем экселе худо-бедно велся, однако, его возможностей явно не хватало. Стало проблемой быстро получить какой-нибудь сводный отчет. Решение об автоматизации учета договоров было принято.
Фирма начала искать варианты и в конце концов, через знакомых, нашла меня. На тот момент в моем послужном списке был один год работы в семерке и полгода в восьмерке, после универа. С опытом, проще говоря, было туговато, зато энтузиазма хоть отбавляй. Хотелось заниматься чем-то более интересным, чем поддержка БП и ЗУП. Обсудив с заказчиком условия задачи и поняв, я понял, что реализация мне по плечу. В фирме уже была приобретена БП 1.6, поэтому площадкой для разработки была выбрана платформа 1С: Предприятие 8.1.
Изначально требовалось разработать следующий функционал:
- справочник "Договоры";
- документ, позволяющий проводить оплаты по договорам;
- документ для отражения расходов офисов;
- несколько отчетов (собственно, ради них все и затевалось), позволяющих увидеть список заключенных договоров и оплат по ним, остатки наличности в офисах.
Работу я начал в новогодние каникулы 2009 года и первую версию закончил через 2 недели. Уважаемый %username% может заметить, что разработать такую плюшевую конфигурацию, с учетом всех нюансов, можно за пару дней, и будет прав, отчасти. Но нужно учитывать, что я был начинающим разработчиком и опыта в создании конфигураций с нуля у меня было немного. Обучение программированию в среде 1С:Предприятие 8.1 шло на ходу. Мягко говоря, с технической точки зрения конфигурация представляла собой пособие "Как не надо программировать в 1С 8". Первая глупость, которая приходит на ум: были заведены 3 справочника "Ответственные лица", "Города", "Офисы", хотя нужно было всего лишь создать иерархический справочник и растолкать офисы по нужным папкам. Все отчеты были "стилизованы" под 7.7, потому что я еще не умел пользоваться такими замечательными и полезными вещами как консоль запросов, конструктор выходной формы и СКД. С языком запросов тоже были проблемы. Сейчас страшно смотреть на такой тихий уж0с как запрос в цикле! >_<
Тем не менее, несмотря на серьезные недостатки, программа работала правильно и позволила выполнить поставленные задачи. В начале нового года девушка-менеджер приступила к вводу данных. Через пару месяцев после запуска появились первые результаты: после сверки в некоторых офисах были выявлены крупные недосдачи. После этого последовала кадровая чистка, фирма выпилила ситхов избавилась от недобросовестных менеджеров. Директор и сейчас говорит, что кадры - очень большая проблема. Кроме того, обнаружились договоры-потеряшки с просроченными оплатами. Клиенты надеялись, что про них просто забыли. В общем, результат налицо и заказчик доволен.
Эпизод III. Эволюция
Экономическая выгода проведенной автоматизации стала очевидной. У руководства фирмы возникло здоровое желание автоматизировать что-нибудь еще и конфигурация начала разрастаться. Постепенно были сделаны следующие доработки:
- реализован расчет сдельной оплаты менеджерам и монтажникам окон;
- добавлены разнообразные отчеты;
- добавлен партионный складской учет и расчет производства жалюзи. Уже успел забыть, что разрабатывал этот модуль. А ведь расчетные формулы производства очень сложные и на реализацию было убито много времени;
- обмен данными с офисами.
и последней версии:
Эпизод IV. Атака клонов
Время шло, количество офисов в фирме увеличивалось. Возник такой вопрос: почему бы не добавить оперативности в получении данных за счет установки программы в офисах и настройки обмена данныx? Менеджеры в офисах все так же вели учет в экселе и использование базы данных позволило бы им быстрее находить информацию по заключенным договорам и проведенным оплатам. Мне идея понравилась, задача обещала быть интересной.
Первым делом был оценен парк компьютеров и оказалось, что в некоторых офисах установлены древние динозавры, на которых восьмерка будет тормозить. Поэтому, я решил написать аналогичную конфигурацию, но с более простым функционалом, на платформе 1С 7.7. Вот такой получился клон:
Самым сложным моментом стала, конечно же, реализация обмена данныx. Стоит отметить, что интернет во многих офисах работал нестабильно и медленно. Поломав голову, я остановился на такой схеме: сотрудник в удаленном офисе вводит новые данные (в базу данных 7.7) и выгружает их в файл dbf. Затем этот файл прикрепляется к письму и отправляется на специально созданную электронную почту. В центральном офисе установлена программа The Bat!, подключенная к этому электронному ящику, которая автоматически сохраняет прикрепленные файлы в папку, откуда они загружаются в общую базу данных. Загрузку выполняет менеджер с помощью специальной обработки.
Внешний вид обработок для выгрузки договоров из базы данных 7.7:
Обработка, предназначенная для загрузки договоров, оплат по ним и расходов офисов в общую базу данных из файла dbf:
Данная схема обмена данными была протестирована в нескольких офисах и доказала свою работоспособность. Эти офисы работали в программе вплоть до перехода на конфигурацию, написанную на платформе 8.2. Но, к сожалению, дальше них дело не пошло, не хватило воли руководства. К тому же, я занимался этой разработкой только в свободное от основной работы время и не уделял достаточного внимания внедрению.
Эпизод V. Новая надежда
Как известно, профессия программиста - постоянная гонка за знаниями. На основной работе мне как-то не довелось познакомиться с управляемыми формами, но очень хотелось узнать что это такое. В конце 2011 года я решил изучить новые возможности платформы 1С:Предприятие 8.2, так сказать, в полевых условиях: разработать новую конфигурацию по учету договоров для все той же знакомой фирмы. Вопрос автоматизации удаленных офисов еще оставался актуальным, так что веб-интерфейс пришелся очень кстати.
Поначалу не хотелось напрягаться - планировал просто переписать конфигурацию под 8.2 с учетом всех ранее набитых шишек и синяков. Но любопытство победило лень: для разработки воспользовался библиотекой стандартных подсистем. И не пожалел - библиотека содержит множество полезных фишек. Так что, всем сомневающимся - советую, и для работы, и для общего развития. Программирование под клиент-серверную архитектуру оказалось очень интересным.
Интерфейс новой конфигурации:
С 2012 года началось внедрение. На этот раз автоматизация офисов прошла успешно, веб-клиент полностью оправдал ожидания и неплохо работает с файловой версией базы данных.
Конфигурация получилась более универсальной, в отличие от старой версии для 8.1, которая была сильно заточена под учет конкретной фирмы. Более подробно познакомиться с ней можно в публикации
Эпизод VI. Эпилог
Уважаемый %username%, теперь и ты знаешь, что существовала такая конфигурация "Учет договоров" для 1С 8.1 и три года радовала заказчика своим существованием. И даже можешь скачать ее - файлы конфигураций 8.1 и 7.7 прикреплены к статье. За все время использования в базу было забито около 15 000 договоров.
Разработку и запуск этой конфигурации я считаю своей маленькой победой. Работа над этим проектом многое дала мне как программисту 1С. Порой возникали проблемы, появлялись сомнения, не у кого было спросить совета. Трудности преодолимы, нужно верить в себя и бить в одну точку.
Напоследок хочу привести несколько мотивирующих фраз, подходящих как к программированию, так и к жизни вообще:
- Если хочешь, чтобы быстро было, медленно делай, но день каждый.
- Завтра - неудачников слово, сегодня - победителей слово.
- Сражение тот выигрывает, кто решил его выиграть твёрдо.
- Если вы хотите великое что-то в день один прекрасный сделать, помните: день один прекрасный — сегодня это.
- Дорогу идущий осилит.
- ;)
Еще несколько мотивирующих фраз, оставленных в комментах: