История одной конфигурации















История разработки конфигурации по учету договоров или как я учился программировать в 1С

Эпизод I. Скрытая угроза

Давным-давно, в далекой-далекой галактике одна молодая, но быстрорастущая, фирма решила автоматизировать учет договоров. Фирма занималась производством и продажей пластиковых окон через сеть из дюжины офисов, находящихся в разных городах. Менеджеры в офисах заключали договоры с клиентами, принимали оплату, в том числе и по рассрочкам, и присылали отчеты о приходах и расходах. Решение об автоматизации пришло не просто так: у директора возникло вполне естественное желание оперативно узнавать, сколько денег приходит и уходит, откуда и куда. Также, хотелось узнать, кто сколько тырит контролировать работу менеджеров в удаленных офисах. Конечно, учет в великом и могучем экселе худо-бедно велся, однако, его возможностей явно не хватало. Стало проблемой быстро получить какой-нибудь сводный отчет. Решение об автоматизации учета договоров было принято.

Фирма начала искать варианты и в конце концов, через знакомых, нашла меня. На тот момент в моем послужном списке был один год работы в семерке и полгода в восьмерке, после универа. С опытом, проще говоря, было туговато, зато энтузиазма хоть отбавляй. Хотелось заниматься чем-то более интересным, чем поддержка БП и ЗУП. Обсудив с заказчиком условия задачи и поняв, я понял, что реализация мне по плечу. В фирме уже была приобретена БП 1.6, поэтому площадкой для разработки была выбрана платформа 1С: Предприятие 8.1.

Изначально требовалось разработать следующий функционал:

  • справочник «Договоры»;
  • документ, позволяющий проводить оплаты по договорам;
  • документ для отражения расходов офисов;
  • несколько отчетов (собственно, ради них все и затевалось), позволяющих увидеть список заключенных договоров и оплат по ним, остатки наличности в офисах.
Планировалось, что все данные будет вводить менеджер в центральном офисе.
 
Эпизод II. Месть ситхам

Работу я начал в новогодние каникулы 2009 года и первую версию закончил через 2 недели. Уважаемый %username% может заметить, что разработать такую плюшевую конфигурацию, с учетом всех нюансов, можно за пару дней, и будет прав, отчасти. Но нужно учитывать, что я был начинающим разработчиком и опыта в создании конфигураций с нуля у меня было немного. Обучение программированию в среде 1С:Предприятие 8.1 шло на ходу. Мягко говоря, с технической точки зрения конфигурация представляла собой пособие «Как не надо программировать в 1С 8». Первая глупость, которая приходит на ум: были заведены 3 справочника «Ответственные лица», «Города», «Офисы», хотя нужно было всего лишь создать иерархический справочник и растолкать офисы по нужным папкам. Все отчеты были «стилизованы» под 7.7, потому что я еще не умел пользоваться такими замечательными и полезными вещами как консоль запросов, конструктор выходной формы и СКД. С языком запросов тоже были проблемы. Сейчас страшно смотреть на такой тихий уж0с как запрос в цикле! >_<

Тем не менее, несмотря на серьезные недостатки, программа работала правильно и позволила выполнить поставленные задачи. В начале нового года девушка-менеджер приступила к вводу данных. Через пару месяцев после запуска появились первые результаты: после сверки в некоторых офисах были выявлены крупные недосдачи. После этого последовала кадровая чистка, фирма выпилила ситхов избавилась от недобросовестных менеджеров. Директор и сейчас говорит, что кадры — очень большая проблема. Кроме того, обнаружились договоры-потеряшки с просроченными оплатами. Клиенты надеялись, что про них просто забыли. В общем, результат налицо и заказчик доволен.

Эпизод III. Эволюция

Экономическая выгода проведенной автоматизации стала очевидной. У руководства фирмы возникло здоровое желание автоматизировать что-нибудь еще и конфигурация начала разрастаться. Постепенно были сделаны следующие доработки: 

  • реализован расчет сдельной оплаты менеджерам и монтажникам окон; 
  • добавлены разнообразные отчеты;
  • добавлен партионный складской учет и расчет производства жалюзи. Уже успел забыть, что разрабатывал этот модуль. А ведь расчетные формулы производства очень сложные и на реализацию было убито много времени;
  • обмен данными с офисами.
Со временем поднимался уровень моих знаний в программировании 1С и многие отчеты были переписаны. Например, очень нужный для работы «Отчет по договорам» изначально представлял из себя межгалактического монстра (без всяких зачеркиваний). После его запуска можно было смело идти пить чай. Вот так выглядел самый первый вариант отчета (привет из 7.7!):


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


Постепенно такой переработке подверглись практически все отчеты. Искушенный %username% возмущенно воскликнет: «А где же СКД?» Спокойствие, только спокойствие! Разработка отчетов с помощью конструктора выходной формы была очередным этапом в моем изучении платформы 1С 8.1. Это сейчас мне лениво писать что-то ручками и все отчеты, по возможности, стараюсь делать в СКД, а тогда все было по-другому. Забегая вперед, выкладываю скрин последней версии отчета по договорам, уже из следующей версии конфигурации (на платформе 8.2):
 

Насколько расширилась конфигурации 8.1 можно увидеть, если сравнить интерфейс из самой старой выгрузки, которую смог найти:
 

и последней версии:


Эпизод 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, которая была сильно заточена под учет конкретной фирмы. Более подробно познакомиться с ней можно в публикации

//infostart.ru/public/148455/

Эпизод VI. Эпилог

Уважаемый %username%, теперь и ты знаешь, что существовала такая конфигурация «Учет договоров» для 1С 8.1 и три года радовала заказчика своим существованием. И даже можешь скачать ее — файлы конфигураций 8.1 и 7.7 прикреплены к статье. За все время использования в базу было забито около 15 000 договоров.

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

Напоследок хочу привести несколько мотивирующих фраз, подходящих как к программированию, так и к жизни вообще:

  • Если хочешь, чтобы быстро было, медленно делай, но день каждый.
  • Завтра — неудачников слово, сегодня — победителей слово.
  • Сражение тот выигрывает, кто решил его выиграть твёрдо.
  • Если вы хотите великое что-то в день один прекрасный сделать, помните: день один прекрасный — сегодня это.
  • Дорогу идущий осилит.
  • 😉

Еще несколько мотивирующих фраз, оставленных в комментах:

  DoctorRoza: Путь в 10000 Ли начинается с малого шага (китайская пословица, оригинал).
 Дорога возникает под ногами идущего! 
 
  AnryMc:       Сегодня первый день твоей оставшейся жизни. Не теряй время даром. (В.М. Глушков – основоположник информационных технологий в СССР)

12 Comments

  1. script

    Ну что сказать — молодец.

    Теперь осталось поместить на сайт 1С, в раздел

    «Примеры усшешных внедрений»…. кто смеется ?

    Reply
  2. KonstB

    За эволюцию — ПЛЮС (но как то попахивает рекламой :))

    За это:

    Если хочешь чтобы быстро было, медленно делай, но день каждый.

    Завтра — неудачников слово, сегодня — победителей слово.

    Сражение тот выигрывает, кто решил его выиграть твёрдо.

    Если вы хотите великое что-то в день один прекрасный сделать, помните: день один прекрасный — сегодня это.

    Дорогу идущий осилит.

    😉

    РЕСПЕКТ )))

    Над обменом бы еще можно было подумать 🙂

    Reply
  3. amblik

    В погоне за похвалой лучшая приманка — скромность. (Филипп Дормер Стенхоп Честерфилд)

    Reply
  4. DoctorRoza

    Лично мне больше нравится:

    Путь в 10000 Ли начинается с малого шага (китайская пословица, оригинал) или

    Дорога возникает под ногами идущего!

    А в целом .. респект!

    Reply
  5. Арчибальд

    Как беллетристика — неплохо.

    Reply
  6. jONES1979

    С интересом прочитал, и предметная область близка, тоже вскоре предстоит подобное, так что публикация — очень кстати.

    Ещё раз спасибо!

    Reply
  7. headMade

    а что конкретно (разделы) из библиотеки подсистем пригодились?

    Reply
  8. RuslanZ

    Использованы подсистемы: Адресный классификатор, базовая функциональность, контактная информация, настройка порядка элементов, обновление версии ИБ, пользователи, физические лица. Если бы делал снова, включил бы некоторые другие.

    Reply
  9. Созинов

    Интересная статья, но не совсем согласен — что использование в филиалах 7.7 правильное решение (появление клонов), наверное лучше было заменить железо и все делать на 8-ке, хотя конечно вам виднее было, к тому же как говорите все хорошо заработало.

    Reply
  10. maxim305

    Спасибо автору! Замечательная статья, прям увидел в ней себя!

    Reply
  11. AnryMc

    Хочется добавить к мотивирующим фразам:

    Сегодня первый день твоей оставшейся жизни. Не теряй время даром.

    В.М. Глушков – основоположник информационных технологий в СССР

    Reply
  12. madonov

    Джедай верностью принципам обладать должен. И серьезным умом.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *