Совершенный коТ (Cat complete)

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

Разработка - Практика программирования

Стандарты программирования в картинках. Самоирония прилагается.

 

 
1.

 

 
2.

 
3.

 
P.S.

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

Вознаграждение за ответ
Показать полностью
Комментарии
В избранное Подписаться на ответы Сортировка: Дата
150. user826364 07.09.20 21:39 Сейчас в теме
(32)
В эту же тему...
Есть книга "чистый код" Роберт Мартин. Если "Совершенный код" впечатлил, то и эта должна зайти.

П.с. с большим интересом читаю ваши публикации.
149. Rustig 1665 15.06.19 20:39 Сейчас в теме
(11)
А они заложили в платформе, что тащится весь справочник Контрагентов со всеми табличными частями? Может быть, стоит им написать, чтобы они улучшили свой алгоритм и не извлекали лишнего?


http://forum.infostart.ru/forum34/topic210462/message2229287/#message2229287

Добавили бы в конфигуратор для всех реквизитов признак "Вызов через точку" - чтобы не тащить все остальные поля при такой конструкции "Контрагент.ИНН".
148. Rustig 1665 15.06.19 20:25 Сейчас в теме
(1)
объектное извлечение данных хуже , чем по запросу? хотелось бы узнать


https://infostart.ru/public/1003601/
147. Rustig 1665 11.06.19 11:41 Сейчас в теме
(146) я не спорю. вы все правильно пишите.

(146)
Я не очень понимаю, почему вы считаете, что тут дело в стандартах кода


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

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

давайте закроем тему.
OerlandHue; +1 Ответить
146. OerlandHue 11.06.19 06:27 Сейчас в теме
(145)
ются о принципах кодинга!
...бывают проекты, когда по приоритетам внедрить как

Я не очень понимаю, почему вы считаете, что тут дело в стандартах кода. Не использовать запрос в цикле при печати массива документов это не стандарт кода, это элементарно квалификация, во всех типовых так применяется. Да и код не усложняется, по крайней мере, если написал так хотя бы два три раза. Писать ПолучитьЗначениеРеквизита не вопрос стандарта, это вопрос того, как будет ваше приложение медленно работать.
Да, некоторые не знают, что запрос в цикле нужно избегать, но это не вопрос к их стандартам, это вопрос к квалификации. Кто хоть раз делал замеры по производительности, на любой базе, тот всегда будет писать один запрос для всех объектов.
145. Rustig 1665 09.06.19 00:28 Сейчас в теме
(137) верно !
но команды разработчиков сами договариваются о принципах кодинга!
...бывают проекты, когда по приоритетам внедрить как можно скорее важнее, чем оптимизация кода... разным целям - разные подходы
144. Rustig 1665 09.06.19 00:25 Сейчас в теме
143. Rustig 1665 09.06.19 00:24 Сейчас в теме
142. Rustig 1665 09.06.19 00:22 Сейчас в теме
(132) вот здесь почитайте https://infostart.ru/public/1043307/
иногда запрос в цикле - единственный способ решить задачу
не будьте так категоричны в высказываниях!
141. amd1986 06.06.19 11:45 Сейчас в теме
(137) Я же написал. Для разных задач - разный подход. Сколько процентов от всех баз 1С - приличные базы? Не имеет смысла для малых баз писать идеальный код. Это лишние трудозатраты. Только если для узких мест.
140. TODD22 18 06.06.19 11:30 Сейчас в теме
(136)
Почему тут плохо использовать Структура и ТаблицаЗначений?

Указание типа переменной в языке с динамической типизацией может ввести в заблуждение относительно её типа.
Ничего плохого нет в переменной тзПредварительная, плохо когда начинают весь код писать в таком стиле, придумывают целую систему типов, начинают в название переменной добавлять префиксы означающие простые типы и тд.
OerlandHue; mivari; Fox-trot; +3 Ответить
139. vasilev2015 1986 06.06.19 11:22 Сейчас в теме
(136) Здравствуйте !

Использовать Структура и ТаблицаЗначений в наименовании не плохо и не хорошо.
Но в свежем коде производителя это как правило не используется.
OerlandHue; +1 Ответить
138. mishinas1987 26 06.06.19 10:03 Сейчас в теме
137. OerlandHue 06.06.19 09:54 Сейчас в теме
(89)


Как по мне, код нужно писать на идеально, а оптимально. Для разных задач может использоваться разный подход написания.
И да, не нужно слепо следовать стандартам 1С.


Эти оптимизации помогают на приличных базах сократить сотни секунд серверных вызовов. Вы недооцениваете эти рекомендации.
136. OerlandHue 06.06.19 09:41 Сейчас в теме
(73) В своей книге автор писал, что он не заставляет писать так, как он говорит, он лишь приводит свои примеры и примеры других известных программистов, почему так ему кажется удобнее. Я книгу давно читал, но не могу вспомнить, почему не стоит писать тип переменной перед ее параметром? Конкретно меня интересуют такие переменные типа "СтруктураПараметровПолученияПортфелейКонтрагентов" или "ТаблицаЗначенийПредварительнаяНовогоПортфеля". Почему тут плохо использовать Структура и ТаблицаЗначений?
135. SlavaKron 06.06.19 09:31 Сейчас в теме
(132) Вывод в печ. форму Ссылки вместо наименования - тот же запрос в цикле. Обращение к реквизиту через точку цикле - тот же запрос в цикле. Возможно, вы просто этого не замечаете.
Rustig; jif; pm74; +3 Ответить 1
134. Поручик 4471 06.06.19 09:22 Сейчас в теме
(78)
ОбщегоНазначения

ОбщегоНазначения тянет за собой ОбщегоНазначенияПовтИсп, ОбщегоНазначенияКлиентСерверный, а они в свою очередь кучу других. Это ещё полбеды, главное, мало кто изучает эти модули. Проще набыдлокодить.
133. dhurricane 05.06.19 15:49 Сейчас в теме
(132) Да легко :)
- не читайте литературы;
- исключите ревью кода.
- тестируйте на своей файловой базе с двумя-тремя объектами.

По моему опыту это примерно так происходит.
132. user1095163 05.06.19 15:45 Сейчас в теме
(101) это как надо приучить себя к говнокодингу чтобы писать запрос в цикле. Вот я хоть и знатный говнокодер, но запрос в цикле для меня это уже перебор...))
131. serge_focus 4 05.06.19 15:39 Сейчас в теме
(83) Поддерживаю!

Код мы читаем раз в сто больше, чем пишем. Порой приходится для одной строки прочитать целый фолиант. А это все ВРЕМЯ, а значит ДЕНЬГИ. А зачем все это надо можно почитать вбив в Гугле "чистый код". Наверное не зря признанные метры программирования столько пишут об этом. Огорчает, что низкий порог вхождения в профессию программист 1С тянет за собой тонны кода, с которым потом бизнесу приходится жить и оплачивать потраченное программистами время.
Rustig; ManyakRus; +2 Ответить
130. Darklight 27 05.06.19 15:29 Сейчас в теме
(105)Мне тоже очень нравится выравнивание. А для работы в 1С предпочитаю использовать ультраширокоформатные мониторы - и сразу ограничение в 120 символов длинны строки кажется неоправдоно жёстким.
129. Darklight 27 05.06.19 15:26 Сейчас в теме
(83)Да, в 1С очень не хватает псевдодекларативной техники организации выборок из БД (и не только из БД) по аналогии описанной Вами, или LINQ из C#
А вообще - будущее за декларативными языками описания бизнес логики - где написанные команды будут восприниматься как требования и намерения к достижению результата, а интерпретатор ещё на стадии конфигурирования будет их перекладывать на оптимальные внутренние инструкции к runtime-процессору (каким бы он ни был - оптимально сейчас - это LLVM-машина или Java runtime-машина, но можно и сразу в инструкции ЦПУ компилировать - хотя это плохая идея, уж лучше сначала в LLVM-код а уже на стадии выполнения делать JIT-компиляцию), с оптимизацией и распараллеливанием выполнения, при необходимости.
ManyakRus; +1 Ответить
128. Darklight 27 05.06.19 15:18 Сейчас в теме +0.2 $m
(127)
1) В том то и дело - что ТОГДА я располагаю на том же уровне что и ЕСЛИ - т.к. с моей точки зрения семантически это конструкции одного уровня выражения - слово ЕСЛИ открывает блок условий - слово ТОГДА - открывает блок основного тел условия - как слово ИНАЧЕ - открывает блок второй ветви тела ветвления. По аналогии с оператором
ПОПЫТКА
//Код тела попытки
ИСКЛЮЧЕНИЕ
//Код тела исключения

//Если бы 1С подерживало был бы и 3-й блок
//ЗАВЕРШЕНИЕ
//Код тела завершения алгоритма при любом исходе попытки
КОНЕЦПОПЫТКИ

аналогично и с циклами
ПОКА
//Условия
ЦИКЛ
//Тело цикла
КОНЕЦЦИКЛА

В современных языках такие конструкции всё чаще могут интерпретироваться как выражения и эти ключевые слова разделяют секции выражений. Секция ТОГДА никак не вложена в секцию ЕСЛИ - и поэтому должна быть на одном уровне с ней.
Но это мой мнение.

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

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

Кстати, передача параметров через структуру - это очень удобное решение - когда к функции добавляются новые параметры (не обязательные для всех уже используемых месть вызова функции) - что позволяет не переписывать код (и уж тем более когда они удаляются, или переставляются).
Более того данное решение просто обладает невероятной мощью - когда используется сквозная структура передачи параметров сразу в несколько функций глубокой вложенности - особенно это удобно когда нужно расширить параметры глубоко вложенной функции и передать их где-то ещё сверху, в начальной точке вызова, чтобы не переписывать все вложенные функции среднего уровня вложенности. Это очень здорово помогает при интеграции доработок в конфигурации от других вендоров (не важно - используются расширения конфигураций или нет).
127. ManyakRus 416 05.06.19 13:41 Сейчас в теме
(113)
1) слово "Тогда" надо с отступом
2) аргументы с новой строки хорошо когда их больше чем 3-4 шт.
3) "именованные аргументы" - фигня какая-то
126. vasilev2015 1986 05.06.19 11:34 Сейчас в теме
125. UniversaLL 41 05.06.19 11:17 Сейчас в теме
(45)Исправили не совсем точно. У Вас "Pyton". И в Python'e всё таки 4 пробела, а не табуляция.
124. Dorosh 152 05.06.19 10:27 Сейчас в теме
(123) Давай не будем до абсурда доводить. Исходный тезис был, если ты забыл, что чтение запросом в примере из статьи не дает выигрыша в производительности. Что ты и показал в тесте, время на операцию < 0,01 сек Я еще не сошел с ума и не предлагаю запросы переписывать на объектное чтение.

Завтра твоя процедура очень кому-то понравится и он будет ее в цикле гонять...


А за такое надо бить по рукам не зависимо от стиля чтения в процедуре. Запрос в цикле это бяка в любом случае. Даже БСП-шный.
123. Dach 304 05.06.19 09:38 Сейчас в теме +0.2 $m
(118)

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

90 процентов всех "ускорений" решается убиранием объектного чтения
122. TODD22 18 04.06.19 18:49 Сейчас в теме
(121)
Еще лучше сразу писать код не нуждающийся в тестировании и отладке.

Любую ситуацию можно довести до абсурда.
Но в данном случае есть рекомендация и если ей придерживаться то вроде как исправлять потом не придётся.
121. Dorosh 152 04.06.19 18:47 Сейчас в теме
(120)
Так можно сразу писать "не через точку", без всякого фанатизма, тогда ничего искоренять и исправлять не придётся и можно спокойно заниматься оптимизацией и профилированием "горячего" кода.


Конечно лучше. Еще лучше сразу писать код не нуждающийся в тестировании и отладке. Недавно тут пробегал такой материал, как правильно прогов нанимать, там такое проповедовалось. Жаль что не всегда получается.
120. TODD22 18 04.06.19 18:40 Сейчас в теме
(119)
Время, потребное на искоренение всех обращений через точку, можно потратить более продуктивно. Например на профилирование и оптимизацию "горячего" кода

Так можно сразу писать "не через точку", без всякого фанатизма, тогда ничего искоренять и исправлять не придётся и можно спокойно заниматься оптимизацией и профилированием "горячего" кода.
CyberCerber; +1 Ответить 1
119. Dorosh 152 04.06.19 18:35 Сейчас в теме
(115) Подход в целом - использовать запросы вместо объектного чтения не оспаривается. Учение Ленина истинно, потому что верно! Предлагается в применении подхода не доходить до фанатизма. Время, потребное на искоренение всех обращений через точку, можно потратить более продуктивно. Например на профилирование и оптимизацию "горячего" кода
118. Dorosh 152 04.06.19 18:31 Сейчас в теме
(117) Привет Рома. Выше холиварили про объектное чтение vs запрос на разовой операции чтения. Непонятно, что ты хотел сказать своим примером? Зачем гонять цикл по СправочникВыборка вместо ВЫБРАТЬ Контрагент.ИНН ИЗ Справочник.Контрагенты?
117. Dach 304 04.06.19 18:21 Сейчас в теме
(114)

очень даже выйдет


ВремяНачала = ТекущаяДата();

СтрокаРезультата = мРезультатЗапроса.Выбрать();

Пока СтрокаРезультата.Следующий() Цикл

	Сообщить(СтрокаРезультата.Контрагент.Инн);
	//Сообщить(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СтрокаРезультата.Контрагент, "ИНН"));
	
КонецЦикла;	

ВремяВыполнения = ТекущаяДата() - ВремяНачала;
Сообщить(ВремяВыполнения);

Показать


3500 строк в выборке

36 секунд в первом варианте и 27 во втором.

Справочник "Контрагенты", как Вы изволили выразиться - "небольшой объект"
116. babys 83 04.06.19 18:12 Сейчас в теме
(49) "4. Список областей не входит в стандартные требования. Но применяется часто. "
Уже входит.
115. TODD22 18 04.06.19 18:12 Сейчас в теме
(114)
Поэтому для тривиальных случаев, типа примеров в статье, получить заметную разницу в производительности не выйдет.

Так обсуждается не конкретный пример, а подход в целом.

И сколько страниц будет прочитано SQL сервером при объектной модели если объект будет содержать несколько табличных частей?
А нам например нужны только значения реквизитов документа.
114. Dorosh 152 04.06.19 17:45 Сейчас в теме
(112) Мы при обоих техниках чтения получим одинаковую дисковую операцию - чтение 1 страницы с диска в память сервера. Для небольших объектов ессно. Поэтому для тривиальных случаев, типа примеров в статье, получить заметную разницу в производительности не выйдет.
113. Darklight 27 04.06.19 17:36 Сейчас в теме
(60)Мне нравится вот так писать условия (когда их больше 2,3-х)
Если ( Условие1=Значение1
     И Условие2=Значение2
     И Условие3=Значение2
     )
   ИЛИ Проверка1()
   ИЛИ Проверка2()
   ИЛИ Проверка3()
Тогда

КонецЕсли;
Показать


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

функция МояФункция( Аргумент1,
                    Аргумент2,
                    Аргумент3=неопределено,
                    Аргумент4=1)

     возврат "Результат";
КонецФункции

рез = МояФункция( Переменная1,
                  Переменная2.Поле1,
                  ,
                  6273);
Показать


Жаль 1С не поддерживает именованные аргументы - как многие из современных языков программирования - типа вот так:

рез = МояФункция( Переменная1,
                  Аргумент3:6273,
                  Аргумент2:Переменная2.Поле1);


Ну а про отсутствие в 1С кортежей - я вообще молчу :-(
Хотя динамические структуры - вещь очень полезная - предпочитаю их для передачи параметров!
112. TODD22 18 04.06.19 17:18 Сейчас в теме
(111)
1) Придирка. Утверждать что объектное чтение медленнее, поскольку вместе с нужным реквизитом тянется весь объект (если не учитывать кэш), а запрос читает только то что заказали немного некорректно. СУБД оперирует страницами. Для нашего любимого MS SQL по умолчанию 8 кб. При выполнении запроса на чтение скуль прочитает в память минимум 1 страницу. Что (скорее всего) с запасом перекроет разницу. Поэтому объявлять крестовый поход против объектного чтения все же не стоит. Код усложнится, а будет ли заметная выгода еще не факт.

Так и в первом и во втором случае SQL прочитает страницу. Объектный режим чтения это тот же запрос к БД.
Только в случае объектной модели платформа прочитает весь объект, создаст его структуру и тд. При чтении запросом мы получим только значение указанных нами реквизитов.
Или нет?
111. Dorosh 152 04.06.19 17:11 Сейчас в теме
К вопросу объектное чтение vs чтение запросом.
1) Придирка. Утверждать что объектное чтение медленнее, поскольку вместе с нужным реквизитом тянется весь объект (если не учитывать кэш), а запрос читает только то что заказали немного некорректно. СУБД оперирует страницами. Для нашего любимого MS SQL по умолчанию 8 кб. При выполнении запроса на чтение скуль прочитает в память минимум 1 страницу. Что (скорее всего) с запасом перекроет разницу. Поэтому объявлять крестовый поход против объектного чтения все же не стоит. Код усложнится, а будет ли заметная выгода еще не факт.

2) Не отмечено важное отличие 2 техник. Возможность читать запросом только РАЗРЕШЕННЫЕ данные. Есть ли на сайте люди, не наступившие ни разу на эти грабли? Когда разрабатываем - все хорошо, передаем изменения бесправным юзерам - пошли баги.
110. rinat_alp2 52 04.06.19 11:20 Сейчас в теме
(25) Добрый день, различие будет, если прочитать набор записей внутри внешней транзакции (при проведении) и потом записать. Разделяемая управляемая блокировка (накладывается при Набор.Прочитать()) превратится в исключительную (Набор.Записать()), а это потенциальный deadlock.

А с объектным чтением документа с табличными частями почему то не воспроизвелось, нет и все разделяемой управляемой блокировки. ))
109. vasilev2015 1986 04.06.19 09:31 Сейчас в теме
(108) Здравствуйте !

Мои коллеги, которые занимаются вопросами производительности, тоже в восторге.
108. rinat_alp2 52 04.06.19 09:25 Сейчас в теме
Интересно про SELECT…Version в технологическом журнале, спасибо.
107. kuzyara 1107 04.06.19 06:08 Сейчас в теме
(69) Поддержу по примеру 4,
Форматирование синтаксических конструкций
Текстовый редактор системы 1С:Предприятие предоставляет функции автоматического форматирования управляющих конструкций встроенного языка.

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

Встроенный инструмент форматирования предназначен для оформления управляющих конструкций встроенного языка и не умеет ни в один из пунктов https://its.1c.ru/db/v8std#content:444:hdoc:_top:перенос%20выражений .
Поэтому аппелирование к нему в данном случае считаю некорректным, а отступы конструктора запросов более каноничными.
serge_focus; ManyakRus; +2 Ответить
106. vasilev2015 1986 03.06.19 22:33 Сейчас в теме
(105) Может быть. Понаблюдаю еще пару лет ))
105. PerlAmutor 124 03.06.19 21:48 Сейчас в теме
(104)
На мой взгляд, это свидетельствует, что выравнивание вправо не является предпочитаемым методом.

Уже 3 года работаю с конфигурацией ERP и постоянно вижу, что такое выравнивание употребляется довольно часто. Вот из БСП.
Прикрепленные файлы:
104. vasilev2015 1986 03.06.19 21:12 Сейчас в теме
(103)
Здравствуйте !

* Что делать с частью выражения, переносимой на следующую строку
* Не выравнивайте правые части выражений присваивания (Как видите, актуально)
* Размещение каждого оператора на отдельной строке


Это тезисы из "Совершенный код". Первая строка - открытый вопрос, вторая - рекомендация. На сайте ИТС написано "допускается", а не "рекомендуется". На мой взгляд, это свидетельствует, что выравнивание вправо не является предпочитаемым методом.
103. PerlAmutor 124 03.06.19 20:13 Сейчас в теме +0.2 $m

Это спорная рекомендация. Строка есть строка, убирать отступ из текста запроса эквивалентно такой записи:

ИмяПеременной =
"https://its.1c.ru/db/content/v8std/src/200/200/i8100655.htm?_=1557240531";

Что не кажется правильным...


* Что делать с частью выражения, переносимой на следующую строку
* Не выравнивайте правые части выражений присваивания (Как видите, актуально)
* Размещение каждого оператора на отдельной строке

Первая строка из этой цитаты - рекомендация, утверждение, ошибка форматирования?
Вторая строка запрещает делать так?

// Неправильно?
Переменная              = Новый Структура;
ПеременнаПодлиннее      = Новый ТаблицаЗначений;
СовсемДлиннаяПеременная = Новый Запрос;

// Правильно?
Переменная = Новый Структура;
ПеременнаПодлиннее = Новый ТаблицаЗначений;
СовсемДлиннаяПеременная = Новый Запрос;
Показать


Без выравнивания правых значений код становится трудно читаемым и противоречит рекомендациям 1С - https://its.1c.ru/db/v8std#content:441:hdoc.
starik-2005; ManyakRus; +2 Ответить 1
102. charushkin 03.06.19 20:02 Сейчас в теме
(49) структура как аргумент - не просто тренд, а стандарт, описанный на ИТС. С телефона не найду ссылку, но там говорится про методы, имеющие большое количество параметров (ориентироваться следует на 5 и более)
Про список областей - то же самое: есть стандарт на ИТС.
ЗначениеРеквизитаОбъекта - исчерпывающую информацию можно получить прямо из описания метода (в том числе примеры вызова). Сигнатура и способы вызова не менялись очень давно, то есть, описанный пример актуален и для древних конфигураций
101. dhurricane 03.06.19 18:49 Сейчас в теме
(90) Строго говоря это неправда, потому и не "итак понятно". Банальный пример: простой запрос в цикле зачастую оказывается гораздо более ресурсоемкой операцией, нежели выполнение одного сложного запроса. И чем больше активных пользователей, работающих в базе, чем больше таких "мелочей" оказывается разбросанными в модулях конфигурации, тем более вероятно они складываются в одни общие "тормоза".
100. YFred 12 03.06.19 18:37 Сейчас в теме
А в чем собственно вопрос?
99. zeegin 91 03.06.19 18:35 Сейчас в теме
(93) Есть открытый плагин для сонара https://github.com/1c-syntax/sonar-bsl-plugin-community подключающий открытую реализацию LSP для BSL https://github.com/1c-syntax/bsl-language-server со своими реализациями проверок.
В него же можно загружать через generic issue результаты статанализа EDT https://github.com/oscript-library/edt-export-bugs и АПК https://github.com/otymko/acc-export тоже все открыто и бесплатно.
Alien_job; serge_focus; kuzyara; TODD22; +4 Ответить
98. TODD22 18 03.06.19 17:58 Сейчас в теме +0.4 $m
(97)
Я за автоматизированные средства.

Я то же.
Но не имея автоматизированных всё же надо стараться придерживаться правил самому.
97. vanoono 03.06.19 17:55 Сейчас в теме
(96) Я хочу сказать что самому контролировать это тяжело. Различных правил для модулей, процедур, функций мне кажется больше 200 можно собрать. Даже после долгой практики, всё равно умудряешься ошибаться. Человеческий фактор будет всегда присутствовать. Я за автоматизированные средства.
96. TODD22 18 03.06.19 17:01 Сейчас в теме
(95)
А должно быть бесплатно ?

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

Да "сразу" ничего не бывает. Инструкцию обычно читают или когда не получается или когда сломал.
95. vanoono 03.06.19 16:52 Сейчас в теме
(93) Это продукт, который должен использоваться в промышленной разработке ПО, естественно такие инструменты платные.
94. vanoono 03.06.19 16:50 Сейчас в теме
(92) Я как-то сидел, и думал, чем бы мне заняться и решил что буду программировать на 1С, сегодня решил, а на следующий день сразу запрограммировал, и сразу по стандартам 1С. Всему нужно учиться, и ко всему нужно привыкать это долгий и требующий усилий процесс. Сразу ничего не бывает.
93. TODD22 18 03.06.19 16:41 Сейчас в теме
(91)
Для подобного рода синтаксического контроля есть SonarQube

На сколько знаю продукт платный?
92. TODD22 18 03.06.19 16:41 Сейчас в теме
(91)
Выискивать код который написан "Не стандартно", по всей конфигурации, самостоятельно, сверяясь со всеми "стандартами" о которых было миллион раз написано на инфостарте, методолгами на сайте 1С и т.д не рационально и ОЧЕНЬ спорно и трудозатратно.

Можно писать код по стандартам сразу.
91. vanoono 03.06.19 16:34 Сейчас в теме
Хочу немного раскритиковать данную статью по некоторым параметрам.

1. Для подобного рода синтаксического контроля есть SonarQube (возможно есть еще что-то...), причем правил по написанию кода не 3 а, 233. Вплоть до отчетов по качеству когда и созданного технологического долга.
Выискивать код который написан "Не стандартно", по всей конфигурации, самостоятельно, сверяясь со всеми "стандартами" о которых было миллион раз написано на инфостарте, методолгами на сайте 1С и т.д не рационально и ОЧЕНЬ спорно и трудозатратно.

2. Дело не в "клиповом" мышлении, а дело в том, что 1 содержательная картинка, лучше чем 100 (или больше) слов. Именно по этому бизнес аналитики пользуются различными нотациями при описании бизнес-процессов, по этому инструкции для пользователей нарезаются из скриншотов, именно по этому вы подключаетесь к клиенту по удаленному доступу и смотрите в его экран, это удобно и информативнее. Именно по этому я дочитал эту статью до конца.

3. Тема с разыменованием полей не до конца раскрыта.
3.1 Когда вы пишете запрос следующего вида:
        |ВЫБРАТЬ
	|СУММА(Документ.Ссылка.ЕщеЧтоТо.Контрагент.ИНН) КАК Сумма
        

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

КодВалютыРубля = "000000001";
Рубль = Справочники.Валюты.НайтиПоКоду(КодВалютыРубля);



При таком написании не важно где вы используете этот стандарт например:
HTTPЗапрос = Новый HTTPЗапрос(СтруктураURI.ПутьНаСервере);

... получаем код возврата

НеверныйЗапрос = 400; //HTTP 400 Bad Request
Если Результат.КодСостояния = НеверныйЗапрос Тогда
         //что-то делаем
КонецЕсли;


И вот это правильно.

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

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

p.s. пока пиал комментарий, попытался перейти на ИТС и прочитать Соглашения при написании кода 1С, на что мне вернулась ошибка 404. В моем случае я даже не смог его прочитать, а не просто забыл использовать его в работе :)
Rustig; brr; +2 Ответить 2
90. ManyakRus 416 03.06.19 16:25 Сейчас в теме
(86) только из-за выполнения СЛОЖНЫХ запросов...
одно слово забыл написать, думал итак понятно
89. amd1986 03.06.19 16:25 Сейчас в теме
За исключением некоторых примеров - спорно. Читаемость кода ухудшается, что усложняет поддержку. Скорость разработки также ухудшается. Если смотреть со стороны франчей, то все так и должно быть. Сделать как можно сложнее, чтобы не слезли с крючка, а потом доить..

Как по мне, код нужно писать на идеально, а оптимально. Для разных задач может использоваться разный подход написания.
И да, не нужно слепо следовать стандартам 1С.
Rustig; Chai Nic; serge_focus; +3 Ответить 1
88. bulpi 179 03.06.19 16:15 Сейчас в теме
(77)
Извините за мой французский, но типовая УТ - говно. Без отношения к вопросу объектных чтений.
1С_Мастер; DoReMi; +2 3 Ответить
87. CyberCerber 753 03.06.19 15:15 Сейчас в теме
(84) Простите, но раз вы такое говорите, мне сложно будет вам что-то доказать. Прочитайте ссылки выше, которые давали в обсуждении объектного чтения. Также была недавно исследовательская статья на эту тему здесь на ИС.
86. dhurricane 03.06.19 15:14 Сейчас в теме
(84)
только из-за выполнения запросов
А разве в данной ветке обсуждается не запрос?
85. vasilev2015 1986 03.06.19 15:14 Сейчас в теме
84. ManyakRus 416 03.06.19 15:13 Сейчас в теме
(78) 1С "тормозит" только из-за выполнения запросов и операций записи.
Остальной код ускорять бесполезно,
а замусоривать код тем более не надо.
83. ManyakRus 416 03.06.19 15:11 Сейчас в теме
(77) в языке java тоже раньше делали такой "ускоряющий" код,
но теперь придумали новый псевдоязык Query DSL
смысл которого только в том что при неправильном написании имени поля(колонки БД) приведёт к ошибке в DesignTime(IDE,конфигуратор) а не в RunTime(у пользователей)
Просто 1С отстаёт лет на 5-10 от нормальных языков программирования.

Надёжность программы намного важнее чем скорость !
memb3r; serge_focus; Darklight; DoReMi; Daruma; +5 Ответить 2
82. TODD22 18 03.06.19 15:07 Сейчас в теме
(75)Это можно сделать с помощью конструктора в 3 клика мышкой.
81. CyberCerber 753 03.06.19 15:05 Сейчас в теме
(79) Почитал. Согласен, если параметров много, то следует сгруппировать их по структурам. Но про то, что нужно все функции делать с одним параметром, даже если их подразумевается три, не написано.
80. TODD22 18 03.06.19 15:04 Сейчас в теме
(74)
не надо думать что "сайт ИТС" более авторитетный чем википедия :)

1) Давно Вики стала авторитетным источником учитывая что вносить правки в неё может любой желающий, даже не имеющий опыта работы программистом?
2) В вопросе написания когда под 1С сайт ИТС куда авторитетнее чем Вики.
Sergynia; Артано; zeegin; CyberCerber; +4 Ответить
79. vasilev2015 1986 03.06.19 15:01 Сейчас в теме
(55) (53) (51)

Про аргументы в заголовке функции:

Правильно сгруппировать параметры, описывающие значения реквизитов номенклатуры, в структуру ЗначенияРеквизитов:

https://its.1c.ru/db/v8std#content:640:hdoc
78. CyberCerber 753 03.06.19 15:00 Сейчас в теме
(75) Люди, у которых "время-деньги", должны понимать других людей, что у них тоже "время-деньги", и не писать заведомо медленный и неправильный код.
Тем более, что в БСП это тоже делается одной строчкой, хоть и более длинной. А если конфа без БСП, стоит подумать хотя бы о переносе модуля ОбщегоНазначения. Там вообще много хороших функций.
77. vasilev2015 1986 03.06.19 14:52 Сейчас в теме
(75) Здравствуйте !

В типовой УТ 11 нет объектных чтений.

А нам нужно к этому стремиться.
76. vasilev2015 1986 03.06.19 14:48 Сейчас в теме
(74) Сайт производителя программного продукта 1С ИТС.

В комментариях я несколько раз признал свою неправоту

и перечислил СМ в знак благодарности.
CyberCerber; +1 Ответить
75. Daruma 03.06.19 14:47 Сейчас в теме
Вот мне интересно, насколько ожидаема ситуация, что люди, для которых "время-деньги" вместо 1 строки с разыменованием объекта будут писать простынку запроса с обходом результата?
lmm; Rustig; bulpi; Kondratenko.as; ManyakRus; +5 2 Ответить 3
74. ManyakRus 416 03.06.19 14:39 Сейчас в теме
(73) с автором спорить бесполезно уж, "он" никогда не признается в неправильности своей статьи.
Лучше подождём что люди скажут :)

2) не надо думать что "сайт ИТС" более авторитетный чем википедия :)
serge_focus; +1 1 Ответить 2
73. vasilev2015 1986 03.06.19 14:27 Сейчас в теме
(60) Здравствуйте !

в статье речь идет о стандартах 1С, поэтому лучше ссылаться на сайт ИТС, чем на Вики.
Откуда Вы набрали таких категоричных утверждений ?
Можете привести источник ?
72. ManyakRus 416 03.06.19 14:24 Сейчас в теме
(70) в википедии так и написано
"...ни само наличие префиксов, ни их написание не являются требованием языков программирования"
71. vasilev2015 1986 03.06.19 14:23 Сейчас в теме
(59) да, там может быть Null. Исправлю, спасибо.
70. TODD22 18 03.06.19 14:19 Сейчас в теме
(68)пишу на одном скриптовом языке с динамической типизацией, в соглашении к этому языку не встречал рекомендаций использовать ВН. Хотя вот аннотацию типов вводят в стандарты.
В хороших языках программирования со строгой типизацией венгерская нотация не нужна конечно, там тип переменной итак строго задан, но это не про 1С
69. ManyakRus 416 03.06.19 14:00 Сейчас в теме
(67) посылать на три буквы (www) все умеют,
а сказать что-нибудь внятное уже сложнее
serge_focus; DoReMi; +2 1 Ответить 1
68. ManyakRus 416 03.06.19 13:57 Сейчас в теме
(66) по ссылке написано:
"...General Naming Conventions Microsoft .NET
- DO NOT use Hungarian notation."
В хороших языках программирования со строгой типизацией венгерская нотация не нужна конечно, там тип переменной итак строго задан, но это не про 1С
67. trntv 25 03.06.19 13:56 Сейчас в теме
(60) есть стандарты разработки 1С https://its.1c.ru/db/v8std , почитайте, прежде чем сюда писать "Так нельзя". Я предпочту видеть перед глазами единообразный код соответствующий стандартам разработки, а не программиста, который следует "Венгерской нотации".
Dach; heinzenberg; +2 Ответить 1
65. ildary 03.06.19 13:44 Сейчас в теме
(64) я больше доверяю стандарту 1С, в котором про венгерскую нотацию ничего не сказано: https://its.1c.ru/db/v8std
A.Sytchev; CyberCerber; litonchik; vasilev2015; +4 Ответить
64. ManyakRus 416 03.06.19 13:41 Сейчас в теме
(63) "Это может пригодиться:
...В языках с динамической типизацией"
https://ru.wikipedia.org/wiki/%D0%92%D0%B5%D0%BD%D0%B3%D0%B5%D1%80%D1%81%D0%BA%D0­%B0%D1%8F_%D0%BD%D0%BE%D1%82%D0%B0%D1%86%D0%B8%D1%8F
в википедии так и написано что это хорошо для динамический типизации типа как в 1С
63. ildary 03.06.19 13:36 Сейчас в теме
(60) Не надо тащить стандарты 30-летней давности для строго типизированных языков туда, где они не сдались (я про венгерскую нотацию). В коде 1С такие вещи смотрятся как пульт ДУ в полиэтилене (неуместно).
pavlov_dv; Артано; zeegin; bulpi; CyberCerber; +5 Ответить 1
62. TODD22 18 03.06.19 13:24 Сейчас в теме
(60)
Международный стандарт правильного именования переменных "Венгерская нотация"

Где можно "международный стандарт" почитать? На сколько знаю от ВН отказались даже в МС где изначально её и придумали применять.
memb3r; Артано; ltfriend; +3 Ответить
61. CyberCerber 753 03.06.19 13:23 Сейчас в теме
(58) Так мы с вами про разные функции говорим? У вас в примере ЗначениеРеквизитаОбъекта
60. ManyakRus 416 03.06.19 13:22 Сейчас в теме
1) Пример 1, 2,3
Так нельзя
IDE должен сам искать ошибки, в языке ява например придумано много доп. компонентов псевдо SQL язык чтоб ошибки выходили в DesignTime а не RunTime

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

3) Пример 5
Так нельзя.
Слово "Тогда" должно находиться с новой строчки если в условии несколько проверок

4) Пример 6
Так нельзя.
"Мягкий" хардкодинг надо делать путём создания функции в общем модуле

5) Пример 7
Так нельзя.
Международный стандарт правильного именования переменных "Венгерская нотация" говорит что перед именем переменной надо писать тип переменной(сокращённо)
например
ТЗНоменклатура
а не НоменклатураПоступления

6) Пример 8
Так нельзя.
Процедуры и функции должны быть "самодокументируемые" чтоб было всё понятно без документации.


Чему только людей учите :(
Chai Nic; serge_focus; kuzyara; vanoono; Kondratenko.as; +5 7 Ответить 5
59. dhurricane 03.06.19 13:22 Сейчас в теме +0.2 $m
Раз Вы не против занудства, позвольте и мне вставить свое. :)

В первом пункте некорректно рассчитывается сумма товаров документа.

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

Во-вторых, возможны ситуации, когда результатом вычисления суммы товаров документа будет NULL. Это случай с пустой табличной частью "Товары". Мне кажется это также неожиданным для дальнейшего использования результатом, и предпочтительнее здесь получить именно 0. На это намекает инициализация переменой суммы и наличие цикла обхода выборки вместо безусловного "Выборка.Следующий()". Но конечно же, что возвращать - NULL или 0, зависит от решаемой задачи.
SirStefan; Fox-trot; json; bulpi; Serj1C; CyberCerber; +6 Ответить 1
58. vasilev2015 1986 03.06.19 13:19 Сейчас в теме
(54) у меня УТ 11.4.2.144 Ниже описание функции ЗначенияРеквизитовОбъекта. Седьмая сверху строка - тип Структура. Но возможно, я неправильно написал на картинке синтаксис.

// Параметры:
// Ссылка - ЛюбаяСсылка - объект, значения реквизитов которого необходимо получить.
// - Строка - полное имя предопределенного элемента, значения реквизитов которого необходимо получить.
// Реквизиты - Строка - имена реквизитов, перечисленные через запятую, в формате
// требований к свойствам структуры.
// Например, "Код, Наименование, Родитель".
// - Структура, ФиксированнаяСтруктура - в качестве ключа передается
// псевдоним поля для возвращаемой структуры с результатом, а в качестве
// значения (опционально) фактическое имя поля в таблице.
// Если ключ задан, а значение не определено, то имя поля берется из ключа.
// - Массив, ФиксированныйМассив - имена реквизитов в формате требований
// к свойствам структуры.
// ВыбратьРазрешенные - Булево - если Истина, то запрос к объекту выполняется с учетом прав пользователя, и в случае,
// - если есть ограничение на уровне записей, то все реквизиты вернутся
// со значением Неопределено;
// - если нет прав для работы с таблицей, то возникнет исключение.
// - если Ложь, то возникнет исключение при отсутствии прав на таблицу
// или любой из реквизитов.
//
// Возвращаемое значение:
// Структура - содержит имена (ключи) и значения затребованных реквизитов.
// - если в параметр Реквизиты передана пустая строка, то возвращается пустая структура.
// - если в параметр Ссылка передана пустая ссылка, то возвращается структура,
// соответствующая именам реквизитов со значениями Неопределено.
// - если в параметр Ссылка передана ссылка несуществующего объекта (битая ссылка),
// то все реквизиты вернутся со значением Неопределено.
//
Функция ЗначенияРеквизитовОбъекта(Ссылка, Знач Реквизиты, ВыбратьРазрешенные = Ложь) Экспорт
57. vasilev2015 1986 03.06.19 13:15 Сейчас в теме
(56) Здравствуйте !

В статье нет копипаста с ИТС.

Некоторые разработчики 1С не читали "Совершенный код".

На это и рассчитываю.
56. alexander-pro 03.06.19 13:06 Сейчас в теме
Даже не касаясь темы клипового мышления, все это давно описано в "Системе стандартов и методик разработки конфигураций" на ИТС. Статья рассчитывалась на разработчиков 1С, не знакомых со стандартами разработки в своей области?
55. CyberCerber 753 03.06.19 12:48 Сейчас в теме
(53) Да, если не сложно. Было бы интересно.
54. CyberCerber 753 03.06.19 12:44 Сейчас в теме
(52) Да нет, ну я смотрю код функции, она не может структуру съест. А что у вас за БСП? Из какой конфигурации?
53. vasilev2015 1986 03.06.19 12:43 Сейчас в теме
(51) Например, ДополнительныеСвойства объекта.
Недавно обновлял типовую конфигурацию,
видел несколько функций где 1С заменили несколько аргументов на структуру.
Найти ссылку на ИТС про аргументы ?
52. vasilev2015 1986 03.06.19 12:41 Сейчас в теме
(50) я давно так структуру использую. Посмотрите, может Вы или я в примере аргументы поменяли местами ?
51. CyberCerber 753 03.06.19 12:40 Сейчас в теме
(49)
2. Да, в общем, девиз правильный, просто решил поделиться, мнение узнать.

3. В смысле, тренд 1С? А где такое можно посмотреть? Как-то везде пока вижу кучу аргументов.
Оставьте свое сообщение

См. также

Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions Промо

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

"Я не могу просто взять и скопировать код с гитхаба", "у нас 1С микросервисами окружена", "возможностей мало" - частые фразы 1С разработчиков. которым не хватает возможностей платформы в современном мире. Faas, конечно, история не новая, но нас сдерживало 152ФЗ и задержки по пингам. Для того, чтобы действительно использовать в 1С код, к примеру, на Python, надо было приложить усилия. Теперь всё намного проще - берём и используем.

28.12.2020    4383    comol    22    

Чистый кот (Clean cat)

Рефакторинг и качество кода v8 1cv8.cf Бесплатно (free)

От автора легендарного бестселлера "Совершенный кот".

04.11.2020    1562    vasilev2015    25    

Базовые вещи БСП, которые облегчат жизнь программисту 1С

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

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

30.08.2020    10910    quazare    33    

Форма выбора (подбор) в управляемых формах

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

Разбор небольших примеров того, как правильно открывать форму выбора (подбора) в управляемых формах, не прибегая к модальным окнам.

08.05.2020    35707    user5300    16    

Использование программных перечислений, ч.1: строковые константы Промо

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

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    38449    unichkin    74    

Программная работа с настройками СКД

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

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

27.01.2020    39200    ids79    26    

[СКД] Программное создание схемы компоновки данных

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

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    30555    John_d    22    

Последовательности событий при проведении документа 1С. Шпаргалка + про формы + про расширения

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

Собрал информацию о событиях/подписках/расширениях в одном месте.

30.12.2019    23252    kuzyara    38    

Вспомогательные инструкции в коде 1С Промо

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

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    32055    tormozit    104    

30 задач. Странных и не очень

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

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    18832    YPermitin    60    

Как передать IP адрес, который вызвал HTTP запрос в 1C (для веб-сервера Apache)

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

Столкнулся с задачей получения IP адреса, который вызывает http сервис 1С. Итак, решение:

22.11.2019    9846    Sibars    19    

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

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

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

07.10.2019    33193    HostHost    41    

Оформление и рефакторинг сложных логических выражений Промо

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

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

20.09.2012    79306    tormozit    131    

Таблица значений. Нюансы

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

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

01.10.2019    40217    Yashazz    50    

О программе Postman для тестирования API и для чего она нужна 1С-нику

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

Для чего нужна программа Postman для тестирования API и какая от него польза для 1С-программиста.

24.09.2019    14593    budidich    28    

[Шпаргалка] Программное создание элементов формы

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

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

06.09.2019    67259    rpgshnik    68    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

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

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

11.07.2007    50065    tormozit    48    

Агрегатные функции СКД, о которых мало кто знает

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

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    58276    ids79    55    

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

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

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

05.09.2019    33248    YPermitin    24    

Три костыля. Сказ про фокусы в коде

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

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

03.09.2019    27060    YPermitin    80    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

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

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017    46745    tormozit    74    

Отслеживание выполнения фонового задания

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

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

17.08.2019    35276    ids79    16    

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

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

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    106999    ids79    63    

Фоновое выполнение кода в 1С - это просто

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

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

02.08.2019    44008    avalakh    26    

Выгрузка документа по условию Промо

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

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

25.04.2019    16425    m-rv    2    

Разбираемся с параметрами редактирования СКД

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

Связь по типу, Параметры выбора, Связи параметров выбора

31.07.2019    29208    json    15    

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

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

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    76022    ids79    14    

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Инструментарий разработчика Практика программирования v8 v8::СКД Бесплатно (free)

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    39932    ids79    27    

Как прикрутить ГУИД к регистру сведений Промо

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

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

16.04.2019    20960    m-rv    17    

Регистры сведений. За кулисами

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

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    28359    YPermitin    14    

"Меньше копипаста!", или как Вася универсальную процедуру писал

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

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    20408    SeiOkami    50    

Работа с настройками системы компоновки данных

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

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

02.07.2019    59271    ids79    17    

Как сделать запрос на изменение данных Промо

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

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    32317    m-rv    21    

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

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

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

25.06.2019    60444    ids79    26    

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017

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

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    27029    dmurk    146    

Регистры накопления. Структура хранения в базе данных

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

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

16.05.2019    49691    YPermitin    30    

Метод формирования движений в типовых регистрах нетиповыми регистраторами Промо

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

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

05.12.2017    28846    itriot11    34    

О расширениях замолвите слово...

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

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    37847    ellavs    126    

Git-репозитории для 1С-кода (опыт использования при небольших проектах)

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

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    28614    ellavs    90    

Трюки с внешними источниками данных

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

Некоторые трюки для преодоления ограничений внешних источников данных.

14.03.2019    34503    YPermitin    53    

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    78384    Serginio    113    

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

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

В статье собраны наиболее распространенные ошибки при работе с хранилищем конфигурации и способы их обхода и решения.

01.03.2019    48556    Смешной 1С    31    

Разработка и сценарное тестирование с Vanessa-ADD. Отчетность Allure. Автоматизация запуска сценариев

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

Формируем отчетность о результатах выполнения сценариев. Автоматизируем запуск.

26.02.2019    24155    Vladimir Litvinenko    28    

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

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

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

10.11.2018    37396    ids79    40    

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS)

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

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    46376    ids79    11    

Тестер: частые вопросы Промо

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

Ошибкам бой - тесты норма жизни!

25.07.2018    30139    grumagargler    31    

EnterpriseData – часть 2. Процесс выгрузки данных

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

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

26.12.2018    28991    ids79    31