v8: Концепция минимального изменения конфигурации для легкого обновления

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

Разработка - Математика и алгоритмы

"Лучше день потерять потом за пять минут долететь" ((с) "Крылья, ноги и хвосты") или как сделать так чтобы обновление конфигурации проходило с минимальными трудозатратами.

 

 

 

 

Структура статьи:

  1. Цель
  2. Концепция
  3. Объекты системы без четкого описания методики изменения
  4. Методики

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

 

ЦЕЛЬ

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

 

КОНЦЕПЦИЯ ИЗМЕНЕНИЙ

  1. Минимальная правка кода в модулях конфигурации.  Все требуемые изменения нужно выносить в общие модули или модули менеджеров новых объектов (справочников / регистров / обработок),  логически связанных с вносимыми изменениями.
  2. Отказ от «непосредственного» изменения текстов запросов. Касается как запросов расположенных в текстах модулей, так и запросов-источников динамических списков.
  3. Отказ от изменения форм объектов на уровне конструктора форм. Использование только программного (при помощи написанного кода) способа. Речь идет не только о добавлении/изменении элементов форм, но и о добавлении реквизитов форм, событий элементов форм (и самой формы) и условного оформления форм.
  4. Максимальное использование подписок на события.   

 

ОБЪЕКТЫ СИСТЕМЫ БЕЗ ЧЕТКОГО ОПИСАНИЯ МЕТОДИКИ ИЗМЕНЕНИЙ

  1. Изменение ролей
  2. Изменение функциональных опций
  3. Изменение состава реквизитов
  4. Изменение состава регистраторов
  5. Изменение состава общих команд
  6. Изменение схем компановки данных

 

МЕТОДИКИ

  1. Комментарии к изменениям.  Считается хорошим тоном, а в случае изменения модуля, находящегося на поддержке являются обязательными комментарии с открывающимися и закрывающимися «тегами» к программному коду который вы внесли/модифицировали. Обычный минимум – это дата изменения и «ФИО» разработчика. Плюсом будет номер тикета или краткое описание изменений. 
  2. Минимальная правка кода в модулях конфигурации.  Руководствуемся «достаточным» минимумом изменений.  Конечно, если Ваши изменения в объеме 1-3 строки, то не стоит для этого их выносить в отдельный модуль.  В случае если код «большой» или он используется в нескольких местах, выносим его из  тела модуля.

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

Результаты запросов, если есть сложность и нецелесообразность менять сам запрос (см. методику модификации запроса ниже) тоже можно переопределить/дополнить, выгрузив его в таблицу значений и потом в качестве источника модифицировать в своем запросе.  

Если есть некая конструкция кода с условиями и циклами, результат которого вам «не подходит» после нее напишите свой и «переопределите»  результат. Нужно ли комментировать исходный код зависит от его ресурсоемкости. Желательно его оставить «как есть».

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

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

 3. Отказ от «непосредственного» изменения текстов запросов. Часто используемым подходом к изменению текста запросов является «непосредственное» изменение запроса с закомментированными в нем «исходными» блоками. Основной недостаток такого подхода – при случайном или необдуманном использовании конструктора запросов «слетают» комментарии и «куски» закомментированного запроса от поставщика конфигурации.  Другой способ – копирование и модификация исходного запроса целиком в своей процедуре и последующая подстановка нового запроса. В этом случае при обновлении конфигурации есть необходимость сверять запросы м/у собой – новый от поставщика старый от поставщика и измененный разработчиком. Причем, так как нужно сравнивать уже 3 текста,  делать это приходится не средствами 1С, а сторонними программами,  к примеру - KDiff3.

 

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

               ТекстЗапроса   = «

|ВЫБРАТЬ

               |             Номенклатура.Ссылка КАК Ссылка,

               |             Номенклатура.Наименование КАК Наименование

               |ИЗ

               |             Справочник.Номенклатура     КАК Номенклатура»;

 

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

               Добавим внутреннее соединение

               ТекстЗапроса   =  СтрЗаменить(ТекстЗапроса, «

|             Справочник.Номенклатура     КАК Номенклатура», «

|             Справочник.Номенклатура     КАК Номенклатура

|ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ДляПримера КАК Пример

|             ПО  Номенклатура.Ссылка = Пример. Номенклатура»);

              

Вынесем в результат требуемые поля

               ТекстЗапроса   =  СтрЗаменить(ТекстЗапроса, «

|             Номенклатура.Ссылка КАК Ссылка,», «

|             Номенклатура.Ссылка КАК Ссылка,

|             Пример.Поле1              КАК Поле1,

|             Пример.Поле2                               КАК Поле2»);

 

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

 

Немногим более сложна модификация предложенным способом пакетного запроса.  Как вы уже догадались, пакетный запрос – это набор «одиночных» запросов. Нам остается разобрать пакет на отдельные запросы, изменить/подменить  конкретный (ые) и собрать  пакет запросов обратно.  В УТ11 есть замечательные функции для этого «СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок()» и «СтроковыеФункцииКлиентСервер.ПолучитьСтрокуИзМассиваПодстрок()». Делителем строк будет являться символ «;».

 

Для динамических списков  текст запросов меняем аналогично.   В случае если динамический список использует реальную таблицу – меняем настройки динамического списка и подставляем текст запроса:

              .УстановитьТекстЗапросаДинамическогоСписка_ЗаказНаПеремещениеСписок(Список);

 

               Процедура УстановитьТекстЗапросаДинамическогоСписка_ЗаказНаПеремещениеСписок(Список) Экспорт             

               Список.ПроизвольныйЗапрос                = Истина;

               Список.ТекстЗапроса

                               = "ВЫБРАТЬ

                                 |           ЗаказНаПеремещение.Ссылка, ……

              

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

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

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

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

Динамическое переопределение и добавление обработчиков событий формы.

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

 

Мною разработан модуль «динамически подключаемых обработчиков событий» элементов форм и самих форм со следующим функционалом:

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

 

На практике на момент написания данной статьи мною разрабатывается конфигурация для крупной торговой компании, занимающейся поставкой инструментов, на базе УТ11. Формы справочников и основных документов товарооборота и планирования сильно доработаны. Добавлены реквизиты шапки, табличных частей, вычисляемые реквизиты форм, добавлены и переопределены обработчики событий форм и реквизитов. Блокируются строки в табличных частях товаров и многое другое. Всего не описать. Примечательно, что при всех этих изменениях в модулях измененных форм всего несколько вызовов процедур в процедуре «ПриСозданииНаСервере» и в случае динамически подключаемых событий по одному «шаблону-процедуре» на событие.

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

5.       Максимальное использование подписок на события.   Собственно если есть возможность использовать подписку на событие – используйте.

 

 

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. eeeio 117 28.01.13 10:23 Сейчас в теме
интересна реализация вашего механизма быстрого внесения изменений в форму, а также как вы модифицируете проведение документов.
Aleskey_K; Zebar; antowski; +3 Ответить
3. MarSeN 976 28.01.13 11:56 Сейчас в теме
(1) по модификации проведения документов зависит от задачи, но чаще всего реализация сводится к модификации запроса по принципам рписанным в статье. Если у вас есть конкретный вопрос, буду раз описать решение
(1)(2) я постараюсь до 04.02.2013 написать статью по динамическому изменению форм. сложнее всего будет создать пример и хелповое описание ).
32. yaguarrr 71 02.02.13 15:34 Сейчас в теме
(3) очень заинтересовали, спасибо что сдержали обещание
33. MarSeN 976 02.02.13 20:32 Сейчас в теме
(32) спасибо, приятно что обе статьи получили достойный отзыв.
28. MarSeN 976 31.01.13 07:51 Сейчас в теме
(1),(2),(9),(11),(12),(13),(15),(17),(23),(26),(27)
В качестве анонса: вчера дописал статью "v8.2 Управляемые формы: Динамические элементы формы и переопределяемые события или как изменить поведение и внешний вид управляемой формы программно без лишних хлопот ". Это статья по примеру реализации пункта "Динамическое переопределение и добавление обработчиков событий формы."
В данный момент статья на модерации. Как только она станет активной - сразу скину ссылку всем заинтересовавшимся.
29. psamt1k 31.01.13 09:37 Сейчас в теме
(28) еще раз спасибо за труды! Ждем-с!
30. MarSeN 976 31.01.13 10:08 Сейчас в теме
(1),(2),(9),(11),(12),(13),(15),(17),(23),(26),(27)
Статья опубликована.
http://infostart.ru/public/171514/

Спасибо
2. alekseies 28.01.13 11:21 Сейчас в теме
Неплохо бы посмотреть отдельную статью с детальным описанием и выложить исходники с примерами использования модуля по созданию динамических реквизитов, элементов и подключаемых обработчиков. А так +
Aleskey_K; NittenRenegade; iov; yaguarrr; +4 Ответить
4. pumbaE 640 28.01.13 13:05 Сейчас в теме
По мне , так идея модификации запроса через "СтрЗаменить" плохая идея - получается собрать полностью запрос возможно будет только во время исполнения программы.
5. MarSeN 976 28.01.13 13:14 Сейчас в теме
(4) Тут каждый волен выбирать что хочет получить ). Видить всегда полный запрос всегда, даже когда уже закрыл задачу и потом париться с объединением, либо "собрать" его тогда когда надо для отладки. На этапе программирования можно делать по старинке. но я стараюсь делать сразу таким образом.
31. TSSV 01.02.13 18:58 Сейчас в теме
(4) pumbaE, Думаю использование данной методики (СтрЗаменить для модификации текста запроса) будет оправдано в случае с динамическими списками, когда источником данных списка является произвольный запрос. В случае корректировки типового запроса непосредственно в свойствах динамического списка мы не увидим деталей при анализе различий в процессе сравнения/объединения конфигураций.
6. TSSV 28.01.13 14:02 Сейчас в теме
Думаю здесь важно избежать ситуации, когда упомянутое увеличение трудоемкости при разработке выльется в увеличение трудоемкости при модификации доработанного, причем уже в логарифмической зависимости, а в некоторых случаях и при обновлении в итоге тоже может получиться усложнение вместо ожидаемого упрощения. Ведь "докопаться" до физического смысла доработки становится сложнее, что весьма затрудняет сопровождение доработанного по данной технологии решения, а сопровождение ведь это не только обновление. Думаю об этом не стоит забывать тоже. Плюс.
&rew; kolya_tlt; astrius; Open-BS; jamirza; MarSeN; Дмитрий74Чел; expert.1c8; pumbaE; +9 Ответить
7. MarSeN 976 28.01.13 14:32 Сейчас в теме
(6) Согласен. Всегда ко всем рекомендациям нужно относиться "дозированно" и никогда не принимать "на слово", потому что ответственность всегда лежит на исполнителе.
Мы всегда несем ответственность за свои изменения. Более того, изменения стандартной конфы зачастую несут глобальный характер с переименованием и переписыванием кода целиком. Могу ссылаться только на свой опыт. А получилость так что при обновлении на новый релиз мне пришлось проверять и вылавливать "стационарные" изменения регистраторов, реквизитов, комманд и т.п. и ни одной проблемы с динамическими элементами/событиями сменой текстов запросов и тп. Может повезло-не спорю, но факт остается фактом.
Спасибо за рекоммендации
8. glek 112 28.01.13 17:30 Сейчас в теме
Насчет модифицирования запросов - спасибо. Почему то не пришел в голову такой метод
9. psamt1k 28.01.13 17:48 Сейчас в теме
Как раз начал задумываться над тем, как "изменять конфигурацию с минимум изменений".
Большое спасибо за статью!
С нетерпением жду следующей, с примерами!
10. MarSeN 976 28.01.13 17:54 Сейчас в теме
(9) Спасибо, следующая статья уже в процессе. В ней будет минимум описания и прикреплена маленькая самописная база примеров.
11. expert.1c8 28.01.13 19:23 Сейчас в теме
В принципе ничего нового, но такие статьи всегда актуальны и полезны, как напоминание

Если изменений в запросе много или изменился запрос в основной поставке,
то метод с СтрЗаменить() иногда только затрудняет обновление,
мне проще переопределять текст запроса ниже типового текста зароса.

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

А в остальном все указано верно и соответствует здравому смыслу и метод. рекомендациям 1с по этому вопросу )
12. Новенький_2209 28.01.13 19:41 Сейчас в теме
(11) expert.1c8, основная проблема при обновлении - это форма. При этом, казалось бы, т.к. форма управляемая, она полностью описываемая - почему в сравнении не указывать конкретные изменения в форме?...Я тоже не нашел никакого более или менее удобного инструмента для динамического создания элементов формы. Хотелось бы взглянуть на описываемую автором реализацию :)
13. script 227 29.01.13 02:10 Сейчас в теме
Могу только подтвердить справедливость всего описанного выше и поставить +.

Правда, маловато написано про формы.
На этом сайте присутствует замечательная статья
Методика переопределения и вызова обработчиков событий формы в 1С 8.
С первого раза идея, изложенная в статье, мне показалась сложной, но прочитав текст статьи 2 раза и код процедур, я осознал простоту и гениальность метода.
Теперь для изменения форм я использую такой подход:
1) Все доработки я делаю только на копиях форм. Т.е. если я меняю форму элемента или списка справочника, я всегда делаю копию оригинальной формы (например, script_ФормаЭлемента), устанавливаю ее основной, и только потом приступаю к доработке.
При обновлении, в разделе объединение и сравнение ... такой объект отобразится как измененный.
В свойствах такого объекта будет значиться, что изменена основная форма элемента.
Среди форм данного объекта появится "МОЯ" форма, а оригинальной формы не будет. Это значит что кроме моей формы, других изменений в объекте нет. Если же появляется и оригинальная форма, тогда становится понятным то, что поставщик внес свои изменения в данную форму и мы сможем увидеть отличия без наших доработок.
Далее принимаем решение, что проще? Перенести изменения в "Нашу" форму или скопировать обновленную, оригинальную форму и внести доработки повторно.
2) Элементы на форму я стараюсь поместить программно, но поскольку большинство моих конфигураций работают на обычных формах, такой подход не всегда реализуем или правильнее сказать, не всегда простой в реализации, но предпочтение я отдаю именно ему.
3) Это переопределение обработчиков событий элементов форм по, указанной в статье, методике.
santi___kr; МимохожийОднако; РоманКокарев; Новенький_2209; +4 Ответить
16. MarSeN 976 29.01.13 09:54 Сейчас в теме
(13) спасибо на ссылку по обработчикам. Хорошо то я ее не видел до текущего момента, так как, наверное, не заморачивался бы над своим механизмом. В итоге у меня подход к реализаии совсем другой, хотя методы установки и выполнения похожи, так как продиктованны возможностями платформы.
по п1. решение, по моему скромному мнению, интересное и, как вариант, может применяться должно при очень больших изменения форм. но в этом случае мы отказываемся от поддержки такой формы, а как следствие и вызываемых методов общих модулей (1С часто грешат тем что перекидывают из модуля в модуль и меняют параметры написаннх методов).
Небольшое дополнение здесь: если вы используете платформу 8.2 последних версий то для того чтобы не переопределять основную форму в метаданных есть подписка на событие менеджера объекта "ОбработкаПолученияФормы" в которой можно переопределить вызов основной формы.
14. Abadonna 3871 29.01.13 07:23 Сейчас в теме
Из опыта: умудрился подключить свою систему бюджетирования к БП 2.0, добавив только одну строчку в стандартной.
Все остальное - новые объекты.
15. ivs200999 29.01.13 07:31 Сейчас в теме
Подписки на события форм, существуй они, серьезно бы облегчили нам жизнь.
17. amadeus2011 29.01.13 09:55 Сейчас в теме
довольно таки интересная статья, есть что использовать и применить на практике. Вот только вопрос обновление нетиповой конфигурации до конфигурации с УФ все равно приходиться делать методом сравнить-объединить конфигурации
19. MarSeN 976 29.01.13 20:58 Сейчас в теме
(18) Хотелось бы увидеть аргументированную позицию
Буду рад прочитать статью ознакомиться с Вашей статьей и почерпнуть новые подходы, в чем я лично сомневаюсь.
Статья конечно не доработанна, но это не повод "так" о ней отзываться
20. GerHard 5 30.01.13 01:57 Сейчас в теме
Плюсик за приятное воспоминание о наивной молодости ;-))

ИМХО: код и формы лучше вообще не трогать, если хочешь их потом обновлять типовыми...
Стараться обходится внешками и максимум новыми объектами.
Igor030370; +1 Ответить
25. MarSeN 976 30.01.13 15:08 Сейчас в теме
(20) Спасибо за плюсик )
(20)(22)(23)
Конечно же в статье я не рассматривал вопросы с простыми случаями, ситуации когда можно и нужно делать новые документы, либо возможность использования дополнительных реквизитов и сведений. Речь шла о том, когда у вас "нет выбора" либо нецелесообразно создавать новые объекты.
К примеру у вас есть Заказ поставщику и часть его строк связана к "примеру в поступлением" ч/з код строки (пример надуманный, но имеет место быть. конфа УТ11). И клиенту нужно чтобы: эти строки выделялись в таблице
каким либо цветом и система не давала удалить и менять эти строки. Не думаю что в этом случае целесообразно создавать новый документ или новую форму, которые поддерживать придется. В моем случае будут произведены след. изменения: 1. в процедуре ПриСозданииНаСервере в конце процедуры будут добавлены примерно такие вызовы.
//добавляем динамически реквизит формы
// прописанно в макете "ДинамическиеРеквизитыФорм" служебной обработки "Служебная"
ДинамическиеЭлементыКлиентСервер.СоздатьДинамическиеРеквизиты(ЭтаФорма);
//подключаем подписки на события
ДинамическиеЭлементыКлиентСервер.ПодключитьОбработчики(ЭтаФорма);
//применяем условное оформление
УсловноеОформлениеФорм.ЗаказФормаДокумента_ПрименитьУсловноеОформление(ЭтаФорма);

и еще 2 процедуры-шаблона обработчиков событий (я прописываю эти шаблоны в самом начале)
&НаКлиенте
Процедура ПодключаемыйОбработчик_ТоварыПередНачаломИзменения(Элемент, Отказ)

МассивИнструкций = ДинамическиеЭлементыКлиентСервер.ПолучитьИнструкцииПереопределаемыхОбработчиков(ЭтаФорма, "ТоварыПередНачаломИзменения");

Для Каждого Инструкция из МассивИнструкций Цикл
Выполнить(Инструкция);
КонецЦикла;

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

&НаКлиенте
Процедура ПодключаемыйОбработчик_ТоварыПередУдалением(Элемент, Отказ)
МассивИнструкций = ДинамическиеЭлементыКлиентСервер.ПолучитьИнструкцииПереопределаемыхОбработчиков(ЭтаФорма, "ТоварыПередУдалением");

Для Каждого Инструкция из МассивИнструкций Цикл
Выполнить(Инструкция);
КонецЦикла;
КонецПроцедуры

Дальнейшый код будет существовать вне "поддерживаемых" объектов системы.

Другой пример в документе с таблицей товаров рядом с количеством выводить колонку кратности указанного количества. т.е. если 10 шт. товара а основная упаковка 8 штук в кратности должно быть "1,25(8/16)" и эта строка подсвечивалась. Решается таким же набором изменений. только шаблонов будет не один а 3-4. Шаблоны меняются только наименованием и строковым параметром внутри процедуры.

Я готовлю конфу с примерами в которой приведу примеры использования мое подсистемы динамических объектров и событий
21. alex_bob 222 30.01.13 07:42 Сейчас в теме
Эx...Хорошо бы, если бы кто-нибудь раскрыл тему "ОБЪЕКТЫ СИСТЕМЫ БЕЗ ЧЕТКОГО ОПИСАНИЯ МЕТОДИКИ ИЗМЕНЕНИЙ"
23. alekseies 30.01.13 10:32 Сейчас в теме
Хотелось бы побольше услышать о динамическом переопределении и добавлении обработчиков событий управляемой формы....
24. fnv 30.01.13 11:23 Сейчас в теме
Если запрос глобально поменяется при обновлении, то при доработке с использованием закомментированных вставок легче будет понять, что конкретно было доработано, чем через "СтрЗаменить". Имхо. А вообще, вопрос поднят важный. Сталкивалась с обновлением нетиповой, когда даже печатные формы не были сделаны внешними, а вносились изменения непосредственно в макеты, вот это перебор уже:(
26. Den_D 54 30.01.13 16:21 Сейчас в теме
Какие бы ни были споры по поводу полезности статьи, я считаю, что это очень хороший, благодарный труд. Автору спасибо.
27. LexSeIch 208 31.01.13 07:06 Сейчас в теме
Мир этому дому! Статья безусловно полезна и сама тема актуальна. Каждый двигается своим путем, наступая на грабли и получая шишки, но в конце концов рождается решение, и оно работает. Чужой опыт бесценен. Я думаю, что статья будет расширяться, обретая новые направления и примеры.
34. aegoncharov 03.02.13 12:02 Сейчас в теме
При модификации типовой надо понимать, что "минимальное изменение типовых объектов и кода" не есть основной критерий, который определит трудоемкость последующих обновлений.

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

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

Если нам надо внести изменения в программу, то мы должны внести их так, что при обновлении было сразу видно что они, собственно, внесены, а также куда именно они внесены, и зачем они внесены.
KapasMordorov; +1 Ответить
35. MarSeN 976 04.02.13 07:19 Сейчас в теме
(34) К сожалению, не совсем понял Вашу позицию. Вроде Ваши слова не расходятся с описанной в статье методикой, но ощущения посте прочтения остались, как-будто Вы не согласны со статьей.
36. aegoncharov 04.02.13 11:02 Сейчас в теме
(35) Да, по сути не расходится.
Но пункт №3 лучше переименовать, назвать не "Отказ от «непосредственного» изменения текстов запросов.", а что-то вроде "Модификация запросов при помощи СтрЗаменить()".
Поясню: в статье, по сути предлагается отказ как от
1.непосредственного изменения,
так и от
2. копирования
и предлагается 3-ий метод - СтрЗаменить().

А сейчас из названия пункта №3 возникают ощущения, что предлагается именно отказ от неопосредственного изменения запроса.

Еще я б конечно поспорил насчет того, какой вариант лучше, 1 или 3, но про это уже было выше :)
37. MarSeN 976 04.02.13 11:15 Сейчас в теме
(36) Спасибо, что разъяснили Вашу позицию.
Учту замечания при корректировке статьи, которая будет обязательно произведена на основаниии Ваших замечаний и других "высазавшихся".
Так же планирую дополнить статью - так сказать по максимуму заполнить "белые пятна"
38. kereo 56 05.02.13 11:21 Сейчас в теме
У меня скорее вопрос, чем утверждение. А не проще вместо СтрЗаменить добавить вызов процедуры в общем модуле, где будет осуществлена замена текста запроса и (если необходимо) указаны значения дополнительных параметров?
39. MarSeN 976 05.02.13 20:15 Сейчас в теме
(38) Это всего лишь подход. Я задумывался по процедуре, только хотел чтоб она по определенной константе проверяла на то что сделала изменения в запросе. Нужно это только 1 раз при обнновлении конфигурации чтоб понять "отработала" ли замена корректно. если после выполнения стрЗаменить запрос не изменился тогда Сообщать
40. aegoncharov 06.02.13 07:15 Сейчас в теме
(38) Смотрите сами. Сделали вы так. В следующем обновлении 1С внесла в свой запрос некоторые изменения, допустим исправление критичной ошибки. Вы при обновлении видите свое изменение, переносите вызов подменяющей запрос процедуры. Исправление критичной ошибки пройдет мимо, если вы конечно не будете специально анализировать на изменение поставщиком все такие места, где производили дублирование типового кода.
41. MarSeN 976 06.02.13 11:01 Сейчас в теме
(40) Вы не поняли смысла подхода. В том то и дело что в моем случае я вношу только свой код, а в нем нет критических ошибок поставщика
42. kereo 56 06.02.13 11:39 Сейчас в теме
(40) aegoncharov, с таким же успехом, вы можете перенести замену подстроки, которая не будет работать...я в любом случае анализирую, что изменил поставщик в исправленном мною коде, иначе можно перенести кусок который с исправлениями поставщика будет работать еще хуже.
44. aegoncharov 07.02.13 07:33 Сейчас в теме
(42), (43) Я просто понял фразу "где будет осуществлена замена текста запроса" из (38) как то, что будет замена всего текста запроса.

А в СтрЗаменить один из минусов заключается в том, что заменяемых текст должен точно совпадать с куском текста запроса, вплоть до пробелов и прочих символов. Переформатируют текст - и пролетит СтрЗаменить мимо.
СтрЗаменить применительно к текстам запроса признаю только когда идет замена специально подготовленных меток, как это часто делается в типовых.
45. MarSeN 976 07.02.13 11:28 Сейчас в теме
(44) по точному соответсвию текста Вы совершенно правы. По этой причине я подумывал о спец. процедуре оберткекоторая сама бы проверяла произошла ли замена текста. К сожалению я не увидел ни одной из специально подготовленных меток в тех местах где мне они были нужы. В качестве меток я беру сущетвующую строку запроса и в замене заменяю на нее + свой текст.
46. aegoncharov 07.02.13 11:46 Сейчас в теме
(45) Метки это типа такого:

| //ДляРеглУчета СУММА(УчетЗатрат.ПостояннаяРазница) КАК ПостояннаяРазница,
| //ДляРеглУчета СУММА(УчетЗатрат.СтоимостьНУ) КАК СтоимостьНУ,
| //ДляРеглУчета СУММА(УчетЗатрат.КоличествоНУ) КАК КоличествоНУ,
|
| СУММА(УчетЗатрат.Стоимость) КАК Стоимость,
| СУММА(УчетЗатрат.Количество) КАК Количество
|
|ИЗ
| РегистрНакопления.УчетЗатрат%СуффиксРегл% КАК УчетЗатрат
|ГДЕ
| УчетЗатрат.Регистратор = &Регистратор

Используются для "ручной сборки" текста запроса.
В тех местах где они нам нужны их конечно не будет :)
47. q_i 419 11.02.13 18:58 Сейчас в теме
(46) aegoncharov, куда более удобны метки вида &<ИмяПараметра>, например:
ТекстЗапроса = "ВЫБРАТЬ &Поле ИЗ Справочник.Номенклатура ГДЕ &Условие";
а потом ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Поле", "Ссылка") и ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Условие", ?(ТолькоНепомеченныеНаУдаление, "НЕ ПометкаУдаления", "ИСТИНА")).
Такие метки не "слетают" при редактировании конструктором. имхо, их то как раз можно более-менее безобидно вставлять в "штатные" 1с-вские запросы.
48. MarSeN 976 11.02.13 19:06 Сейчас в теме
(47) Идея хорошая, но она реализуема только для условий и полей в запросе. Но что если надо вместо одного поля в запросе вывести другое, или присоеденить к текущей таблице еще одну?
А вообще идея состоит в том чтоб вообще не вносить никаких изменений в типовой запрос.
Что касается "они не "слетают" при редактировании конструктором" то зачастую, особенно в пакетных запросах 1С описывает наименование таблиц или вставляет комментарии и при использовании конструктора Вы теряете эти комменты.
49. ivanov660 2343 09.03.13 14:03 Сейчас в теме
(46) aegoncharov,
думаю, только для простейших случаев.
Если же рассмотреть задачи модификации алгоритмов проведения (к примеру, в модуле менеджера УТ 11 - инициализировать документ), то такой подход только усложнит разработку и понимание. Проще вызвать переработанный текст запроса полностью.
43. MarSeN 976 06.02.13 12:58 Сейчас в теме
(40)(42) тут конечно нужно написать в комметариях дополняющей/правящей запрос функции что именно Вы в нем коректируете. Чаще всего это Ваш новый функционал, который вряд ли пересечется с дорабтками 1С.
Если Вы сами исправляете критическую ошибку 1С, то, наверное, правильнее править вносить изменения непосредственно в запрос с описанием типа "исправление такой-то ошибки" в надежде что ее поправят в послед. релизах. В этом случае Вы при объединении увидите и смодете проанализировать изменения на устранение оной.
50. nataon 29.04.13 13:25 Сейчас в теме
Статья полезная, слов нет, но много уже статей на эту тему и нет ничего нового в статье
51. a-novoselov 1119 23.05.13 17:47 Сейчас в теме
(0) А зачем такой геморрой с формами? В большинстве случаев проще скопировать форму поставщика, назвать ее Измененная_ФормаДокумента, назначить ее основной и править все в ней. Правда при обновлении нужно будет руками вносить изменения поставщика в свою форму, но для сопровождения будет намного нагляднее что зачем сделано. И в 99% случаев форма будет работать без внесения изменений поставщика. А с программной привязкой обработчиков и элементов формы при неумелом обновлении (а чаще всего обновлять отдают низкоквалифицированному персоналу) форма может перестать открываться и вываливаться с ошибкой, если например поставщик переименовал один из элементов, к которому привязка устанавливается программно...
52. MarSeN 976 23.05.13 20:05 Сейчас в теме
(51) a-novoselov,
А геморой именно в
... Правда при обновлении нужно будет руками вносить изменения поставщика в свою форму...

Плюс к этому нужно будет как-то сверить уже 3 формы: старую от поставщика, новую от поставщика и новую с Ващими изменениями. Не очень приятное занятие, по крайней мере для меня.
Если еще принять во внимание тот факт, что 1С, зачастую, любить изменять формы до неузнаваемость, как это происходит на УТ 11 - я Вам не завидую.
В случае днамического добавления реквизитов на форму и динамических обработчиков максимум что произойдет - это ошибки при открытии формы о не найденных элементах формы с которыми очень легко разобраться.
Надеюсь я ответил на Ваш вопрос.
53. a-novoselov 1119 24.05.13 17:43 Сейчас в теме
(0)
... На программном создании элементов форм особо останавливаться не стоит, так как примеров и механизмов написано достаточно. Нужно только выбрать подходящий для себя. Я писал свой. Список добавляемых элементов хранится в макете. Вызов процедуры общего модуля происходит в процедуре ПриСозданииНаСервере(). При таком подходе я добавляю новые реквизиты в модифицируемый объект, прописываю вызов процедуры динамического создания элементов и добавляю в макет описание добавляемого реквизита. На все уходит не более 5 минут. ...

А можно для полноты в статью добавить ссылки, где есть примеры и механизмы?
54. MarSeN 976 24.05.13 17:56 Сейчас в теме
(53) a-novoselov,
Да, статью буду дописывать, так сказать, закрывать "белые пятна".
по моему механизму Вы можете ознакомиться, пройдя по ссылке http://infostart.ru/public/171514/.
В ней есть демо-конфигурация описанная в статье.
Жду Вашего мнения )
a-novoselov; +1 Ответить
55. serge_focus 4 24.08.13 20:38 Сейчас в теме
Идеи в статье описаны интересные,
думаю пригодятся. ПЛЮС однозначно.
56. Maxisussr 17.02.14 16:21 Сейчас в теме
Программное редактирование форм для типовых на поддержке - возможно хорошее решение. А как быть со сложными формами, в которых 10 закладок, и на каждой таблицы, макеты, со своими полями и расположением + привязки? Это же замучаешься их описывать в коде и подгонять положение элементов формы.
57. MarSeN 976 17.02.14 21:07 Сейчас в теме
(56) Maxisussr,
Что касается форм, нужно не решать проблему не в лоб, а универсальными механизмами. Для обычных форм у меня нет решения. Для УФ есть и оно опубликовано на инфостарте.
59. u_n_k_n_o_w_n 42 14.08.19 13:46 Сейчас в теме
(57) , С обычными формами также легко работать, если их модифицировать на программном уровне.
58. pfihr 336 18.02.14 18:30 Сейчас в теме
Самый легкий способ делать минимальные изменения - вообще не использовать типовые конфигурации :)))))
Оставьте свое сообщение

См. также

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    35782    ids79    40    

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

Математика и алгоритмы Учет ТМЦ v8 1cv8.cf Оптовая торговля, дистрибуция, логистика Россия УУ Бесплатно (free)

Особенности учета партионной системы при наличии двух количественных показателей.

26.03.2020    3520    lastcontra    5    

Treemapping — способ визуализации данных древовидной структуры. Карта-схема дерева

Математика и алгоритмы Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

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

18.02.2020    5072    randomus    20    

[После]Новогодние задачи

Практика программирования Математика и алгоритмы v8 Бесплатно (free)

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

30.12.2019    3114    Alxby    23    

Как работает серверный вызов в 1С Промо

Математика и алгоритмы v8::УФ Бесплатно (free)

Клиент-серверная архитектура заложена в платформе изначально — со времен «1С:Предприятие 8.0». Однако при разработке на 8.0 и 8.1 о разделении кода на клиентскую и серверную часть можно было не заботиться, поскольку на клиенте (на толстом клиенте) был доступен тот же функционал, что и на сервере. Всё изменилось с выходом платформы «1С:Предприятие 8.2», когда появился тонкий клиент. Теперь на клиенте доступен один функционал, на сервере — другой. Клиент и сервер «общаются» между собой с помощью серверного вызова. Конечно, это усложнило процесс разработки, но с другой стороны – можно создавать более оптимальные (быстрые) решения, поскольку все сложные задачи выполняются на сервере.

18.11.2017    57635    pahich    82    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    30262    YPermitin    24    

"Хочу универсально!" [Часть 1]

Математика и алгоритмы Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

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

02.09.2019    10000    SeiOkami    35    

Иерархия без "В ИЕРАРХИИ"

Математика и алгоритмы v8 Бесплатно (free)

Говорится о том, как эффективно представлять иерархию в СУБД, как получать и использовать эти представления при решении задач в запросной технике. Уточняются и дополняются запросы из статьи "Уровни, глубина, прародители, циклы и аналоги запросом" [https://infostart.ru/public/160707/].

22.08.2019    12777    ildarovich    21    

Будни автоматизации или "мне нужна программка для 3D упаковки" Промо

Практика программирования Математика и алгоритмы Оптовая торговля Оптовая торговля v8 1cv8.cf УУ Бесплатно (free)

Автоматизация отечественных предприятий, которой приходиться заниматься, это нужная и высокооплачиваемая, но довольно нервная работа. Выручает юмор. Например, при общении с требовательным клиентом можно вспомнить анекдот: "Держась руками за стену, на ногах еле стоит мужик. К нему пристает ребенок: "Ну, папа, пожалуйста, сделай мне кораблик!", папа отвечает: "Ага! - Сейчас все брошу и пойду делать тебе кораблик!". Про один такой сделанный для клиента "кораблик" и хочется рассказать. Надеюсь, совместное погружение в теплое ламповое (то есть клиентоориентированное) программирование доставит Вам положительные эмоции, да и задача попалась интересная. Поплыли?

24.03.2014    45525    ildarovich    116    

EnterpriseData – часть 3. Загрузка данных, идентификация объектов

Практика программирования Математика и алгоритмы Перенос данных из 1C8 в 1C8 Разработка v8 v8::УФ 1cv8.cf Бесплатно (free)

Основные этапы загрузки данных через EnterpriseData. Идентификация объектов загружаемых полностью и по ссылке. Приведены схемы процессов загрузки данных. Описание основных операций и обработчиков. Перечень процедур БСП, используемых при загрузке данных, структура «КомпонентыОбмена».

22.08.2019    15542    ids79    8    

Обработчики событий при записи объектов. Зачем и что за чем?

Математика и алгоритмы v8 Бесплатно (free)

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

25.07.2019    59219    AlbinaAAA    28    

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

Математика и алгоритмы Практика программирования Разработка v8::ОУ ERP2 УТ11 Россия УУ Бесплатно (free)

В свое время, когда только начинал шаги в 1С и изучал, как проводятся документы в конфигурациях на платформе 1С по книге "Разработка управляемого интерфейса" (Хрусталева Е.Ю.), и там были представлены примеры совсем далекие от того, как сейчас проводятся документы в современных конфигурациях от 1С.

24.07.2019    28489    skv_79    35    

Приемы обработки больших данных в 1С Промо

Универсальные обработки Математика и алгоритмы Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

Рассказ об эффективных приемах организации обработок больших объемов данных на платформе 1С

07.08.2015    67795    tormozit    27    

FizzBuzz на 1С. Чем короче, тем веселее. Варианты принимаются...

Практика программирования Математика и алгоритмы Разработка v8 Бесплатно (free)

Мне было скучно, я не мог себя заставить написать ничего полезного. И читал статью на Хабре. Потом я читал комментарии, а потом... нет я не ушел смотреть котиков на ютюбе. Я решил сделать несколько решений задачки FizzBuzz на 1С, с целью "чем короче, тем лучше". Прошу сильно не пинать, это просто развлечение для вечера.

24.07.2019    5530    vandalsvq    16    

Управление качеством кода

Математика и алгоритмы Рефакторинг и качество кода v8 Бесплатно (free)

О SonarQube, АПК, EDT. Какие преимущества дает их использование. Для каких команд подходит.

22.07.2019    16955    Stepa86    33    

Что делает "В ИЕРАРХИИ" в запросе?

Математика и алгоритмы v8 Бесплатно (free)

Описание действий платформы 1С при использовании конструкции "В ИЕРАРХИИ" в запросах.

16.07.2019    28991    YPermitin    34    

XDTO - это просто Промо

Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

С появлением платформы 8.1 фирма “1С” представила механизм, носящий интригующее название XML Data Transfer Objects или, если коротко - XDTO. По традиции, документирование механизма составлял тот, кто хорошо разбирался в вопросе, а стало быть опустил “и так понятные” с его точки зрения моменты. Целью данной статьи (или цикла статей, как получится) стало желание поделиться накопленным опытом. Мне кажется, многие неочевидные вещи в механизме XDTO необходимо осветить получше.

24.12.2012    299573    Evil Beaver    175    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    55768    ids79    25    

Реализуем Стек, Очередь и Приоритетную очередь в 1С

Практика программирования Математика и алгоритмы v8 1cv8.cf Россия Бесплатно (free)

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

24.06.2019    14472    RonX01    65    

Почему вообще работает мой запрос? или Ещё раз о планах запросов

Математика и алгоритмы Практика программирования Разработка v8::Запросы Бесплатно (free)

Другие статьи на эту тему объясняют, что такое план выполнения запроса, но не рассказывают о том, как его получить. Эта заметка призвана заполнить этот пробел. Её цель - популяризировать общедоступные инструменты получения плана запроса среди разработчиков, которые ещё не начали их использовать.

10.06.2019    9533    DataReducer    12    

Самоучитель языка запросов 1С. Промо

Практика программирования Решение задач на 1С:Специалист Математика и алгоритмы v8 v8::Запросы Бесплатно (free)

Сервис для изучения запросов 1С: "Консоль изучения запросов 1С:Предприятие 8". Теперь и с конструктором запросов!

07.05.2013    110844    bpc222    327    

Организация хранения промежуточных данных

Математика и алгоритмы v8 Бесплатно (free)

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

29.05.2019    4273    scientes    1    

Вычисление 200 тысяч знаков числа pi

Математика и алгоритмы v8 Россия Бесплатно (free)

В статье рассматриваются возможности платформы выполнять сверхточные вычисления без использования сложных алгоритмов и внешних компонент на примере вычисления числа pi.

28.05.2019    8135    Oleg_nsk    96    

Регистры накопления. Виртуальные таблицы. Часть №1: Обороты

Практика программирования Математика и алгоритмы Разработка v8 1cv8.cf Бесплатно (free)

Описание работы платформы 1С:Предприятие 8.2 с виртуальной таблицей "Обороты" регистров накопления.

20.05.2019    29946    YPermitin    8    

Решение транспортной задачи запросом Промо

Математика и алгоритмы v8 Бесплатно (free)

Списание по двум последовательностям партий запросом (без программной обработки)

1 стартмани

30.04.2014    35361    bforce    22    

Даем названия переменным: как префиксы экономят наше время

Практика программирования Математика и алгоритмы Разработка v8 Бесплатно (free)

Понятные названия переменных экономят время и силы разработчика : в начале, когда мы даём названия переменным, в процессе развития разработки, когда мы "на лету" понимаем назначение той или иной переменной, в конце, когда мы передаём разработку на поддержку других программистов, сами переходя к новым разработкам

06.05.2019    7252    Designer1C    81    

Заметки по SQL: Срез последних - аналог запроса

Математика и алгоритмы Практика программирования v8 1cv8.cf Россия Бесплатно (free)

В статье описывается создание среза последних данных средствами классического языка запросов. Причем метод построения запроса был разработан еще во времена, когда автор работал с СУБД Oracle 9i и программировал на PL SQL. Основная идея заключается преобразовании запроса с подзапросом, в запрос без подзапроса (в примерах описывается преобразование до двух вложенных подзапросов). Запросы тестировались на реальных базах данных. Платформа - 1С:Предприятие 8.3 (8.3.10.2561).

15.01.2019    12177    IVC_goal    7    

Парсер запросов 1С. Часть 1: Введение, разбор математических выражений Промо

Математика и алгоритмы v8 Бесплатно (free)

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

1 стартмани

04.12.2013    30823    juntatalor    49    

Многопоточное восстановление последовательностей

Производительность и оптимизация (HighLoad) Практика программирования Математика и алгоритмы Универсальные функции v8 Бесплатно (free)

Универсальный алгоритм многопоточного фонового восстановления любой последовательности.

05.12.2018    13558    _ASZ_    33    

Основные понятия и механизмы оптимизации клиент-серверного взаимодействия в 1C

Математика и алгоритмы Практика программирования v8 Россия Бесплатно (free)

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

23.08.2018    39841    Rain88    48    

Теорема номер тринадцать

Математика и алгоритмы v8 Бесплатно (free)

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

15.03.2018    12178    vasilev2015    24    

Сервис для изучения методов платформы 1С:Предприятие 8. Бесплатно! Промо

Практика программирования Решение задач на 1С:Специалист Математика и алгоритмы v8 Бесплатно (free)

Бесплатный ON-Line сервис изучения методов платформы 1С:Предприятие 8. Подготовка к аттестации 1С:Специалист on-line! Тестовые задания по различным видам учета! Подсказки для оптимального решения!

27.06.2013    50251    bpc222    52    

"Взлом" теста "1С:Профессионал" методом машинного обучения

Практика программирования Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

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

12.03.2018    19433    ildarovich    19    

Введение в CI для 1С

Математика и алгоритмы v8 Россия Бесплатно (free)

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

21.11.2017    23944    real_MaxA    22    

#Область ВНЕШНИЕ_ВЫЗОВЫ или MVC в 1С, библиотечность и упрощение интеграции кода

Практика программирования Математика и алгоритмы Универсальные функции v8 Бесплатно (free)

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

12.10.2017    18018    for_sale    58    

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

Математика и алгоритмы v8 Бесплатно (free)

Данная публикация предназначена для начинающих разработчиков и является продолжением статьи "Обработчики событий при записи объектов. Зачем и что за чем?" (ссылка далее). Содержит пример использования несколько обработчиков событий для решения одной задачи и объясняется почему выбраны именно они.

27.09.2012    195209    AlbinaAAA    65    

Пишем игру Минер. Обработка событий ActiveX в 1С

Практика программирования Математика и алгоритмы v8 Россия Бесплатно (free)

Пример демонстрирует обработку событий генерируемых компонентой ActiveX в 1С.

29.05.2017    14856    user621724_Dimav1979    12    

Как я доступ на kb.1c.ru получал

Решение задач на 1С:Специалист Математика и алгоритмы v8 Россия Бесплатно (free)

kb.1c - база знаний по технологическим вопросам крупных внедрений и не только. В этой базе знаний собираются методики и решения технологических проблем эксплуатации 1с, check-list'ы и инструкции по настройке ПО на серверах. Какие-то из размещенных статей дублируются на ИТС. Когда я искал пути получения доступа к нему я столкнулся с проблемой: мало кто доподлинно знает как получить доступ к нему, не работая у франчайзи 1с. Я опишу путь, который прошёл я, как физическое лицо.

01.05.2017    26481    ikekoval    34    

Улучшение стандарта "Структура модуля"

Математика и алгоритмы v8 1cv8.cf Россия Бесплатно (free)

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

26.03.2017    14521    o.nikolaev    23    

Альтернативные способы работы с XML. Часть 2: Введение в xPath или запросы к XML Промо

Обмен через XML Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

В предыдущей статье "Введение в DOM или объектная модель документа" было описано понятие объектной модели документа (DOM), раскрыты плюсы и минусы использования модели при разборе файлов XML, приведено сравнение с построчным последовательным разбором. Были представлены варианты выборки данных с помощью объекта 1С ДокументDOM. Теперь настало время познакомить читателей с самым, на мой взгляд, интересным способом извлечения данных из XML - при помощи языка запросов xPath.

09.08.2012    42404    1cspecialist    13    

"Распределение в запросе" или "избавляемся от перебора"

Математика и алгоритмы Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

Хороший перебор - это отсутствие перебора. Рассмотрим пример замены полного перебора запросом.

16.12.2016    34492    alexandersh    48    

Планы обмена. Квитировать или гарантировать?

Практика программирования Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

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

12.12.2016    17573    zhichkin    9    

Некоторые принципы оптимизации запросов 1С (+SQL)

Математика и алгоритмы v8 Бесплатно (free)

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

17.11.2016    10883    ture    40    

От Hello world - к защите конфигураций за 1 минуту Промо

Защита и шифрование Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

Вы всегда хотели но боялись создать COM объект? Тогда мы идем к вам! С обычным блокнотом, где будем программировать на c#, и таймером ...

19.05.2012    35156    O-Planet    130    

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

Математика и алгоритмы v8 Беларусь Украина Россия Бесплатно (free)

Рассмотрены способы доработок типовой конфигурации 1C для различных изменений, и на картинках продемонстрирован подход к разработке с использованием git и частично с тестами.

11.10.2016    209430    pumbaE    31    

Оптимизация запросов 1С:Предприятие – от теории к практике

Практика программирования Математика и алгоритмы v8 Бесплатно (free)

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

07.10.2016    38895    bpc222    20    

Регистры сведений 1С. Как это устроено.

Математика и алгоритмы v8 Бесплатно (free)

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

05.08.2016    193985    Sergey.Noskov    156    

Новые функции СКД 8.2.14 Промо

Математика и алгоритмы v8::СКД 1cv8.cf Россия Бесплатно (free)

Демонстрация новых функций СКД 8.2.14

29.06.2011    217844    fishca    51    

Переводим расширения на 8.3.8. Памятка.

Практика программирования Математика и алгоритмы v8 Россия Бесплатно (free)

Типовые конфигурации переходят на новую платформу 8.3.8 без режима совместимости. А значит нужно переделывать расширения под эти условия. В статье небольшая памятка о переводе расширения на 8.3.8

29.07.2016    47806    mrXoxot    12    

Подобие Объектно-ориентированного программирования в 1С (ПООПс)

Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

Статья для тех кто знаком с ООП и опустил руки.

24.07.2016    12631    adam26    54