Правила и приемы доработки типовых конфигураций 1С для облегчения их дальнейшей поддержки и обновления

Публикация № 647048

Разработка - Инструментарий разработчика

В первую очередь, статья адресована разработчикам 1С, но надеюсь, что интересно будет не только им.

Видео:

Для тех кому лень читать всю статью, предлагаю посмотреть видео, в котором изложены все приведенные в данной статье принципы:

Ну а всем остальным, добро пожаловать под кат.

   


Правила и приемы доработки типовых конфигураций 1С для облегчения их дальнейшей поддержки и обновления

Итак, когда мы делаем некоторый проект (под словом «Мы» я понимаю всех людей, которые заняты в автоматизации бизнес-процессов), то надеемся, что потом он плавно перетечет в поддержку. Как правило, если все выполнено хорошо и заказчик доволен, так и происходит.

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

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

Приходилось ли кому-нибудь обновлять конфигурацию, переписанную без всяких опознавательных знаков? Понимаете ли вы, какая это боль – сравнивать старую конфигурацию поставщика с новой конфигурацией, вручную разобрать каждый случай «дважды измененных» при сравнении с текущей конфигурацией и т.д. Это все довольно проблематично.

   


9 простых правил оформления модификаций в типовых конфигурациях

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

   

1.     Концепция минимизации «разрушений» типовой конфигурации

Первое – это даже не правило, это некая концепция минимизации «разрушений» типовой конфигурации.

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

   

2.     Комментирование изменений кода

Второе правило заключается в том, что любое изменение кода обязательно должно быть прокомментировано.

У нас в компании мы используем следующую схему:

  • В начале изменения находится открывающий комментарий (начинается со знаков //++)
  • В конце – закрывающий комментарий (начинается со знаков //--)
  • А те изменения, который выполнил разработчик, находятся в середине.

Это – обязательное правило для любых изменений.

У открывающего и закрывающего комментария указывается метка изменения. Она содержит в себе следующие составляющие:

  • Префикс проекта – по умолчанию мы используем ФТО
  • Доменное имя разработчика. Оно формируется очень удобно: компания большая, распределенная, и если ты разработчика не знаешь, но его надо о нем что-то спросить, можно взять его ник из этой метки, поставить справа @fto.com.ru и отправить ему письмо, чтобы таким образом с ним связаться.
  • Дальше идет дата изменений. Когда изменения идут в рамках нескольких задач, эти связки комментариев могут быть вложенными одна в другую, и не всегда понятно, к какому открывающему блоку относится этот закрывающий комментарий, поэтому мы ориентируемся на дату. Кроме этого, по дате сразу видно, когда была сделана модификация: три года назад, полгода назад или вчера.
  • Затем идет номер задачи, который ставится только в открывающем комментарии. Почему только там? Чтобы при глобальном поиске по номеру задачи в выборку попадало только начало изменений кода, от которого дальше уже можно вниз смотреть, иначе будет двоиться. Например, при передаче задачи на code-review очень удобно искать именно по метке.

Примеры

Вот так выглядит вставка кода:

Вот так выглядит удаление кода – мы не удаляем код полностью, мы комментируем код. За счет этого всегда видно, что было закомментировано, и в случае чего можно быстро вернуться назад.

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

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

Здесь на картинке видно, что используя «попроцедурное сравнение» можно просто выделить эту процедуру при объединении, и она вся полностью (вместе с метками) перенесется. Или наоборот, можно снять напротив нее галочку, чтобы не переносить.

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

   

3.     Добавление объектов верхнего уровня

Следующее правило – это добавление в конфигурацию объектов верхнего уровня (справочников, документов, регистров и т.д.).

Это правило заключается в том, что имена объектов обязательно должны начинаться с префикса. Для чего?

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

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

Конечно же, это очень спорное правило, и его применение нужно согласовывать с заказчиком. Наших клиентов такая схема устроила, поэтому она у нас прижилась и попала в правила. Но тут решать только вам и клиенту – надо так делать или не надо.

Ну и последнее правило: комментарии ко всем добавленным объектам должны содержать специальную метку с именем разработчика и номером задачи. Эта метка аналогична открывающему комментарию из модуля, только без специальных символов – с ее помощью я всегда могу понять, кто, когда и по какой задаче добавил этот объект.

Итак, подытожим:

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

   

4.     Добавление подчиненных объектов

Под добавлением подчиненных объектов я подразумеваю добавление реквизитов, макетов, форм и т.д. в объекты конфигурации.

Здесь нужно сразу выделить две ситуации, куда мы добавляем подчиненный объект:

  • В типовой объект конфигурации
  • Или в какой-то объект, который был добавлен ранее в рамках проекта.

Рассмотрим каждую из этих ситуаций отдельно.

Для добавления подчиненных объектов в типовые объекты конфигурации действуют следующие правила.

  • Имена должны начинаться точно так же с префикса. За счет этого мы добиваемся уникальности имени и визуально тоже всегда понятно, что это – наш объект.

  • Синоним заполняется без префикса, потому что здесь уже нет необходимости выделять наши объекты, наши реквизиты.

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

Итак, давайте подытожим, как происходит добавление подчиненных объектов в типовые объекты конфигурации:

  • Имена задаются с префиксом,
  • Синонимы по общим правилам
  • И комментарии содержат специальную метку.

А если мы добавляем подчиненные объекты в те объекты, которые были ранее добавлены в рамках проекта и уже содержат в своем имени префикс, то:

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

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

  • А комментарий содержит специальную метку только в том случае, когда этот подчиненный объект добавлен в рамках другой задачи. Потому что если у меня в задаче написано, что нужно добавить документ, у которого есть такие-то реквизиты, мне для каждого реквизита ставить такую метку не надо. Но если задача совсем другая – я обязательно ставлю метку, чтобы было понятно, зачем я это сделал.

А теперь подытожим, как добавляются подчиненные объекты в объекты, добавленные в рамках проекта:

  • Имена без префикса.
  • Синонимы без префикса.
  • И комментарии должны содержать специальную метку только тогда, когда они добавлены в рамках другой задачи.

Если это правило объединить для обоих случаев и «разложить по полочкам», то получится следующая табличка:

  • Новые объекты:
    • Имя начинается с префикса.
    • Синонимы – с префиксом в круглых скобках.
    • Комментарий содержит метку.
  • Подчиненные объекты, которые мы добавляем в типовые объекты:
    • Имена начинаются с префикса,
    • Синоним по общим правилам
    • В комментарий ставим метку.
  • А если мы добавляем подчиненные объекты в объекты, добавленные в рамках проекта, то
    • Для них никаких специальных правил не действует,
    • Но если задача другая, то в комментарий точно так же ставим метку.

   

5.     Добавление предопределенных элементов

Следующее правило – добавление предопределенных элементов.

Здесь точно так же можно выделить две ситуации:

  • Когда мы добавляем предопределенный элемент в типовой объект конфигурации (в справочник, в план видов характеристик)
  • И когда мы добавляем предопределенный элемент в объект, добавленный в рамках проекта.

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

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

А если мы добавляем предопределенные элементы в объекты, добавленные в рамках проекта, то

  • Его имя не будет содержать префикса, так как нет необходимости его как-то выделять.

Итак, если провести аналогию с предыдущей таблицей, то:

  • Предопределенные элементы для типовых объектов добавляются с префиксом,
  • А все остальные – по общим правилам, никаких специальных добавлять префиксов не надо.

   

6.     Использование общих модулей и их строгая структура

Следующее правило касается использования общих модулей и организации для них строгой структуры.

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

Во-вторых, обратите внимание, что общие модули добавляются по правилам добавления объектов верхнего уровня (имя и синоним с префиксом, метка в комментарии и т.д.)

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

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

  • ФТО_ОбщегоНазначенияКлиент,
  • ФТО_ОбщегоНазначенияСервер,
  • ФТО_ОбщегоНазначениеГлобальный,
  • ФТО_РегламентныеЗаданияСервер
  • И т.д.

А какие-то большие отдельные задачи можно (и, наверное, нужно) выносить в отдельные общие модули.

   

7.     Использование подписок и их строгая структура

Следующее правило – это использование подписок и их строгая структура. В чем его суть?

Подписки следует использовать для обработки различных событий, связанных с типовыми объектами, таких как:

  • Перед записью
  • При записи
  • И т.д.

  • Можно конечно взять и отредактировать модуль типового объекта, вставив свой код в соответствующую процедуру. Но это – плохой способ.
  • Лучше вместо этого добавить подписку на обработку этого события.

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

  1. Для всех однотипных событий в системе добавляется только одна подписка. Например, если мне нужно для различных справочников в событии «Перед записью справочника» задействовать свой алгоритм, то для всех этих справочников я использую только одну добавленную подписку «Перед записью справочника».
  2. В источнике выделяются все объекты в рамках этого класса (например, все справочники)
  3. Для добавленной подписки создается отдельный модуль, который называется точно так же (просто для удобства).
  4. В основном обработчике события определяется условие, анализирующее вид объекта (вид справочника).
  5. И уже в зависимости от вида объекта выполняются те или иные действия.

Могу показать на примере. Предположим, есть такая задача: при проведении документа «Авансовый отчет» делать записи в добавленный ранее регистр накопления.

Сначала мы добавляем общий модуль ФТО_ДокументыОбработкаПроведения по всем правилам.

Далее мы добавляем подписку, в которой:

  • В качестве источника указываем ДокументОбъект ( все документы);
  • В качестве обработчика – наш добавленный выше модуль.

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

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

В результате, порядок действий для создания подписки такой:

  • Одна подписка,
  • Один общий модуль
  • И ничего другого уже не надо: модуль документа остается неизменным – в «дважды измененных» он уже не покажется.

   

8.     Редактирование форм

Следующее правило – редактирование форм.

Здесь точно так же выделим два момента, две ситуации:

  • Когда мы редактируем типовые формы;
  • И когда мы редактируем формы, добавленные в рамках проекта.

Первая ситуация – это редактирование типовых форм, форм типовых объектов. Это самый спорный пункт правил. В свое время, еще во времена обычных форм, когда проекты в основном делались на УПП, у нас было много дискуссий по поводу того, что делать с формами. Какие были варианты?

  • Прямое редактирование обычных форм заключается в том, что я просто меняю форму вручную. При этом варианте каждый раз, когда поставщик вносит в эту форму свои изменения, мне необходимо все свои правки переносить заново. Плохой способ.
  • Другой способ – это создание копии формы. Это когда я делаю с типовой формы копию, назначаю ее основной и вношу в нее свои изменения. Но опять же, если эту форму меняет поставщик, мне нужно перенести его изменения в свой вариант вручную. Не самый лучший способ.
  • Еще один вариант – это создание отдельной вкладки. Создаем на форме отдельную вкладку и на ней размещаем свои элементы. Понятно, что этот способ не гибкий, потому что иногда свой элемент нужно вставить куда-то именно в определенное место формы. Или нужно изменить свойства типовых элементов, обработчик им новый назначить и т.д. Поэтому это не гибкий способ – он тоже не очень хорошо работает.
  • В результате мы выбрали способ полностью программного редактирования форм. Новым разработчикам, которые не сталкивались с этим способом, поначалу кажется, что программно редактировать форму очень сложно. Но на самом деле – нет. Из своей практики скажу, что надо просто набить руку. Кроме того, у нас давно написаны модули с экспортными процедурами по программному изменению форм, и все это делается довольно легко. Когда появились управляемые формы, мы эту практику программного изменения форм также полностью перенесли и на управляемые формы. Тем более, что редактировать управляемую форму программно стало вообще легко – с обычными формами не сравнить.

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

В конфигурациях на базе БСП 2 (таких, как ERP, Бухгалтерия и т.д.) добавился обработчик СобытияФорм.ПриСозданииНаСервере(), который среди прочего, заходит еще и в переопределяемый модуль.

И вот в переопределяемом модуле можно добавить свой код – например, в процедуру ПриСозданииНаСервере(). Здесь я определяю имя формы, и в зависимости от него вызываю ту или иную процедуру, где добавляю элементы программно.

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

Кроме того, в конфигурациях на базе БСП 2 переопределены еще и другие обработчики форм – такие как ПриЧтенииНаСервере(), ПередЗаписьюНаСервере() и т.д. И в этих обработчиках также можно активно использовать переопределение вызываемых процедур. Тем более что поставщиком переопределяемый модуль теоретически не меняется, и там можно без боязни конфликтов писать свой код.

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

   

9.     Принципы работы с ролями

И последнее правило – это принципы работы с ролями.

Принципы работы с ролями заключаются в следующем:

  1. Если возможно, то типовые роли следует всегда оставлять неименными. Нужно хорошо подумать, действительно ли необходимо изменить именно типовую роль или можно поступить как-то по-другому.
  2. Права на добавленные объекты конфигурации мы назначаем в новых, специально созданных ролях. Поэтому когда я добавляю в конфигурацию отчет, и для него нет подходящей заранее добавленной нами роли, я создаю отдельную роль. И потом уже эта роль добавляется в нужные профили. А типовые роли не меняются.
  3. И если есть изменения в RLS, то они оформляются по правилам редактирования модулей.

Например, если мне нужно поменять RLS, то я ставлю открывающий комментарий, комментирую старый код, потом дописываю свой и ставлю закрывающий комментарий. Всегда понятно: кто, зачем (в рамках какой задачи) и когда я менял.

Итак, я перечислил все девять простых правил оформления модификаций.

   


Дополнительные объекты и приемы, облегчающие жизнь

В заключение я расскажу о некоторых объектах и приемах, которые могут облегчить жизнь разработчику.

   

1.     Самоидентификация тестовых баз

Первый прием – это самоидентификация тестовых баз.

Суть в том, что:

  • есть некоторая константа, в которой хранится адрес рабочей продуктивной базы.
  • При старте системы происходит проверка этого адреса: соответствует он адресу рабочей базы или не соответствует.
  • И если не соответствует (база не рабочая), то происходит замена заголовка системы.

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

Таким образом, мы делаем изменение данных в информационных базах более безопасным.

Кроме того, проверку значения этой константы полезно также применять при выполнении некоторых регламентных заданий. А именно:

  • обмены данными,
  • уведомления пользователей,
  • какие-то рассылки,
  • тяжелые регламентные задания.
  • И т.д.

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

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

   

2.     Обработка инициализации

Следующий прием – обработка инициализации.

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

Зачем это нужно? Часто при добавлении в конфигурацию новой функциональности необходимо произвести какие-то действия в самой базе данных: например, добавили предопределенный элемент справочника, и теперь нужно заполнить его реквизиты. Баз на проекте может быть очень много и заполнять эти данные вручную – это конечно, плохо. Правильнее:

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

На схеме этот порядок работы показан так:

  • Старт системы
  • Сравнение версии константы с версией обработки.
  • Если не совпадает, выполняются последовательно все необходимые обработчики,
  • Устанавливается новое значение константы.

В результате везде, во всех базах данные обновлены.

   

3.     Справочник предопределенных значений

Следующий прием – это справочник предопределенных значений.

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

Какие тут есть варианты реализации?

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

Этот справочник содержит в себе только один реквизит с типом СправочникСсылка (ссылка на все справочники).

Если мне в рамках задачи нужно обратиться к какому-то элементу, я в этот справочник добавляю предопределенный элемент (например, Контрагент_Агроимпульс)

И потом уже в коде обработки инициализации либо руками я заполняю значение этого справочника нужным мне контрагентом.

Соответственно, после этого я смогу обратиться к этому контрагенту через справочник предопределенных значений. За счет этого достигается то, что:

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

   

4.     Просмотр временных таблиц в отладчике

Ну и последний прием – это просмотр временных таблиц в отладчике.

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

  • И назвать как-нибудь коротко, например ВТ()

В этом случае:

  • Я ставлю точку останова в месте, где у меня есть запрос.
  • В окне «Вычислить выражение» пишу ВТ(Запрос);
  • Нажимаю «Рассчитать» и получаю структуру временных таблиц запроса, чтобы просмотреть, что там за данные.

Это очень удобная функция, мы ее постоянно используем. Особенно при расчете себестоимости, или в таких конфигурациях, как ЗУП. Я если честно, не понимаю, как другие без нее живут.

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

   


Заключение

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

Мне эта тема интересна, я готов по ней общаться. Мне правда важно, чтобы у вас тоже все получилось.

Ссылки:

   


***************

Данная статья написана по итогам доклада, прочитанного на конференции INFOSTART EVENT 2016 DEVELOPER. Больше статей можно прочитать здесь.

В 2020 году приглашаем всех принять участие в 7 региональных митапах, а также юбилейной INFOSTART EVENT 2020 в Москве.

Выбрать мероприятие.

Скачать файлы

Наименование Файл Версия Размер
Правила и приемы доработки типовых конфигураций 1С для облегчения их дальнейшей поддержки и обновления

.docx 7,13Mb
10.07.17
791
.docx 7,13Mb 791 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Stepa86 1383 18.07.17 21:40 Сейчас в теме
Немного покритикую

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

2) Если использовать сторонние программы для сравнения (я использую P4, он вроде как бесплатен для небольших команд) то быстро понимаешь, что зря не пользовался ими раньше при обновлении. Обновление модулей становится проще в 10 раз. И тут всплывает ньюанс. Такие программы сравнивают построчно, а не попроцедурно, и если что то было закомментировано, а в поставке добавили пробел - получили двойное изменение. Поэтому я предпочитаю по максимуму код от типовой не трогать, а решать только добавлением новых строчек - возврат, окружать Если Ложь Тогда итп

3) Для префиксации очень удобным оказался префикс "_" и "*" для синонимов. Они коротки и они выводят новые объекты вверх при сортировке, а обычно новые объекты нужны чаще, чем типовые. Для разработки коробочного решения такая префиксация не подходит, конечно.

4) Предопределенные элементы стоит добавлять только в те объекты, где их до этого не было, иначе если с новой типовой придет новый предопределенный объект, будет весело в любом случае. Тут ждем 8.3.11. Если все таки пришлось изменить предопределенные, то оставляю комментарий в корневом объекте, чтоб при сравнении объединении было видно и 1. что набор предопределенных изменений конфликтует 2. комментарий к объекту был изменен

5) Не понимаю этого фанатизма в использовании подписки для изменения логики в одном документе. В случае обновления если использовать п.2 проблем не возникает вообще, а вот убить кучу времени на выяснение логики работы документа при проведении, когда часть вынесена в подписки - это вообще запросто
Дмитрий74Чел; Jeka44; sashocq; Vladimir Litvinenko; Net.Bear; Krio2; quadrodecor; ShonLe; citicat; charushkin; mrXoxot; chebser; Altair777; +13 Ответить
7. Tavalik 2347 19.07.17 08:13 Сейчас в теме
(1)
Ну что ж, отвечаю:

1) Гитом не пользуемся. Наверное стоит попробовать, но пока хватает и хранилища. Если наш код становится уж совсем "зеленым", то делаем рефакторинг. В этом случае, весь старый, уже точно не имеющий смысла закомментированный код удаляем. В крайнем случае, остается история в хранилище.

2) У нас тоже есть разработчики, которые для сравнения используют сторонние программы. Но лично я пользуюсь типовым функционалом из-за попроцедурного сравнения.

3) Часто бывает, что эту же конфигурацию модифицирует еще кто-то (например сторонняя организация или же свои специалисты). Тогда префикс "_" не подойдет. А в целом, почему бы и нет.

4) Не понял, почему не надо добавлять предопределенные элементы? При сравнении проблем нет. Если приходит предопределенный элемент из новой конфигурации поставщика, то проблем тоже не вижу. Наши объекты добавлены с префиксом, совпадения имен быть не может.

5) Ну тут дело привычки. У нас все разработчики знают и используют правила, поэтому время на разбор и понимание логики не тратится. Подписка то всего одна, а уже в ней по каждому типу документа вызываются необходимые обработчики.

6) Абсолютно согласен. Типовые роли не трогаем (или только в самом крайнем случае). Это стало особенно актуально в конфигурациях на БСП 2, где на каждый объект, как правило, есть одна или две роли. В этом случае на все свои добавленные объекты также создаем отдельные роли. А дальше уже идет настройка профилей и групп пользователей.

8) Наверное вы правы, но вроде как пока хватает и просто функции ВТ().

9) Согласен. Это очень хорошая мотивация. Но вот только беда, что стажеру или молодому специалисту не очень то доверишь обновление конфигурации. Тут только строгое соблюдение правил и обязательное код-ревью.
8. Stepa86 1383 19.07.17 08:22 Сейчас в теме
(7) 1) Если у вас постоянно проходит код-ревью, то очень рекомендую поупражняться с выгрузкой в гит

2) Я тоже очень долго был консервативен, а потом попробовал и внезапно стало очень удобно, чем по типовому. Рекомендую себя пересилить и еще раз попробовать.

4) Вроде при двойном изменении можно только или все взять из поставки или оставить как есть, объединить не получается, как и с типами

8) Очень рекомендую использовать при разработке инструменты разработчика. Прям вот самое первое, что я делаю на любом проекте - подключаю ИР, вкрячивая в конфу или через внешние файлы. А теперь еще можно и как расширение подключать.
10. katenok86 244 19.07.17 09:15 Сейчас в теме
(8) В последней платформе типы объединяются. А предопределенные объединяются уже давно.
12. Stepa86 1383 19.07.17 09:19 Сейчас в теме
(10) Типы только в 8.3.11 будут объединятся же, или я что то уже пропустил? https://wonderland.v8.1c.ru/blog/obedinenie-sostava-obektov-i-tipov/
13. katenok86 244 19.07.17 09:23 Сейчас в теме
35. zqzq 21 20.07.17 08:45 Сейчас в теме
(1)
2) Если использовать сторонние программы для сравнения (я использую P4, он вроде как бесплатен для небольших команд) то быстро понимаешь, что зря не пользовался ими раньше при обновлении. Обновление модулей становится проще в 10 раз.

Поддерживаю полностью. Использую KDiff3, пробовал разные, этот самый удобный и функциональный, посимвольно сравнивает + поддержка трёхсторонего сравнения.
2. Stepa86 1383 18.07.17 22:06 Сейчас в теме
6) Типовые роли лучше вообще не трогать. Сколько раз менял, столько раз имел проблемы. Если и менять, то прям в комментарии к объекту писать что именно изменено. РЛС в типовых не менял ни разу, видимо изза того, что я так и не смог раскурить что происходит в БСП или в документообороте.

7) Обработка инициализации по правильному вроде называется миграцией данных, но это не точно.

8) Про справочник предопределенных значений хорошая идея, утащу к себе. У нас есть похожий механизм под кодовым названием "Экспериментальные функции". Если есть старый алгоритм чего то и мы разработали новый, но не очень в нем уверены, то старый не удаляем, а переключаем с помощью значения в предопределенном элементе в справочнике, типа так Если Справочники.ЭкспФункции.ИспользоватьНовыйАлгоритм.Включена Тогда НовыйАлгоритм() Иначе СтарыйАлгоритм() КонецЕсли

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

9) Чтобы научить программиста дорабатывать конфу так, чтоб легче было обновлять его следует сперва заставить выполнить обновление, чтоб он на все возможные проблемы понатыкался, а уже потом давать правила
chebser; Solovyeff; +2 Ответить
3. pallid 19.07.17 00:16 Сейчас в теме
(2)
По мне так, авторские комментарии в коде это зло, тем более с датой. Максимум обрамление кода комментариями команды - организации. А там уже и blame в гите глянуть можно.

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

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

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

На счет интерактивных изменений форм делаем так, с начало в ветке фичи все делается прям на форме, для быстроты прототипирования и наглядности. Потом декомпелируем форму, но если не успеваем, вешается тех.долг по переносу интерактивных изменений в код
59. vis_tmp 30 14.01.20 07:01 Сейчас в теме
(3)
авторские комментарии в коде это зло
Просто представьте, что вы начали работать с новой конфигурацией и у вас нет никаких таск менеджеров предыдущих разработчиков
60. pallid 236 14.01.20 09:12 Сейчас в теме
(59) Ну есть же конфигурация поставщика
4. pallid 19.07.17 00:18 Сейчас в теме
Номер версии во внешних обработках\отчетах делаем по формату гг.мм.дд, 17.07.19
5. nytlenc 19.07.17 06:07 Сейчас в теме
Офис 2016, файл не открывается. Что за бред оформлять статьи в виде каких-то документов. А если у меня офис вообще не установлен и нет лицензии на его использование, получается статью мне не прочитать? Оформите пожалуйста статью в соответствии с правилами. А так это не статься а просто бесполезный текст.
Прикрепленные файлы:
6. Tavalik 2347 19.07.17 07:54 Сейчас в теме
(5)
Здравствуйте. Данные правила в открытом доступе:

http://tavalik.ru/pravila-razrabotki-chast-1/
http://tavalik.ru/pravila-razrabotki-chast-2/

И я даже видео записывал, когда готовился к выступлению:
https://youtu.be/KVbZygpQOEc
Vladimir Litvinenko; Maxis; inf012; +3 Ответить
9. nytlenc 19.07.17 09:11 Сейчас в теме
(6) http://tavalik.ru/ никакого отношения к ресурсу (Инфостарт) на котором вы публикуете статью не имеет это первое. Вы нигде в статье не сослались ни на видео которое вы записывали когда готовились к выступлению, ни на ссылки которые указали сейчас в сообщении, документ который вы прикрепили к сожалению тоже не открывается - вывод полезной информации в статье ноль. А еще и имеете неосторожность при этом минусовать вполне адекватные замечания. Тут телепатов нет, все уехали готовиться к INFOSTART EVENT 2017 COMMUNITY. Отрицательно воспринимаете критику? Я понимаю, что возможно там полезной инфы на докторскую диссертацию, но черт возьми, так оформлять статью никуда не годится, зачем вообще добавили ее если нет возможности ее НИКАК прочесть?
16. Tavalik 2347 19.07.17 09:26 Сейчас в теме
(9)
Что вы на меня напали? Критику я воспринимаю адекватно. Я вас не минусовал.
Более того, я вам открою секрет, это даже не я публиковал статью, а модераторы infostart.ru на основании моего выступления.
Все ссылки, кстати, есть в конце статьи. Сожалею, что у вас не получилось открыть документ .docx. Напишите почту в личном сообщении, я вышлю вам PDF версию.
21. nytlenc 19.07.17 09:40 Сейчас в теме
(16)
Что вы на меня напали?

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

(16)
не я публиковал статью, а модераторы infostart.ru на основании моего выступления.

Жаль, что модераторы так бездарно (по другому не могу назвать) оформили такую отличную статью...

(16)
Все ссылки, кстати, есть в конце статьи.

Ничего нет. К счастью информацию умею искать хорошо и к сожалению ничего не удалось найти по ссылкам. Единственная ссылка ведет на страницу с информацией об INFOSTART EVENT, там разумеется ничего о статье. Прикладываю подтверждения
Прикрепленные файлы:
20. pallid 19.07.17 09:39 Сейчас в теме
(9) не успел отписаться, что офиса у меня нет, а файл открывается даже в worppad. Самый первый минус мой, только сейчас узнал что минусование анонимно.
38. rozer 274 20.07.17 15:17 Сейчас в теме
(6) видос сделан качественно ) "расширения" не используете ? До "расширений" тоже добавляли программно на форму но расширения как-то все упростили да и роли тоже а сейчас и ОМ и др. модули можно править расширениям (правда нативных конф 1с под 8.3.10 нет пока)
25. revned 6 19.07.17 15:20 Сейчас в теме
(5) Есть Open Office, Only office. Бесплатные. Так что все можно посмотреть, не покупая ничего. Да и он-лайн офисы всякие.

Сам практически так же и поступаю, как в статье. Автору спасибо.
quadrodecor; +1 Ответить
32. nytlenc 20.07.17 03:29 Сейчас в теме
(25) тогда смысл вообще писать текст статьи? Давайте будем просто оформлять заголовок и крепить WORD документы, и пусть дальше каждый сам разбирается что там. Поиск по сайту в том числе.
Коллеги. Есть определенные правила и давайте будем все их придерживаться.
11. katenok86 244 19.07.17 09:17 Сейчас в теме
Расширениями не пользуетесь? До сих пор не могу для себя решить если в них польза. Были как положительные так и отрицательные примеры.
28. h00k 41 19.07.17 17:14 Сейчас в теме
(11)
Расширениями не пользуетесь? До сих пор не могу для себя решить если в них польза.

На текущий момент расширения хорошо подходят для доработки форм и объектов интерфейса, добавления и вывода в интерфейс своих обработок, отчётов и т.п. минуя механизмы БСП в типовых конфигурациях без включения возможности изменения конфигурации. Как только типовые будут переведены на БСП 2.4 возможности применения расширений для доработки полностью типовых конфигураций существенно расширятся.
Для типовых конфигураций с изменённым режимом совместимости все возможности расширений можно использовать уже и сейчас.
Основной нюанс, на текущий момент - для расширений нет встроенных в платформу систем версионирования, поэтому при разработке для контроля версий приходится использовать сторонние решения, такие как Mercurial, Git и т.п.
14. katenok86 244 19.07.17 09:24 Сейчас в теме
Кстати обновление готовите через cf или свою поставку?
17. Stepa86 1383 19.07.17 09:28 Сейчас в теме
(14) Если вопрос ко мне, то я выгружаю cf из хранилища разработки, вручную вкатываю его в хранилище РБ, а уже сами РБ обновляю скриптами
19. Tavalik 2347 19.07.17 09:31 Сейчас в теме
(17)
Мы поступаем точно также.
53. user774630 13.07.18 16:47 Сейчас в теме
(19) можете объяснить, почему нельзя рабочую базу подключить к хранилищу, в котором идет разработка, и оттуда обновляться?
55. Tavalik 2347 14.07.18 07:00 Сейчас в теме
(53)
Если у вас совсем немного разработки, или же всей разработкой занимаются 1-2 человека, то можно поступить и так, как вы написали: рабочую базу подключить к разработочному хранилищу. Такой подход также может быть допустим на начальных этапах проекта.

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

Подробнее о схеме разработки, применяемой нами в поддержке и на проектах, я рассказывал, например, в начале вот этого видео: https://infostart.ru/public/860429/
user774630; +1 Ответить
56. user774630 16.07.18 00:49 Сейчас в теме
(55) Понял, большое спасибо за ответ. У нас, действительно, всей разработкой занимаюсь я один + "внешние" изменения переношу в хранилище сам, поэтому о таких вещах не задумывался.
18. Tavalik 2347 19.07.17 09:30 Сейчас в теме
(14)
Пока в расширениях нет возможности создавать свои объекты и реквизиты объектов, никакого смысла в них не вижу. В 8.3.11 вроде такая возможность будет, но тут же мы натыкаемся на режим совместимости типовых конфигураций. Так что расширения не используем.

Почти всегда обновления готовим через файл cf. Хотя есть также опыт и обновления через поставку на территориально распределенных площадках.
15. nytlenc 19.07.17 09:24 Сейчас в теме
Спасибо. Статья очень полезная, почерпнул некоторые полезности для себя. Проголосовал за доклад. В дополнение звездану статью!
22. Team leader 9 19.07.17 10:28 Сейчас в теме
Про БСП обновил знания - спасибо
23. TheRealStanly 26 19.07.17 13:05 Сейчас в теме
Спасибо за статью. Всё структурировано и понятно. Как раз собирался что-то подобное писать для наших стажеров и наткнулся на эту публикацию. Забираю.
24. Vortigaunt 82 19.07.17 14:44 Сейчас в теме
Cпасибо. Очень интересно. Можете привести код функции ВТ() для вычисления временных таблиц, которая описана в статье?
26. Synoecium 700 19.07.17 15:47 Сейчас в теме
(24) могу скинуть нашу функцию которая выводит в листы Excel все временные таблицы из переданного запроса, что довольно удобно.
JohnConnor; +1 Ответить
27. Vortigaunt 82 19.07.17 16:30 Сейчас в теме
(26) Спасибо. Буду признателен.
31. JohnConnor 42 20.07.17 03:14 Сейчас в теме
(26) можешь скинуть , на почту?
33. Synoecium 700 20.07.17 06:21 Сейчас в теме
(31) (27)
отвечу здесь, может еще кому пригодится
https://pastebin.com/QzVYAE3V - выводит все временные таблицы переданного запроса в листы Excel
https://pastebin.com/jQmysAUD - позволяет посмотреть в отладчике конкретную таблицу из запроса. Работает примерно как в статье, но для одной таблицы
JohnConnor; +1 Ответить
29. Vortigaunt 82 19.07.17 21:16 Сейчас в теме
У меня вопрос к автору. В статье вы пишете о справочнике с предопределенными элементами. А чем он лучше обычных констант?
30. JohnConnor 42 20.07.17 03:14 Сейчас в теме
спасибо, много взял для себя
34. tormozit 5966 20.07.17 06:58 Сейчас в теме
Откройте для себя отложенную отладку запросов и компоновки и получайте полное удовлетворение https://www.youtube.com/watch?v=hiw_aYVOvFc
gravitator; boggonzikov; ElStar; user774630; Krio2; necropunk; rozer; h00k; zqzq; Stepa86; +10 Ответить
39. rozer 274 20.07.17 15:19 Сейчас в теме
(34) вам особенно низкий поклон за ИР
boggonzikov; Krio2; +2 Ответить
36. Infector 165 20.07.17 09:29 Сейчас в теме
По большей части согласен. Могу добавить "отсебятины":
1. часто вместо добавления реквизитов или табличных частей справочников и документов выгодным оказывается удобнее добавить регистр сведений, связанный через измерения с основным объектом, а в ресурсах хранящий необходимую информацию.
2. типовые объекты, куда не успели вмешаться, держим "под замком". Это одновременно индикатор и защита от случайных правок из разряда "лишний пробел"
3. В шаблонах кода очень удобно разместить собственный комментарий. Результат - при нажатии Ctrl + пробел в пустом месте в одной из верхних строк прелагается к вставке личная метка с текущей датой.
4. Касательно нетиповых участков - по возможности используем параметризированные запросы вместо склейки из строк. Сохранение возможности открыть запрос конструктором - небольшой бонус, позволяющий быстро отформатировать исправленный руками запрос и заодно проверить синтаксис (как известно, неправильный запрос конструктором не открывается). Комментирование внутри запроса достаточно бесполезно, т.к. исчезает при вызове конструктора, поэтому проще размещать тексты запросов в отдельных функциях, а перед правкой создавать копию всей функции с видоизмененным именем.
5. Громоздкие функции и процедуры удобнее дробить на мелкие, чем читать все это как сплошной текст.
6. Выигрышь в быстродействии на 5-10% за счет запутывания разрастания и усложнения кода пользователи не оценят. Но большинство оценивает разработку/доработки в короткий срок. Если Вы видите, что схожие подзадачи возникают с завидной регулярностью, чаще всего проще потратить полдня на универсальную функцию или механизм, закрывающие их все разом.
Например, однажды написав и вызвая в своих разработках функцию "ПреобразоватьТаблицуВДерево" скорее всего вы сможете выиграть больше времени по сравнению с описанием этого процесса в каждой отдельно взятой задаче.
37. comol 4357 20.07.17 15:17 Сейчас в теме
После советов с "авторским комментарием" перестал читать. Как заколебали такие правила, потом умрёшь отучать разработчиков писать авторский комментарий и июзать Blame View.
50. nickperel 2 27.09.17 20:46 Сейчас в теме
(37)
Blame View

К вам все чужие разработки через git попадают?
Никогда не видели код в котором спокойно и тихо в середине модуля всплывет кусок где умножают длину доски на время суток?
У отучением у них проблема...
40. Yashazz 3419 20.07.17 19:50 Сейчас в теме
Учитывая зияющие перспективы 1С по расширению данных, означенные извраты должны отойти в прошлое, где им самое место. Ибо всё это - от безысходности, а по-людски оно вообще модульно должно бы делаться) Но за труды респект.
45. nickperel 2 24.09.17 22:14 Сейчас в теме
(40)а как сделать "по-людски"?
1с делает свое. Вы - свое. Все независимо, а конечные данные одни и те же.
Расскажите как же помогут расширения, получить стабильно работающий адаптированный функционал?
А то пока занимался такими же "извратами" я сильно устарел.

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

Не надо только итс с зазеркальем цитировать. По существу есть что сказать?
41. cartograph 03.08.17 16:07 Сейчас в теме
42. user633533_encantado 7 03.08.17 18:06 Сейчас в теме
Сам пользуюсь подобными правилами разработки с некоторыми вариациями. Пришел к ним после многих лет обновлений измененных конфигураций.

Идея с процедурой ВТ() полезная, я до такого не додумался.
43. KilloN 46 22.08.17 15:31 Сейчас в теме
На мой ИМХО самоя крутая вещь при разработке это расширения, ко всему можно привязаться не редактируя модули и формы.
Еще с начала года как 8.3.9 появилась, снял на свой страх и риск с БП 3.0 совместимость с 8.3.8 и вперед.Единственный минут они нормально работают только начиная с 8.3.9. Если режим совместимости меньше то приходится по старинке...
44. nickperel 2 24.09.17 21:47 Сейчас в теме
(43)бп3 часто обновляется. Как часто приходится менять расширение?
Оно ведь слетит при изменении заимствований. Это весьма неприятная тема, так как адаптацию расширения делать придется уже после отказа.
Есть какие-нибудь соображения как с этим быть, кроме отключения автообновления у заказчика и проверки расширения на буферной базе?
46. KilloN 46 26.09.17 14:35 Сейчас в теме
(44)
Один раз за пол года понадобилось расширение подкорректировать.
В моем случае формы редко заимствовал, в 95% модули объектов и общих форм.
49. nickperel 2 27.09.17 20:38 Сейчас в теме
(46)
В моем случае формы редко заимствовал, в 95% модули объектов и общих форм.

Самое гемор - накладка изменений форм. Как было так и есть.
47. Yashazz 3419 26.09.17 22:44 Сейчас в теме
Не надо только итс с зазеркальем цитировать. По существу есть что сказать?

Если эти источники для Вас не по существу, то без комментариев.
48. nickperel 2 27.09.17 20:34 Сейчас в теме
(47)
Не надо только итс с зазеркальем цитировать. По существу есть что сказать?

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

Конечно без комментариев. Откуда им взяться - то.
51. LexSeIch 207 06.07.18 07:07 Сейчас в теме
Объемная статья с картинками и видео-приложением, отражающая определенный, систематизированный подход к обновлению конфигураций. Автору безусловный плюс. И большое спасибо всем, кто высказал свое мнение в комментариях. Много интересного.
52. LexSeIch 207 06.07.18 07:19 Сейчас в теме
Дополнительно можно было бы добавить использование механизма расширений для доработки конфигураций, тем более что с выходом новых платформ он улучшается.
54. user633533_encantado 7 13.07.18 17:04 Сейчас в теме
(52) Расширение это альтернативный подход. Пока не заменяет полноценную доработку/ исправление ошибок в конфигурации.

Вон в ERP исправительные релизы выходят чуть ли ни каждую -две недели, релизы с новой версией бсп и полностью измененными общими модулями раз в несколько месяцев. Все равно раширение нужно переделывать, один плюс : конфигурация с поддержки не снимается, но если в ней расширения , то без помощи программиста не обойтись, тогда какой толк в автоматическом обновлении ?
57. Itilive.ru 40 12.09.18 18:40 Сейчас в теме
Все так. Единственное для новых объектов или реквизитов делаем не префиксы, а суффиксы. так не надо помнить это наш объект при кодировании или типовой. На Вашем примере "Проекты_ФТО". Попробуйте и Вам захочется переименовать все что вы делали.
58. sashocq 191 16.12.18 09:18 Сейчас в теме
Эти правила плюсанул бы лет 5 назад. Сейчас же это уже атавизм.
Как тут уже писали, git blame покажет кто когда и зачем писал каждую строку. Даже у кода поставщика вы увидите какая строка в каком из ваших обновлений обновилась.

Если типовой код нужно поменять на ваш — меняйте, не нужно оставлять старый! Нужно посмотреть что было раньше? Посмотрите историю в git. В 1С — сравните с конфигурацией поставщика. При обновлении 99,9% таких правок модулей пройдёт автоматически при помощи инструмента типа KDiff3. Попроцедурное в 1С вам не поможет в случае изменения названия процедуры, а инструмент справится. То же касается и обработок событий проведения и т. п.

Кстати говоря, в конфигурациях на основе УТ11, ERP там за формирование движений отвечает много вспомогательных процедур в модуле менеджера. В этот механизм лучше и встаиваться — это как с программным изменением форм: сначала сложно, потом станет понятно.
Про префиксы. В именах — на ваше усмотрение, конечно. Мне лично они вообще не нравятся. Типовой это объект или новый видно сразу по пометке справа. В синонимах префиксы — вообще зло. Какая разница пользователям какой разработчик в рамках какого проекта это добавил/изменил? На целостность интерфейса пользователя это не должно влиять. А чтобы найти добавленные/изменённые объекты я добавляю их для себя в соответствующие подсистемы: Доработки/Измененные, Доработки/Новые. К тому же, если вы добавили новый объект/реквизит, а затем в обновлении поставщик добавил такой же, то это тот случай, когда нужно проанализировать этот объект. Возможно, это и должен быть 1 реквизит, уже типовой. Если вы добавили рекв. Основание, затем поставщик добавил рекв. Основание. В результате вам не нужно 2 реквизита Мой_Основание и Основание. Вам нужен именно 1, с объединёнными типами.

Ну и, конечно, большинство изменения типовых объектов нужно добавлять в автотесты. Например, добавили/удалили типы в определяемом типе — добавили в проверку. При обновлении такие объекты можно смело обновлять, а после — прогнать тесты и они покажут всё, что нужно куда добавить/удалить.

После перехода на такие правила обновление сильно доработанной КА2 у меня вместо нескольких дней стало занимать полдня.
sevenor; o.nikolaev; +2 Ответить
61. mevgenym 86 20.01.20 12:50 Сейчас в теме
(58) "Посмотрите историю в git" до тех пор пока они вместе, т.е. на "фиксе" это может и работает, а во "франче" нет. Потеряете вы свой гит или получите вот такую конфигурацию без гита и привет.
62. Астиг 16 21.08.20 11:13 Сейчас в теме
Спасибо вам! Крайне полезная статья! Но не очень понял момент, касающийся обновления конфигурации. Тут надо еще раз почитать и подумать.
Оставьте свое сообщение

См. также

Безопасная работа с транзакциями во встроенном языке Промо

Практика программирования v8 1cv8.cf Абонемент ($m)

Разбираемся с опасностями использования транзакций во встроенном языке 1С. Познаем ошибку "В данной транзакции уже происходили ошибки". Учимся защищаться от них.

1 стартмани

25.03.2019    34388    tormozit    44    

Библиотека программного изменения формы (УФ)

Инструментарий разработчика Работа с интерфейсом Универсальные функции v8 1cv8.cf Абонемент ($m)

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

1 стартмани

07.08.2020    3811    BuriyLesha    17    

Есть ли жизнь после внедрения, или упрощаем работу в сопровождении

Управление проектом Бесплатно (free)

Из-за отсутствия грамотных правил разработки на этапе внедрения сильно усложняется работа по поддержке и развитию типовых доработанных конфигураций. О некоторых правилах и подходах в разработке, которые помогут специалистам сопровождать внедренное решение, на конференции Infostart Event 2019 Inception рассказал разработчик компании «Инвестиционная группа Абсолют» Алексей Степаненко.

08.06.2020    4739    stepan96    12    

Запуск фонового задания во внешней обработке без регистрации в справочнике "Дополнительные отчеты и обработки"

Практика программирования v8::УФ ЗУП3.x Россия Абонемент ($m)

Описал, как показать прогресс выполнения длительной операции во внешней обработке, и при этом не регистрировать обработку в справочнике "ДополнительныеОтчетыИОбработки". Проверял на БСП версии "3.1.2.264".

1 стартмани

09.03.2020    3846    VinnieThePOOH    5    

Как выполнить отчет на СКД через COM и получить данные отчета? Промо

Практика программирования v8 УПП1 Россия Абонемент ($m)

Для чего это нужно. Например, нужно в одной базе получить какой-либо показатель из другой базы. Этот показатель вычисляется в каком-либо сложном отчете, который написан на СКД. Можно, конечно, "скопипастить" текст запроса из другой базы, немного подправить его и выполнять в том же COM подключении. Но с этим теряется гибкость: если отчет изменился, то нужно помнить о том, что где-то есть его "немного модифицированная" копия. В статье будет рассмотрен пример получения данных из базы ЗУП.

2 стартмани

08.05.2018    26972    wowik    3    

Методика обновления формы объекта данных при изменении объекта

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

09.03.2020    7570    tormozit    13    

Отправка уведомлений с помощью командной строки, Оповещения с сервера на клиент с помощью командной строки

Практика программирования v8 1cv8.cf Россия Абонемент ($m)

Отправка уведомлений с помощью команды командной строки msg. Оповестить пользователей из серверного модуля или регламентного задания, с помощью командной строки msg.

1 стартмани

05.03.2020    5503    user5300    3    

Вывод сообщений в HTML поле средствами 1С

Практика программирования v8 v8::УФ Абонемент ($m)

Пример использования вывода большого количества сообщений в поле HTML. С возможностью открывать ссылочные объекты и создавать новые объекты передавая параметры прямо из HTML поля. Протестировано на релизах 8.3.12 и 8.3.15+

2 стартмани

31.01.2020    5626    burni4    16    

Программное создание динамического списка на управляемой форме. (Динамическое создание динамического списка). Готовая процедура + обработка - демонстрационный пример Промо

Практика программирования Универсальные функции v8::УФ 1cv8.cf Абонемент ($m)

Если у вас возникает необходимость на форму влиять динамически и создавать элементы управляемой формы программно, а особенно хотите вывести программно (динамически) динамический список, вам будет интересна эта процедура. Процедура включает также возможность формирования своей командной панели (а-ля снятие галочки "Автозаполнение" у стандартной командной панели списка).

1 стартмани

19.01.2018    57142    rpgshnik    29    

Как в 1С создать паутинку "как на Инфостарте"

Практика программирования v8::УФ 1cv8.cf Россия Абонемент ($m)

Добрый день, уважаемы коллеги! В этой статье я расскажу, как в 1С создать отчет - "паутинку" на примере отчета по компетенциям сотрудника (разрабатывала на платформе 1С:Предприятие 8.3 (8.3.13.1865).

1 стартмани

15.01.2020    9003    user660153_aleks.pisanets    17    

Краткое руководство по внесению изменений в конфигурацию

Практика программирования v8 1cv8.cf Абонемент ($m)

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

1 стартмани

13.01.2020    16742    sapervodichka    41    

"Живые" картинки со Snap.SVG

Практика программирования WEB Работа с интерфейсом v8 Абонемент ($m)

В статье рассмотрен пример использования http-сервисов для визуализации данных

1 стартмани

24.10.2019    13336    blackhole321    7    

Как нарисовать граф на 1С Промо

Практика программирования v8 Абонемент ($m)

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

1 стартмани

09.08.2013    70256    ildarovich    117    

RLS - дубли условий в запросах к СУБД

Практика программирования Роли и права v8 v8::Права 1cv8.cf Абонемент ($m)

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

1 стартмани

07.10.2019    8360    geron4    4    

Полезные процедуры и функции для программиста

Практика программирования Универсальные функции v8 1cv8.cf Россия Абонемент ($m)

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

07.10.2019    29466    HostHost    40    

Полное копирование одной формы в другую

Практика программирования Универсальные обработки Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Однажды я столкнулся с необходимостью открыть форму ЛЮБОГО документа с определенными изменениями, не зависящими от структуры объекта (например, заблокировать все кнопки). В интернете решения я не нашел. Обычно на форумах на запросы подобного рода отвечают чем-то вроде "покажи первоначальную задачу, а не спрашивай как реализовать то, что ты придумал". Тем не менее, мне стало интересно, как это можно сделать.

1 стартмани

03.10.2019    4874    nekit_rdx    23    

Простой способ индексирования интервалов Промо

Практика программирования v8 Абонемент ($m)

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

1 стартмани

28.09.2016    39325    ildarovich    22    

Многопоточная обработка данных на примере перепроведения документов

Обработка документов Практика программирования v8 ERP2 УТ11 КА2 Абонемент ($m)

Дальнейшее развитие темы фоновой обработки данных - проведение документов в потоках. Настройка параметров и запуск основного процесса (менеджера потоков). Разбивка документов для проведения на не связанные друг с другом наборы и запуск дополнительных фоновых заданий для отдельных потоков. Отслеживание выполнения каждого потока в родительском сеансе.

1 стартмани

17.09.2019    8963    ids79    46    

Описание формата внутреннего представления данных 1С в контексте обмена данными

Практика программирования Внешние источники данных v8 v8::УФ 1cv8.cf Абонемент ($m)

Фирма 1С не рекомендует использовать внутреннее представление данных для любых целей, которые отличны от обмена с 1С:Предприятием 7.7. Но сама возможность заглянуть на "внутреннюю кухню" платформы с помощью функций ЗначениеВСтрокуВнутр(), ЗначениеВФайл(), ЗначениеИзСтрокиВнутр() и ЗначениеИзФайла(), дала возможность сообществу программистов 1С разработать новые приемы разработки и анализа. Так, именно на использовании внутреннего представления был построен алгоритм "быстрого массива", который позволяет практически мгновенно создать массив в памяти на основании строки с разделителями. С помощью разбора внутреннего представления можно "на лету" программным кодом выполнить анализ обычной формы и даже сделать редактор графической схемы. Во внутреннем формате сохраняют свои данные между сеансами различные популярные внешние обработки. А еще это возможность сделать быстрый обмен с внешними системами.

1 стартмани

06.09.2019    19171    Dementor    30    

1С и PowerShell - обновление из хранилища

Администрирование данных 1С Инструментарий разработчика v8 Абонемент ($m)

Пример скрипта, упрощающего работу.

1 стартмани

29.08.2019    8490    Jokemas    25    

Бесплатная проверка контрагентов в ФНС (общий модуль с алгоритмом). На примере выводим статус в список справочника контрагентов Промо

Практика программирования v8 1cv8.cf Абонемент ($m)

Если вам интересно проверить контрагенте в ФНС, вам поможет данная публикация. Весь алгоритм работы строится на основе данных, полученных с сервиса http://npchk.nalog.ru совершенно бесплатно.

1 стартмани

01.02.2018    34894    rpgshnik    49    

Удобный просмотр результата запроса с большим количеством временных таблиц

Практика программирования v8 Абонемент ($m)

Если Вам часто приходится просматривать в отладчике сложные пакетные запросы с большим количеством временных таблиц, то эта статья для Вас.

1 стартмани

27.08.2019    10759    ids79    21    

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

Практика программирования v8 1cv8.cf Абонемент ($m)

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

2 стартмани

24.08.2019    10417    BenGunn    22    

Изменяющееся контекстное меню в 1С 8.3

Практика программирования Работа с интерфейсом Разработка v8 v8::УФ Абонемент ($m)

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

1 стартмани

06.08.2019    15340    signum2009    16    

БСП: Дополнительная обработка (Регламенты), примеры от простого к сложному Промо

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

Очень много попадается странных решений, которые можно решить через БСП:Дополнительные отчеты и обработки. Я бы вообще БСП из-за этой подсистемы переименовал в «Большое Спасибо Программистам». Поработаем с подсистемой в части написания регламентных заданий.

1 стартмани

10.05.2018    44309    dsdred    36    

Менеджер потоков: реализация "любой" задачи в потоках

Производительность и оптимизация (HighLoad) Инструментарий разработчика v8 Абонемент ($m)

Менеджер потоков – один их новых инструментов, который упрощает работу разработчиков. Насколько легко с ним, на конференции Infostart Event 2018 Education показал начальник отдела автоматизации 1С Иван Филимонов компании «Трансстроймеханизация».

01.08.2019    9438    DarkAn    6    

Упражнения на Перфоленте. Парсим технологический журнал 1С

Сервисные утилиты Инструментарий разработчика Практика программирования Разработка Абонемент ($m)

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

1 стартмани

31.07.2019    7347    Perfolenta    62    

Процедура ПриКомпоновкеРезультата

Практика программирования v8 1cv8.cf Абонемент ($m)

Коллекция кода

1 стартмани

26.07.2019    37297    vasilev2015    64    

Некоторая работа с данными через COM Промо

Практика программирования v8 Абонемент ($m)

В статье приведены примеры работы с Платформой 8.X через COM (точнее, через объект COMConnector). Примеры кода были использованы при реализации прикладных задач в процессе трудовой деятельности.

2 стартмани

05.12.2012    57298    wowik    32    

В 1000 раз быстрее

Практика программирования Разработка ИТ-компания Абонемент ($m)

Реализация алгоритма трассировки лучей на новом языке программирования "Перфолента"

1 стартмани

24.07.2019    5620    vasvl123    6    

10 способов получить модуль числа (а может, и больше)

Практика программирования Разработка v8 1cv8.cf Абонемент ($m)

Пишем функцию вычисления модуля числа. Сколько способов существует? Давайте посчитаем!

1 стартмани

11.07.2019    7917    sam441    29    

Ловец дедлоков СУБД

Производительность и оптимизация (HighLoad) Практика программирования Разработка v8 Россия Абонемент ($m)

Анализ простейшего дедлока СУБД в рабочей базе с использованием ЦУП (центра управления производительностью) и profiler MS SQL (Microsoft SQL Server). Эта статья будет полезна людям, изучающим вопросы оптимизации работы 1С, или тем, у кого возникают дедлоки в рабочей базе. UPD 09.07.2019 добавлено воспроизведение блокировки в случае установки управляемой блокировки перед чтением набора записей регистра сведений. UPD 10.07.2019 добавлена тестовая база с примером.

1 стартмани

08.07.2019    10951    azazana    79    

Работа со схемой запроса Промо

Инструментарий разработчика Практика программирования v8 v8::Запросы Абонемент ($m)

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

1 стартмани

24.04.2018    43599    kalyaka    35    

Многоуровневая нумерация в отчете СКД (программный вывод)

Практика программирования v8::СКД 1cv8.cf Абонемент ($m)

Реализация многоуровневой нумерации при программном выводе отчета СКД основываясь на его структуре.

1 стартмани

01.07.2019    7005    lmnlmn    7    

Мониторинг производительности и искусственный интеллект

Производительность и оптимизация (HighLoad) Практика программирования Разработка v8 Абонемент ($m)

Расскажем и покажем практически, как использовать искусственный интеллект на страже мониторинга производительности. У вас появится возможность создать собственного помощника Ларису, которая возьмет на себя вопросы по контролю и диагностике состояния обслуживаемой системы.

1 стартмани

01.07.2019    9147    ivanov660    28    

"Убер на складе": динамический расчет маршрутов с учетом реальных расстояний

Учет ТМЦ Практика программирования Учет ТМЦ v8 УУ Абонемент ($m)

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

3 стартмани

24.06.2019    15278    informa1555    17    

Многопоточность. Универсальный «Менеджер потоков» (фреймворк) с отслеживанием зависимости объектов Промо

Практика программирования Математика и алгоритмы Универсальные функции Производительность и оптимизация (HighLoad) v8 1cv8.cf Россия Абонемент ($m)

Восстановление партий, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

26.05.2017    48892    DarkAn    86    

1С:Ассемблер. Немного летнего веселья!

Практика программирования Разработка v8 1cv8.cf Абонемент ($m)

Все вы, наверное, слышали, что 1С-ники жалуются на свою систему, считая язык 1С недостаточно низкоуровневым, скучным и т.п. Все они с тоской поглядывают в сторону "настоящих" языков программирования. Так вот, господа, они неправы. В системе 1С есть места, где можно размять программерский мозг и получить удовольствие от низкоуровневой техники. Предлагаю вам погрузиться в недра виртуальной машины 1С и понять, как она работает. Там есть свой "ассемблер" и мы попробуем его в действии!

1 стартмани

21.06.2019    28679    Evil Beaver    126    

Простые примеры сложных отчетов на СКД

Практика программирования v8 v8::СКД 1cv8.cf Абонемент ($m)

Подписи в отчете. Особенности соединения наборов: как соединить несоединяемое. Остатки на дату и обороты по месяцам в одном отчете. Курс валюты на каждую дату без группировок и соединений в запросе. Отчет с произвольными колонками и с произвольной последовательностью. "Неадекватный отчет".

1 стартмани

12.06.2019    29403    Hatson    31    

От стажера до эксперта

Личная эффективность Бесплатно (free)

Что надо знать, чтобы тебя считали хорошим разработчиком? Какие навыки должны быть у специалиста, чтобы он был востребован у отечественных заказчиков? Как понять, что ты действительно развиваешься и растешь? На эти и другие вопросы на конференции INFOSTART EVENT 2018 ответил профессиональный разработчик 1С Виталий Онянов, выпускник Омского Государственного Университета им. Достоевского. Виталий работает ведущим разработчиком 1С в ООО «ФТО», занимается внедрением и оптимизацией информационных систем. Делает свои проекты, пишет статьи и обзорные материалы, иногда учит других людей.

31.05.2019    19312    Tavalik    65    

Новый запрос и новая таблица значений как функции Промо

Практика программирования v8 Абонемент ($m)

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

1 стартмани

27.11.2012    45135    ildarovich    46    

Создание внешней печатной формы в формате документа Word

Практика программирования Разработка v8 1cv8.cf Абонемент ($m)

В статье написано, как создать внешнюю печатную форму (для конфигураций с БСП) в формате Word.

1 стартмани

17.05.2019    13009    ВикторП    21    

Ops средствами 1С:Предприятие

Практика программирования Разработка v8 1cv8.cf Абонемент ($m)

В статье описан программный пакет "Автоматизация ИТ-процессов" (АИТП), позволяющий автоматизировать задачи по администрированию, управлению и обслуживанию ИТ-инфраструктуры.

1 стартмани

23.04.2019    17290    blackhole321    28    

1C + Python + Django Rest Framework + Vue.js. Опыт несложной full-stack разработки

Практика программирования Внешние источники данных Обмен через XML WEB Разработка v8 1cv8.cf Абонемент ($m)

В этой статье мы рассмотрим путь и основные моменты создания небольшого вэб-сервиса, который мы называем "Онлайн Прайс-лист". Выгрузка из 1С, бэкенд, фронтенд, получение заказов в 1С.

1 стартмани

22.04.2019    32616    riposte    65    

Уровни, глубина, прародители, циклы и аналоги запросом Промо

Практика программирования v8 1cv8.cf Абонемент ($m)

В продолжение публикации «Транзитивное замыкание запросом» [http://infostart.ru/public/158512/] добавлены другие варианты использования того же приема. Приведены запросы для быстрого определения уровней всех элементов справочника, максимальной глубины справочника, прародителей произвольных элементов справочника, запрос для быстрого определения циклов (на примере справочника спецификаций «1С:Управление производственным предприятием») и определения множеств аналогов номенклатуры (также на примере конфигурации «1С:Управление производственным предприятием»).

1 стартмани

13.11.2012    111483    ildarovich    98    

Вывод вариантов СКД в таблицы на управляемой форме

Практика программирования Работа с интерфейсом v8 v8::УФ v8::СКД 1cv8.cf Абонемент ($m)

Задача стояла такая: есть 2 различных запроса, результаты которых выгружаются на форму обработки в таблицы значений (далее ТЗ) и программно "соприкасаются" между собой определенным образом (как именно- в рамках данной статьи неважно). Нюанс в том, что запросы должны иметь свой компоновщик настроек и могут интерактивно на форме изменяться пользователем. На оригинальность публикации не претендую - изначально в рамках поставленной задачи пытался найти что-то подобное (уже готовый шаблон) на инфостарте, возможно "плохо искал" ;)

05.04.2019    10968    artkor    1    

Программное создание реквизита управляемой формы с помощью механизма расширений

Практика программирования Разработка v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

12.03.2019    34701    ni_cola    31    

Баг или фича? Неожиданное поведение платформы

Практика программирования Тестирование и исправление Разработка v8 1cv8.cf Абонемент ($m)

Рассмотрим несколько случаев неожиданного поведения платформы 1С, а также что с этим можно cделать.

18.02.2019    22846    YPermitin    89    

Неоплаченные долги при распределении оплаты по правилу ФИФО одним запросом и намного быстрее, чем Вы думали Промо

Практика программирования Дебиторская и кредиторская задолженность Дебиторская и кредиторская задолженность v8 v8::СКД КА1 УТ10 УПП1 УУ Абонемент ($m)

Предлагается метод для быстрого нахождения неоплаченных долгов при распределении оплаты по правилу ФИФО, основанный на дихотомии. Описывается реализация метода в виде достаточно простого запроса, решающего за линейное время указанную задачу, считавшуюся ранее существенно более трудоемкой. Приводятся примеры использования запроса в отчетах на СКД для конфигураций УТ, КА, УПП.

1 стартмани

28.02.2014    68090    ildarovich    125    

Альтернатива внешним печатным формам. ЗУП 3.1

Печатные формы документов Универсальные функции Зарплата Практика программирования Зарплата Разработка v8 v8::СПР ЗУП3.x Абонемент ($m)

Как в ЗУП 3.1.8 отказаться от внешних печатных форм и расширением увеличить количество полей, доступных при редактировании макетов, для изменения печатных форм Т1, Т5, Т8 и аналогичные пользователями.

1 стартмани

30.01.2019    14285    Mogilnikova    3    

HTML в новой версии 8.3.14 на примере 3-х JavaScript библиотек: AmCharts, HighCharts, DHTMLX

Универсальные обработки Практика программирования Разработка v8 1cv8.cf Абонемент ($m)

Тестируем возможности HTML в новой версии 8.3.14 платформы на примере 3-х JavaScript библиотек: AmCharts, HighCharts, DHTMLX.

1 стартмани

29.01.2019    28309    Synoecium    46    

Разработка и сценарное тестирование с Vanessa-ADD. Практические примеры сценариев. Шаги встроенной библиотеки

Практика программирования Vanessa Automation v8 Абонемент ($m)

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

1 стартмани

28.01.2019    19648    Vladimir Litvinenko    43