ART - экспериментальный инструмент программирования

22.09.19

Разработка - Инструментарий разработчика

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

Скачать исходный код

Наименование Файл Версия Размер
ART - экспериментальный встроенный язык для 1С:
.rar 114,92Kb
12
.rar 114,92Kb 12 Скачать
Декларация по налогу на добавленную стоимость (2018)
.rar 33,51Kb
1
.rar 33,51Kb 1 Скачать
СЗВ-М (2018)
.rar 31,72Kb
1
.rar 31,72Kb 1 Скачать

В этом языке всего два основных элемента: элемент A (assembly, группа) и элемент R (repeat, цикл) 

Здесь я приведу три примера того, что можно сделать, используя эти два элемента. 

Первый пример будет совсем простой. У нас есть справочник "Товары". В справочнике есть реквизит "Цена". Мы хотим сделать переоценку, т.е. изменить все цены. Кликаем на элемент R и добавляем его на рабочее поле. Вызываем контекстное меню для добавленного элемента и открываем окно свойств.

Поменяем предопределенное имя R на Товары.  Укажем источник цикла - Справочник.Товары. Укажем новое значение реквизита Цена и команду ЗАПИСАТЬ.

Последняя буква в названии ART, T означает - tracking. Это и получение результата и сам результат и отладка.  Нажмем кнопку "Трэкинг".  Данный наш случай слишком простой, чтобы что-нибудь отслеживать. Просто откроем справочник Товары и убедимся, что цены действительно изменились. Чтобы вернутся в режим разработки, нажмем эту же кнопку (она изменила свой вид):

Слегка усложним задачу. У нас есть документ Отгрузка с табличной частью Товары. Мы хотим разделить этот документ на два. Можно придумать множество способов разделить один документ на два. Мы возьмем самый простой: половину строчек в один документ, другую половину в другой. Разместим на рабочем поле два элемента типа A  и один типа R

Зададим свойства для элемента Подготовка. Исходный документ - это тот который мы хотим разделить на два. Первый и Второй - это новые документы.

У элемента Разделение укажем одно свойство: Источник. Больше нам здесь ничего не нужно.

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

 

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

Вот так выглядят свойства элемента Туда. Свойства элемента Сюда очевидным образом отличаются условием и обращением ко Второму документу вместо Первого.

 

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

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

Эти примеры, конечно, примитивные и вряд ли они кого-то удивят. Тем менее, лично мне эта штука уже не раз помогла справиться с ерундовой работой, ради которой лень открывать конфигуратор. Попробуем теперь сделать что-то приближенное к "боевым условиям". У нас есть документы ЗаказПокупателя, Поступление и Отгрузка. Поступление делает запись в регистр остатков ТоварыНаСкладе со знаком "плюс". Отгрузка - со знаком "минус". ЗаказПокупателя пишет в регистр остатков ЗаказыПокупателей "плюс", Отгрузка пишет "минус", используя для этого реквизит Основание. Мы хотим определить: что мы можем сейчас отгрузить по оставшимся на текущий момент заказам покупателей. И создать документы Отгрузка на основе этих данных.
Разместим на рабочем поле элемент типа R c названием Подбор. Зададим ему следующие свойства:

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

Внутри элемента Заказы разместим два элемента типа A. Один из них назовем Еще, другой Все. Свойства элемента Еще зададим так:

А свойства элемента Все так (обратите внимание на команду Прервать):

В любой момент можно перейти в режим трэкинга и проконтролировать процесс.

Сейчас у нас есть в наличии вся необходимая информация и можно заняться созданием документов. Разместим рядом с элементом Подбор элемент типа R Отгрузка. Обратите внимание на источник. Здесь мы хотим получить содержимое элемента Подбор (т.е. то, что мы получили на предыдущем шаге). "Подбор.Заказы" означает, что мы хотим взять все элементы с нижнего уровня дерева (а Подбор - это дерево, как нетрудно догадаться). Наконец "...Заказы(Заказ)" говорит о том, что мы хотим сгруппировать полученные элементы по заказам. В результате мы получим дерево. На верхнем уровне будет перечень заказов. Уровнем ниже будут детальные строки. 

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

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

В приложении к публикации вы найдете саму обработку, показанные здесь примеры в файлах test1.xml, test2.xml, test3.xml, а также тестовую базу.

Обработка тестировалась на управляемых формах. Платформа 8.3.10.2667. Код обработки полностью открыт.

 

Update 22.12.2018

Добавлены новые источники итераций.

COM. Поддерживает только один объект V83.COMConnector. Позволяет подключаться к любым базам 1С.

ADO. Универсален. В частности, можно использовать для получения данных из Excel.

Архив содержит демо-примеры.

Update 30.12.2018

В процессе работы над декларацией по НДС, выяснилось, что нужны свойства без имени. Я решил, что такие свойства будут размещаться не в списке свойств, а прямо в рабочем поле.
Теперь ART можно использовать как "табло" (была такая штука в предыдущих версиях 1С). В режиме дизайна пишите выражения в рабочем поле.

 

В режиме трэкинга получаете их значения.

 

Update 26.01.2019

Добавлена декларация по НДС. Этот ART состоит из 61 элемента (22 для книги покупок, 22 для книги продаж, 16 для декларации и 1 элемент настройки). По сравнению с 1С-овским отчетом, в котором не менее 25 тысч строк кода - это совсем немного. А главное - гораздо более понятно и доступно. ART предназначен для работы в типовой конфигурации "Бухгалтерия предприятия". Тестировалаось на релизе 3.0.67.43. Платформа 8.3.12.1790.

ОБРАТИТЕ ВНИМАНИЕ. Этот продукт предназначен для ознакомления с экспериментальной технологией. Хотя он и будет работать в большинстве случаев, автор не может гарантировать этого для вас конкретно. Если вы захотите использовать его в реальной работе, то есть вероятность, что вам придется его донастраивать (впрочем, это совсем несложно).

Update 02.02.2019

Добавлен отчет СЗВ-М. Тестировалаось на релизе БП 3.0.65.91. Платформа 8.3.12.1790. В архиве последняя версия обработки, файл отчета и короткая инструкция. Еще раз напоминаю, что отчет предлагается as is. В нем всего 41 элемент. Разобраться намного проще, чем в типовой тысяче (на самом деле еще больше) строк, разбросанной по разным модулям.    

 

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    126887    687    389    

738

Infostart PrintWizard - создание и редактирование печатных форм в 1С 8.3

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

18000 руб.

06.10.2023    8384    24    6    

46

Infostart УДиФ: Управление данными и формами 1С

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

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

10000 руб.

10.11.2023    4724    12    2    

38

SALE! %

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

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

3600 2280 руб.

14.01.2013    178917    1085    0    

862

Бустер Конвертации данных 3 (Infostart Toolkit)

Инструментарий разработчика 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 руб.

07.10.2021    15102    3    12    

37

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99844    239    97    

298

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28417    4    10    

16

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18513    6    8    

40
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
100. altar 232 22.09.19 22:44 Сейчас в теме
(99)test1.xml, test2.xml, test3.xml, а также тестовую базу
101. mkalimulin 1171 22.09.19 23:53 Сейчас в теме
(100) Спасибо, что заметили. Когда закачивал новую версию, по невнимательности закачал файл обработки вместо архива. Сейчас исправил, загружайте.
102. mkalimulin 1171 22.09.19 23:55 Сейчас в теме
(98) Если будут какие-нибудь сложности с загрузкой, пришлю вам архив по почте.
103. altar 232 22.09.19 23:56 Сейчас в теме
Так уже вчера загрузил. Пришлите пожалуйста на почту (ym-1@yandex.ru)
104. Kondrat 11 24.04.20 09:21 Сейчас в теме
Файл архива битый!
Прикрепленные файлы:
105. mkalimulin 1171 24.04.20 09:43 Сейчас в теме
(104) Добрый день. Я проверяю архив до и после загрузки. Проверил прямо сейчас. Он в порядке. Попробуйте закачать его снова. Если не получится, дайте свои координаты. Я вам пришлю.
106. Automatik 922 19.05.21 06:09 Сейчас в теме
Приветствую! Это круто.

Вопросы (первом пример):
1) в справочнике "Товары" цена не меняется, почему?
Сам делал и открывал готовый, в обоих случаях не работает
2) в тракинге что значит значение товары.цена? нет совпадения по всем элементам справочника проверил.

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

2) После открытия файла его имя где-нибудь отображалось (возможно в заголовке).
2.1 Возможность открытия другого файла в новом окне

3) В значениях добавить действия (ЗАПИСАТЬ и т.п.), объекты метаданных

4) в меню элемента добавить пункт "Удалить"

5) сокращение: товары.цена = товары.цена * 1,1-> товары.цена = * 1,1
108. mkalimulin 1171 20.05.21 08:23 Сейчас в теме
(106) Команда "ЗАПИСАТЬ" чувствительна к регистру.
Спасибо за замечания. Сейчас основные силы тратятся на разработку мобильного приложения. Когда будет время заняться приложением на платформе 1С, я учту то, что вы сказали
107. Automatik 922 19.05.21 06:20 Сейчас в теме
как можно оформить в виде обработки?
109. mkalimulin 1171 20.05.21 08:24 Сейчас в теме
(107) В смысле, чтобы подключать в типовых?
110. Automatik 922 20.05.21 09:26 Сейчас в теме
111. mkalimulin 1171 20.05.21 13:49 Сейчас в теме
(110)
Добавить в модуль объекта

Функция СведенияОВнешнейОбработке() Экспорт
	РегистрационныеДанные = Новый Структура;
	РегистрационныеДанные.Вставить("Наименование", "ART");
	РегистрационныеДанные.Вставить("БезопасныйРежим", Ложь);
	РегистрационныеДанные.Вставить("Версия", "1.0");
	
	//ДополнительнаяОбработка
	//ДополнительныйОтчет
	//ЗаполнениеОбъекта
	//Отчет
	//ПечатнаяФорма
	//СозданиеСвязанныхОбъектов
	РегистрационныеДанные.Вставить("Вид", "ДополнительнаяОбработка");
	
	РегистрационныеДанные.Вставить("Информация", "Нет.");
	
	///////////// команды /////////////////////////
	тзКоманд = Новый ТаблицаЗначений;
	тзКоманд.Колонки.Добавить("Идентификатор");
	тзКоманд.Колонки.Добавить("Представление");
	тзКоманд.Колонки.Добавить("Модификатор");
	тзКоманд.Колонки.Добавить("ПоказыватьОповещение");
	тзКоманд.Колонки.Добавить("Использование");
	
	строкаКоманды = тзКоманд.Добавить();
	строкаКоманды.Идентификатор = "1";
	строкаКоманды.Представление = "Открыть обработку";
	строкаКоманды.ПоказыватьОповещение = Истина;
	строкаКоманды.Использование = "ОткрытиеФормы";
	
	
	РегистрационныеДанные.Вставить("Команды", тзКоманд);
	
	
	Возврат РегистрационныеДанные;
	
КонецФункции
Показать
112. a45 88 14.08.23 22:37 Сейчас в теме
Добрый день. Скачал первый файл приложение к статье - в архиве dt тестовой базы и обработка art.epf.

открыл первый пример (test1.xml изменение цен товаров) -> кнопка трекинг -> в справочнике цены не поменялись

открыл второй пример (test2.xml ) -> кнопка трекинг -> ошибка

Значение не является значением объектного типа (ключ)
{ВнешняяОбработка.art.Форма.Форма.Форма(1625)}:записатьвпамять(эс.ключ,эс.значение);
{ВнешняяОбработка.art.Форма.Форма.Форма(1405)}:ОбработатьУзел(уз,текузелрез);
{ВнешняяОбработка.art.Форма.Форма.Форма(1808)}:ОбработатьУзел(текузел,текузелрез);
{ВнешняяОбработка.art.Форма.Форма.Форма(1906)}:ВыполнитьНаСервере("ART");

1С:Предприятие 8.3 (8.3.23.1437) Версия для разработчиков.
113. mkalimulin 1171 15.08.23 08:48 Сейчас в теме
(112) Добрый день!
Сейчас посмотрю
114. mkalimulin 1171 16.08.23 17:29 Сейчас в теме
(112)
Прикрепленные файлы:
art.epf
Оставьте свое сообщение