bdd2

Повышение удобства разработки в среде 1С:Предприятие 8

Опубликовал Артур Аюханов (artbear) в раздел Программирование - Практика программирования

Статьи, публикации, блоги, обсуждения, линки, которые помогают в разработке для 1С 8

Разработка в среде 1С:Предприятие 8 состоит из нескольких частей (весьма упрощенная градация):

1. Разработка архитектуры решения в режиме Конфигуратор - метаданные, связи и т.п.

2. Непосредственное кодирование в режиме Конфигуратор или Предприятие

3. Внесение исправлений в данные в режиме Предприятие

4. Тестирование и проверка

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

 


1. Разработка архитектуры решения в режиме Конфигуратор - метаданные, связи и т.п. 

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

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

Часть этих методик я описал в части 2, см.чуть ниже.

Вопрос минимизации трудоемкости обновлений очень хорошо проанализирован в разработке Использование свойств объектов при доработке типовых конфигураций автор poppy
я также использую подобную методику.

 


2. Непосредственное кодирование в режиме Конфигуратор или Предприятие

 

  1. Главный и мощнейшний помощник для работы в Конфигураторе - Снегопат
    Много писать о нем не буду. Это проект от автора проектов OpenConf + Telepat Александра Орефкова (orefkov).
    Фактически Снегопат также очень сильно "модернизирует" Конфигуратор, добавляя объектную модель и давая возможность добавлять сторонние скрипты для расширения возможностей Конфигуратора.
    Рекомендую начать знакомство с ним со страницы Возможности, где отлично описаны некоторые возможности Снегопата. На странице есть даже несколько простых видео-примеров, которые помогут лучше понять работу в Конфигураторе.

    Есть маленькое НО - проект стал платным (в районе 4 тыс.руб), но я считаю, что он полностью оправдывает свою цену. 
    Но у Снегопата есть вполне рабочая Демо-версия для бесплатного ознакомления - ее ограничения: иногда недоступны подсказки + поддерживаются только 3 релиза (правда, ИМХО самые основные и более стабильные!)

    Все остальные примочки все-таки не так  полезны и расширяемы, как Снегопат!
  2. Маленькая хитрость при кодировании поможет частично решить проблемы с контекстной подсказкой, той самой, что идет после нажатия точки.
    .
  3. Шаблоны для Конфигуратора от ndm или от GROOVY также очень хорошо помогают в разработке, т.к. упрощают ввод многих конструкций, как простых типа Если/Тогда/КонецЕсли, так и намного более сложных алгоритмов и целых блоков кода.
    .
  4. Отличный проект v8.1 + autohotkey = mini OpenConf также помогает в навигации по коду.Рекомендую скрипт "Вызов списка процедур с фильтрацией наименований методов при наборе текста", мы его развиваем еще со времен 77. ИМХО Все, кто юзал Телепат и Svcsvc, без этого фильтра уже не могут обойтись. Также удобны переходы в стиле Опенконф - переход в процедуру (ctrl+enter), возврат на предыдущую позицию (как в OpenConf? - alt+{left})
    Внедрение проекта весьма несложно.
    .
  5. Довольно часто приходится создавать печатные формы к различным объектам конфигураций. Для этого очень удобно использовать специальную технику создания внешних печатных форм в типовых конфигурациях.
    Очень удобное описание данной методики есть у автора poppy в целом цикле статей
    Внешние печатные формы в восьмерке
    Внешние печатные формы в восьмерке II
    и готовая обработка для тестирования собственных печатных форм без постоянного добавления обработки в справочник "Внешних отчетов/обработок"
    Обработка для тестирования внешних печатных форм в восьмерке

    Также довольно интересную методику с минимальной переделкой типового кода для небольшого исправления типовых печатных форм выложил yku.
    А alexk-is на базе этой обработки и типовых печатных форм сделал свои шаблоны для создания внешних печатных форм.
    .
  6. Также в своих типовых конфах 1С сделала довольно удобную работу с табличными частями объектов, использую внешние обработки заполнения табличных частей.
    У того же автора poppy существует еще статья 
    Заполнение табличных частей документов в восьмерке (внешние обработки)
    и готовая обработка Обработка для тестирования внешних обработок изменения табличных частей
    .
  7. Очень часто при написании кода, еще со времен 77, лично я использую так называемые TODO-списки.
    В более удобных средах разработки давным-давно есть TODO-списки, формируемые этой средой автоматически, что позволяет легко ими управлять, искать и т.д.
    Суть TODO - в комментарий добавляется ключевое слово TODO, после чего следует сам комментарий. В подобный комментарий можно писать пометки для себя или других специалистов - например, о каких требованиях, ограничениях, не до конца сделанной работе или отложенной на какое-то время проблеме.
    В нужных случаях можно просто выполнить глобальный поиск по сочетанию "TODO" и легко найти необходимые комментарии.
    Очень часто я использую следущие варианты дополнительно к простому TODO : 
    TODO_МЕТАДАННОЕ - в комменте описываю изменения, который я вносил в метаданные типовой конфы, например, движения по доп.регистрам 
    TODO_ФОРМА 
    TODO_ИНТЕРФЕЙС 
    TODO_ПРАВА 
    и т.д. 
    это очень удобно при анализе изменений в типовых конфах.
    Или //TODO_УДАЛИТЬ код после разработки 
    .
  8. Удобный конструктор внешних отчетов для СКД очень сильно помогает в быстром создании собственных отчетов на базе настройки СКД.
    Сначала в режиме 1С с помощью Универсальной консоли создается нужная настройка СКД, а далее можно сгенерить уникальный (это важно для настроек) отчет на базе своей настройки и выбранного шаблона для СКД (можно юзать любой шаблон, их сделано уже немало).
    .
    продолжение следует...

3. Внесение исправлений непосредственно в данные в режиме Предприятие

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

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

  1.  Подсистема "Инструменты разработчика" v1.93

Автор tormozit

Это подсистема, которую нужно объединять со своей конфигурацией. Подключение к своей конфигурации очень просто.

Возможностей подсистемы очень много - 3 мощнейших консоли (запросов, построителей, системы компоновки данных, удобная работа с подзапросами и временными таблицами), произвольные алгоримы, универсальные обработки (поиск и замена, универсальный подбор и обработка, поиск ссылок и т.д.), универсальный редактор, универсальный список и т.д. и т.п.

2. Универсальная консоль отчетов

Автор Evg-Lylyk

Это внешняя универсальная обработка со своими дополнительными модулями в виде внешних обработок, можно использовать без изменения своей конфигурации, т.е. буквально сразу же.

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

В разработке данной обработки я участвую :) - так что старался, чтобы было удобно.

Универсальная консоль отчетов и Подсистема "ИР" могут решать задачи по внесению изменений в данные как на базе данных запросов, так и в произвольной форме

Также можно использовать различные консоли кода

продолжение следует...


4. Тестирование и исправление 

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

ИМХО наиболее удобно все-таки автоматическое тестирование.

Очень часто при разработке я применяю юнит-тестирование и функциональное тестирование.
В качестве среды для создания тестов я использую собственную систему тестирования функциональных тестов Functest.v8 - например, с ее помощью удобно отлаживать код создания печатных форм, движений документов, запросов, правильность и неизменность данных (бухгалтерских через простые отчеты типа ОСВ, пользовательских через спец.запросы и т.п.)

Для юнит-тестирования я, в основном, применяю общий модуль утверждений типа ( артТесты.ПроверитьРавенство(ЗначениеИзКода, НужноеТестовоеЗначение, СообщениеОбОшибкеДляУдобстваИзученияОшибки =- "")  ) и т.п.

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


Хотелось бы обсудить, какие еще средства улучшения разработки я упустил, их плюсы/минусы, возможное сопоставление

См. также

Добавить вознаграждение
Комментарии
1. Ярослав Радкевич (WKBAPKA) 199 10.02.10 15:14 Сейчас в теме
надо сказать, что №1 на серверном варианте 1С периодически вешает сервер 1С, причем так жестко, что его можно только отключить... шо там такое инициализируется и конфликтует - Х.Е.З
2. Артур Аюханов (artbear) 840 10.02.10 17:02 Сейчас в теме
(1) Откуда подобная инфа, что виноват именно №1 ?
у меня сервер падает, конечно, иногда, но совсем не уверен, что виноват №1.
Дашь более подробную инфу?
3. ndm (NDM) 10.02.10 17:54 Сейчас в теме
(1) использую ИР на клиент-серверной архитектуре, проблем с зависанием сервера нет.
4. ndm (NDM) 10.02.10 17:56 Сейчас в теме
в пункт 2 думаю можно добавить шаблоны для конфигуратора Шаблоны для конфигуратора 8.1
5. Артур Аюханов (artbear) 840 10.02.10 18:52 Сейчас в теме
(4) Да, обязательно.
Добавил еще пару линков по кодированию, чьи работы использую.
6. Артур Аюханов (artbear) 840 10.02.10 18:53 Сейчас в теме
(1) Напиши, плиз, в авторской ветке об этом, обсудим.
Очень интересная инфа.
7. Артур Аюханов (artbear) 840 10.02.10 19:09 Сейчас в теме
Для всех открыл форум и блог, независимо от участия в группе пользователей публикации.
Так что можно постить ветки по теме прямо в форуме и блоге
8. larissa builova (larisab) 157 10.02.10 19:35 Сейчас в теме
Замечательная затея, подписалась.
9. dushelov (Душелов) 10.02.10 20:09 Сейчас в теме
Я, кстати, хотел с выкладыванием очередной универсальной обработки для 8.2 собрать аналогичные для этой платформы в той же публикации.
10. larissa builova (larisab) 157 10.02.10 20:27 Сейчас в теме
(9) Да, желательно 8.1 и 8.2 сделать в разных "корзинах" - в 8.2 чисто под управляемые формы.
11. Артур Аюханов (artbear) 840 11.02.10 08:09 Сейчас в теме
(10) Пока я не разделяю работы по 8.1 и 8.2 - система разработки не так сильно меняется
12. Александр Рытов (Арчибальд) 2652 11.02.10 08:29 Сейчас в теме
Очень нужно и полезно! 8-)
Но как же геморно... ;)
13. Ярослав Радкевич (WKBAPKA) 199 11.02.10 10:14 Сейчас в теме
2(2): ну когда прикрутил к конфигурации заказчика, падать сервер стал регулярно при инициализации обработки
Обработки.ирПлатформа.Создать()

я ее закоментировал в модуле приложения, инициализацию "повесил" на кнопку, и достаточно часто после ее инициализации подвисает 1С даже в файловом варианте...
14. Ярослав Радкевич (WKBAPKA) 199 11.02.10 10:16 Сейчас в теме
из за чего, х.е.з. в основном работаю с консолями... есть подозрения на политики безопасности у клиента, но чего у меня дома вешается иногда, не знаю, будет время в отладчике поколупаюсь, попробую найти участок кода, что вешает систему...
15. Сергей Старых (tormozit) 4053 11.02.10 19:50 Сейчас в теме
(13) Думаю, виновато антивирусное ПО. Попробуйте его отключить или сменить. И такие вопросы всем полезнее обсуждать в соответствующем форуме.
16. Артур Аюханов (artbear) 840 12.02.10 11:17 Сейчас в теме
(13) нет, подобных проблем не было никогда, работает на разных машинах, в разных сетях/доменах.
17. Ярослав Радкевич (WKBAPKA) 199 12.02.10 11:59 Сейчас в теме
ну я написал, с чем столкнулся...
вот у одних клиентов установлен мой программный продукт, так вот, на открытии одного вида документа программа сваливается... у меня работает нормально... грешил на SQL, потратил несколько часов, смотрел в отладчике, в итоге, все до чего докопался, так это то, что сваливается при открытии формы... изменил, на открыть модально, открывается... больше не у кого с таким не сталкивался...
18. desty (lustin) 12.02.10 12:00 Сейчас в теме
(13) я тут некоторые свои наблюдения написал в http://infostart.ru/public/15126/
чтобы здесь не обсуждать ;)
19. desty (lustin) 12.02.10 12:22 Сейчас в теме
Артур, кстати вопрос, если можно
а проект miniOpenConf http://www.1cpp.ru/forum/YaBB.pl?num=1227553473/120 ты не хочешь добавить в инструменты непосредственного кодирования - или оно не надо?

20. Артур Аюханов (artbear) 840 12.02.10 13:34 Сейчас в теме
(19) Хороший вопрос, я про этот проект и забыл :)
Как раз сижу, думаю, что еще нужно включить из инструментов, к которым уже настолько привык, что не замечаешь и не помнишь про них.
21. Артур Аюханов (artbear) 840 12.02.10 15:07 Сейчас в теме
Обновил разработку, подробности в новостях (блог)
22. desty (lustin) 12.02.10 15:30 Сейчас в теме
тоже покопался в своих инструментах

Enterprise Integrator
http://code.google.com/p/enterprise-integrator/

использую активно :D

P.S. Это уже дайджест получается...
23. Артур Аюханов (artbear) 840 12.02.10 15:45 Сейчас в теме
(22) Да, я и планирую стиль публикации в виде некоего дайджеста.
У меня с ЕИ как-то не очень заладилось - трассировка что-то так и не получилась :)
Использую намного реже, чем первые две разработки из 3 раздела.
Хотя также планировал добавить его в 3-й раздел.

Еще что есть? :)
24. desty (lustin) 12.02.10 16:42 Сейчас в теме
(23) остальное все либо мелкое, либо является частью уже озвученных инструментов, либо в виде идей (а идей много у всех)

так что из серьезных инструментов вроде все уже здесь описано...

кроме ;) Yoksel - Uzhast продолжает свою деятельность.

ЗЫ Я Yoksel использую и как быстрый "просмотрщик" mxl-лей так и как dll
ЗЫЫ Больше вроде ничего нету (не считая проектов в работе).
25. Артур Аюханов (artbear) 840 13.02.10 22:34 Сейчас в теме
Тестирование выделил в отдельный/большой раздел №4
26. Дмитрий К (ll13) 700 15.02.10 11:57 Сейчас в теме
Рекомендую так же обратить внимание на специальную раскладку клавиатуры для программистов 1С от Павла Чистова (GROOVY) http://chistov.spb.ru/publ/2-1-0-12
fzt; Totoro; artbear; +3 Ответить 2
27. Сергей Старых (tormozit) 4053 15.02.10 12:21 Сейчас в теме
(26) Да, раскладка очень удобна.
28. Артур Аюханов (artbear) 840 15.02.10 13:08 Сейчас в теме
(26) Да, когда-то давно юзал, а потом со сменой компа потерял :)
Добавлю, спасибо!
29. Александр Орефков (orefkov) 1423 09.03.11 12:47 Сейчас в теме
2artbear
Может ссылку на альфу снегопата добавить уже в статью?
artbear; kote; +2 Ответить 1
31. Артур Аюханов (artbear) 840 09.12.11 09:24 Сейчас в теме
(29) Наконец-то я добавил маленькое описание Снегопата :)
Всем рекомендую.
Сам пользуюсь постоянно еще со времен 77.
32. Александр Орефков (orefkov) 1423 09.12.11 10:44 Сейчас в теме
(31)
Хотелось бы только добавить, что у Снегопата есть и Демо-версия для бесплатного ознакомления.
33. Модератор раздела Артур Аюханов (artbear) 09.12.11 10:56 Сейчас в теме
orefkov пишет: Демо

Сейчас поправлю
34. Константин Бессмертный (byte.mdfab) 21.12.11 11:20 Сейчас в теме
А с контролем версий все так же грустно, или это я просто не нашел пока ничего интересного? Хранилище по многим причинам не устраивает, и самая первая - это скорость работы.
35. Евгений Сосна (pumbaE) 510 31.01.12 11:54 Сейчас в теме
(34) byte.mdfab, смотря что вы хотите от контроля версий:
1. Дерево конфигурации в файловой системе и рядышком лежит cf или epf и нормальный diff (можно сделать)
2. Дерево конфигурации в читаемом формате + полноценный merge + после merge собираем обратно cf или epf.

Первый вариант можно автоматизировать, второй насколько понимаю пока нет.