Удд это в 1с

Обновлено: 07.07.2024

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

Ранее мы уже рассматривали универсальные коллекции значений Массив и Соответствие. В этот раз мы их рассмотрим подробнее их и другие типы коллекций. Эта статья – логическое продолжение материала про Типы значений Неопределено и Тип, здесь мы продолжаем работать с той же внешней обработкой.

Универсальные коллекции значений. Особенности и синтаксис

Найдем а Синтаксис-помощнике Универсальные коллекции значений. Помимо вышеназванных, существуют также хранилища Структура, Список значений, Таблица значений, Дерево значений.


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

Создадим на управляемой форме внешней обработки аналогичные команды и процедуры-обработчики этих команд.


Поместим команды на управляемую форму.


Теперь напишем процедуры–обработчики команд, которые назначат переменной А тип универсального хранилища значений. При этом в поле Комментарий отобразится используемый в обработке код.



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


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

Универсальная коллекция «Таблица Значений»

Таблица значений - это несохраняемый в базе данных объект, который позволяет строить динамические наборы значений и манипулировать ими (добавлять, редактировать, удалять элементы, сортировать). Он может быть наполнен значениями любого типа, т.е. в одной таблице типы хранимых значений могут быть разными.

Для знакомства с ТаблицейЗначений, во-первых, создадим на управляемой форме реквизит Багаж (тип ТаблицаЗначений) с колонками реквизита: Номер (тип Число), Наименование (тип Строка), Количество (тип Число).


Затем поместим Таблицу Значений на управляемую форму


Создадим команду ЗаполнитьБагаж и процедуры-обработчики этой команды. Для заполнения колонки Наименование мы используем коллекцию ТаблицаЗначений и Циклы. Циклы – это функции, которые позволяют выполнять повторяющиеся действия. Возможны различные варианты перебора:

  • Для Каждого – когда при повторении цикла переменной присваивается значение очередного элемента коллекции
  • Пока – цикл выполняется, пока результат заданного логического выражения Истина
  • Для – когда при повторении цикла значение переменной увеличивается на 1


В составе процедур-обработчиков команды «Заполнить» созданы универсальные коллекции значений: Массив –«ДамаСдавала» и ТаблицаЗначений-«ТЗ». Перебирая в цикле элементы массива, заполняем построчно таблицу значений и затем загружаем табличную часть реквизита формы «Багаж» - типа ТаблицаЗначений из заполненной ТаблицыЗначений –ТЗ.

Для очистки табличной части реквизита «Багаж», реквизитов «Комментарий» и «ПрисвоенныйТип» создадим команду «Очистить», поместим ее на форму и напишем процедуру-обработчик этой команды.


Освойте навыки разработчика 1С на очных специализированных курсах от крупнейшей компании-франчайзи 1С.

Обзор системы «1С:Предприятие 8»

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

Обзор системы «1С:Предприятие 8»

Области применения

Гибкость платформы позволяет применять «1С:Предприятие 8» в самых разнообразных областях:
  • автоматизация производственных и торговых предприятий, бюджетных и финансовых организаций, предприятий сферы обслуживания и т. д.
  • поддержка оперативного управления предприятием;
  • автоматизация организационной и хозяйственной деятельности;
  • ведение бухгалтерского учета с несколькими планами счетов и произвольными измерениями учета, регламентированная отчетность;
  • широкие возможности для управленческого учета и построения аналитической отчетности, поддержка многовалютного учета;
  • решение задач планирования, бюджетирования и финансового анализа;
  • расчет зарплаты и управление персоналом и другие области применения.

Технологическая платформа

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

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

Прикладные решения

На платформе «1С:Предприятие 8» фирмой «1С» и ее партнерами создано более 1300 тиражных решений самого разного уровня – от программ для автоматизации работы индивидуальных предпринимателей и небольших фирм («1С:БизнесСтарт», «1С:Управление нашей фирмой» и т. д.) до автоматизации крупных предприятий («1С:ERP Управление предприятием», «1С:Управление холдингом», «1С:Документооборот» и др.). Также на платформе «1С:Предприятие 8» создано большое количество заказных решений под нужды конкретных заказчиков.

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

Отраслевые и специализированные прикладные решения создаются силами партнеров-разработчиков и предназначены для автоматизации отдельных направлений или областей деятельности предприятий. Фирма «1С» проводит сертификацию таких решений на совместимость с платформой «1С:Предприятие». Организации, программные продукты или оборудование которых прошли сертификацию, получают право использования логотипа «Совместимо! Система программ 1С:Предприятие».

1С:Библиотека стандартных подсистем

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

Внедрения

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

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


Встречайте — 1C: Enterprise Development Tools.

Начну с предыстории.

На днях, произошел очень интересный этап в истории развития 1С – была выпущена новая среда разработки под 1С — 1C:Enterprise Development Tools.

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

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

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

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

Так как 1С взяли за основу Eclipse, то автоматом получились вот такие требования:


Естественно, что работает все на Windows 8/8.1, однако в этом случае надо Java 8, а не 7.

Однако, теперь разрабатывать можно и в среде Mac OS.

Но, для начала, перед тем как обрадуются поклонники Mac OS, следует немного объяснить принципы работы в Eclipse, в случае 1С – Eclipse, это текстовый редактор, который просто позволяет редактировать xml, в которых описаны объекты 1С, а это значит, что вы работаете не с базой 1С, как это обычно привыкли делать программисты 1С, а только с конфигурацией, которую вы потом обновляете в конкретной базе данных.
А отсюда следует, что разработка под Mac OS, в отличие от Windows и Linux, может заключаться только в редактировании данных, без возможности привычной нам отладки.

Ну и как можно догадаться, без полноценного 1С предприятия и доступа к конфигуратору отладка не получится.
Одно из ключевых преимуществ (как по мне) — к каждой базе теперь можно подключить n-проектов, т.е. ранее мы не могли, работая с одной базой данных, разрабатывать несколько конфигураций. Точнее могли, но тогда надо было бы возиться с двумя (тремя … n) конфигураторами, выгружать и загружать конфигурации, и вообще – каждый конфигуратор, это отдельное окно. Теперь каждый конфигуратор — это, по сути, отдельный проект.

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

На странице скачивания вы выбираете нужную версию 1С, как это делается обычно, и нужную версию 1C:EDT. Обратите внимание, что разрядность EDT и Java должны совпадать, т.е. или оба x86 или оба x64.
Далее необходимо установить саму 1С, если не установите – работать ничего не будет, т.е. нужно установить именно ту версию, которая дается на этой странице.

После этого надо разархивировать архив com._1c.g5.v8.dt.rcp-win32.win32.x86_64, и можно приступать к работе в Eclipse. Для этого достаточно запустить файл dt.exe. Но, перед запуском – удостоверьтесь, что у вас более 4Гб оперативки, так как со стандартными настройками – виртуальная машина отъедает 3Гб, если у вас меньше оперативки, то можно изменить настройки в файле dt.ini, там есть такая строка -Xmx3072m, вот число – это объем памяти, меньше 2Гб лучше не ставить, а то чревато ошибкой Out of memory.

Сам по себе архив – это компиляция Eclipse с предустановленными плагинами. Т.е. в данном случае не получится подключить свои плагины и настройки из стандартной версии Eclipse, как это можно сделать в случае разработки под Android, когда просто мы указываем путь, выбираем нужные объекты и Eclipse автоматом все настраивает и обновляет. Но, я думаю, что 1С и это вскоре сделает.Первый запуск будет долгий, и так будет всегда, увы, так как создается виртуальная среда, которая после выхода – уничтожается. Но, с другой стороны, это не большая проблема, так как вам для работы с разными базами не надо будет открывать 100500 вариантов Eclipse.

При запуске вы увидите вот такое красивое окошко:


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


Тут сразу видно, что появились новые перспективы:


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

Там же и происходит управление веб-сервером:


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

Теперь можно добавить конфигурацию в проект:


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

Далее нам станут доступны объекты этой конфигурации, и мы ее увидим уже в привычном нам виде:


Увы, но на текущий момент недоступно слишком много свойств и объектов. Однако это совершенно не мешает разрабатывать простенькие конфигурации, например, для мобильной платформы 1С.

Вот так выглядит форма документа:


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

Ну пока формы кривоваты, но тем не менее, для альфа релиза – я ожидал худшего.

Теперь я подключу другую конфигурацию, и посмотрим какой-то код:


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

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


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

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

Теперь можно управлять кучей серверов, удаленно отлаживать данные, работать в своей среде на своем компьютере. К тому же 1С сделали возможность зашифровать канал передачи данных (на что, увы, 99% 1Сников и админов не обратят внимания).

Кроме этого всего – 1С подключили плагины для работы с git. Так что вскоре, для всех тех, кто страдает от работы с хранилищем конфигураций, можно будет смело перейти на git. Описывать работу с гитхабом я смысла не вижу, там «все как обычно».

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

Но, на фоне того, что 1С начала работать вплотную над проектом EDT, они были вынуждены сделать несколько решений, которые они все-таки внедрили в старый добрый конфигуратор:


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

Таким образом, случилось то, чего боялись большинство программистов «не 1С» — русский язык идет в ваши ряды :)

С другой стороны, для программистов 1С – это большой скачок в развитии. Теперь уже порог входа немного увеличился, и, я думаю, немалая часть программистов отвалится, оставшись на старых версиях конфигуратора, как это было с 7.7. Но те, кто смогут осилить новые парадигмы и принципы – будут вознаграждены тем, что научаться работать в популярной среде. А значит, переключаться между разными языками программирования будет намного проще. А, как все однэсники знают – мы одним 1С не ограничиваемся, ибо вечно надо что-то допилить на JS,VBS, SQL, Bash, HTML, а с выходом мобильной платформы – надо будет еще писать и под Андроид, а тут все это в одном флаконе устроить можно будет.

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

Так что жди, мир! Мы идем!

P.S. Специально для тех, кто очень хочет увидеть русский язык в Eclipse и рассказать о том, что программировать на русском – это убожество, то прошу под спойлер:

Берегите глаза

Тут очень хорошо видно, как удобно реализованы области.


А вот так реализована отладка. При чем localhost с портом (слева вверху) как бы намекает на то, что там может стоять ip адрес другого компа.

Сколько же всего сложного и таинственного нас окружает.

Черные дыры и сновидения. Темная материя и подсознание. Корпускулярно-волновой дуализм и 1С.

И ведь думаешь, что знаешь эту "1Ску" как свои пять пальцев, но стоит случайно копнуть глубже. И очередная багофича. Да ешё и какая!

В этой статье рассмотрим секретный оператор ?

О нём мало кто знает, хоть он и существует как минимум с версии 8.0.


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

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


Код успешно выполнился. Удивительно, но сработало! И тут меня понесло.


Как оказалось, знак ? ведёт себя крайне странно. Давайте посмотрим ещё раз прошлый пример.

Мы создаём новую переменную и назначаем ей значение - ?. И в переменной находится Неопределенно. И, казалось бы, это и есть ответ на вопрос. Знак ? означает Неопределено.

Но что же тогда это:


В данном коде сначала идёт объявление переменной "А". И в А установлено числовое значение "1". А далее идёт наше сравнение с ?. Если бы под знаком вопроса скрывалось Неопределено, то мы бы не попали внутрь условия. А по скрину видно, что попали.


Очень странная ошибка. "Переменная не определена (Сообщить)". Ну допустим. Добавим тогда такую переменную:

Данный код компилируется без ошибок. И при выполнении в 1С сообщает "ТЕСТ". То есть значение переменной Сообщить

Выходит, что символ ? указывает на предыдущее слово в коде. В данном случае, перед ? было слово Сообщить. И поэтому 1С изначально поругалась, что такая переменная не определена. А когда мы добавили переменную Сообщить, то всё стало на свои места.

То есть наш код для 1С выглядит так:

А теперь вернемся к нашим предыдущим примерам и разберём что и как сработало.

В данном коде предыдущее слово перед ? - Если. Но оно является ключевым для 1С. Как "Цикл", "Процедура" и так далее. Поэтому, его оператор ? не учитывает и берет в качестве источника значения переменную А.

Скорректируем же этот код так, как его видит 1С:

Теперь всё логично. А = А и поэтому условие выполняется.

А что с нашим самым первым примером?

На самом деле всё так же. Просто заменяем знак вопроса на предыдущее слово.

Да, такой код тоже странный, но в рамках 1С всё логично. Сначала объявляется переменная и в ней Неопределено. А затем происходит присвоение переменной значения из её самой. То есть опять же Неопределено. Можете проверить такой код - это хоть и выглядит странно, но работает. А почитать чуть подробнее можно в статье на ИТС: МояПеременная = 0; МояПеременная = ? + 1; //1 МояПеременная = ? + 1; //2 МояПеременная = ? * 5; //10 МояПеременная = ? / 2; //5 МояПеременная = ? - 6; //-1

А самое интересное, что такая возможность существовала как минимум ещё с версии 8.0 . Специально скачал старую платформу и проверил.

На самом деле такой код можно ещё упросить:

Но такой вариант становится менее надежным. Ведь всё работает до тех пор, пока перед ? находится МояПеременная. Если же вставить после этого какое-то другое "слово", то всё порушится.

Но вот ещё пример:

Мы же помним, что знак ? берет предыдущее слово. Так вот в нашей строке кода это слово "А". Именно так - без "Структура".

Поэтому 1С в таком коде вместо знака вопроса вставит "А"

Но зато появляется новая возможность применения:

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

А вот ещё пример. Можно передать в какой-то метод или конструктор одно значение несколько раз:

Передавать знак ? можно даже в условный тернарный оператор. Например, этот код приводит отрицательные числа к 0:

А этот приводит отрицательные числа к положительным:

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

Главное помнить, что знак ? берет именно предыдущее слово, поэтому вот так работать НЕ будет:

1С поругается, что Переменная не определена (Структура). Ведь перед последним знаком ? слово Структура

Но что если использовать символ ? в параметрах?

Сделаем процедуру с параметром ? :

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

Но мы можем сделать его необязательным:

И параметр не обязан быть единственным. Можно делать разными способами:

А можно использовать Знач

Но вот незадача, ? в параметре метода не использует предыдущее слово (как во всех других случаях). Как обратиться к этому параметру - неизвестно.

В стеке вызовов он отображается:


А попробуем добавить второй параметр ?

1С ругается так:

Формальный параметр с указанным именем уже определен (?)

Опираясь на текст ошибки, мы можем предположить, что 1С объявляет параметр с именем "?"

И когда мы пытаемся добавить ещё один такой параметр, то платформа ругается.

Как обратиться к параметру с именем "?" - неизвестно. Методы Вычислить() и Выполнить() не помогли.

Но, возможно, это всё те вопросы, которые нам ещё предстоит разгадать. Секреты и загадки этой таинственной платформы под кодовым названием 1С.


Понравилась статья?

Поставьте лайк плюс. Пишите свои идеи и комментарии по теме. Статья будет дополняться.

Читайте также: