TGViewer
Channel Public Channel
Жёлтый чайник 1С (Черненко Виталий)

Жёлтый чайник 1С (Черненко Виталий)

@juniorones

Только настоящий джедай сможет сдержать гнев и познать Силу Желтого программирования.

Make IT, not war

По всем вопросам: @SeiOkami

https://github.com/SeiOkami
https://seiokami.github.io/
https://infostart.ru/profile/309462/
Subscribers
5.3K
Photos
200
Videos
3
Links
214

Showing posts older than #165 · Back to latest

Older Posts 20 shown
Post #164 2.18K
Ну и напоследок.

Если вы задумывались: "почему же форма Все функции так долго открывается?"

Картинки. Просто картинки...
Post #163 2.12K
А вот так выглядит "Все функции" изнутри.

Как думаете, что означает SYS в методе НСтр() ?
Post #162 2.12K
Коротко о скрытых возможностях в 1С:

ОткрытьФорму("sysForm:AllFunctionsForm");
Post #161 2.22K
​​Управление платформенными обработками (расширение для типовых)

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

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

Подробнее на Инфостарт

Не забывайте ставить плюсик публикации. Этим вы порадуете автора ☺️
—————————
@JuniorOneS
Post #156 2.32K
​​Управление платформенными обработками

Тизер нового расширения для подмены "вшитых" платформенных обработок

@JuniorOneS
Post #154 4.19K
Обзор новых возможностей платформы в 8.3.18 и 8.3.19

Совместно с @ITMagnit выпустили обзор наиболее заинтересовавших новых возможностей платформы 8.3.18 и 8.3.19

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

https://youtu.be/Ims7f9U4cuA

P.S.: Не забывайте ставить лайки и писать комментарии 👍
YouTube Новые возможности платформы 8.3.18 и 8.3.19 Митап в MagnitIT по особо интересным новым возможностям платформы 8.3.18 и 8.3.19. Участники: Симонов Александр (Руководитель Центра Экспертизы): https://t.me/alex7six Черненко Виталий (Ведущий Разработчик): https://t.me/SeiOkami Ворона Андрей (DevOps…
Post #153 2.44K

Forwarded from Зазеркалье 1С

​​Новая технология разработки приложений

В ближайшее время нами планируется выпуск продуктов «1С:Кабинет сотрудника» и «1С:Шина» с возможностями кастомизации. Для кастомизации будет использоваться новая технология «Элемент».

Читать дальше
Post #152 2.38K
Встречайте убийцу JS, Kotlin, C#, Java, Python 1С
Post #151 3.77K
​​Всем приветы

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

Под каждый встречаемый баг буду стараться снимать короткое видео с демонстрацией. И отправлять 1С. Авось что починят.
Вот, например, достаточно забавный случай, когда платформа путает местами заголовки полей в отборах, приводя пользователя в замешательство: https://youtu.be/f7CXrv6tigU

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

——————————
@JuniorOneS | #Баги
Post #149 3.66K
Товарищи и коллеги.

В связи с последними событиями, прошу не равнодушных:

1. Поддержать семью Павла.

Деньги собирают:

Никита Грызлов: https://t.me/nixel2007_thoughts/205

Илья Леонтьев: https://t.me/ilyaleontyevpro1c/38946

Горшенин Сергей: https://t.me/cio2cdto/514

Непосредственно карта жены: https://infostart.ru/journal/news/mir-1s/ushel-iz-zhizni-pavel-chistov_1490373/

Вы можете поддержать семью Павла любым из способов.

2. Выразить соболезнования и благодарность за деятельность Павла.

В целом, если вам есть что сказать, то, если не сложно, запишите небольшое видео.

Ссылку/файл, пожалуйста, пришлите в комментарии или личку канала.


Павел, спасибо за всё.
Post #145 3.95K
​​Интересуйтесь новостями платформы

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

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

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

Хорошо, что подписчики канала мне сразу указали на этот пробел в знаниях 😅

И вот выпускаю обновление статьи по универсальной процедуре формирования СКД.

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

Теперь в эту процедуру можно передавать МенеджерВременныхТаблиц. И не только...

Обновил метод на FastCode. А так же добавил отдельно ещё одну процедуру из статьи.

Буду рад вашим плюсам и комментариям =)

А чтобы интересоваться свежими новостями из зазеркалья можно просто подписаться на этот канал.
Там только репосты Зазеркалья 1С. И только новостей по развитию платформы. Без всякого рода реклам 👍

@JuniorOneS
Post #142 4.43K
  • 👍 1
Post #138 4.85K
Жёлтый чайник 1С (Черненко Виталий) Колонки результата запроса У результата запроса есть одна особенность. Какой бы вы ни выбирали тип значений, платформа добавит к колонке результата тип Null. Число, Строка, Булево, Ссылка. Неважно. Даже если по тексту запроса очевидно, что в результате невозможен…
Неопределено - это тип или его отсутствие?

И то и другое. Одновременно.

Действительно, есть такой тип "Неопределено".

//Этот код сообщит "Да"
Сообщить( ТипЗнч(Неопределено) = Тип("Неопределено") );

И вроде бы вопрос решен, НО. Попробуйте создать таблицу значений с колонкой, у которой тип - Неопределено:

ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Колонка", Новый ОписаниеТипов("Неопределено"));

Строка = ТЗ.Добавить();

Строка.Колонка = 1;
Сообщить(Строка.Колонка); //Сообщит: 1

Строка.Колонка = "Строка";
Сообщить(Строка.Колонка); //Сообщит: Строка

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

Кто-то может сказать: "А как же создать колонку с типом, у которого только одно значение?"
А вы попробуйте выполнить тот же самый код, но укажите в качестве типа колонки Null ;)

И так. Неопределено - это тип. Но этот тип при этом означает отсутствие типа. И невозможно создать ОписаниеТипов с типом Неопределено:

ОписаниеТипов = Новый ОписаниеТипов("Null,Неопределено");
Сообщить(ОписаниеТипов.Типы().Количество());
//1

1С проигнорировала Неопределено при создании ОписанияТипов.
Вместо этого он появится автоматически, если описание будет составным.

И, в контексте поста про выгрузки запроса, прекрасно видно, как сама 1С не знает, что же ей делать.
В запросе ниже просто колонка с Неопределено. И эту выгрузку запроса мы не сможем поместить в другой запрос! Попробуйте сами и убедитесь, что получите ошибку: Тип не может быть выбран в запросе


//Получили ТЗ с колонкой Неопределено
Запрос = Новый Запрос("ВЫБРАТЬ Неопределено КАК Поле");
ТЗ = Запрос.Выполнить().Выгрузить();

//Попытались выбрать её в другом запросе
Запрос.Текст = "ВЫБРАТЬ
| ТЗ.Поле
|ПОМЕСТИТЬ ВТ
|ИЗ
| &ТЗ КАК ТЗ;
|ВЫБРАТЬ
| *
|ИЗ
| ВТ КАК ВТ";

Запрос.УстановитьПараметр("ТЗ", ТЗ);
Результат = Запрос.Выполнить();

Почему так?
Мы получаем выгрузку запроса. И 1С должна была автоматически добавить тип Null (как она делает всегда). Но если платформа так сделает, то получит колонку с типом Null, а Неопределено потеряет. Ведь кодом раньше мы доказали себе, что невозможно создать описание типов с этими двумя типами вместе. И тогда 1С идет по другому пути - она создает колонку просто с типом Неопределено. Но по законам платформы такая колонка превращается в тип Произвольный. И становится недоступной для передачи в запрос. Вот незадача 🤷‍♂️

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

————————————
@JuniorOneS | #Нюансы
  • 🔥 1
Post #137 3.97K
​​Скриншот сеанса средствами 1С

А вы знали, что начиная с 8.3.17 на клиенте можно получить скриншот сеанса средствами 1С ?)
Неочевидное применение новой возможности платформы. Выложил процедуру на fastcode. Пока без веба, но всему своё время.
Кейсы зависят сугубо от вашей фантазии 😅

————————————
@JuniorOneS | #Метод
Post #136 3.65K
​​Не переносите код таким образом

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

По этому поводу есть ссылка на соглашение на ИТС: https://its.1c.ru/db/v8std/content/444/hdoc

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

На скрине пример "неправильного" кода. Открывающая скобка вызова метода переносится на следующую строку.
С одной стороны, такой код работать будет. Но с другой - конфигуратор 1С не везде будет понимать такой вызов.
Не сработает переход к методу по F12. И, что намного важнее, такой вызов не будет найден при помощи Alt+F12.

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

Ниже на скрине открывающая скобка находится рядом с именем вызываемого метода. И так поиск использования сработает.

Переносить строку можно начиная со второго параметра. Просто в данном примере показана минимальная разница между "работает" и "сломано".

————————————
@JuniorOneS | #Заметки
Post #135 3K
Колонки результата запроса

У результата запроса есть одна особенность.
Какой бы вы ни выбирали тип значений, платформа добавит к колонке результата тип Null.
Число, Строка, Булево, Ссылка. Неважно. Даже если по тексту запроса очевидно, что в результате невозможен Null - он всё равно будет.

Например:
Запрос  = Новый Запрос("ВЫБРАТЬ 1");
Колонки = Запрос.Выполнить().Колонки;

Сообщить(Колонки.Получить(0).ТипЗначения);
//Сообщение: Null, Число

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

Например:
Запрос      = Новый Запрос("ВЫБРАТЬ 1 КАК Поле");
Выгрузка = Запрос.Выполнить().Выгрузить();
НоваяСтрока = Выгрузка.Добавить();

Сообщить(ТипЗнч(НоваяСтрока.Поле));
//Сообщение: Неопределено

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

Поэтому, разработчику просто нужно это помнить.
+ Есть простой метод, который делает копию таблицы, удаляя из неё тип Null. Его можно использовать на простых табличках. Например, в этом методе.

Как думаете, а возможны ли случаи иного поведения формирования типа колонки результата запроса ?
————————————
@JuniorOneS | #Заметки
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →