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

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

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

контекстная подсказка Сервер

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

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

Помощники опирающиеся на вычисление типа

1 Контекстная подсказка (автодополнение) (Ctrl+Space)

2 Подсказка по параметрам метода (Ctrl+Shift+Space)

3 Переход к определению (F12)

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

  1. Определяется текущее выражение в тексте модуля
  2. Выделяются все переменные и функции, от которых оно зависит
  3. Для каждой переменной выполняется поиск выше по тексту присвоения ей выражения
  4. Для каждой функции выполняется анализ типа возвращаемого ею значения. В конфигураторе 1С это к большому сожалению реализовано только для системных функций, но EDT это реализовано и для прикладных функций.
  5. Для каждого присвоения повторяются шаги 2-4

На платформе 1С 7.7 штатного вычислителя типов в режиме разработки не было. Но благодаря Орефкову Александру появилось стороннее API конфигуратора OpenConf. На базе него было сделано расширение с вычислением типов Телепат, которое стало прорывом в удобстве редактирования кода.

На платформе 1С 8.0 в конфигураторе появился свой вычислитель типов, но с заметно более скудными возможностями, чем Телепат 7.7 . Он НЕ умеет вычислять тип результата прикладной функции, колонки таблицы/дерева значений и многое другое, что умел Телепат 7.7. Позже появился сторонний API конфигутора Снегопат от того же Орефкова Александра. Но на его базе насколько мне известно так и не появилось расширения для продвинутого вычисления типа.

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

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

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

Способ №1

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

#Если Сервер И Не Сервер Тогда
    <Здесь пишем присвоение переменной выражения с нужным типом>
#КонецЕсли

Пример 1. Нужно указать переменной Алгоритм тип СправочникСсылка.ирАлгоритмы

    #Если Сервер И Не Сервер Тогда
        Алгоритм = Справочники.ирАлгоритмы.ПустаяСсылка();
    #КонецЕсли

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

Пример 2. Нужно указать переменной Отбор тип ОтборКомпоновкиДанных

    #Если Сервер И Не Сервер Тогда
        _ = Новый НастройкиКомпоновкиДанных;
        Отбор = _.Отбор;
    #КонецЕсли

Способ №2

Другим способом для конфигуратора 1С 8 является вставка всегда не исполняемого кода через всегда ложное условие. Такой код будет компилироваться. Исполняться (вычисляться) будет только выражение условия "Ложь", но не код внутри ветки Тогда. Здесь хотя и очень незначительное, но есть влияние на скорость компиляции и исполнения кода.

Если Ложь Тогда
    <Здесь пишем присвоение переменной выражения с нужным типом>
КонецЕсли;

Пример 1. Нужно указать переменной Алгоритм тип СправочникСсылка.ирАлгоритмы

    Если Ложь Тогда
        Алгоритм = Справочники.ирАлгоритмы.ПустаяСсылка();
    КонецЕсли;

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

Чтобы не набирать каждый раз вручную эти длинные конструкции, разумно добавить себе шаблон текста

Шаблон для способа 1

   #Если Сервер И Не Сервер Тогда
        <?>
    #КонецЕсли

Шаблон для способа 2

    Если Ложь Тогда
        <?>
    КонецЕсли;

Ссылки на методы

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

  1. ФоновыеЗадания.Выполнить(<ПолноеИмяМетода>,...)
  2. Новый ОписаниеОповещения(<ИмяМетода>, <Модуль>,...)
  3. <ОбъектИнтерфейсаПользователя>.УстановитьДействие(..., <ИмяМетода>)
  4. КомандаФормы.Действие
  5. КнопкаКоманднойПанели.Действие
  6. ПодключитьОбработчикОжидания(<ИмяМетода>,...)
  7. ДобавитьОбработчик ..., <ОбработчикСобытия>;
В таких случаях в конфигураторе 1С не сработает команда "Перейти к определению" и потому переходить к определению метода приходится вручную. Тут тоже помогут вспомогательные инструкции. В них нужно указать вызов нужного метода и в любой момент можно будет переходить к нему командой "Перейти к определению".
 

Недостатки

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

Про EDT

На горизонте 1С появился EDT (Enterprise development tools) - новая среда разработки, которая по задумке должна стать лучше конфигуратора во всем, кроме задач администрирования. Там в частности реализован более умный чем в конфигураторе 1С 8 вычислитель, который должен превзойти Телепат 7.7. К сожалению описанные выше способы не будут работать с поумневшим вычислителем типов EDT. Он сразу понимает, что этот код не будет выполняться и потому не учитывает такой код при вычислении типов. Зато в EDT предусмотрена возможность гибко описывать типы параметров и возвращаемых значений методов для вычислителя типов. Выглядит это примерно так

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

Другие статьи по этой теме

104

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

Комментарии
Избранное Подписка Сортировка: Древо
1. Cyberhawk 114 15.10.18 12:15 Сейчас в теме
Такой код всегда не будет компилироваться
"Такой код никогда не будет компилироваться" звучит лучше
VladC#; starik-2005; trntv; for_sale; Perfolenta; DNN13; Касаткин; kote; CyberCerber; eeeio; +10 Ответить
2. tormozit 5594 15.10.18 12:16 Сейчас в теме
(1) Двойное отрицание нужно искоренять в нашем родном русском языке.
madpro; YaroslavHolovatiy; DarkAn; mvxyz; avo; akor77; user774630; frkbvfnjh; PVG_73; Ziggurat; IgorS; Ditron; +12 13 Ответить
3. TODD22 18 15.10.18 12:19 Сейчас в теме
(2)
Такой код всегда не будет компилироваться

Тогда можно убрать слово "всегда".
SmileDDD; for_sale; androgin; Perfolenta; TreeDogNight; kote; CyberCerber; eeeio; +8 Ответить
5. tormozit 5594 15.10.18 13:07 Сейчас в теме
(3) Да можно, но для ясности хотелось подчеркнуть.
31. Steelvan 15.10.18 19:02 Сейчас в теме
(2) Это правильно.

В тему.
Я регулярно на вопросы, типа "Вам пакет не нужен ?" отвечаю "Да", если не нужен :)
androgin; user774630; yuran2000; +3 3 Ответить
33. tormozit 5594 15.10.18 23:16 Сейчас в теме
(31) Да, вопросы с отрицанием перед глаголом тоже в этом плане раздражают. Для однозначного восприятия ответа они требуют включения глагола в ответ. А ведь задающему вопрос часто всего то нужно убрать частицу "не" перед глаголом, чтобы отвечающий мог использовать варианты "да/нет".
user774630; +1 2 Ответить
60. kuzyara 797 17.10.18 07:58 Сейчас в теме
83. Perfolenta 01.03.19 21:47 Сейчас в теме
(60) этот точно... из классики: "на просьбу, закрой окно, программист реагирует не верно"...
38. Armando 1391 15.10.18 23:57 Сейчас в теме
(31) Чтобы было легче отвечать на такие вопросы, я вопросительное предложение воспринимаю как утверждение: "Вам пакет не нужен". Если утверждение верно говорю Да, иначе Нет.
47. Kutuzov 564 16.10.18 09:39 Сейчас в теме
(31) Я против того, чтобы изделия Бостон Механикс комментили на Инфостарте ;)
for_sale; +1 Ответить
48. Steelvan 16.10.18 09:49 Сейчас в теме
(47) Когда Ваш опыт серьезного программирования перевалит за 10+ лет, тогда вы вспомните эту переписку :)
50. Cyberhawk 114 16.10.18 10:33 Сейчас в теме
(2)
1. Что в нем плохого (в общем случае)?
2. Разве для тебя не очевидно, что в текущем конкретном случае от него явно больше пользы, чем от его отсутствия?
for_sale; +1 Ответить
51. tormozit 5594 16.10.18 10:53 Сейчас в теме
(50)
1. Что в нем плохого (в общем случае)?

Противоречит логике.
user774630; +1 1 Ответить
52. Cyberhawk 114 16.10.18 11:00 Сейчас в теме
(51) О какой логике речь?
for_sale; +1 Ответить
56. Cyberhawk 114 16.10.18 12:08 Сейчас в теме
(54) Слов там всяких слишком уж много.
По-твоему использование сочетания "никогда не" допускать никогда нельзя?
57. ADirks 181 16.10.18 14:29 Сейчас в теме
(54) что характерно, в 7.7 практически всё это сделано, кроме составных типов :))

типизация для интеллисенса обозначается специального вида коммментариями
Процедура тпЖурналПриВыводеСтроки(Источник, ОформлениеСтроки, ДанныеСтроки, ТипРегиона) Экспорт
//ОформлениеСтроки//:ОформлениеСтроки
Перем Яч;//:ОформлениеЯчейки

что мешает запилить это всё в восьмёрке для меня загадка
62. Ndochp 101 17.10.18 10:31 Сейчас в теме
(57)Нет интелисенса в 7.7. Точнее он такой же левый, как снегопат, турбоконф и тд и тп.
1С (фирма) не умеет в типизацию, так как не видит в ней необходимости.
64. ADirks 181 17.10.18 11:19 Сейчас в теме
(62) Это в восьмёрке нифига толком нет, а у меня всё есть. А если чего-то не хватает, то я могу сам это сделать (и собственно много чего сделал).
Если бы фирма 1С сделала конфигуратор с открытым интерфейсом (как OpenConf например), то и в восьмёрке бы давно всё было.
68. kaa_ 17.10.18 19:42 Сейчас в теме
(64) Вот они EDT и пилят. Популяризут, рассказывают о расширениях..
84. for_sale 783 06.03.19 12:21 Сейчас в теме
(2)
Не знаю, насколько позволительно программисту не отличать двойное отрицание и усиление отрицания дополнительными частицами ;)
87. tormozit 5594 06.03.19 14:16 Сейчас в теме
(84) Под двойным отрицанием я подразумевал двойное отрицание с точки зрения логики, а не лингвистики. С точки зрения лингвистики ты прав, правильно это называть "усиление отрицания" и я уже давал ссылку на подробный анализ в этом плане http://forum.infostart.ru/forum9/topic201740/message2065519/#message2065519
88. for_sale 783 07.03.19 08:29 Сейчас в теме
(87)
т.е., если ты подразумевал двойное отрицание с точки зрения логики, а не лингвистики, соответственно, в нашем родном русском языке НЕТ двойного отрицания, которое нужно искоренять?
4. Восьмой 46 15.10.18 12:26 Сейчас в теме
Блин Америку открыли - смысл статьи то в чем?
До стучаться до разрабов EDT?
wowik; triviumfan; +2 1 Ответить
6. tormozit 5594 15.10.18 13:10 Сейчас в теме
(4) Кажется что в статье нет претензий на "открытие Америки". Главная ее цель - объяснить смысл таких странных фрагментов в коде тем, кто еще не познакомился с этим приемом. Как выяснилось, не все сразу понимают их смысл и потому некоторые приходят в замешательство при виде такого кода.
rpgshnik; +1 Ответить
7. Восьмой 46 15.10.18 13:19 Сейчас в теме
(6)
Я еще в 2013 видел подобную статью на одном из форумов. И да - это прием исключительно для процесса разработки, разработчик который выкладывает подобное в релиз да еще и без комментариев - поступает весьма не вежливо.
8. tormozit 5594 15.10.18 13:25 Сейчас в теме
(7) Какие комментарии для такого вспомогательного кода тебе кажутся вежливыми?
10. Восьмой 46 15.10.18 14:33 Сейчас в теме
(8) Коллега вы ради этого статью целую написали, чтобы донести в массы свою мысль. Так же ведь и с комментариями.
11. tormozit 5594 15.10.18 14:43 Сейчас в теме
(10) Ожидал ответа по существу, а получил ответ-ссылку. Все таки раз уж ты высказался по поводу отсутствия комментариев, то было бы вежливо пояснить, какие именно комментарии тебе кажутся подходящими.
user774630; Krio2; AntonSm; kote; +4 3 Ответить
9. ADirks 181 15.10.18 14:25 Сейчас в теме
(7) Почему невежливо то? Мне, как разработчику, наоборот приятно, что кто-то озаботился о моём комфорте.
На работе системы же это никак не скажется.
nat_stav; +1 Ответить
18. Rustig 1195 15.10.18 17:17 Сейчас в теме
(4) прочитайте внимательно :)
12. t.v.s. 92 15.10.18 14:54 Сейчас в теме
Идея хорошая, спасибо за наводку.
Предлагаю расширить вот так:
#Область DesignerHelper
    //Содержимое этой области не несет полезной нагрузки и необходимо исключительно для облегчения процесса разработки
    #Если Сервер И Не Сервер Тогда
        Алгоритм = Справочники.ирАлгоритмы.ПустаяСсылка();
    #КонецЕсли
#КонецОбласти

Ну а в релизной версии скриптом эти области вырезать
rpgshnik; PLAstic; for_sale; kembrik; le0nid; gorakh; Восьмой; +7 Ответить
15. Darklight 19 15.10.18 15:30 Сейчас в теме
(12)Уже начинает попахивать бестолковым нагромождением. Вот, если бы эту идею дальше развивать - на парадигму контрактного программирования - и в такой области описывать более ёмкие контракты: описывающие все типы входных, выходных параметров (и возвращаемого результата), осуществляющих тестирование значений (либо всегда, либо только для режима отладки) да так, чтобы по ним ещё и можно было генерировать как комментарий к функции (учитываемый, кстати, IDE в контекстной подсказке, когда задан в соответствующем формате), так и для автосоздания документации к программному коду.


Функция МояФункция(Праметр1, Параметр2)
#Область Контракт
    //Содержимое этой области не несет полезной нагрузки и необходимо исключительно для облегчения процесса разработки
    Результат = Новый СписокЗначений(); 
    #Если Сервер И Не Сервер Тогда
        Параметр1= Справочники.ирАлгоритмы.ПустаяСсылка();
        Параметр2= Справочники.Номенклатура.ПустаяСсылка();
        Параметр2= Справочники.НоменклатурнаяГруппа.ПустаяСсылка();
    #КонецЕсли
    Если омОтладка.ЭтоОтладка() Тогда
        Если ТипЗнч(Праметр1) <> Тип("СправочникСсылка.ирАлгоритмы") или  Праметр1.ПустаяСсылка() Тогда
            вызватьисключение "Параметр1 может быть только не пустым элементом типа ""СправочникСсылка.ирАлгоритмы"""
        КонецЕсли;
        Если (ТипЗнч(Праметр2) <> Тип("СправочникСсылка.Номенклатура") 
                  ТипЗнч(Праметр2) <> Тип("СправочникСсылка.НоменклатурнаяГруппа") )
          или  Праметр2.ПустаяСсылка() 
          или  Праметр2.ЭтоГруппа() 
       Тогда
            вызватьисключение "Параметр1 может быть только не пустым элементом типов ""СправочникСсылка.Номенклатура"", ""СправочникСсылка.НоменклатурнаяГруппа"" "
        КонецЕсли;
    КонецЕсли;
#КонецОбласти //Контракт

//какой-то код, заполняющий результат элементами справочника номенклатура

#Область Контракт

#КонецОбласти //Контракт
    Если омОтладка.ЭтоОтладка() Тогда
        Если ТипЗнч(Результат) <> "СписокЗначений" или не отОтладка.СодержитТолькоТип(Результат,"СправочникСсылка.Номенклатура") Тогда
            вызватьисключение "Результат не типа ""СписокЗначения"" или содержит элементы не типа ","СправочникСсылка.Номенклатура""";
    КонецЕсли;
КонецФункции //МояФункция

Показать


А ещё в такие контакты можно встраивать алгоритмы unit-тестирования, спящие пока не придёт время.

Но это всё будет дико смотреться в коробочной версии - в ней такой код лучше всего вычищать обработкой выгруженных в файлы текстов и генерить на его основе комментарий к функции и автодокументацию. А такую конфигурацию оставлять для анализа и отладки - только тем, клиентам коробочного решения , кому захочется в ней копаться.
Восьмой; +1 Ответить
63. Ndochp 101 17.10.18 10:32 Сейчас в теме
(12)Ну и злая ты буратина. А о внедренцах ты не думаешь, или специально им гадости делаешь?
65. t.v.s. 92 17.10.18 11:30 Сейчас в теме
(63) Крайне занятная предъява. В чем гадость моего предложения?
for_sale; +1 Ответить
66. Ndochp 101 17.10.18 14:54 Сейчас в теме
(65)Ну ты когда код писал жил с подсказкой реквизитов через точку. А когда придет после тебя другой человек базу дорабатывать, у него уже эта функция работать не будет, так как ты специально грохнул все удобства.
99. rpgshnik 1688 06.09.19 05:20 Сейчас в теме
(12)
#Область DesignerHelper
//Содержимое этой области не несет полезной нагрузки и необходимо исключительно для облегчения процесса разработки
#Если Сервер И Не Сервер Тогда
Алгоритм = Справочники.ирАлгоритмы.ПустаяСсылка();
#КонецЕсли
#КонецОбласти

Вот это топчик, закинул в шаблон :)
13. Darklight 19 15.10.18 15:06 Сейчас в теме
Забавно, возьму на заметку. А так, конечно, буду ждать встроенных в платформу инструкций по "типизации" переменных и ещё более продвинутое выведение типов - как в современных строго и не строго типизированных языках программирования. Боюсь только ждать долго придётся... язык 1С и так уже отсатёт на 10-20 лет от современных тенденций в разработке программ, и, даже не пытается за ними следовать - с каждым десятилетием отставая всё больше и больше.

Такое впечатление, что компания 1С "болт забила" на развитие языка. Ну, ей сейчас не до этого, ей нужно EDT "до ума разума" доводить. Мне кажется в следующем поколении 1С Предприятия (9-том) компания 1С вообще откажется от своего собственно языка и перейдёт на более популярный не то что в мире, даже в России - Java (ну или Java Script если надо будет оставить динамическую типизацию). Любовь к платформе Java компания не первый год питает. Вероятно и 1С: Предприятие 9 в большей своей части будет написана уже под Java runtime, с применением LLVM. Да и в попытке продвигать 1C Enterprise на запад - тоже полезно было бы не пытаться навязать им бейсикоподобную рухлять - а презентовать то, к чему пол мира уже привыкло - полноценный или почти полноценный Java-cинтаксис, хотя бы уровня 8-й генерации. Может и продвижение среды сразу более эффективно пойдёт на запад.
Kingpin81; +1 Ответить
14. m.bolsun 719 15.10.18 15:25 Сейчас в теме
В TurboConf этот процесс можно автоматизировать. Программа сама создаст специальную секцию и будет в нее добавлять такие объявления типов.

PLAstic; Восьмой; Darklight; +3 Ответить
85. for_sale 783 06.03.19 12:25 Сейчас в теме
(14)
Компиляция и исполнение Если Ложь Тогда, конечно, не очень много времени занимает, но если все переменные в конфигурации задать через такую конструкцию, мне кажется, уже можно ощутить всю тяжесть.
92. PLAstic 218 14.05.19 12:50 Сейчас в теме
94. m.bolsun 719 14.05.19 14:09 Сейчас в теме
16. Восьмой 46 15.10.18 16:57 Сейчас в теме
Между прочим можно вот так:

 	
#Если КонтрактныйИнтерфейс тогда
		Документ = Новый ТаблицаЗначений;
	#КонецЕсли
 



Прекрасно работает.
19. tormozit 5594 15.10.18 17:36 Сейчас в теме
(16) Можно, но опасно. В будущем неизвестные идентификаторы могут объявить некорректными. Я лично просил разработчиков платформы так сделать, чтобы защитить от опечаток. Например Истина и Ложь уже являются таковыми. Остальные пока все еще разрешены и трактуются как Ложь.
PLAstic; user774630; the1; +3 Ответить
49. Darklight 19 16.10.18 10:06 Сейчас в теме
(19)Надо не просто запрещать - а дать возможность самим вводить такие термины. Как это можно было делать в Си (привет #define ну и #undef тоже хотя эта директива уже не так важна). Эх, так хочется иметь опции, которыми можно было бы управлять составом конфигурации при компиляции, в зависимости от использования в той или иной версии конфигурации/платформы или просто включать/выключать тот или иной используемый/неиспользуемый в данной ИБ функционал, в т.ч. отладочный.
17. Rustig 1195 15.10.18 17:16 Сейчас в теме
(0) профессионально описано!
20. Dzenn 345 15.10.18 17:38 Сейчас в теме
Я использую следующий способ:


Спр = Справочники.Номенклатура.НайтиПоКоду("").ПолучитьОбъект(); ВызватьИсключение "Отладка"; 

21. tormozit 5594 15.10.18 17:43 Сейчас в теме
(20) Способ для чего? Хорошо бы немного прокомментировать свой способ.
22. Dzenn 345 15.10.18 17:44 Сейчас в теме
(21) для явного указания типа, когда 1С не может его определить
24. tormozit 5594 15.10.18 17:55 Сейчас в теме
Ну если уж захотел поделиться опытом, то и пояснил бы сразу что добавка
ВызватьИсключение "Отладка";
защитит при случайной потере экранирующих конструкций. Ведь не все догадаются об этом.
Но дописывать эту добавку в каждой строке будет довольно расточительно. В моем большом опыте использования такого вспомогательного кода не было случаев, когда бы она сработала. Поэтому я не стану ее использовать и думаю также сделает большинство.
PLAstic; Артано; for_sale; the1; +4 Ответить
23. Восьмой 46 15.10.18 17:54 Сейчас в теме
(20) Жесть какая-то

(19) Эххххх если бы 1Совцы нас слушали...… я вот до сих пор мечтаю о что в конструктор запросов добавят поддержку комментариев.
for_sale; +1 Ответить
25. Dzenn 345 15.10.18 17:56 Сейчас в теме
(23) почему "жесть"? Использую этот подход при отладке, потом такие строки убираю
27. Восьмой 46 15.10.18 18:19 Сейчас в теме
(25) Право ваше, просто я за 13 лет не могу вспомнить ни одного случая когда бы такое могло пригодится, для меня это - "больно уж умно только вот не понятно"
29. Dzenn 345 15.10.18 18:26 Сейчас в теме
(27) А что тут непонятного?

Пришла, например, переменная Спр в качестве параметра функции, и я знаю, что это "СправочникОбъект.Номенклатура", а 1С этого не знает. Я инициализирую переменную, не забывая в ту же строку вставить "ВызватьИсключение "Отладка"", и дальше пользуюсь контекстными подсказками — реквизиты через точку, функции модуля и прочее. А когда написал весь нужный мне код — удаляю отладочную инициализацию. А если забыл удалить — 1С сама мне об этом напомнит вызовом исключения, когда буду отлаживать. Ну и плюс, все отладочные конструкции видны по CTRL-F.
for_sale; CSiER; Bassgood; Восьмой; +4 Ответить
30. Восьмой 46 15.10.18 18:35 Сейчас в теме
(29) Признаю свое невежество - прикольный способ, возьму на заметку.
34. tormozit 5594 15.10.18 23:24 Сейчас в теме
(29)
если забыл удалить — 1С сама мне об этом напомнит вызовом исключения
Это если код линейный, что бывает далеко не всегда. Если будет например оператор ветвления, то опасность оставить такой код вырастает ощутимо, а каждый раз делать поиск маркера в тексте - утомительно.
В общем предложенный тобой прием понятен, но он опаснее, чем описанные в статье. Ведь фрагменты из статьи можно и оставлять и удалять в любой момент и при этом логика программы не подвергается риску изменения.
Артано; +1 Ответить
35. Dzenn 345 15.10.18 23:27 Сейчас в теме
(34) я использую это в рамках одной процедуры/функции, а в рамках одной процедуры/функции нелинейного кода у меня не бывает в принципе
36. tormozit 5594 15.10.18 23:33 Сейчас в теме
(35) Т.е. ты не используешь условный оператор (оператор ветвления) в методах?
Функция ФУ(Фа)
	Если Фа = 1 Тогда
		Спр = Справочники.Номенклатура.НайтиПоКоду("").ПолучитьОбъект(); ВызватьИсключение "Отладка"; 
	ИначеЕсли Фа = 2 Тогда
		Спр = Справочники.Номенклатура.НайтиПоКоду("").ПолучитьОбъект(); ВызватьИсключение "Отладка"; 
	Иначе
		Спр = Справочники.Валюты.НайтиПоКоду("").ПолучитьОбъект(); ВызватьИсключение "Отладка"; 
	КонецЕсли; 
КонецФункции
Показать

Чтобы покрыть такой код сценарным тестом, пользователю нужно будет выполнить такие действия, чтобы сработала каждая ветвь условия.
37. Dzenn 345 15.10.18 23:45 Сейчас в теме
(36) использую, конечно, но стараюсь, чтобы процедуры/ функции были как пуля ;-) однозначными и линейными. Нелинейность и ветвления можно организовать в другой процедуре, в которой не будет нашей переменной
26. tormozit 5594 15.10.18 17:58 Сейчас в теме
(23) Поддержка комментариев кстати уже давно есть в конструкторе запроса ИР.
28. Восьмой 46 15.10.18 18:21 Сейчас в теме
(26) ИР штука хорошая и полезная, но хотелось бы в штатных конструкторах.
for_sale; kote; +2 Ответить
45. SerVer1C 192 16.10.18 09:03 Сейчас в теме
(23) Со времен 7.7 хочу простые операции: инкремент и декремент. Это же так просто. В "байт-коде" это же реализовано.
Dem1urg; the1; +2 Ответить
32. json 15.10.18 20:04 Сейчас в теме
Автор, спасибо за статью.
Тоже давно использую Если Ложь, про способ прятать через директивы не знал.
Кроме самого приема интересно было почитать про EDT и вычислитель типов
39. kote 499 16.10.18 00:41 Сейчас в теме
Чего только люди не придумают - лишь не давать нормальные имена переменным и/или не рефакторить код.. ))
41. tormozit 5594 16.10.18 01:16 Сейчас в теме
(39) Причем тут имена переменных? Статью то прочитал? =)
43. kote 499 16.10.18 01:53 Сейчас в теме
(41) intellisens зло. Все должно быть просто и понятно без этих дьявольских штучек!
86. for_sale 783 06.03.19 12:33 Сейчас в теме
(43)
intellisens зло, а греховоды, которые им пользуются, будут гореть в геенне вечной рекурсии! Покайтесь грешники, ибо воздаст вам Главный Компилятор по делам вашим! Проще верблюду пройти через игольное ушко, чем использующему интеллисенс - во врата Последнего Релиза
40. kote 499 16.10.18 00:43 Сейчас в теме
Хмм.. а разве директивы не поддерживают Истина/Ложь?
В конечном итоге - ЭтоСервер - это же тоже булева переменная, не?
42. tormozit 5594 16.10.18 01:19 Сейчас в теме
(40)
а разве директивы не поддерживают Истина/Ложь?
Если сомневаешься, лучший способ проверить верность утверждения - проверить его самому. Тем более проверить это можно очень легко и быстро.
В конечном итоге - ЭтоСервер - это же тоже булева переменная, не?
Не понял. Что такое ЭтоСервер? Можешь подробнее описать свою мысль?
44. kote 499 16.10.18 01:55 Сейчас в теме
(42)
Имел ввиду переменную Сервер в выражении
#Если Сервер Тогда..
46. SerVer1C 192 16.10.18 09:17 Сейчас в теме
Автор знает интересные особенности в 1с. Плюсую!
59. webester 29 17.10.18 04:07 Сейчас в теме
(46)Автор уважаем и широко известен в узких кругах своими шикарными проектами, конечно он что-то знает про 1С. Но приему 100 лет в обед, честное слово.
67. SerVer1C 192 17.10.18 15:48 Сейчас в теме
(59) Да, кэп. Но понятное вам не означает, что это понимает каждый из сообщества данного сайта.
70. webester 29 18.10.18 02:04 Сейчас в теме
(67) Я где-то утверждал обратное?
55. tsukanov 57 16.10.18 12:00 Сейчас в теме
Про EDT:

Более менее вменяемое указание типов разработчики могут сделать довольно легко.
Для этого нужно только добавить в синтаксис языка необязательные аннотации типов:
Функция Тест(Пар: Тип1)
    Перем Прм: Тип2
КонецФункции

Имена типов могут быть именами встроенных типов платформы, либо именами пользовательских типов.

Для определения пользовательских в языке и платформе ничего менять не надо.
Достаточно разрешить использовать имена пользовательских функций! )

Т.е., учитывая, что EDT умеет выводить типы, мы можем определять свои типы просто написав соответствующую функцию.
Например:
Функция ТипПользователь()
    Пользователь = Новый Структура;
    Пользователь.Вставить("Имя", "");
    Возврат Пользователь;
КонецФункции

EDT легко выведет тип этой функции. И гипотетически может использовать имя этой функции в качестве типа.
Т.е. мы могли бы написать:
Функция Тест(Пар: ТипПользователь)
    Перем Прм: Тип2
КонецФункции

и EDT мог бы отслеживать ошибки и давать подсказки исходя из известного ему типа.

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

Такой вот концепт )
80. tsukanov 57 16.02.19 20:43 Сейчас в теме
(55) В EDT 1.10 походу таки сделали (только через комментарий)
Сам еще не проверял, но говорят что это https://edt.1c.ru/docs/new/versiya-1-9-0/#i156__giperssylki-na-moduli-protsedury-i-parametry
влияет на подсказку через точку внутри процедуры.
58. ADirks 181 16.10.18 14:36 Сейчас в теме
или вот такую штуку почему не сделают? (динамический фильтр по подстроке в списке свойств/методов)
прям очень не хватает
Прикрепленные файлы:
61. zqzq 16 17.10.18 09:00 Сейчас в теме
Я тоже уже много лет использую шаблон
#Если ДляСинтаксПодсказки Тогда
        <?>
#КонецЕсли

+ Работает
+ Более наглядно чем Сервер И Не Сервер, которое может сбивать с толку
- Может перестать работать в будующих версиях, как уже отмечали. Но тогда можно пройтись глобальным поиском и заменой, благо не типовую и не массовую конфу разрабатываю.
69. SlavaKron 17.10.18 20:25 Сейчас в теме
Удивительно, как столь неважная проблема нашла так много откликов. Видимо, я что-то не понимаю.
71. PerlAmutor 45 18.10.18 11:01 Сейчас в теме
Тоже думал как такое реализовать. Метод интересен. Жаль не избавляет от ошибки на этапе выполнения, когда тип переменной внезапно оказывается не тем типом, который ожидается получить. Но уж лучше чем лезть в справочник.

По теме полезностей в конфигураторе. Хочется аналог PVS Studio, CppCheck и Coverity Scan, для статического анализа кода конфигурации, с доп.функционалом по проверке орфографии в названиях переменных и именах объектов метаданных.
73. PerlAmutor 45 18.10.18 11:38 Сейчас в теме
74. tormozit 5594 18.10.18 12:41 Сейчас в теме
Указал в статье ссылку на тему партнерского форма, где я пытался в очередной раз объяснить разработчикам EDT потребность в подобных инструкциях. Помогайте, кто имеет доступ.
75. teploukhov 20.10.18 08:51 Сейчас в теме
Статьи автора - мои самые любимые статьи на сайте. Очень много приемов взял на вооружение именно благодаря Сергею. Но данная конкретная статья является жутким баяном-бабаяном.
https://infostart.ru/public/65470/
tormozit; +1 Ответить
76. tormozit 5594 20.10.18 09:16 Сейчас в теме
(75) Спасибо за ссылку. Я ее не нашел поиском. Добавил в статью раздел "Другие статьи по этой теме"
teploukhov; +1 Ответить
77. PerlAmutor 45 21.10.18 07:13 Сейчас в теме
(76) Вот так проходят десятилетия в 1С. Старые проблемы, старые решения...новые статьи.
78. tormozit 5594 21.10.18 13:04 Сейчас в теме
Похоже разработчики EDT все таки нас услышали на партнерском форуме и сообщили о планах предоставить универсальный способ указывать типы для design-time в любом месте кода.
79. tormozit 5594 27.10.18 16:42 Сейчас в теме
Добавил раздел "Ссылки на методы"
81. strek_ivan 61 01.03.19 09:14 Сейчас в теме
Объясните, в чём был смысл всего этого?
82. tormozit 5594 01.03.19 09:23 Сейчас в теме
(81) Позволь задать несколько наводящих вопросов.
1. Читал ли ты статью?
2. Все ли термины в статье тебе понятны?
3. Используешь ли ты описанные в статье помощники среды разработки?
4. Тебе удобнее работать с этими помощниками или без них?
user774630; +1 Ответить
89. DrBlack 20 25.03.19 14:57 Сейчас в теме
#Если Сервер И Не Сервер Тогда

Можно проще, просто:
#Если _ Тогда

Эта инструкция будет удалена
90. tormozit 5594 25.03.19 15:33 Сейчас в теме
(89)
#Если _ Тогда
Можно, но это не документированный вариант. Я одним из первых начал его применять и рекламировать. Но потом перешел на полностью документированный вариант, чтобы устранить риски ошибок компиляции такого кода в будущем.
91. ManyakRus 291 14.05.19 12:49 Сейчас в теме
1) "Алгоритм = Справочники.ирАлгоритмы.ПустаяСсылка()"

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

учите людей как делать неправильно только зря

2) приставку "ир" (и т.п.) делают только франчи,
оно не нужно нормальным людям, и франчи лучше бы не делали.
Они нам сделали везде приставки "бит_тн_" типа фирма Бит и ТрансНефть, мы не транснефть но вот они так сделали везде т.к. скопировали кусок кода откуда-то
93. tormozit 5594 14.05.19 13:46 Сейчас в теме
(91)
Прошу пояснить, в чем выражается наше схождение с ума. Разве я давал в статье рекомендации по именованию переменных? Кажется нет. Если тебе так показалось, то поясни подробнее, где я к этому призываю. Может быть лучше по теме статьи поделишься своим мнением?
95. ManyakRus 291 15.05.19 09:55 Сейчас в теме
(93) "...Тип значения переменной гарантированно становится известен только во время выполнения"
- это у всех так кто не умеет правильно давать имя переменным,
и не соблюдает международный стандарт правильного именования переменных "Венгерская нотация"
все ваши проблемы только из-за этого
96. tormozit 5594 15.05.19 11:21 Сейчас в теме
(95) Как венгерская нотация поможет среде разработки понимать тип переменной?
97. ManyakRus 291 15.05.19 12:31 Сейчас в теме
(96) венгерская нотация поможет программисту понимать тип переменной,
не надо надеяться на среду разработки, надейтесь на себя (и на стандарты)
98. Бэнни 27 26.05.19 23:51 Сейчас в теме
(97) вы немного не поняли. Люди здесь пытаются расширить контекстную подсказку. Чтобы не держать все в голове и не печатать больше чем стоило бы. А вы на борот стремитесь побольше хранить в голове. Написанного кода с каждым днем все больше и больше, а мозгов все меньше и меньше.
Оставьте свое сообщение

См. также

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

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

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

05.09.2019    9974    ids79    42       

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

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

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

03.09.2019    7776    YPermitin    68       

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

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

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

17.08.2019    8238    ids79    14       

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

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

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

08.08.2019    10357    ids79    24       

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

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

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

02.08.2019    9793    avalakh    21       

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

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

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

26.07.2019    9260    ids79    6       

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

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

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

17.07.2019    8686    ids79    24       

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

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

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

04.07.2019    6213    SeiOkami    48       

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

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

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

25.06.2019    17399    ids79    16       

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

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

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

11.06.2019    11521    dmurk    134       

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

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

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

16.05.2019    17212    YPermitin    27       

Выполнение внешней обработки в фоновом задании 147

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

Подробное описание подхода к созданию длительной операции на основе внешней обработки. Реализация протестирована на 1С 8.3.12.1714 (x64).

11.05.2019    9823    Eret1k    22       

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

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

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

25.04.2019    4812    m-rv    2       

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

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

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

16.04.2019    7345    m-rv    16       

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

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

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

07.04.2019    16331    ellavs    122       

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

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

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

28.03.2019    12697    ellavs    83       

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

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

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

14.03.2019    12808    YPermitin    52       

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

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

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

03.02.2019    15437    ids79    9       

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

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

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

26.12.2018    12693    ids79    27       

Новый подход к обмену данными EnterpriseData 203

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

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

14.12.2018    21390    ids79    72       

EnterpriseData - пример доработки правил конвертации без использования КД 3.0 в расширении конфигурации 118

Статья Программист Нет файла v8 v8::УФ БП3.0 УТ11 Россия Windows Бесплатно (free) Практика программирования Обмен через XML

В статье подробно описан реальный пример доработки обмена данными через EnterpriseData (универсальный формат обмена) между конфигурациями УТ 11.4 и Бухгалтерия 3.0

16.11.2018    18880    ids79    20       

Программное заполнение пользовательских параметров и отборов СКД 135

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

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

13.11.2018    19589    Unk92    18       

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

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

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

10.11.2018    20813    ids79    40       

Произвольный код в фоновом режиме 164

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

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

03.09.2018    14568    nikita0832    41       

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

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

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

23.08.2018    21232    Rain88    42       

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

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

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

25.06.2018    19296    olegtymko    47       

Введение в механизм представлений в ЗУП ред. 3 153

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

В нашей организации на первом же телефонном собеседовании на должность разработчика по ЗУП ред. 3 вас обязательно спросят о том, что такое "Представления".

04.06.2018    24337    xrrg    82       

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

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

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

01.06.2018    21163    m-rv    21       

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

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

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

23.05.2018    16946    slozhenikin_com    19       

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

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

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

13.05.2018    11320    Rustig    9       

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

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

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

24.04.2018    24337    avfed@rambler.ru    19       

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

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

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

19.02.2018    35546    ildarovich    44       

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

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

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

11.12.2017    25824    milkers    23       

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

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

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

05.12.2017    21302    itriot11    34       

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

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

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

19.11.2017    137460    MaxS    251       

Заполнение данных по ИНН контрагента с помощью альтернативного сервиса огрн.онлайн 131

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

Код для заполнения данных по ИНН контрагента из ЕГРЮЛ с сайта огрн.онлайн.

01.11.2017    22670    slava_1c    49       

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

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

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

30.10.2017    21040    unichkin    17       

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

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

Краткая шпаргалка по программной работе с настройками СКД

29.10.2017    24018    json    9       

Работа с Excel 288

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

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

23.10.2017    24652    arakelyan    39       

Добавление команд печати в конфигурациях на БСП 2.4.3 (в частности, в самописных документах в Бухгалтерии 3.0 после релиза 3.0.52.35) 143

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

В статье https://infostart.ru/public/237013/ пользователя nick max рассматривался список действий для подключения команд печати в Бухгалтерии 3.0, работающей на БСП 2.3.6. В новом релизе Бухгалтерии 3.0.52.35 от 15.09.2017г. стала использоваться БСП 2.4.3, из-за чего произошли изменения в процедурах общих модулей, связанных с механизмом печати, и в процедурах их вызова в формах документов и в формах списков. Рассмотрим их.

18.09.2017    46729    bugtester    43       

Отказ от работы с временными файлами при работе с двоичными данными или Потоки как простая замена ADODB.Stream и временным файлам 127

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

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

12.09.2017    18207    vardeg    31       

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

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

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

10.09.2017    34203    tormozit    72