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

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

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

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

 

 
1.

 

 
2.

 
3.

 
P.S.
60

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

Вознаграждение за ответ
Показать полностью
Комментарии
Избранное Подписка Сортировка: Древо
1. Rustig 1194 03.06.19 09:08 Сейчас в теме
(0) объектное извлечение данных хуже , чем по запросу? хотелось бы узнать
maksa2005; Summer_13; Tolpinski; Perfolenta; bulpi; +5 Ответить
5. vasilev2015 1416 03.06.19 09:18 Сейчас в теме
(1) Здравствуйте !

При объектном чтении ( Например, ДокументСсылка.Номер )
из СУБД считываются не только реквизиты объекта, но (если есть)
и все табличные части и все реквизиты-хранилища, чтение происходит в транзакции.

Представляете, насколько это более затратно для СУБД, чем запрос

Выбрать ДокументПоступления.Номер
ИЗ Документы.ПоступлениеТоваровУслуг КАК ДокументПоступления
Где ДокументПоступления.Ссылка = &Ссылка

Поэтому в современных типовых программах разработчики не используют объектное чтение.
slax; Rego1337h; seperblunt2; Anchoret; Tolpinski; for_sale; fxmike; wowik; CyberCerber; +9 Ответить
11. Rustig 1194 03.06.19 09:23 Сейчас в теме
(5) хорошо, принял.
но вы ориентируетесь на то, что якобы знаете как работает платформа.
а вы уверены, что разработчики платформы заложили именно такой "затратный по производительности" механизм объектного извлечения данных?
то есть по сути, мне нужен ИНН контрагента, я прописал Контрагент.ИНН. А они заложили в платформе, что тащится весь справочник Контрагентов со всеми табличными частями? Может быть, стоит им написать, чтобы они улучшили свой алгоритм и не извлекали лишнего?
klaus38; the1; Perfolenta; Daruma; bulpi; +5 5 Ответить
14. vasilev2015 1416 03.06.19 09:30 Сейчас в теме
(11) Это известная проблема, по ней много публикаций.

Я проверял в профайлере, всегда работает одинаково.

Разработчики платформы хотели бы что-то изменить,
но их связывает обратная совместимость и прочие обязательства.
seperblunt2; Tolpinski; for_sale; CyberCerber; +4 Ответить
17. json 2452 03.06.19 09:39 Сейчас в теме
(11)
при объектном чтении, все таки, возможно, проблема не в том, что тащатся все реквизиты с табличными частями, а скорее в случаях, когда пишут такой код:
НоваяСтрока = ТаблицаКонтрагенты.Добавить();
НоваяСтрока.ИНН = КонтрагентСсылка.ИНН;
НоваяСтрока.КПП = КонтрагентСсылка.КПП;
НоваяСтрока.Наименование = КонтрагентСсылка.Наименование;


В этом случае, вроде как выполняется три запроса, а при использовании функции ОбщегоНазначения.ЗначениеРеквизита() - это можно сделать за одно обращение к БД. Хотя тут, возможно, используется кэш, но это неточно.
CyberCerber; Rustig; +2 Ответить
19. vasilev2015 1416 03.06.19 09:44 Сейчас в теме
(17) Когда объектное чтение происходит первый раз, то объект кешируется
и в следующих случаях запросов к СУБД нет. Но это все равно плохо.
Посмотрите ссылку комментария (18).
JohnyDeath; Rego1337h; Krio2; for_sale; Abris9; fxmike; wowik; CyberCerber; +8 Ответить
20. AlX0id 03.06.19 09:47 Сейчас в теме
(17)
Ну вот в таком случае я бы сказал, что 99% вероятности того, что будет использоваться кэш. Ибо за три строчки кода вряд ли объект из кэша выветрится..
18. TODD22 18 03.06.19 09:39 Сейчас в теме
(11)
а вы уверены, что разработчики платформы заложили именно такой "затратный по производительности" механизм объектного извлечения данных?

https://its.1c.ru/db/v8std#content:496:hdoc
Бубузяка; Rego1337h; Reaper_1C; the1; alur; Soloist; Tolpinski; for_sale; rozer; wowik; CyberCerber; Rustig; +12 Ответить
149. Rustig 1194 15.06.19 20:39 Сейчас в теме
(11)
А они заложили в платформе, что тащится весь справочник Контрагентов со всеми табличными частями? Может быть, стоит им написать, чтобы они улучшили свой алгоритм и не извлекали лишнего?


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

Добавили бы в конфигуратор для всех реквизитов признак "Вызов через точку" - чтобы не тащить все остальные поля при такой конструкции "Контрагент.ИНН".
21. WalterMort 305 03.06.19 09:48 Сейчас в теме
// Занудство ON
(5) Не лучший пример (получение поля "номер"). Основные поля прикладных объектов кэшируются без чтения всего объекта. При их получении через точку весь объект не будет считан. А вот ДокументСсылка.Организация, считает весь объект.
// Занудство OFF
Summer_13; Perfolenta; Krio2; CyberCerber; bulpi; +5 Ответить
23. vasilev2015 1416 03.06.19 09:52 Сейчас в теме
(21) Здравствуйте !

Для меня это не занудство. я сам такой.
Мне это интересно для подготовки к экзамену.
Можете привести ссылку на первоисточник ?
26. WalterMort 305 03.06.19 10:10 Сейчас в теме
(23) Хм. В Профразработке для версии 8.0, вроде было так, а в книге для 8.3 (том 1, стр 72) указано, что неполное чтение используется только для получения представления типа строка(ДокументСсылка). Так что похоже я неверно написал.
28. vasilev2015 1416 03.06.19 10:15 Сейчас в теме
(26) Объектное чтение проходит без транзакции, если у объекта нет табличных частей.
wowik; Rustig; +2 Ответить
24. Rustig 1194 03.06.19 09:57 Сейчас в теме
(21) вот же ссылка на стандарт разработки в посте (18), а далее по ссылке пример - тащим Наименование страны через запрос, а не через точку.
Поэтому вопрос:откуда вы взяли, что
(21)
Основные поля прикладных объектов кэшируются без чтения всего объекта.
?
29. muskul 03.06.19 10:19 Сейчас в теме
(5)при этом обращение напрямую к регистру например сводные остатки идет быстрей чем через запрос.
Везде пишут не используйте это не используйте при этом типовые конфы такое вытворяют... что думаешь там рельно ии уже сидит и по тз код строчит
148. Rustig 1194 15.06.19 20:25 Сейчас в теме
(1)
объектное извлечение данных хуже , чем по запросу? хотелось бы узнать


https://infostart.ru/public/1003601/
2. json 2452 03.06.19 09:12 Сейчас в теме +0.2 $m
Кроме этого, метаданные (Справочники, Документы, Регистры…) в дереве необходимо сортировать. Так гораздо аккуратнее. Реквизиты объектов можно оставить без сортировки.


Не соглашусь. Очень удобно, когда новые объекты конфигурации добавляются в конец списка. В таком случае, во-первых ты имеешь представление о том, что делают другие участники команды, во-вторых часто возникает необходимость обратиться к объектам, добавленным пару месяцев назад, тобой или кем-то другим, при этом уже не помнишь или не знаешь точное название этих объектов. В этом случае просто открываешь список документов, бежишь глазами вверх и быстро находишь нужный объект
Tolpinski; Krio2; klimsrv; bulpi; +4 Ответить
6. Rustig 1194 03.06.19 09:19 Сейчас в теме +0.2 $m
(2) оба варианта имеют право на жизнь.
для конечного продукта и конечного потребителя - лучше отсортировать, и тогда - когда внедренец будет добавлять свои объекты - он будет различать , где типовые (по поставке продукта), а где его.
в вашем случае - при разработке продукта и тем более в команде удобно видеть новые создаваемые объекты, поэтому сортировать не целесообразно.
Сортировка должна происходить между процессом разработки и продажей продукта - получается промежуточным этапом.
7. vasilev2015 1416 03.06.19 09:20 Сейчас в теме
(2) Здравствуйте !

мне тоже было непривычно, потом понравилось.
Специально проверил - в типовой все сортировано.
15. json 2452 03.06.19 09:31 Сейчас в теме
(7)
При выпуске коробки конечно же необходимо сортировать.

Но в публикации вроде это нигде не уточняется
22. AlX0id 03.06.19 09:50 Сейчас в теме
(2)
Не соглашусь с "не соглашусь".
При обновлении этот принцип "новые объекты конфигурации добавляются в конец" - херится напрочь. В итоге - в конце списка тупо каша из добавленных кастомных объектов и новых объектов типовых..
Если требуется систематизировать работу с кастомными объектами - лучше их выделять в отдельную подсистему/подсистемы.
Артано; CyberCerber; Rustig; +3 Ответить
3. alex-l19041 8 03.06.19 09:14 Сейчас в теме
ОбщегоНазначения.ЗначениеРеквизитаОбъекта - не универсальный пример (может отсутствовать в конфигурации )
Fox-trot; bulpi; +2 Ответить
10. vasilev2015 1416 03.06.19 09:22 Сейчас в теме
(3) Здравствуйте !

Если отсутствует, то имеет смысл добавить. Очень полезная функция.
CyberCerber; +1 Ответить
13. cool99 03.06.19 09:26 Сейчас в теме
(3)
Во всех типовых конфигурациях есть БСП, самописки пишутся на базе БСП, скопировать 4 функции из БСП - также бесценно, как и "таблица значений в массив"
CyberCerber; ltfriend; +2 1 Ответить
4. Rustig 1194 03.06.19 09:15 Сейчас в теме
(0) 5 минут думал, в чем смысл листинга? красной рамкой и чертой - выделены фрагменты, которые не стоит использовать, зеленой рамкой - видимо, улучшенный вариант.
Оригинальная подача материала - удобно для восприятия, затратно по времени подготовки.
Как реализовали ?
8. vasilev2015 1416 03.06.19 09:21 Сейчас в теме
(4) Сделал три картинки и объединил, использовал gif - редактор https://ezgif.com/maker
Serj1C; Rustig; +2 Ответить
9. VmvLer 03.06.19 09:21 Сейчас в теме
"фигня ваша заливная рыба" - это я о клиповом мышление.

клипофилы губят в себе образное мышление и без устройства отображения они никто.
narutouzumaki_13; ledywinter; CyberCerber; +3 Ответить
12. vasilev2015 1416 03.06.19 09:25 Сейчас в теме
(9) Здравствуйте !

Думаете, это мышление мы как-то можем улучшить ?
16. vasilev2015 1416 03.06.19 09:34 Сейчас в теме
Добавил вознаграждение за конструктивные предложения и дополнения.
25. Rustig 1194 03.06.19 10:05 Сейчас в теме
(0) Коллеги, я вот учился в 2008 году по книге Радченко, где было написано, что извлекать данные можно объектно и по запросу. Не было оговорок про производительность того или иного способа. Наоборот, местами было удобнее использовать объектное обращение к переменным: ПолучитьПоследнее() по регистру сведений - например, цену или курс доллара.
А сейчас, цену не стоит так извлекать? Что потащится из базы при использовании такой конструкции? вроде как вся запись по отбору регистра сведений....
27. vasilev2015 1416 03.06.19 10:14 Сейчас в теме
(25) Да, объектные чтения регистров тоже имеют аналогичные недостатки.
И хотя для регистров нет однозначного ответа, но на мой взгляд лучше запрос.
31. WalterMort 305 03.06.19 10:25 Сейчас в теме
(25) В объектном чтении нет ничего плохого если хорошо понимаешь как оно работает.
Например если на регистр наложен РЛС, объектное чтение набора с запрещенными записями выдает исключение.
Dach; Rustig; +2 Ответить
110. rinat_alp2 51 04.06.19 11:20 Сейчас в теме
(25) Добрый день, различие будет, если прочитать набор записей внутри внешней транзакции (при проведении) и потом записать. Разделяемая управляемая блокировка (накладывается при Набор.Прочитать()) превратится в исключительную (Набор.Записать()), а это потенциальный deadlock.

А с объектным чтением документа с табличными частями почему то не воспроизвелось, нет и все разделяемой управляемой блокировки. ))
30. nestokay 54 03.06.19 10:22 Сейчас в теме
32. vasilev2015 1416 03.06.19 10:26 Сейчас в теме
(30) Здравствуйте !

Лично для меня открытием стала книга С. Макконела "Совершенный код".
Некоторые главы как будто специально для 1С написаны.
33. nayd 8 03.06.19 10:43 Сейчас в теме
//+ ПРЕФИКС <Фамилия И.О. разработчика> от <дд-мм-гггг>. <Описание задачи - опционально>
2.2. Перем НоваяПеременная1, НоваяПеременная2;
//- ПРЕФИКС <Фамилия И.О. разработчика>

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

И еще зачем использовать "ПРЕФИКС_" в добавлении ко всем объектам, реквизитам, функциям и так далее? Вот никогда не понимал, почему так делают. Мое предположение, что это было крайне важно в 7.7 (я с ней не работал), и программисты старой закалки перетащили это в 8.х, где это не приносит существенной пользы.
Fox-trot; t.v.s.; FreeArcher; Xephone; frying; Kondratenko.as; CyberCerber; Rustig; +8 Ответить
34. TODD22 18 03.06.19 10:45 Сейчас в теме
(33)
тот и последующие образцы для комментирования - разве не дурной тон по тому же Макконнеллу? Представьте один типовой модуль, в который раз в месяц один из разработчиков вносит изменения. Этот модуль уже через год-два превратится в зеленую лужайку из-за комментариев, где кое-где встречаются конструкции языка. Такой "зеленый" модуль усложняет чтение самого кода.

Вот если модуль типовой то как раз пусть вносит комментарии, кто, когда и что изменял или дополнял. Если же модуль его собственный то тут уже по ситуации.
pbabincev; +1 Ответить
36. nayd 8 03.06.19 10:54 Сейчас в теме
(34)
т если модуль типовой то как раз пусть вносит комментарии, кто, когда и что изменял или дополнял. Если же модуль его собственный то тут уже по ситуации.

ФИО разработчика и когда внесено изменение - это задача системы контроля версий.
t.v.s.; frying; CyberCerber; +3 Ответить
39. TODD22 18 03.06.19 11:09 Сейчас в теме
(36)
ФИО разработчика и когда внесено изменение - это задача системы контроля версий.

Это при условии что система контроля используется.
babys; zqzq; brr; +3 1 Ответить
35. vasilev2015 1416 03.06.19 10:49 Сейчас в теме
(33) Здравствуйте !

есть мнение, что такие комментарии - нелепые и что EDT и GIT вскоре решат эту проблему.
Но пока сам не пробовал. Мы используем именно такие комментарии.
Это помогает при обновлении и поддержке. Возможно, это не эталон.
Sergynia; pbabincev; +2 Ответить
37. nayd 8 03.06.19 10:56 Сейчас в теме
(35) уже решено и без GIT'a.
Используется обычное хранилище, разработчики также работают. Настроен скрипт на OneScript, который при помещении коммита в хранилище, добавляет информацию в git.
На инфостарте уже два года про это статьи пишут.
38. vasilev2015 1416 03.06.19 10:59 Сейчас в теме
(37) А сами Вы GIT используете ?
46. nayd 8 03.06.19 12:07 Сейчас в теме
(38) да, на проектах, где больше одного человека занимаются разработкой. Если я один или если прихожу на проект, где всё по-своему устроено - то нет.
47. vasilev2015 1416 03.06.19 12:11 Сейчас в теме
(46) Интересно. Может, и мы доживем.
40. bulpi 157 03.06.19 11:18 Сейчас в теме
ЭЭЭЭ... Не понял. А где обещанные клипы ?
41. vasilev2015 1416 03.06.19 11:26 Сейчас в теме
(40) Здравствуйте !

Гифки подходят ?
42. shalimski 5 03.06.19 11:30 Сейчас в теме
43. vasilev2015 1416 03.06.19 11:48 Сейчас в теме
(42) Здравствуйте !

Взял для примера посторонний язык программирования ((.
Казалось, популярный.
44. TODD22 18 03.06.19 11:48 Сейчас в теме +0.2 $m
45. vasilev2015 1416 03.06.19 11:56 Сейчас в теме
(44) Спасибо, исправил. Перечислил СМ в знак благодарности.
125. UniversaLL 38 05.06.19 11:17 Сейчас в теме
(45)Исправили не совсем точно. У Вас "Pyton". И в Python'e всё таки 4 пробела, а не табуляция.
126. vasilev2015 1416 05.06.19 11:34 Сейчас в теме
48. CyberCerber 314 03.06.19 12:17 Сейчас в теме +0.2 $m
Добрый день
Спасибо за статью, сам все хочу приобрести эту книгу, но никак руки не доходят. Вы говорите, что она хорошо подходит и для 1С?
Вопросы, замечания по тексту:

1. ЗначениеРеквизитаОбъекта - а разве можно передавать структуру, чтобы получить реквизит реквизита? У вас какая-то доработанная версия?

2. Честно говоря, мне не нравится как 1С выравнивает многострочные логич выражения. Я бы их ставил на уровне первого Если, а не вложенного кода. Я один такой?

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

4. "Модули форм оформляются через области, используя стандартные и, при необходимости, свои" - список, что дальше, это официальный, из ИТС? Не встречал его раньше.

P.S. Сама подача материала не очень понравилась. Я не приветствую клиповость, особенно для статей на такую серьезную тему. Лучше текст почитать.
С другой стороны, может вам здесь как раз не хватило этой клиповости. Вы в начале написали, я ждал какой-то яркой картинки, а в итоге не сразу заметил, что картинки вообще меняются. Если уж идти в этом направлении, то должны быть стрелки, другие яркие элементы для привлечения внимания, какая-то динамика.
Светлый ум; +1 Ответить
49. vasilev2015 1416 03.06.19 12:26 Сейчас в теме
(48) Здравствуйте !

1. Да, попробуйте сами. У нас версия БСП не новая.

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

3. Использовать структуру как аргумент - это тренд производителя. В этом что-то есть.

4. Список областей не входит в стандартные требования. Но применяется часто.

5. По теме много серьезных статей. Хотелось как-то выделиться. Стрелочки наверное добавлю.
50. CyberCerber 314 03.06.19 12:38 Сейчас в теме
(49) 1:
Попробовал пример, как у вас, в УТ 11.4, выдало ошибку:

{ОбщийМодуль.ОбщегоНазначения.Модуль(258)}: Поле объекта не обнаружено (Структура)
	Возврат Результат[СтрЗаменить(ИмяРеквизита, ".", "")];


Зато работает такой способ: ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "Контрагент.ИНН")
52. vasilev2015 1416 03.06.19 12:41 Сейчас в теме
(50) я давно так структуру использую. Посмотрите, может Вы или я в примере аргументы поменяли местами ?
54. CyberCerber 314 03.06.19 12:44 Сейчас в теме
(52) Да нет, ну я смотрю код функции, она не может структуру съест. А что у вас за БСП? Из какой конфигурации?
58. vasilev2015 1416 03.06.19 13:19 Сейчас в теме
(54) у меня УТ 11.4.2.144 Ниже описание функции ЗначенияРеквизитовОбъекта. Седьмая сверху строка - тип Структура. Но возможно, я неправильно написал на картинке синтаксис.

// Параметры:
// Ссылка - ЛюбаяСсылка - объект, значения реквизитов которого необходимо получить.
// - Строка - полное имя предопределенного элемента, значения реквизитов которого необходимо получить.
// Реквизиты - Строка - имена реквизитов, перечисленные через запятую, в формате
// требований к свойствам структуры.
// Например, "Код, Наименование, Родитель".
// - Структура, ФиксированнаяСтруктура - в качестве ключа передается
// псевдоним поля для возвращаемой структуры с результатом, а в качестве
// значения (опционально) фактическое имя поля в таблице.
// Если ключ задан, а значение не определено, то имя поля берется из ключа.
// - Массив, ФиксированныйМассив - имена реквизитов в формате требований
// к свойствам структуры.
// ВыбратьРазрешенные - Булево - если Истина, то запрос к объекту выполняется с учетом прав пользователя, и в случае,
// - если есть ограничение на уровне записей, то все реквизиты вернутся
// со значением Неопределено;
// - если нет прав для работы с таблицей, то возникнет исключение.
// - если Ложь, то возникнет исключение при отсутствии прав на таблицу
// или любой из реквизитов.
//
// Возвращаемое значение:
// Структура - содержит имена (ключи) и значения затребованных реквизитов.
// - если в параметр Реквизиты передана пустая строка, то возвращается пустая структура.
// - если в параметр Ссылка передана пустая ссылка, то возвращается структура,
// соответствующая именам реквизитов со значениями Неопределено.
// - если в параметр Ссылка передана ссылка несуществующего объекта (битая ссылка),
// то все реквизиты вернутся со значением Неопределено.
//
Функция ЗначенияРеквизитовОбъекта(Ссылка, Знач Реквизиты, ВыбратьРазрешенные = Ложь) Экспорт
61. CyberCerber 314 03.06.19 13:23 Сейчас в теме
(58) Так мы с вами про разные функции говорим? У вас в примере ЗначениеРеквизитаОбъекта
51. CyberCerber 314 03.06.19 12:40 Сейчас в теме
(49)
2. Да, в общем, девиз правильный, просто решил поделиться, мнение узнать.

3. В смысле, тренд 1С? А где такое можно посмотреть? Как-то везде пока вижу кучу аргументов.
53. vasilev2015 1416 03.06.19 12:43 Сейчас в теме
(51) Например, ДополнительныеСвойства объекта.
Недавно обновлял типовую конфигурацию,
видел несколько функций где 1С заменили несколько аргументов на структуру.
Найти ссылку на ИТС про аргументы ?
55. CyberCerber 314 03.06.19 12:48 Сейчас в теме
(53) Да, если не сложно. Было бы интересно.
79. vasilev2015 1416 03.06.19 15:01 Сейчас в теме
(55) (53) (51)

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

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

https://its.1c.ru/db/v8std#content:640:hdoc
81. CyberCerber 314 03.06.19 15:05 Сейчас в теме
(79) Почитал. Согласен, если параметров много, то следует сгруппировать их по структурам. Но про то, что нужно все функции делать с одним параметром, даже если их подразумевается три, не написано.
85. vasilev2015 1416 03.06.19 15:14 Сейчас в теме
102. hulio 56 03.06.19 20:02 Сейчас в теме
(49) структура как аргумент - не просто тренд, а стандарт, описанный на ИТС. С телефона не найду ссылку, но там говорится про методы, имеющие большое количество параметров (ориентироваться следует на 5 и более)
Про список областей - то же самое: есть стандарт на ИТС.
ЗначениеРеквизитаОбъекта - исчерпывающую информацию можно получить прямо из описания метода (в том числе примеры вызова). Сигнатура и способы вызова не менялись очень давно, то есть, описанный пример актуален и для древних конфигураций
116. babys 83 04.06.19 18:12 Сейчас в теме
(49) "4. Список областей не входит в стандартные требования. Но применяется часто. "
Уже входит.
56. alexander-pro 03.06.19 13:06 Сейчас в теме
Даже не касаясь темы клипового мышления, все это давно описано в "Системе стандартов и методик разработки конфигураций" на ИТС. Статья рассчитывалась на разработчиков 1С, не знакомых со стандартами разработки в своей области?
57. vasilev2015 1416 03.06.19 13:15 Сейчас в теме
(56) Здравствуйте !

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

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

На это и рассчитываю.
59. dhurricane 03.06.19 13:22 Сейчас в теме +0.2 $m
Раз Вы не против занудства, позвольте и мне вставить свое. :)

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

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

Во-вторых, возможны ситуации, когда результатом вычисления суммы товаров документа будет NULL. Это случай с пустой табличной частью "Товары". Мне кажется это также неожиданным для дальнейшего использования результатом, и предпочтительнее здесь получить именно 0. На это намекает инициализация переменой суммы и наличие цикла обхода выборки вместо безусловного "Выборка.Следующий()". Но конечно же, что возвращать - NULL или 0, зависит от решаемой задачи.
SirStefan; Fox-trot; json; bulpi; Serj1C; CyberCerber; +6 Ответить
71. vasilev2015 1416 03.06.19 14:23 Сейчас в теме
(59) да, там может быть Null. Исправлю, спасибо.
60. ManyakRus 291 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 Ответить
62. TODD22 18 03.06.19 13:24 Сейчас в теме
(60)
Международный стандарт правильного именования переменных "Венгерская нотация"

Где можно "международный стандарт" почитать? На сколько знаю от ВН отказались даже в МС где изначально её и придумали применять.
memb3r; Артано; ltfriend; +3 Ответить
63. ildary 03.06.19 13:36 Сейчас в теме
(60) Не надо тащить стандарты 30-летней давности для строго типизированных языков туда, где они не сдались (я про венгерскую нотацию). В коде 1С такие вещи смотрятся как пульт ДУ в полиэтилене (неуместно).
pavlov_dv; Артано; zeegin; bulpi; CyberCerber; +5 Ответить
64. ManyakRus 291 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С
65. ildary 03.06.19 13:44 Сейчас в теме
(64) я больше доверяю стандарту 1С, в котором про венгерскую нотацию ничего не сказано: https://its.1c.ru/db/v8std
A.Sytchev; CyberCerber; litonchik; vasilev2015; +4 Ответить
68. ManyakRus 291 03.06.19 13:57 Сейчас в теме
(66) по ссылке написано:
"...General Naming Conventions Microsoft .NET
- DO NOT use Hungarian notation."
В хороших языках программирования со строгой типизацией венгерская нотация не нужна конечно, там тип переменной итак строго задан, но это не про 1С
70. TODD22 18 03.06.19 14:19 Сейчас в теме
(68)пишу на одном скриптовом языке с динамической типизацией, в соглашении к этому языку не встречал рекомендаций использовать ВН. Хотя вот аннотацию типов вводят в стандарты.
В хороших языках программирования со строгой типизацией венгерская нотация не нужна конечно, там тип переменной итак строго задан, но это не про 1С
72. ManyakRus 291 03.06.19 14:24 Сейчас в теме
(70) в википедии так и написано
"...ни само наличие префиксов, ни их написание не являются требованием языков программирования"
67. trntv 25 03.06.19 13:56 Сейчас в теме
(60) есть стандарты разработки 1С https://its.1c.ru/db/v8std , почитайте, прежде чем сюда писать "Так нельзя". Я предпочту видеть перед глазами единообразный код соответствующий стандартам разработки, а не программиста, который следует "Венгерской нотации".
Dach; heinzenberg; +2 Ответить
69. ManyakRus 291 03.06.19 14:00 Сейчас в теме
(67) посылать на три буквы (www) все умеют,
а сказать что-нибудь внятное уже сложнее
serge_focus; DoReMi; +2 1 Ответить
107. kuzyara 796 04.06.19 06:08 Сейчас в теме
(69) Поддержу по примеру 4,
Форматирование синтаксических конструкций
Текстовый редактор системы 1С:Предприятие предоставляет функции автоматического форматирования управляющих конструкций встроенного языка.

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

Встроенный инструмент форматирования предназначен для оформления управляющих конструкций встроенного языка и не умеет ни в один из пунктов https://its.1c.ru/db/v8std#content:444:hdoc:_top:перенос%20выражений .
Поэтому аппелирование к нему в данном случае считаю некорректным, а отступы конструктора запросов более каноничными.
serge_focus; ManyakRus; +2 Ответить
73. vasilev2015 1416 03.06.19 14:27 Сейчас в теме
(60) Здравствуйте !

в статье речь идет о стандартах 1С, поэтому лучше ссылаться на сайт ИТС, чем на Вики.
Откуда Вы набрали таких категоричных утверждений ?
Можете привести источник ?
74. ManyakRus 291 03.06.19 14:39 Сейчас в теме
(73) с автором спорить бесполезно уж, "он" никогда не признается в неправильности своей статьи.
Лучше подождём что люди скажут :)

2) не надо думать что "сайт ИТС" более авторитетный чем википедия :)
serge_focus; +1 1 Ответить
76. vasilev2015 1416 03.06.19 14:48 Сейчас в теме
(74) Сайт производителя программного продукта 1С ИТС.

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

и перечислил СМ в знак благодарности.
CyberCerber; +1 Ответить
80. TODD22 18 03.06.19 15:04 Сейчас в теме
(74)
не надо думать что "сайт ИТС" более авторитетный чем википедия :)

1) Давно Вики стала авторитетным источником учитывая что вносить правки в неё может любой желающий, даже не имеющий опыта работы программистом?
2) В вопросе написания когда под 1С сайт ИТС куда авторитетнее чем Вики.
Sergynia; Артано; zeegin; CyberCerber; +4 Ответить
136. OerlandHue 06.06.19 09:41 Сейчас в теме
(73) В своей книге автор писал, что он не заставляет писать так, как он говорит, он лишь приводит свои примеры и примеры других известных программистов, почему так ему кажется удобнее. Я книгу давно читал, но не могу вспомнить, почему не стоит писать тип переменной перед ее параметром? Конкретно меня интересуют такие переменные типа "СтруктураПараметровПолученияПортфелейКонтрагентов" или "ТаблицаЗначенийПредварительнаяНовогоПортфеля". Почему тут плохо использовать Структура и ТаблицаЗначений?
139. vasilev2015 1416 06.06.19 11:22 Сейчас в теме
(136) Здравствуйте !

Использовать Структура и ТаблицаЗначений в наименовании не плохо и не хорошо.
Но в свежем коде производителя это как правило не используется.
OerlandHue; +1 Ответить
140. TODD22 18 06.06.19 11:30 Сейчас в теме
(136)
Почему тут плохо использовать Структура и ТаблицаЗначений?

Указание типа переменной в языке с динамической типизацией может ввести в заблуждение относительно её типа.
Ничего плохого нет в переменной тзПредварительная, плохо когда начинают весь код писать в таком стиле, придумывают целую систему типов, начинают в название переменной добавлять префиксы означающие простые типы и тд.
OerlandHue; mivari; Fox-trot; +3 Ответить
113. Darklight 19 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С кортежей - я вообще молчу :-(
Хотя динамические структуры - вещь очень полезная - предпочитаю их для передачи параметров!
127. ManyakRus 291 05.06.19 13:41 Сейчас в теме
(113)
1) слово "Тогда" надо с отступом
2) аргументы с новой строки хорошо когда их больше чем 3-4 шт.
3) "именованные аргументы" - фигня какая-то
128. Darklight 19 05.06.19 15:18 Сейчас в теме +0.2 $m
(127)
1) В том то и дело - что ТОГДА я располагаю на том же уровне что и ЕСЛИ - т.к. с моей точки зрения семантически это конструкции одного уровня выражения - слово ЕСЛИ открывает блок условий - слово ТОГДА - открывает блок основного тел условия - как слово ИНАЧЕ - открывает блок второй ветви тела ветвления. По аналогии с оператором
ПОПЫТКА
//Код тела попытки
ИСКЛЮЧЕНИЕ
//Код тела исключения

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

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

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

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

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

Кстати, передача параметров через структуру - это очень удобное решение - когда к функции добавляются новые параметры (не обязательные для всех уже используемых месть вызова функции) - что позволяет не переписывать код (и уж тем более когда они удаляются, или переставляются).
Более того данное решение просто обладает невероятной мощью - когда используется сквозная структура передачи параметров сразу в несколько функций глубокой вложенности - особенно это удобно когда нужно расширить параметры глубоко вложенной функции и передать их где-то ещё сверху, в начальной точке вызова, чтобы не переписывать все вложенные функции среднего уровня вложенности. Это очень здорово помогает при интеграции доработок в конфигурации от других вендоров (не важно - используются расширения конфигураций или нет).
75. Daruma 03.06.19 14:47 Сейчас в теме
Вот мне интересно, насколько ожидаема ситуация, что люди, для которых "время-деньги" вместо 1 строки с разыменованием объекта будут писать простынку запроса с обходом результата?
Rustig; bulpi; Kondratenko.as; ManyakRus; +4 2 Ответить
77. vasilev2015 1416 03.06.19 14:52 Сейчас в теме
(75) Здравствуйте !

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

А нам нужно к этому стремиться.
83. ManyakRus 291 03.06.19 15:11 Сейчас в теме
(77) в языке java тоже раньше делали такой "ускоряющий" код,
но теперь придумали новый псевдоязык Query DSL
смысл которого только в том что при неправильном написании имени поля(колонки БД) приведёт к ошибке в DesignTime(IDE,конфигуратор) а не в RunTime(у пользователей)
Просто 1С отстаёт лет на 5-10 от нормальных языков программирования.

Надёжность программы намного важнее чем скорость !
memb3r; serge_focus; Darklight; DoReMi; Daruma; +5 Ответить
129. Darklight 19 05.06.19 15:26 Сейчас в теме
(83)Да, в 1С очень не хватает псевдодекларативной техники организации выборок из БД (и не только из БД) по аналогии описанной Вами, или LINQ из C#
А вообще - будущее за декларативными языками описания бизнес логики - где написанные команды будут восприниматься как требования и намерения к достижению результата, а интерпретатор ещё на стадии конфигурирования будет их перекладывать на оптимальные внутренние инструкции к runtime-процессору (каким бы он ни был - оптимально сейчас - это LLVM-машина или Java runtime-машина, но можно и сразу в инструкции ЦПУ компилировать - хотя это плохая идея, уж лучше сначала в LLVM-код а уже на стадии выполнения делать JIT-компиляцию), с оптимизацией и распараллеливанием выполнения, при необходимости.
ManyakRus; +1 Ответить
131. serge_focus 4 05.06.19 15:39 Сейчас в теме
(83) Поддерживаю!

Код мы читаем раз в сто больше, чем пишем. Порой приходится для одной строки прочитать целый фолиант. А это все ВРЕМЯ, а значит ДЕНЬГИ. А зачем все это надо можно почитать вбив в Гугле "чистый код". Наверное не зря признанные метры программирования столько пишут об этом. Огорчает, что низкий порог вхождения в профессию программист 1С тянет за собой тонны кода, с которым потом бизнесу приходится жить и оплачивать потраченное программистами время.
Rustig; ManyakRus; +2 Ответить
88. bulpi 157 03.06.19 16:15 Сейчас в теме
(77)
Извините за мой французский, но типовая УТ - говно. Без отношения к вопросу объектных чтений.
1С_Мастер; DoReMi; +2 3 Ответить
Оставьте свое сообщение

См. также

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

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

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

05.09.2019    9771    ids79    42       

Обмен данными. Консистентность vs Многопоточность 25

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Интеграция

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

03.09.2019    3095    m-rv    1       

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

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

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

08.08.2019    10182    ids79    24       

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

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

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

25.04.2019    4758    m-rv    2       

Как настроить правильную техподдержку (helpdesk, service desk на коленке) 38

Статья Программист Бизнес-аналитик Руководитель проекта Нет файла v8 УУ Управление взаимоотношениями с клиентами (СRM) Документооборот и делопроизводство Монитор заказов Учет рабочего времени Бесплатно (free) Управление услугами и сервисом

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

24.04.2019    7128    siddy    0       

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

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

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

16.04.2019    7278    m-rv    16       

Копирование числовых ячеек из 1С в Excel 26

Статья Системный администратор Программист Нет файла v8 1cv8.cf Windows Бесплатно (free) Загрузка и выгрузка в Excel Администрирование данных 1С

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

15.01.2019    10369    itriot11    21       

Универсальные функции ЗУП 3.1 / ЗКГУ 3.1, которые помогут в разработке 463

Статья Программист Нет файла v8 v8::СПР ЗКГУ3.0 ЗУП3.x БУ Зарплата Управление персоналом (HRM) Бесплатно (free) Универсальные функции

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

14.11.2018    31560    GeterX    93       

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

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

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

10.11.2018    20733    ids79    40       

Git + 1С. Часть 1. Как подключиться к команде разработки и начать использовать Git 267

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

Первая статья из цикла инструкций по работе с Git в 1С-разработке. Рассмотрим, как настроить рабочее место, как получить свою "копию" проекта для разработки и приступить к полезным действиям. Все примеры будут изложены в рамках трёх практических кейсов: 1. Моя команда дорабатывает типовую конфигурацию, использует приватный репозиторий на BitBucket, в котором версионируются внешние отчеты/обработки, расширения конфигураций и правила обмена; 2. Я участвую в стартап-команде, которая разрабатывает свою конфигурацию с использованием Git и GitLab; 3. Я принимаю участие в развитии OpenSource-продукта на GitHub как заинтересованный разработчик (контрибьютор).

18.10.2018    33435    stas_ganiev    72       

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

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

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

15.10.2018    20370    tormozit    100       

Из Excel в 1С запросом 33

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Загрузка и выгрузка в Excel

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

14.08.2018    13482    m-rv    5       

Повышаем эффективность разработки правил обмена 122

Статья Программист Нет файла v8 КД ОС Бесплатно (free) Практика программирования Перенос данных из 1C8 в 1C8

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

25.06.2018    19232    olegtymko    43       

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

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

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

01.06.2018    21117    m-rv    21       

Строим графы средствами 1С (без GraphViz) 42

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

Множество статей на Инфостарте описывают, как работать с компонентой GraphViz, чтобы построить ориентированный граф. Но практически нет материалов, как работать с такими графами средствами 1С. Сегодня я расскажу, как красиво строить графы с минимальным пересечением. Нам этот метод пригодился для отрисовки алгоритмов в БИТ.Финансе, т.к. типовой механизм не устраивал. Еще это может быть полезно для визуализации различных зависимостей: расчета себестоимости, графы аффилированности компаний и т.д. Надеюсь, эта статья поможет сделать мир 1С красивее и гармоничней:) Итак, поехали...

23.05.2018    16902    slozhenikin_com    19       

Распределение расходов пропорционально продажам 9

Статья Программист Пользователь Нет файла v8 v8::ОУ УТ10 УУ Финансовый учет и бюджетирование (FRP) Учет доходов и расходов Бесплатно (free) Практика программирования

Финансовая модель. Распределение административных расходов по подразделениям пропорционально продажам за месяц. Дополнительные реквизиты против бизнес-процессов!

13.05.2018    11290    Rustig    9       

Универсальный обмен между идентичными конфигурациями через REST интерфейс OData. Часть І: Справочники 96

Статья Программист Нет файла v8 Бесплатно (free) Перенос данных из 1C8 в 1C8

Сейчас все чаще интеграции различных конфигураций проектируются через HTTP-сервисы - они и работают быстрее, и "войти" в режим отладки гораздо проще, тем самым обойдя "черный ящик" универсального обмена через xml, например. Более года назад я начал работать в компании, в которой разработчики работали с конфигурациями 1С в режиме совместимости еще 8.2.16 (менять режим совместимости в типичных базах мы не хотели) - а как Вы наверное знаете, если интересовались HTTP-сервисами в 1С, их использование в режиме совместимости 8.3.4 и ниже недопустимо - и здесь я уже не надеялся на разработку и использование HTTP-сервисов. Но позже меня заинтересовал такой "сервис" как REST интерфейс OData, так как его можно использовать не меняя режим совместимости конфигурации - именно он и стал для меня идеальным вариантом решения "нетривиальных" задач.

11.05.2018    16173    V.Stavinsky    11       

Минимализмы 3 350

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

Очередная серия "минимализмов" [http://infostart.ru/public/306536/, https://infostart.ru/public/460935/]. Также, как и в предыдущих статьях, здесь приведена подборка коротких оригинальных авторских решений некоторых задач. Ранее эти решения были разбросаны по моим комментариям к чужим публикациям.

19.02.2018    35456    ildarovich    44       

Этюды по программированию. Взаимодействие с Microsoft Word 108

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

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

11.12.2017    25767    milkers    23       

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

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

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

05.12.2017    21258    itriot11    34       

1С: Конвертация данных 3. Инструкции и примеры. EnterpriseData (универсальный формат обмена) 720

Статья Программист Нет файла v8 КД Бесплатно (free) Перенос данных из 1C8 в 1C8 Практика программирования Обмен через XML

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

19.11.2017    137201    MaxS    251       

Обзор имеющихся библиотек OneScript 299

Статья Системный администратор Программист Нет файла v8 Бесплатно (free) OneScript

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

14.11.2017    30718    nixel    85       

Программные перечисления, ч.2: приемы кэширования при разработке 66

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

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

30.10.2017    20992    unichkin    17       

Легкий способ обновления измененной конфигурации 41

Статья Системный администратор Программист Нет файла v8 Бесплатно (free) Инструментарий разработчика

Легкий способ обновления измененной конфигурации. Сервис подготовки расширения конфигурации

25.10.2017    18509    avk72    63       

Работа с Excel 288

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Загрузка и выгрузка в Excel

Собрал различные полезности для работы с Excel из 1С. Иногда приходится форматировать документ Excel программно из 1С. Так вот, чтобы не искать постоянно на просторах интернета как сделать левое выравнивание в ячейке Excel из 1С и т.п. решил опубликовать это...

23.10.2017    24534    arakelyan    39       

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

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

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

10.09.2017    34140    tormozit    72       

Ускоряем 1С: модули с повторным использованием возвращаемых значений 136

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

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

04.09.2017    43032    m-rv    60       

Как просто запомнить алгоритм программного вывода в СКД 205

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

Порой нужно быстро вывести на экран таблицу значений, используя СКД \ получить данные отчета в таблицу значений.. Несмотря на очевидность алгоритма - раньше мне проще было загуглить программный вывод, благо эта инфа есть везде. Но постепенно понял как его можно быстро вспомнить, и лишний раз ничего не искать. Конечно эта статья не для Гуру :) Но я думаю - что любой неопытный в СКД программист сделает для себя небольшое открытие...

01.09.2017    41427    unichkin    15       

Как формируется GUID? 462

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

"Коллеги, есть идеи, как получить последнюю созданную характеристику? Реквизиты полностью идентичны(код, наименование, и т.п.)."(c) "Насколько я знаю, ссылка не обеспечивает последовательность, а только уникальность."(c) "Я сделал по Максимум(Ссылка). Но, чета, мне кажется, это неправильно."(c) "Слышал что в ГУИд содержится как раз время создания и по всей логике вещей сортировка по ссылке должна сортировать по моменту создания объекта"(c) Сколько раз вы слышали такие фразы? На удивление я не обнаружил информации по этой теме, пришлось разбираться самому...

16.06.2017    52191    kuzyara    55       

Использование инструментов разработчика для отладки обменов КД 2.0 67

Статья Программист Нет файла v8 КД Бесплатно (free) Перенос данных из 1C8 в 1C8

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

05.05.2017    22540    unichkin    3       

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

Статья Программист Нет файла v8 КД Бесплатно (free) Практика программирования Перенос данных из 1C8 в 1C8

Поскольку к конвертации обращаюсь время от времени и какие-то детали забываются, хочу выделить несколько пунктов, чтобы "было где посмотреть". Статья сделана преимущественно «для себя», так что просьба не судить строго. (Примечание читающим/комментирующим: код в примерах очень сильно сокращен.)

16.03.2017    61722    perepetulichka    25       

Online телефонный справочник из 1С: Зарплата и управление персоналом 33

Статья Системный администратор Программист Нет файла v8 ЗУП3.x Россия Управление персоналом (HRM) Бесплатно (free) WEB

В интернете представлено много реализаций online телефонных справочников организаций. Есть справочники, которые использует для хранения информации базу Active Directory (LDAP), есть справочники, которые реализованы с использованием СУБД (например, MySQL). Но я не нашел справочника, который использует информацию из базы 1С. Далее я рассмотрю данную разработку.

10.03.2017    19016    ruha    14       

Библиотека стандартных подсистем (Механизм БСП) 74

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

Конфигурации в 1С пишутся для пользователей и по их «правилам» (клиент всегда прав), поэтому в основном все конфигурации разные, но достаточно часто в них используются одни и те же объекты, которые незначительно отличаются друг от друга. Действительно, сложно представить конфигурацию, где не фигурировали бы такие сущности как номенклатура, контрагенты, пользователи, валюта. И некоторые задачи являются типичными: возможность базового разграничения прав, работа с электронной почтой, задачи пользователям и т.д. Но...!

03.03.2017    51194    V.Stavinsky    21       

Автоматизированная проверка конфигураций… и пара слов о стандартах разработки 266

Статья Программист Нет файла v8 1cv8.cf Windows Бесплатно (free) Практика программирования Тестирование и исправление

Предлагаю познакомиться с инструментом "Автоматизированная проверка конфигураций" и получить практику его применения

18.01.2017    43325    3    Vladimir Litvinenko    20       

Отладка подключаемых обработок 195

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

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

04.01.2017    43447    unichkin    77       

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

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

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

10.12.2016    29859    unichkin    45       

РИБ 200 узлов. Середина пути 116

Статья Системный администратор Программист Нет файла v8 Розница Россия Бесплатно (free) Распределенная БД (УРИБ, УРБД)

Между настройкой и поддержкой РИБ на 2 узла и на 10 большой разницы нет, а вот когда число удаленных точек переваливает за сотню, приходится решать уже совсем другие вопросы

25.10.2016    34091    comol    215       

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

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

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

11.10.2016    185982    pumbaE    31       

Отладка конфигураций на мобильной платформе 107

Статья Программист Нет файла v8 Бесплатно (free) Мобильная разработка

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

25.09.2016    34948    spezc    44       

Обновление доработанной Бухгалтерии предприятия. Как проверить и убедиться, что все сделано хорошо? 89

Статья Системный администратор Программист Бухгалтер Нет файла v8 БП2.0 Бесплатно (free) Практика программирования

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

05.09.2016    24774    kraynev-navi    33       

Старые обработки в новом (Управляемом) интерфейсе 101

Статья Программист Нет файла v8 v8::УФ Windows Бесплатно (free) Практика программирования

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

12.08.2016    57945    valerasv    7       

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

Статья Программист Нет файла v8 Бесплатно (free) Математика и алгоритмы

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

05.08.2016    146635    Sergey.Noskov    154       

Простая и быстрая эмуляция операций с битовыми строками 67

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

Битовые строки могли бы упростить реализацию некоторых алгоритмов на языке платформы «1С: Предприятие 8». Но пока в платформе операций с битовыми строками нет. В то же время уже сделанные попытки смоделировать эти операции преобразованиями над числами опираются на циклы обработки отдельных битов, что плохо сказывается на скорости их работы. Предлагается новое простое решение, основанное на представлении битовых строк строками символов «0» и «1». Приводится примеры кода выполнения основных логических операций AND, OR, XOR, NO без использования циклов. В качестве прикладной задачи рассмотрено получение последовательных значений кода Грэя, который можно использовать для ускорения перебора вариантов.

22.06.2016    25919    ildarovich    14       

Исправление ошибок в типовых релизах 1С: УТ 10.3 и Розница 1.0 при отражении продаж в ЕГАИС 7

Статья Программист Нет файла v8 УТ10 Windows Бесплатно (free) Адаптация типовых решений

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

05.06.2016    33890    @lexandr    20