Генерация кода управляемой формы (декомпиляция элементов)

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

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

декомпиляция форм генерация кода управляемая форма

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

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

Идея и часть кода взята из этой обработки //infostart.ru/public/99363/

Аналогичной корректно работающей для управляемых форм не встречала.

Порядок работы

1. Добавляем все нужные элементы конструктором.

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

3. Отмечаем нужные нам элементы (те, что мы добавили).

4. Нажимаем "Сформировать код".

5. Сформированный код переносим в событие "ПриСозданииНаСервереФормы" и удаляем из формы сами элементы. Теперь они формируются программно.

В типовых с применением БСП код для генерации реквизитов достаточно разместить в общем модуле "МодификацияКонфигурацииПереопределяемый". В этом случае типовая форма остается неизмененной, но нужные реквизиты на ней отображаются. Подробнее это описано в статье "Типовой механизм упрощенного изменения конфигурации в ERP 2.0 и УТ 11"

Для общего понимания, как вообще работает управляемая форма, рекоммендую почитать статью "Под капотом управляемых форм"

Технические моменты.

Для версии 2:

1. Обработка работает только в толстом клиенте.

2. Генерирует только код создания элементов. Не определяет значение свойства "ПутьКДанным" и обработчики событий.

3. Не требует изменения конфигурации для генерации кода. Просто запускается как внешняя.

Для версии 3.0:

1. Работает в любом режиме (толстый и тонкий клиент)

2. Генерирует код создания элементов, реквизитов и команд.

3. Для генерации кода обязательно включение в процедуру "ПриСозданииНаСервере" модуля декомпилируемой формы следующего кода. 

	Если Форма.Параметры.Свойство("ДекомпиляцияЭлементов") Тогда
		ВнешниеОбработки.Создать(Форма.Параметры.ДекомпиляцияЭлементов.ИмяПодключеннойОбработки,Ложь).ОпределитьВнутренниеСвойстваЭлементов(Форма);
	КонецЕсли; 


Для конфигураций на основе БСП достаточно прописать вызов один раз для всех форм в общем модуле "МодификацияКонфигурацииПереопределяемый". Для нетиповых конфигураций необходимо модифицировать модуль формы.  

По обеим версиям:

4. С формами внешних обработок и отчетов не работает. Только с встроенными в конфигурацию.

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

По развитию обработки: 

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

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

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

Если есть еще какие-либо пожелания или замечания по работе, то пишите в комментариях.

UPD 02.10.2014

Добавила обновленную версию 3.0.

Отличия выше по тексту. 

UPD 18.10.2014

Обработка поддерживает свойства элементов для релиза 8.3.5. В более ранних релизах каких-то свойств может не быть. Например, в 8.3.4 нет системных перечислений и свойств ПоложениеСтрокиПоискаПоложениеСостоянияПросмотраПоложениеУправленияПоиском.  Подробнее в комментариях (28)-(32). Добавила отдельную версию для платформы 8.2 (проверялась на 8.2.16, более стрые релизы, думаю, не актуальны). Её же можно использовать для релизов 8.3 до 8.3.5.  Это полный аналог стандартной обработки 3.0 в которой закомментирована работа с новыми свойствами.

UPD 18.01.2015

Версия 3.0.1 beta. Добавлено формирование кнопок командной панели формы. Расширен перечень обрабатываемых свойств.  Исправлена работа в клиент-серверном варианте.

Рекоммендую из других моих обработок:

1. Комплексная проверка ведения учета в УТ10, УТ11, КА, УПП, ERP - простая обработка для проверки корректности ведения учета по всем разделам учета.
2. Дерево объектной модели схемы запроса (декомпиляция текста запроса) - программная модификация запроса через схему запроса.
3. Универсальная выгрузка/загрузка данных в формате JSON для отличающихся конфигураций (Такси+ОФ) - перенос данных между любыми конфигурациями на любых платформах (8.2-8.3) с любым интерфейсом.

Скачать файлы

Наименование Файл Версия Размер
ДекомпиляцияУправляемыхФорм_v2.epf

.epf 16,45Kb
1670
.epf 16,45Kb 1670 Скачать бесплатно
Декомпиляция управляемых форм 3.0 (с 8.2)

.epf 20,26Kb
1686
.epf 20,26Kb 1686 Скачать бесплатно
Декомпиляция управляемых форм 3.0 (с 8.3.5)

.epf 21,52Kb
2371
.epf 21,52Kb 2371 Скачать бесплатно
Декомпиляция управляемых форм 3.0.1 (с 8.3.5) (3.0 + разбор командной панели + клиент-сервер)

.epf 22,14Kb
3266
.epf 22,14Kb 3266 Скачать бесплатно

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

Комментарии
В избранное Подписаться на ответы Сортировка: Дата
135. Drivingblind 148 28.01.21 19:38 Сейчас в теме
(132) скачал вашу версию. Невозможно открыть, невозможно подключить.
Выдаёт ошибку: "Архив не является набором вариантов картинки, либо содержит некорректные варианты.".
Платформа 8.3.17.1549
134. triviumfan 24 26.10.20 15:26 Сейчас в теме
(133) Чего ты там нагородил, что полеввода вставляется в командную панель?!
133. user592773_demon1995.27 29.09.20 16:36 Сейчас в теме
(132) Немного доработал и добавил добавление кнопок на командную панель табличной части (106)
Прикрепленные файлы:
ДекомпиляцияУправляемыхФорм_kao.epf
ubnkfl; Anchoret; K_A_O; +3 Ответить
132. K_A_O 530 15.09.20 09:10 Сейчас в теме
Судя по тому, что обработка бесплатна для скачивания - файл можно здесь прикрепить.
Добавлен анализ некоторых новых свойств реквизитов для последних платформ.
И платформенные картинки разбираются.
Прикрепленные файлы:
ДекомпиляцияУправляемыхФорм_kao.epf
itoptimum; +1 Ответить
131. cprit 438 14.09.20 10:42 Сейчас в теме
(0)Добрый день!
Прошу разрешения на включение вашего инструмента в свободно распространяемый набор "Универсальные инструменты 1С" https://github.com/cpr1c/tools_ui_1c.

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

Буду благодарен за любой ответ
AnddnA; GarickRus; itoptimum; +3 1 Ответить
130. itoptimum 26.08.20 11:52 Сейчас в теме
129. itoptimum 26.08.20 11:51 Сейчас в теме
Не взяла кнопки командной панели,заключенной в группу, табличной части Товары документа РеализацияТоваровУслуг.ФормаДокументаТовары БП3, при добавлении строк
		НоваяСтрока = ПараметрыДекомпиляции.ДеревоЭлементов.Строки.Добавить();
			НоваяСтрока.Тип = Тип(Форма.Элементы.Товары.КоманднаяПанель.ПодчиненныеЭлементы.ТоварыДействия);
			НоваяСтрока.Имя = "ТоварыКоманднаяПанель";
СформироватьДеревоСЭлементамиФормы(НоваяСтрока,Форма.Элементы.Товары.КоманднаяПанель.ПодчиненныеЭлементы.ТоварыДействия.ПодчиненныеЭлементы);
начинает их видеть и корректно обрабатывать.

В БП3 для вызова без изменения модуля форм необходимых документов можно добавить блок в ОбщиеМодули.УправлениеСвойствами:
Процедура ПриСозданииНаСервере(Форма, ДополнительныеПараметры = Неопределено) Экспорт
	
	Если Форма.Параметры.Свойство("ДекомпиляцияЭлементов") Тогда
	    ВнешниеОбработки.Создать(Форма.Параметры.ДекомпиляцияЭлементов.ИмяПодключеннойОбработки,Ложь).ОпределитьВнутренниеСвойстваЭлементов(Форма);
	КонецЕсли; 


просуммировал тут все комментарии что были ранее, внес небольшие изменения, отправлю файл так же комментарием дальше
128. Hatson 424 20.05.20 11:38 Сейчас в теме
Необходимо исправить ошибку. Слетает параметр ИмяПодключеннойОбработки
Нужно закомментировать строчку:


Процедура ПоместитьПустыеДанныеВХранилище() Экспорт

	СохраненноеДеревоЭлементов = ЭтотОбъект.ДеревоЭлементов.Скопировать();
	СохраненноеДеревоЭлементов.Строки.Очистить();
	СохраненноеДеревоРеквизитов = ЭтотОбъект.ДеревоРеквизитов.Скопировать();
	СохраненноеДеревоРеквизитов.Строки.Очистить();
	СохраненнаяТаблицаКоманд = ЭтотОбъект.ТаблицаКоманд.ВыгрузитьКолонки();
	
	ЗаполнитьСоответствиеТекстовыхПредставлений();
	ЗаполнитьСоответствиеПредставленийТипов();
	
	ПараметрыДекомпиляции = Новый Структура("СоответствиеТекстовыхПредставлений,СоответствиеПредставленийТипов,ДеревоЭлементов,ДеревоРеквизитов,ТаблицаКоманд",
	СоответствиеТекстовыхПредставлений,СоответствиеПредставленийТипов,СохраненноеДеревоЭлементов,СохраненноеДеревоРеквизитов,СохраненнаяТаблицаКоманд);
	
	ЭтотОбъект.АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ПараметрыДекомпиляции,ЭтотОбъект.АдресВоВременномХранилище);
	//ЭтотОбъект.ИмяПодключеннойОбработки = ЭтотОбъект.ИспользуемоеИмяФайла; // - ЭТА строчка лишняя!!
	ЭтотОбъект.ИмяВременногоФайла = ПолучитьИмяВременногоФайла(); 

Показать
127. sh_progr 29.01.20 21:01 Сейчас в теме
126. ekaruk 5333 28.01.20 22:43 Сейчас в теме
(125) Процедуру из общего модуля нельзя.
Однако во многих типовых есть как раз на такой случай отдельная процедура в форме "Подключаемый.....", которая из себя вызывает процедуру общего модуля. Можно попробовать подключить её и внести изменения в общий модуль.
125. sh_progr 28.01.20 22:39 Сейчас в теме
Можно ли при программном добавлении команды в Действие = "..." указать процедуру из общего модуля? Чтобы в форме вообще не было никаких изменений
124. NoRazum 28 19.06.19 16:19 Сейчас в теме
Если в реквизите есть такое "Изображения[0].Адрес"
та падает с ошибкой.

Стандартная УНФ ((
Кто мог подумать что так сделают ?!?!
123. user701287_darkowntheworld 07.04.19 21:46 Сейчас в теме
В "Декомпиляция управляемых форм 3.0.1 (с 8.3.5) (3.0 + разбор командной панели + клиент-сервер)" ошибка... Модуль формы
&НаКлиенте
Процедура ДеревоФормВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	Если ВыбраннаяСтрока = Неопределено Тогда
	
		Возврат;
	
	КонецЕсли; 
	
	ТекСтрока = Объект.ДеревоФорм.НайтиПоИдентификатору(ВыбраннаяСтрока);
	Если НЕ ПустаяСтрока(ТекСтрока.ПолныйПутьКФорме) Тогда
		//Имя справочника, имя документа, ....
		РодительФормы = ТекСтрока.ПолучитьРодителя();
		//Справочник, документ,....
		ТипОбъекта = РодительФормы.ПолучитьРодителя();
		
		СтруктИнфыОМетаданном = Новый Структура;
		СтруктИнфыОМетаданном.Вставить("ТипОбъекта",ТипОбъекта.Имя);
		СтруктИнфыОМетаданном.Вставить("ИмяОбъекта",РодительФормы.Имя);
		СтруктИнфыОМетаданном.Вставить("ИмяФормы",ТекСтрока.Имя);
		
		//Объект.ПолноеИмяФормы = ТекСтрока.ПолныйПутьКФорме;
		
		ДекомпиляцияЭлементов = Новый Структура("АдресВоВременномХранилище,ИмяПодключеннойОбработки,ИмяВременногоФайла",Объект.АдресВоВременномХранилище,Объект.ИмяПодключеннойОбработки,Объект.ИмяВременногоФайла);
		ПараметрыФормы = Новый Структура("ДекомпиляцияЭлементов",ДекомпиляцияЭлементов);
		
		Объект.ПолныйПутьКФорме = ТекСтрока.ПолныйПутьКФорме;
		ПолучитьФорму(ТекСтрока.ПолныйПутьКФорме,ПараметрыФормы);
		
		ЗаполнитьДанныеПоХранилищуНаСервере();
		
		//Развернуть дерево
		Для Каждого Строка Из Объект.ДеревоФорм.ПолучитьЭлементы() Цикл    
			Если Строка.Имя = СтруктИнфыОМетаданном.ТипОбъекта Тогда
				//Ищем объект
				Для Каждого СтрокаОбъект Из Строка.ПолучитьЭлементы() Цикл    
					Если СтрокаОбъект.Имя = СтруктИнфыОМетаданном.ИмяОбъекта Тогда
						//Ищем форму
						Для Каждого СтрокаФормы Из СтрокаОбъект.ПолучитьЭлементы() Цикл    
							Если СтрокаФормы.Имя = СтруктИнфыОМетаданном.ИмяФормы Тогда
								ИдентификаторСтроки = СтрокаФормы.ПолучитьИдентификатор();
// Было
//Элементы.ДревоФорм.ТекущаяСтрока = ИдентификаторСтроки;								
// Надо
Элементы.ДревоФорм.ТекущаяСтрока = Объект.ДеревоФорм.НайтиПоИдентификатору(ИдентификаторСтроки);	
							КонецЕсли; 
						КонецЦикла;
					КонецЕсли; 
				КонецЦикла;
			КонецЕсли; 
		КонецЦикла;
		
	КонецЕсли;
	
КонецПроцедуры
Показать
122. unichkin 1341 12.03.19 19:03 Сейчас в теме
Еще заметил что не выгружается условное оформление формы. Не хватает возможности подцеплять внешнюю обработку.
121. unichkin 1341 12.03.19 09:59 Сейчас в теме
Добрый день! Только что опробовал на 8.3.13.1644. Очень помогло, большое спасибо)
Что заметил (создаю таблицу формы из дерева):
- НовыйЭлемент.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет; -автоматически не добавилось
- НовыйЭлемент.СохраняемыеДанные = Ложь; - зачем-то добавляется, этот флаг и так по-умолчанию Ложь
120. AllexSoft 06.02.19 00:13 Сейчас в теме
Интересная обработка, в копилку.. Похоже она умеет отличать измененные свойства элементов формы еще.. интересно как это сделано
119. FesenkoA 52 16.04.18 10:40 Сейчас в теме
(2) Привет, предки, пишу вам из 2018! 8.3.12 вышла. Нужные поля не читаются, методы - не работают, и вообще можно не рассчитывать на вменяемый механизм, но есть мобильный клиент!
for_sale; +1 Ответить
118. Sanario 22 22.05.17 12:51 Сейчас в теме
Решил) Если в документе, то надо ставить "ЭтаФорма", если в глобальнике - то оставляем "Форма"
itoptimum; +1 Ответить
117. Sanario 22 22.05.17 12:33 Сейчас в теме
Добрый день. Решил попробовать обработку. Для 3.0 поправил процедуру ПриСозданииНаСервере() в глобальном модуле, как было сказано в тексте описания, но обработка ругается:

{Документ.РаспределительнаяСетка.Форма.ФормаДокумента.Форма(445)}: Значение не является значением объектного типа (Параметры)
Если Форма.Параметры.Свойство("ДекомпиляцияЭлементов") Тогда


Подскажите, что я забыл сделать. Тапками не кидайтесь - не шибко еще опытный
116. pt_olga 62 30.04.17 20:15 Сейчас в теме
{ВнешняяОбработка.ДекомпиляцияУправляемыхФорм3.МодульОбъекта(81)}: Ошибка при вызове метода контекста (Вставить)
СтруктураПутейКРеквизитам.Вставить(ПутьБезТочек);
по причине:
Задано неправильное имя атрибута структуры
:(

форма элемента Контрагентов в УНФ 1.6.9.43 на платформе 8.3.9.2033
115. bsbbur 02.03.17 14:59 Сейчас в теме
Замечательная вещь, очень удобно, большое спасибо!
Надо было в Заказ добавить с десяток вкладок с каким-то немыслимым количеством элементов на них. В итоге, модификация формы - одна строчка, ну и дополнительный общий модуль (в т.ч. и для прочих нужд)! Знай себе копипасти - красота!
(на платформе 8.3.9.2170, в УНФ 1.6.7.43, при анализе ЗаказаПокупателя, в конце СформироватьДеревоСЭлементамиФормы(), споткнулось об ПутьБезТочек, когда она приняла значение "ОбъектПлатежныйКалендарь[0]" - поправил для себя, исключив недопустимые символы)
114. karewka 12.02.17 16:25 Сейчас в теме
113. Spacer 305 30.01.17 08:58 Сейчас в теме
Маленькое пожелание. Хорошо было бы еще общие формы добавить.
112. ekaruk 5333 24.01.17 20:30 Сейчас в теме
(109) Смысл в том, чтобы вставить элемент на нужное место.
Добавлять можно. Но добавление всегда добавляет элемент последним. Это удобно, если рисуем форму программно полностью с нуля. Но чаще мы не рисуем форму с нуля, а добавляем программно несколько элементов между имеющимися типовыми. В данном случае применима только вставка. А вставка требует указания места вставки.
111. Spacer 305 24.01.17 19:59 Сейчас в теме
(110)Добавлять элементы можно как добавлением, так и вставкой. При этом указание элемента перед которым нужно вставить не является обязательным.
110. buzzzard 51 24.01.17 16:45 Сейчас в теме
(109) Возможно потому, что добавление любого элемента выполняется вставкой, которая предполагает указание элемента перед которым нужно вставить, а не добавлением. Это предположение, могу ошибаться.
109. Spacer 305 24.01.17 15:25 Сейчас в теме
(108)С последнего? Это как-то все равно что писать справа налево.
Смысл то какой в этом? Просто потом приходится ручками лишние куски кода убирать.
108. ekaruk 5333 24.01.17 12:42 Сейчас в теме
(107) Добавление элементов выполняются, начиная с последнего.
Поэтому при добавлении первого второй уже есть.
Если, конечно, в сформированном обработкой коде самостоятельно строки местами не меняете.
107. Spacer 305 24.01.17 10:02 Сейчас в теме
Обработка очень хорошая и нужная, но есть одна недоработочка.
Когда генерируется код добавления двух и более элементов формы, то указывается элемент формы перед которым вставлять.
Т.е. добавляется первый элемент, и в коде прописано что его нужно вставлять перед вторым.
А второго то еще нет! И возникает ошибка.
106. Anchoret 43 27.12.16 08:55 Сейчас в теме
(105)
Команду можно добавить, но как ее добавить в командную панель табличной части?
105. ekaruk 5333 26.12.16 19:13 Сейчас в теме
(103) Насколько я понимаю, можно добавить команду.
104. artem_from_minsk 26.12.16 18:51 Сейчас в теме
Интересно поюзать конечно
103. Anchoret 43 26.12.16 17:09 Сейчас в теме
Никак не соображу, можно ли добавить кнопку в командную панель табличной части формы документа
102. buzzzard 51 17.10.16 22:49 Сейчас в теме
(100) as7815, подтверждаю. Тоже сейчас уперся в это.
101. olbir 09.09.16 15:29 Сейчас в теме
Добрый день!
Как доступные типы элемента прописать?
100. as7815 09.08.16 11:15 Сейчас в теме
1С:Предприятие 8.3 (8.3.7.2027) Управление торговлей, редакция 11.1 (11.1.4.14) не видит командную панель табличной части любого документа.
99. movis08 23.06.16 12:39 Сейчас в теме
98. zekrus 153 11.05.16 08:50 Сейчас в теме
Доброе утро!
Идеи де компиляции давно на рынке (и под 7.7 и под 8.Х):
http://infostart.ru/public/158687/
Все реализации останавливались на интерпретаторе языка.
В этой не достает только добавить пару штрихов.
Если цель скажем обновление релиза, то
по идее надо делать де компиляцию дельты и
ее уже предлагать отдельным куском для переноса.
Если же цели иные то, тоже нужна четкая последовательность..
(скажем вести разработку конфигурации только из внешней конфы).
С уважением
97. as7815 31.03.16 15:41 Сейчас в теме
Спасибо автору, вышел на новый уровень работы.
96. sano 36 17.02.16 11:54 Сейчас в теме
Так и не получилось программно добавить кнопку глобальной параметризуемой команды. Указываю
НовыйЭлемент.ИмяКоманды = "Обработка.ИмяМоейОбработки.Команда.ИмяКомандыОбработки";

на что при создании формы получаю
"Ошибка при установке значения атрибута контекста (ИмяКоманды)
НовыйЭлемент.ИмяКоманды = "Обработка.ИмяМоейОбработки.Команда.ИмяКомандыОбработки";
по причине:
Недопустимое значение"
Если добавить кнопку в режиме конфигуратора, то в свойстве ИмяКоманды указывается "Обработка.ИмяМоейОбработки.Команда.ИмяКомандыОбработки"
а в свойстве Данные - "Объект.Ссылка" (параметр команды)
Далее, смотрим отладчиком свойства Элемента формы, там в обоих свойствах пустые строки.

Кто-нибудь сталкивался с такой проблемой, и есть ли решение?
95. ekaruk 5333 09.02.16 10:18 Сейчас в теме
(94) Garykom, Вроде должна видеть.
Напишите пример (конфигурация, форма, платформа), на которых не видит командную панель.
94. Garykom 16 08.02.16 22:02 Сейчас в теме
Обработка "не видит" командные панели (и кнопки на них) ТЧ на вкладках страниц в формах документов.
Это баг или фича? :)
93. ekaruk 5333 20.12.15 23:27 Сейчас в теме
(92) MaxS, Расширения достаточно новый механизм.
Думаю, со временем основные проблемы порешают.
Ну и вообще чудес не бывает. Если между версиями в типовой изменилась структура реквизитов на форме (передвинулись группировки, какие-то элементы переместились на другие страницы, группы), то платформа не сможет ее однозначно сопоставить. Она конечно попытается в каком-то виде, но при значительных изменениях получится криво.
По факту, сейчас в расширениях достаточно удобно добавлять элементы кодом.
Просто код для добавления пропиывается в модуле формы расширения, не затрагивая основную.
Благодаря этому мы можем более четко указать, что именно хотим изменить.

По сравнению формы с расширением.
Насколько я понимаю, сейчас такой технической возможности нет.
В режиме предприятия у нас нет отдельного расширения. У нас цельная конфигурация с примененным расширением.
Т.е. сравнить их нельзя.
92. MaxS 2138 18.12.15 17:45 Сейчас в теме
(87) что-то расширения не впечатлили.
Например, программный код у меня более года кочует практически без изменений.
Сделал для эксперимента изменения в форме документа в расширении. Загрузил это расширение в предыдущую версию конфигурации. Оно не заработало, т.к. элементы формы в себе содержат кучу ссылок на справочники... а мне не нужна вся форма, мне нужно добавить несколько реквизитов и не трогать типовые. Если в расширении убрать из формы типовые элементы, они пропадают в предприятии. Может быть я что-то не так делаю? ;)

Как вариант развития этой обработки декомпиляции - можно предложить сравнение формы в расширении и основной формы и генерацию кода.
91. ekaruk 5333 25.10.15 11:30 Сейчас в теме
(90) Shalnov, Вполне корректно доработано. Для картинок из библиотеки будет работать правильно.
90. Shalnov 129 25.10.15 09:42 Сейчас в теме
Немного доработал на "быструю руку" добавление свойства для кнопок "Картинка"
Возможно не лучший вариант..., но мне помогло

В функцию
Функция ПолучитьСвойстваЭлемента(ЭлементОбразец)

В группу:
 ИначеЕсли Тип(ЭлементОбразец) = Тип("КнопкаФормы") Тогда	

добавил:
СтруктураКопируемыхСвойств.Вставить("Картинка",Неопределено);


Добавил код в:

Процедура ДобавитьКопированиеСвойства(ИмяСвойства,ТекЭлемент,ПараметрыФорм)
	
	Значение = ТекЭлемент[ИмяСвойства];
	
	ПредставлениеЗначения = ПолучитьТекстовоеПредставлениеЗначения(Значение);
	Если ПредставлениеЗначения = Неопределено Тогда 
		Возврат;
	КонецЕсли;
	
	ТекстСозданияЭлемента = ТекстСозданияЭлемента + Символы.ПС+
	"НовыйЭлемент."+ИмяСвойства+" = "+ПредставлениеЗначения+";";
	
КонецПроцедуры // ДобавитьТекст()
Показать


и

Функция ПолучитьТекстовоеПредставлениеЗначения(Значение)
	
	//Для текстовых значений добавляем кавычки в вывод
	//для нетекстовых получаем текстовое представление значения свойства
	ПредставлениеЗначения = Неопределено;
	Если Значение = Неопределено Тогда
		ПредставлениеЗначения = "Неопределено";
	ИначеЕсли ТипЗнч(Значение) = Тип("Строка") Тогда
		ПредставлениеЗначения = """"+Значение+"""";
	ИначеЕсли ТипЗнч(Значение) = Тип("Число") Тогда
		ПредставлениеЗначения = Формат(Значение,"ЧН=; ЧГ=0");
	ИначеЕсли ТипЗнч(Значение) = Тип("Шрифт")
		ИЛИ ТипЗнч(Значение) = Тип("Цвет") Тогда
		ПредставлениеЗначения = ПолучитьТекстовоеПредставлениеСложногоТипа(Значение)
	ИначеЕсли ТипЗнч(Значение) = Тип("Картинка") Тогда
		ПредставлениеЗначения=Неопределено;
		Если Значение.Вид = ВидКартинки.ИзБиблиотеки Тогда
			Для Каждого ОбщаяКартинка Из Метаданные.ОбщиеКартинки Цикл
				Если БиблиотекаКартинок[ОбщаяКартинка.Имя] = Значение Тогда 
					ПредставлениеЗначения = "БиблиотекаКартинок."+ОбщаяКартинка.Имя;
				КонецЕсли;
 			КонецЦикла;			
		КонецЕсли;
	Иначе	
		ПредставлениеЗначения = СоответствиеТекстовыхПредставлений.Получить(Значение);
	КонецЕсли; 
	
	Возврат ПредставлениеЗначения;
	
КонецФункции // ПолучитьТекстовоеПредставлениеЗначения()
Показать

89. alexqc 147 09.07.15 17:46 Сейчас в теме
(88) Свойства элементов - через точку? Так еще проще, это ж ошибки времени выполнения. Можно завернуть в попытку, либо использовать промежуточное заполнение через Структуру с последующим ЗаполнитьЗначенияСвойств(). Я привел вариант именно обхода ошибки компиляции.

ЗЫ. Сижу на доработанной УПП для Украины, под 8.2, да еще и в режиме совместимости с 13-м релизом (отключать нельзя бо начинают глючить некоторые ТИПОВЫЕ куски), естественно большей частью на неуправляемых формах. И при обновлении конфы поддержки только облизываюсь, глядя на "слоеный пирог" в 8.3. И :) и :( .
88. ekaruk 5333 08.07.15 19:45 Сейчас в теме
(86) alexqc, Да, логичный вариант.
Для глобальных удобно.
По старым ошибкам там все-таки не глобальные переменные, а свойства элементов.
Так что такой подход не поможет.
Можно, конечно, описать все возможные варианты всех элементов и проверять каждый раз, есть ли такой элемент. Но это как-то слишком запутанно получается.
87. ekaruk 5333 08.07.15 19:43 Сейчас в теме
(85) Letos, На текущий момент доработка программно, конечно, менее актуальна.
Я немного поэкспериметировала с расширениями.
Пока нет однозначного впечатления.
Они дают много возможностей, на зато разрывают конфигурацию на несколько частей, что не очень наглядно.
Кроме того, расширениями можно пользоваться, если это фиксированный набор реквизитов.
Если набор реквизитов зависит от каких-то условиях, то их все равно нужно добавлять программно.
86. alexqc 147 08.07.15 17:21 Сейчас в теме
(32) если еще нужно - для определения наличия "глобальных" свойств можно использовать примерно такой финт:
Если Ложь Тогда
ПоложениеСостоянияПросмотра=0
КонецЕсли;

Если ПоложениеСостоянияПросмотра<>Неопределено Тогда
....


Суть: наличие присваивания (даже в никогда не выполняющемся блоке) объявит такую переменную при ее отсутствии. Это позволит обращаться к ней в коде без возникновения ошибки компиляции.
Переменная будет инициализирована значением Неопределено. А вот если с таким же именем существует глобальное свойство, то оно так и останется неизменным, и естественно не равным Неопределено.
85. Letos 258 30.06.15 13:02 Сейчас в теме
(82) Пытаюсь понять, на сколько подобная доработка актуальна с учетом появившегося "Расширения"? Кстати. на которую у вас тоже есть что-то подобное. =)
83. K_A_O 530 20.04.15 16:44 Сейчас в теме
Бывают ситуации, когда нужно не только добавить новые реквизиты (команды, элементы), но и изменить существующие.
Подправил код. Может не помешает, поскольку существующему режиму работы никак не вредит (надеюсь).
Прикрепленные файлы:
ДекомпиляцияУправляемыхФорм_v3.0.1_tune2.epf
82. ekaruk 5333 26.03.15 22:12 Сейчас в теме
(81) DC, Должны быть видны все реквизиты, которые отображаются на форме.
В том числе дополнительные колонки таблиц.
Вспомогательные, которые на форму не выведены, могут не отображаться.
81. DC 146 26.03.15 17:06 Сейчас в теме
Здорово... Только не видно реквизитов второго уровня (колонки таблиц значений и пр...). Это не предусмотрено?
80. alexandr_astafiev 66 18.03.15 22:32 Сейчас в теме
Добавил колонку в динамический список ОстакиТоваров в обработку ПодборТоваровВДокументПродажи УТ 11.1.7.60 платформа 8.3.5.13 все работает. Спасибо.
79. buzzzard 51 27.02.15 22:21 Сейчас в теме
(78) Врезки кода закомментированы вот так:
// edit ++++
Прикрепленные файлы:
ДекомпиляцияУправляемыхФорм_v3.0.1_tune.epf
Alien_job; +1 Ответить
78. ekaruk 5333 27.02.15 20:47 Сейчас в теме
(77) buzzzard, Если не сложно, выложите просто тут приложением к комментарию. Или пришлите на <МойНик>@gmail.com.
77. buzzzard 51 27.02.15 17:22 Сейчас в теме
(76) Ясно. Я для себя подправил код в части обработки общих форм. Получилось две небольшие врезки кода в двух модулях. Могу выслать.
76. ekaruk 5333 27.02.15 12:44 Сейчас в теме
(73) ksuman,
MS SQL 2000 Enterprise - не поддерживает работу с разделителями.
Вообще-то 2015 год на дворе. Возьмите что-то поновее. Не искала, но вполне возможно, чо где-то в документации по 1С должна быть описана совместимость с версиями MSSQL.

(74) buzzzard, Общие формы не поддерживаются. Пока не нужны были никому. Возможно, позже добавлю.
75. AlexO 130 27.02.15 10:21 Сейчас в теме
(73) ksuman,
потому что система при обновлении ругается что MS SQL 2000 Enterprise - не поддерживает работу с разделителями
А можете скриншот ошибки выложить?
74. buzzzard 51 27.02.15 01:36 Сейчас в теме
А где же общие формы?
73. ksuman 22.01.15 15:43 Сейчас в теме
(72) AlexO,
"трехзвенная архитектура с ультраклиентом"

Срочно запатентуйте это название, иначе именно так и назовут...
А если серьезно, у них уже появилось Ноу-Хау с начала прошлого года: работа в 1С в МоделиСервиса с использованием РазделителейУчета на базе Общих реквизитов. Это что-то вроде как Облако в Информационной базе, для работы разных Юр.лиц. Однако эта хрень тоже не работает корректно. Мне пришлось отключить их использование и закомментить все их использования, потому что система при обновлении ругается что MS SQL 2000 Enterprise - не поддерживает работу с разделителями. Т.е. я вообще полагал что в плане взаимодействия движка 1С и движком базы данных, 1С просто меняет план запроса так, чтобы система фильтровала данные по указанным полям и подготовку этого вела до компиляции. А вот как на самом деле никто не знает, даже 1С-ники, кроме непосредственно разработчиков этого механизма.
72. AlexO 130 21.01.15 16:21 Сейчас в теме
(71) ksuman,
Я согласен с тем, то это не есть Клиент-серверный механизм, когда интерфейсная часть должна выполняться на клиенте, а обработка данных на сервере. Но 1С - это назвал "Тонкий клиент"
Поэтому я уверен, что через пару лет не будет никаких УФ и 8.3 в текущем виде, а будет очередная "новаторская" погремушка от 1С.
Например, "трехзвенная архитектура с ультраклиентом".
71. ksuman 21.01.15 16:14 Сейчас в теме
(66) AlexO,
Тогда - в сад такие "клиент-серверные" механизмы, которые на деле ими не являются. Только и всего

Я согласен с тем, то это не есть Клиент-серверный механизм, когда интерфейсная часть должна выполняться на клиенте, а обработка данных на сервере. Но 1С - это назвал "Тонкий клиент", позаимствовав это название у Microsoft и Citrix по отношению к RDP и ICA протоколам. Только зачем делать пародии на известные и отлаженные продукты, когда эффективнее, безопаснее и быстрее использовать как раз эти механизмы.
Думаю, господин Нуралиев упивается счас своей крутизной, хотя не понимаю что хорошего в пародии на RDP, когда функционал в итоге из-за этого очень ограниченный.
70. AlexO 130 21.01.15 14:19 Сейчас в теме
(69) ну тогда - вы всегда можете выложить его в комментариях ))
69. ekaruk 5333 21.01.15 11:08 Сейчас в теме
(68) AlexO,
Так у вас платная или бесплатная разработка? Если у вас маркетинговая направленность как у германовского e-конструктора, то значит так.
Я имела в виду, что технически не могу загрузить на инфостарте обновленный вариант и оставить его свободным для скачивания. Такой режим только у старых файлов остался.
68. AlexO 130 21.01.15 10:39 Сейчас в теме
(65)
Не могу 3.0 обновить, иначе она перестанет быть бесплатной.
Так у вас платная или бесплатная разработка? Если у вас маркетинговая направленность как у германовского e-конструктора, то значит так.
(61) lustin,
Если в ответном комментарии кто-то захочет что-нибудь сказать про Снегопат
Орефков в очередной раз борется с ветряными мельницами 1С.
Вспомним, какой выхлоп у Снегопата (ну ладно, назовем это - "прорыв", тем более, в сравнении с последующим развитием) был на 8.1. Потом - вышла 8.2, и Снегопат подделывали под кадый даже не релиз - под-подрелиз постоянно перекручиваемой в мясорубке платформы.
Теперь - полный рефакторинг под некий сторонний убер-продукт AngelScript, который также просто является одним из инструментов (одним из многих), которые все наслаиваются и наслаиваются пирамидой на разработку в конфигураторе 1С. И что никак не отменяет переработку Снегопата под новые "убер-релизы" платформы от 1С (как ей самой кажется, и каждый раз вводится "множество изменений", которые потом на деле оказываются либо фикцией, либо повтором самих себя, либо просто "еще нерабочие", но ошибки тянут за собой вполне "рабочие").
А что в итоге? А в итоге - "тут покрасивше, тут ТЧ могу сразу в коде описать, тут подсказка более удобна". И на это затрачено - сколько человеко-лет?
67. AlexO 130 21.01.15 10:27 Сейчас в теме
(61) lustin, или вы очень далеко ушли, или ушли - но не в ту сторону.
Какие XmlForm+XmlFormData diff, LookAndFeel и прочее?
С выгрузкой бы УФ в XML, и в корректном сравнении их между собой бы разобраться...
66. AlexO 130 21.01.15 10:24 Сейчас в теме
(59) ksuman,
но как мы знаем, существует не одна форма, а две, причем последняя (клиент) - может быть черт знает где и доступна ли в данный момент - неизвестна.
Тогда - в сад такие "клиент-серверные" механизмы, которые на деле ими не являются. Только и всего.
Как я понимаю, эта процедура вызывает поток или или обращается к существующему потоку обработки очередей запросов
Мы понятия не имеем, что там себе нареализовывала 1С. Поэтому - так это, не так это - нам неизвестно. А известен - конечный результат, который озвучен в 48-58.
65. ekaruk 5333 20.01.15 23:43 Сейчас в теме
(64) AlexanderKai, Да, действительно.
В клиент-серверном варианте не вызывается.
Спасибо. Раньше работало. Поломалось после какой-то из доработок.
Исправила в 3.0.1.
Не могу 3.0 обновить, иначе ее статус автоматически изменится на "абонемент" и невозможно будет скачать бесплатно.
64. AlexanderKai 20.01.15 09:40 Сейчас в теме
Использую вариант обработки "Декомпиляция управляемых форм 3.0 (с 8.3.5)".
Заканчивается ошибкой:

{Документ.СписаниеСРасчетногоСчета.Форма.ФормаДокумента.Форма(9)}: Ошибка при вызове метода контекста (Создать)
ВнешниеОбработки.Создать(ЭтаФорма.Параметры.ДекомпиляцияЭлементов.ИмяПодключеннойОбработки,Ложь).ОпределитьВнутренниеСвойстваЭлементов(ЭтаФорма);
по причине:
Ошибка подключения внешних метаданных
по причине:
Каталог не обнаружен 'C:\Users\user1\Desktop\Полезное\ДекомпиляцияУправляемыхФорм_v3­.0.epf'

То есть обработка пытается запуститься с клиентского компьютера, в то время как находится на сервере.
63. yura1960 07.01.15 15:00 Сейчас в теме
ekaruk - нужную вещь всегда можно определить по количеству комментариев. Судя по всему Вы таковую написали, т.к. количество комментов зашкаливает. Скачал и сразу скажу - спасибо!
62. saiten 233 29.12.14 13:11 Сейчас в теме
(61)
из Конфигуратора можно вызвать c помощью epfLoader'а от Snegopata
Мэйби... Я нищеброд и снегопата не имею, так что вообще не представляю о чём речь.
61. lustin 27.12.14 14:31 Сейчас в теме
(15) saiten, я думаю что из Конфигуратора можно вызвать c помощью epfLoader'а от Snegopata, так как судя по всему 2015 год Конфигуратор будет таким же убогим как и раньше.

(47) Что касается исходного посыла:
Надо вспомнить что управляемые формы - сиречь XAML (C#) или Jelly (java)

http://commons.apache.org/proper/commons-jelly/tutorial.html
http://msdn.microsoft.com/en-us/library/ms788723(v=vs.110).aspx

Соответственно если раздумывать над тем - как можно сравнивать и анализировать управляемые формы, нужно исходить не только из проблематики нашей 1С-нины, но и из проблематики WPF и Java (jelly)
Но "низом" как все правильно заметили - это в принципе XML со схемой данных

В итоге получается если разделить задачу на 2 составляющие у нас получается:

ядро должно позволить делать XML merge и diff
а интерактивная часть должна иметь 3 закладки
а. показать объединенную форму
б. пока diff в терминах метаданных (c конфликтами)
в. показать diff в терминах XML
дополнительно надо помнить что надо объединять не только XML представление, но и данные формы.
В общем виде задача пока такая. Основные проблемы в ядре - так как у того же WPF эта проблема также еще не решена окончательно.

И еще - это уже из Java мира приехало: дело в том что когда форма описывается формально (то есть правилами, а не свойствами - в Java мире используется такая хрень как LookAndFeel) меняются не только элементы, но и их "поведение" - привязки, расширение и т.д. И вот тут начинается веселье - merge он же статичен, то есть показывает разницу в стилях и элементах, но не показывает "что будет если форма будет в полном экране, НЕ в полном и т.д.)

В итоге видится:

Xml merge + XSD validate - чтобы попробовать отобразить получившуюся форму. Наверное стоит подсветить элементы исходной версии черным, элементы добавленные зеленым, конфликтные красным.
XmlForm+XmlFormData diff - чтобы сформировать отчет наподобии неуправляемых форм, что поменялось в данных формы и в элементах

Пока так в первом приближении... Чуть позже будут подробности, так надо актуализировать что в последней версии есть у v8Reader

(54) Артур, немного лукавит, юзают только ведущие программисты и "сочувствующие", на самом деле в стандарт разработки 2 года назад был включен следующий пункт


Ведущий программист 1С (Team leader)
* имеет на своем компьютере
1. 1С предприятие 3 версий (legasy, stable, beta)
2. Visual Studio
3. SQL Developers Edition
4. MSGit (добавлено в PATH)
5. Attlasian SourceTree
6. 1Script (добавлено 4 месяца назад)
7. xUnitFor1C, v83unpuck, precommit1c

* внедряет в своей команде
0. Использование сервера тестирования, сборки и развертывания и скрипты для этого. А также использование файлов поставки для развертывания релизов.
1. TDD - для автоматизированного тестирования, BDD - для формализации требований
2. GitFlow как стандарт коллективной разработки
3. обычные разработчики, консультанты, внедренцы и остальные странные личности работают с хранилищем и получают "по шапке" только за отсутствующий комментарий при помещении разработки в хранилище. Присоединяются к "движению" за правильную разработку, только по собственному желанию, желанию ведущего разработчика 1С или желанию ИТ руководства, когда проект загнулся от ошибок в процессе бурного развития (кризисное управление)

Показать


Для всех новых приходящих была специально разработана вакансия в стиле "чемпион" (сейчас в архиве, так как чемпионов достаточно)
http://job.svyaznoy.ru/msk/office/archive/it/572503/

P.S. Если в ответном комментарии кто-то захочет что-нибудь сказать про Снегопат, ознакомьтесь пожалуйста с этим https://snegopat.ru/forum/viewtopic.php?f=1&t=667
60. ksuman 17.12.14 16:33 Сейчас в теме
Хотелось бы резюмировать чтобы больше сюда не возвращаться.
Конечной целью любой ERP-системы является удовлетворение запросов, или если хотите: прихотей и желаний конечного пользователя. Целью же 1С, по всей видимости является упрощение и стандартизирование программной разработки, чтобы привлекать новых разработчиков ИБ под их продукты. А на удобство работы, функционал, скорость обработки информации, скорость и надежность отклика интерфейса - им наплевать. Пока эта схема работает, но терпение пользователей 1С - не безгранично. Если политика 1С - не изменится, то скоро по частям коммерческих и других продуктов, компании будут переходить на другие системы или будут разрабатывать на старой, уже отлаженной версии 8.2.
59. ksuman 17.12.14 16:19 Сейчас в теме
(57) AlexO,
Должен быть разумный механизм передачи данных без костылей вида "ЗначениеВРеквизитФормы"

Конечно, это Ноу-Хау от "создателей" УП является досадным и неудобным механизмом присвоения значений реквизитам формы. Но причины, почему к этому пришли вполне понятны: вначале пытались как положено делать присвоение, но как мы знаем, существует не одна форма, а две, причем последняя (клиент) - может быть черт знает где и доступна ли в данный момент - неизвестна. Т.е. присваивая значение элементу формы напрямую мы до завершения транзакции должны ожидать, когда клиентский элемент получит это значение, подтвердит - а сервер - будет ждать...
Как я понимаю, эта процедура вызывает поток или или обращается к существующему потоку обработки очередей запросов на присвоение значений реквизитам формы. Это было бы разумно... Хотелось бы верить, что именно из-за этого мы и страдаем...

В целом же я ничего против этого механизма не имею, но только для конкретных узко-специальных целей. Если бы система осталась бы гибридной и для основной работы использовала бы ОбычноеПриложение, а для заказов, удаленных продаж, формирования аналитических отчетов с уже заранее подготовленными настройками и других видов работ с мобильных и планшетных устройств. Так нет 1С нам навязывает - Или-или - вот что бесит!
58. AlexO 130 17.12.14 10:52 Сейчас в теме
(55) saiten,
Или вы действительно делаете только так?
А вы сразу программно создаете, даже не видя, что в результате получится? Куда элемент "съедет", и вообще, какой вид формы получится в итоге? По сути, здесь идет с конца - с результата: хотим получить вот это, и подгоняем программное создание под конечный результат.
Расскажите еще, что заранее знаете все, все просчитали (тем более - в 1С), и в просмотре конечного результата не нуждаетесь.
57. AlexO 130 17.12.14 10:48 Сейчас в теме
(55) saiten,
после чего форма отправляется клиенту уже заполненная

Да пусть хоть 200 тысяч раз отправляет заполненную форму, и 200 тысяч раз - обращается к серверу. Должен быть разумный механизм передачи данных без костылей вида "ЗначениеВРеквизитФормы" и "ПоместитьВоВременноеХранилище" и т.д. Эти костыли и делают то же самое - соединяют клиента и сервер, ну так пусть это и делает платформа - получаешь ТЧ, она инкапсулирует в свои внутренние "ЗначениеВРеквизитФормы", и получает данные обратно. А программист видит только присвоение через "=". Или пусть выход на API дают, разберем форму и все вызовы на составляющие, и тогда сами будем писать вызовы и передачи - каждый свою функцию "ЗначениеВРеквизитФормы". А сейчас это профанация, и не более того.
Зачем на клиенте пути к данным?
Затем, что клиент-серверная архитектура подразумевает взаимодействие (тесное и интенсивное) клиента и сервера, и тут надо делать оптимизацию вызовов, а не отмазываться костылем "ЗначениеВРеквизитФормы".
Т.е. в результате ТЧ получить на форме нельзя без условного "ЗначениеВРеквизитФормы", но платформа и сама "прекрасно" все видит, и сообщит об этом, что нельзя. Переменные сервера и формы не видны друг у друга, но ПоместитьВоВременноеХранилище - та же переменная, которая видна и там, там, существуя "одновременно" везде.
Т.е. имеем чушь и шизофрению вместо четкого понимания и написания кода.
56. AlexO 130 17.12.14 10:29 Сейчас в теме
(55) saiten,
То что путей к данным нет на клиенте?
Меня не устраивает, что нужно писать то, что и так разруливается платформой ("инструкция не поддерживается на сервере/клиенте!").
Поэтому и нет никакого смысла во всех этих "на сервере...на клиенте...." - ты в любом случае пишешь там только то, что позволено: вызовы и обращения к базе.
Так пусть платформа и распределяет сама эти вызовы, буде где их встретит - в форме, в общем модуле, и т.д. А не так, как сейчас реализовано в УФ - с профанацией и дискредитацией клиент-серверной архитектуры.
Наполнение формы данными производится на сервере
Да кто вам сказал?! И какая разница - где? Нужно на сервере - пусть наполняется на сервере. Нужно на клиенте - пусть на клиенте. Тогда уж либо платформа сама все разруливает, и не путает программиста "инструкция только на сервере!", либо программист ставит - где считает нужным, - работу на сервере или клиенте. Что и было частично сделано в 8.1. Частично - потому что #ЕслиКлиент или #ЕслиСервер всегда отслеживала, откуда вход (с клиента или сервера), но не всегда отрабатывала код внутри вызова только на клиенте, или только на сервере. Но чья это недоработка - разве программиста?
Нет, вместо улучшения и развития нормальной системы клиент-сервер, сделали подделку и назвали "УФ".
55. saiten 233 16.12.14 16:26 Сейчас в теме
(48)Хм... Много букв, но смысла в них я не увидел... Наверное, плохо смотрел. Что вас конкретно не устраивает? То что путей к данным нет на клиенте? Наполнение формы данными производится на сервере, после чего форма отправляется клиенту уже заполненная. Зачем на клиенте пути к данным?
(51)
По-моему, это не "компромисс", а единственно рабочий метод программного создания форм как на ОФ, так и - тем более, с сомнительными неуправляемыми автопривязками, - на УФ.
Это ведь шутка, да? Или вы действительно делаете только так?
54. AlexO 130 16.12.14 15:00 Сейчас в теме
(53) artbear,
Как ты знаешь, мы также активно юзаем Гит.

А мы не юзаем Гит. Мы пишем код в 1С ))
Team leader; +1 Ответить 1
53. artbear 1209 16.12.14 14:31 Сейчас в теме
(47) >>Идеально было бы сравнение текстов аналогично сравнению обычных форм через v8reader

Поясни свою идею. Непонятно, но интересно.
или в Skype
ЗЫ Как ты знаешь, мы также активно юзаем Гит.
52. AlexO 130 16.12.14 11:31 Сейчас в теме
(16)
С УФ просто нужно один раз понять идеологию, потом работа с ними гораздо проще, чем с обычными.

Не согласен.
Это разработчик должен обтесать и вырубить форму для своих замыслов, а не форма - обтесать и вырубить замысел разработчика.
Т.к. в последнем случае все сводится к единственному случаю: 1с предусмотрела эту возможность - замысел "обтесался" и "подстроился" под форму. Нет - все замыслы перечеркиваются единственным ответом "извините, вам это не нужно". Кому это не нужно? 1С? Управляемой форме, что она не может предоставить нужный функционал?
Мне, как разработчику, и заказчику, точно и однозначно нужно. А однозначно не нужен - вот такой подобный подход к разработке среды программирования.
dunaeva1986; fzt; r.zinovev; tormozit; abrafaks; Serega-artem; Yashazz; ksuman; +8 Ответить
51. AlexO 130 16.12.14 11:25 Сейчас в теме
(15) saiten,
Компромисс - нарисовать форму в редакторе, сгенерировать код и подставить его в рабочее приложение. По-моему, это очевидно.
По-моему, это не "компромисс", а единственно рабочий метод программного создания форм как на ОФ, так и - тем более, с сомнительными неуправляемыми автопривязками, - на УФ.
(14) ksuman,
Честно я вообще не понимаю, зачем отказываться от уже нормальной схемы

Видимо, 1С просто не справилась с нормальной автопривязкой в ОФ (с обратной связью, с нормальным отображением - все помнят перечеркнутый красным крестом прямоугольник, когда привязка "неправильна", или отсутствие реакции элемента на изменение формы, хотя вроде все привязки сделаны). И решило "пойти другим путем" - на авось, вдруг "прокатит".
Путь неуправлемых автопривязок УФ, может, и другой, но проблемы те же.
И неумение их решить - все также на первом плане.
50. AlexO 130 16.12.14 11:15 Сейчас в теме
(47)
На самом деле идея очень красивая.

А вот это - и следствие, и причина недоработанности многих механизмов 1С.
Следствие - потому что "красивость"-то доработана, а смысла или работоспособности - минимальное содержание.
Причина - "ну, красиво же, зачем тут еще что-то дорабатывать".
Да пусть все будет "некрасиво", но рабоспособно, или, хотя бы, 1С постоянно бы работала и совершенствовала бы свои внутренние механизмы в сторону функциональности, а не только "красивости".
А так - "ну, идея красивая, что вам еще надо?!" (
49. AlexO 130 16.12.14 11:03 Сейчас в теме
(47)
Сдвигаются индексы и появляется куча отличий

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

Их не было официальных и для ОФ. И не будет. Думаю, 1С раньше перейдет на ООП, чем сделает корректный независимый механизм сравнения своих внутренних объектов.
Считаю, вот это основная причина отсутствия корректных и рабочих механизмов работы с объектами "вне" визуальной среды конфигуратора: этих "объектов" на самом деле и нет, вот и нет ни механизмов сравнения, ни полноценных механизмов создания.
Концепции и "направления" - да, есть. Но концепции - это ничто без развития, а направления, ведущие в никуда - бесполезны.
48. AlexO 130 16.12.14 11:02 Сейчас в теме
(7) saiten,
Пути к данным доступны только на сервере, и это, в общемт-то правильно

Если концепция клиент-сервер реализована через одно место, а не как правильно - то это проблема реализации, а не программистов. А через вот такие "это правильно" - это становится проблемой программистов.
Что тут "правильного", если форма (которая у 1С однозначно превратилась в "клиент") должна отображать данные-с-сервера (в которые однозначно превратилась БД), а данные в базе - должны меняться по результатам действий на форме? Как принудительное искуственное максимальное разделение клиента и сервера на малосвязанные части вписывается в саму концепцию взаимодействия клиент-серверной архитектуры?
Клиент-серверная архитектура - это разделение на клиента и сервер (как среды исполнения, видимости, взаимодействия), а не конкретно на форму и БД, а там "как получится".
Вот над чем нужно было работать в 1С, а не над "особым пониманием" клиент-серверного механизма.
Особых пониманий может быть сколько угодно, а все рабочие решения в области клиент-серверных архитектур уже найдены и реализованы.
47. ekaruk 5333 16.12.14 10:19 Сейчас в теме
(46) AlexO, На самом деле идея очень красивая. То же самое, что с этой обработкой, но анализируем выгрузку конфигурации, а не саму ИБ. Из плюсов, можно четко увидеть абсолютно все имеющиеся у элементов свойства. Сейчас при ходится анализировать "если поле ввода, то такие-то элементы, если картинка, то такие-то". Причем каждое значение сравниваем со значанием по умолчанию. Формируем код только если значение установили. Все равно часть пропускаем. Через XML никаких циклов не нужно, просто берем все имеющиеся свойства.
Хотя основное применение не это.
Лично я сейчас все версии рабочей конфигурации храню в Гит. Сравнение форм в xml даже при небольшом количестве отличий неинформативно. Сдвигаются индексы и появляется куча отличий, которых реально нет. Идеально было бы сравнение текстов аналогично сравнению обычных форм через v8reader. Как эту задачу выполнил бы xslt-шаблон. Сейчас нормального способо сранения управляемых форм лично я не знаю. Собственно, то же самое и для табличных документов в xml. Реально для сравнения выгрузка из 8.2 в .mxl и .form была удобнее.

(44) mihast, Пока не добралась :(
46. AlexO 130 16.12.14 09:59 Сейчас в теме
(4) Asmody,
который по xml из выгрузки конфигурации будет формировать код создания элементов

Зачем формировать элементы, которые уже "сформировны" в конфигурации? Весь смысл - формировать новые элементы на формах.
Анализ конфигурации - это уже из другой области. Да и не нужен он, по большому счету, даже если не принимать во внимание, что сам механизм сохранения и чтения конфы в XML - полурабочий.
45. AlexO 130 16.12.14 09:50 Сейчас в теме
(9) ksuman,
Считаю это решение: Деэволюцией программного обеспечения.

Дело в том, ч то у нас проблема с 1С.
Нет качественного и нормального механизма программного создания элементов. Отсюда и костыли.
К программированию в широком смысле это никакого отношения не имеет.
44. mihast 66 16.12.14 07:28 Сейчас в теме
Жаль, что разбор Командной панели все еще не доделан...
Может в праздники будет ?
43. jobkostya1c8 15.12.14 19:44 Сейчас в теме
Пока открыли на бесплатный доступ из дайджест-рассылки надо скачать. Как говорится в народной шутке "в кулацком хозяйстве все пригодится".
42. DAnry 8 15.12.14 19:04 Сейчас в теме
(2) Yashazz, а если надо сегодня (или вчера)? В таких случаях обработка очень полезна. Автору, спасибо.
for_sale; +1 Ответить
41. new_user 186 15.12.14 16:08 Сейчас в теме
40. dimk@a 15.12.14 15:58 Сейчас в теме
Очень интересная разработка. Спасибо! Беру на вооружение. К счастью, в последний год не доводилось обновлять конфигурации, уже забываю что это за "радость".
39. ekaruk 5333 11.12.14 08:38 Сейчас в теме
(38) NOVOPRO, ПоложениеСостоянияПросмотра добавлено в 8.3.5.1068.
У Вас либо релиз платформы старый либо включен режим совместимости.
Обновите платформу либо возьмите версию обработки для 8.2.
38. NOVOPRO 11.12.14 07:22 Сейчас в теме
Добрый день. У меня тоже вылезла следующая абракодабра, помогите устранить этот глюк.....:
Ошибка инициализации модуля: ВнешняяОбработка.ДекомпиляцияУправляемыхФорм3.МодульОбъекта
по причине:
{ВнешняяОбработка.ДекомпиляцияУправляемыхФорм3.МодульОбъекта(332,69)}: Переменная не определена (ПоложениеСостоянияПросмотра)
СтруктураКопируемыхСвойств.Вставить("ПоложениеСостоянияПросмотра",<<?>>ПоложениеСостоянияПросмотра.Авто);
{ВнешняяОбработка.ДекомпиляцияУправляемыхФорм3.МодульОбъекта(673,46)}: Переменная не определена (ПоложениеСостоянияПросмотра)
>>ПоложениеСостоянияПросмотра.Верх,"ПоложениеСостоянияПросмотра.Верх");
{ВнешняяОбработка.ДекомпиляцияУправляемыхФорм3.МодульОбъекта(675,46)}: Переменная не определена (ПоложениеСостоянияПросмотра)
............
37. ezhik_2000 39 10.12.14 15:14 Сейчас в теме
Программные добавления реквизитов (элементов) на форму очень тормозят открытие форм, проверено на практике. Особенно если формирование в общих модулях. Но зато очень удобно обновлять конфигурацию.
36. Alister 9 29.11.14 17:01 Сейчас в теме
Спасибо за проделанную работу.
35. roman77 165 28.11.14 15:02 Сейчас в теме
Отличная обработка.
Для картинок можно больше свойств генерировать типа:

НовыйЭлемент.Вид = ВидПоляФормы.ПолеКартинки;
НовыйЭлемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Лево;
НовыйЭлемент.Высота = 1;
НовыйЭлемент.Ширина = 2;
НовыйЭлемент.Рамка.ТипРамки = ТипРамкиЭлементаУправления.БезРамки;
НовыйЭлемент.КартинкаЗначений = БиблиотекаКартинок.ВыполненоУспешно;


Оставьте свое сообщение

См. также

DaJet Studio: расширенный язык запросов 1С, очереди сообщений и web сервисы Промо

Прочие инструменты разработчика Администрирование СУБД v8 Бесплатно (free)

DaJet Studio - разработка и управление скриптами, хранимыми процедурами и функциями, написанными на расширенном языке запросов 1С, а также очередями сообщений и web сервисами, основанными на использовании Microsoft SQL Server.

10.11.2020    3206    48    zhichkin    13    

Вызов демонов в 1С

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

Вызываем демонов прямо из 1С!

28.01.2021    5202    139    the1    31    

Микро сервис для работы с запросами SQL

Прочие инструменты разработчика v8 1cv8.cf Россия Бесплатно (free)

Альтернатива COM соединению с SQL базой, обработка запроса.

13.12.2020    3786    42    ivan1703    14    

Графит. Правщик 1С морд от kuzkov.info.2

Прочие инструменты разработчика v8 Бесплатно (free)

Вторая часть записок о разработке программы Графит, векторного правщика для быстрого рисования 1С морд. Обзор сделанного в виде текста описания, гифках и приложенных svg файлах для пощелкать в обозревателе.

02.12.2020    1564    13    Steelvan    6    

Подсистема "Инструменты разработчика" v5.80 Промо

Инструментарий разработчика v8 1cv8.cf Бесплатно (free)

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

23.09.2007    556410    34058    tormozit    2766    

Быстрая кодогенерация программной доработки форм

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

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

12.10.2020    1996    huxuxuya    29    

Ввод по строке для управляемых форм

Практика программирования v8::УФ 1cv8.cf Россия Бесплатно (free)

Ввод по строке с поиском по номеру телефона и наименованию контрагента с помощью обработчика "АвтоПодбор".

08.10.2020    1746    30    anrahell    1    

Консоль HTTP запросов

Консоль запросов v8 v8::УФ 1cv8.cf Бесплатно (free)

Консоль HTTP запросов для управляемых форм.

05.10.2020    3806    305    zarankony    4    

Исправление ошибки 1С:Предприятие 7.7/8.0 - 100% загрузка процессора при ожидании блокировки Промо

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

Цель использования: разгрузить процессор, когда два или более пользователей пытаются провести документ. 1С пытается заблокировать таблицы, но делает это без пауз, и загружает процессор на 100%. При этом пользователи практически "встают", и нормальная работа прекращается. Компонента (или патч) позволяет решить эту проблему и нормализовать работу пользователей. Особенно актуально при работе в режиме сервера терминалов.

13.12.2007    53602    7744    romix    79    

Модульная (open source) конфигурация "INFOSTART ERP community edition"

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

Учетная модульная конфигурация "INFOSTART ERP community edition" для ведения комплексного учета на предприятии.

31.08.2020    5144    351    33lab    51    

Файл тестов для xUnitFor1C: тестирование проведения документов

Тестирование и исправление Прочие инструменты разработчика v8 1cv8.cf Бесплатно (free)

Тестирование проведения документов. Проверяется, что: а) документ проводится; б) движения документа после перепроведения не изменились.

30.06.2020    4383    38    q_i    16    

Как сохранить данные табличного поля в табличный документ / файл Excel программно

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

Пример сохранения табличного поля в табличный документ не через ПКМ -> Вывести список, с автоподбором ширины по содержимому.

31.05.2020    4502    0    rpashkovsky    15    

Пример работы MiracleV8.dll в режиме Управляемого приложения (тонкий клиент) Промо

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

Пример конфигурации Управляемое приложение с использованием MiracleV8.dll

09.04.2012    20517    218    Abadonna    26    

Нейроконструктор

Интеграция Искусственный интеллект (AI) Прочие инструменты разработчика v8 Бесплатно (free)

Изучайте нейронные сети и экспериментируйте вместе с расширением конфигурации "Нейроконструктор". Навыки программирования не требуются.

20.05.2020    10416    136    user1404129    19    

Загрузка, редактирование и установка цветовых схем (раскраски кода) в Конфигуратор и EDT

Работа с интерфейсом Прочие инструменты разработчика v8 1cv8.cf Бесплатно (free)

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

14.05.2020    8006    245    CyberCerber    32    

Универсальные инструменты 1С

Универсальные обработки Прочие инструменты разработчика Консоль запросов v8 1cv8.cf Бесплатно (free)

Свободно распространяемый набор универсальных обработок и отчетов в виде расширения для разработки и поддержки, которое работает во ВСЕХ видах клиентских приложений и во всех операционных системах, которые поддерживает платформа 1С:Предприятие, кроме мобильных. Консоль запросов - консоль отчетов - консоль кода - редактор объектов базы данных - удаление помеченных объектов - поиск и удаление дублей - редактор констант - консоль заданий - групповая обработка справочников и документов - динамический список - поиск ссылок на объект - регистрация изменений для обмена данными - структура хранения базы - консоль HTTP запросов-консоль вебсервисов- консоль сравнения данных- информация о лицензиях- загрузка из табличного документа-файловый менеджер-все функции- навигатор по конфигурации-конструктор регулярных выражений-Выгрузка загрузка XML с фильтрами

21.01.2020    35229    2183    cprit    106    

Формы. Трудности программной работы

Работа с интерфейсом v8 v8::УФ 1cv8.cf Бесплатно (free)

Рассматриваем основные подводные камни, с которыми приходится сталкиваться при программной работе с формами, а также способы обхода самых частых проблем.

06.10.2019    12331    YPermitin    31    

Одновременное использование хранилища и расширений

Практика программирования Инструментарий разработчика v8 Бесплатно (free)

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

23.08.2018    11032    shaa2    3    

Просмотр SQL-таблиц из 1С. Возможность очистки таблиц

Инструментарий разработчика v8 1cv8.cf Бесплатно (free)

Обработка позволяет соединиться с SQL-сервером (SQL-авторизация), получить список баз на сервере, после выбора базы - получить список таблиц. Позволяет вывести таблицу на просмотр, при необходимости очистить таблицу средствами SQL (delete from), просмотреть соответствие имен таблиц объектам конфигурации, в которой запущена база

29.08.2014    22492    414    Abadonna    4    

Native ВК для 1CV8: независимое чтение файлов *.xls и *.xlsx

Инструментарий разработчика v8 Россия Бесплатно (free)

Не требует установленного в системе Microsoft Office (Excel) и Open Office. Технология Native, не требует регистрации в реестре

15.08.2013    33030    390    Abadonna    161    

V8 FORMATTER: Расширенная версия

Инструментарий разработчика v8 1cv8.cf Бесплатно (free)

Форматирование кода модуля одним хот-кеем, ввод "неудобных" символов без переключения раскладки.

22.07.2013    20471    195    Abadonna    124    

MP3 - плейер на основе Miracle

Работа с интерфейсом v8 1cv8.cf Россия Бесплатно (free)

MP3 - плейер на основе Miracle с визуализацией спектра, уровней громкости каналов, времени проигрывания

31.03.2012    14408    38    Abadonna    1    

Информация по регионам и ФО с использованием Яндекс.Карт

WEB Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Пример использования Yandex.Map API для отображения информации по регионам или федеральным округам РФ. Раскраска регионов и ФО, вывод меток, работа в режиме картограммы. Не привязан к какой-либо конфигурации. Просто пример. В 8.2 работает на толстом, тонком и WEB*-клиентах. *(WEB не во всех браузерах).

30.11.2011    5668    138    mgor    3    

Форма выбора координат Yandex карт (управляемая форма)

Универсальные обработки WEB Работа с интерфейсом v8 1cv8.cf Россия Бесплатно (free)

Обработка позволяет найти нужный адрес на карте Yandex. Отправить сообщение форме-владельцу или всем формам, со строкой координат.

06.09.2011    17305    368    motkot    27    

Задача: Программа, выводящая на экран свой исходный код (куайн)

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

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

27.07.2011    10712    344    archie    17    

Информация по реквизитам объекта метаданных на полную глубину

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

Дерево реквизитов объектов метаданных. На всю глубину (т.е. смотрит реквизиты у реквизитов).

10.06.2011    14261    162    kosmo0    5    

Обработка поиска дублей кода. Исходного кода модулей 1С

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

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

12.04.2011    7137    206    bk-81    37    

Помощник для написания запроса в тонком клиенте

Инструментарий разработчика v8 1cv8.cf Россия Бесплатно (free)

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

01.04.2011    18398    309    boln    14    

Прикол над пользователями. 1 апреля

Работа с интерфейсом v8 1cv8.cf Россия Бесплатно (free)

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

31.03.2011    13786    84    Serj1C    20    

Не простой пример работы с флажками и деревом значений (исправление от 21.02.2011)

Работа с интерфейсом v8 1cv8.cf Россия Бесплатно (free)

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

20.02.2011    9329    299    demanru    2    

[Скрипт] Чтение EXIF данных

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

Скрипт на C# для чтения Exif-данных из jpg-файла. Упакован в обработки для 8.1 и 8.2 (управляемые формы)

18.02.2011    22785    279    Душелов    14    

Шрифт для печати текста в рамочке.

Работа с интерфейсом v8 1cv8.cf 1cv7.md Россия Бесплатно (free)

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

01.02.2011    16840    126    Sykoku    32    

Исполнение кода в модуле формы при разработке в 1С 8.2

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

Немного теории о новом подходе к программированию форм в 1С 8.2 Рассматриваются директивы компиляции процедур и функций, которые определяются в модуле формы.

15.01.2011    26764    165    1cNike    19    

WSSpeedTest - обработка измерения скорости работы web сервера

EDT v8 1cv8.cf Россия Бесплатно (free)

Обработка собирает статистику по скорости ответов web сервера за длительный период времени.

20.12.2010    13962    40    nafa    4    

Запись текста модуля ert-файла из текстового файла

Инструментарий разработчика v8 1cv8.cf Россия Бесплатно (free)

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

02.12.2010    22415    143    Abadonna    40    

Запрос против рекурсии или разузлование номенклатуры

Практика программирования Учет ТМЦ Учет ТМЦ v8 КА1 Россия БУ Бесплатно (free)

В задаче "разузлования" номенклатуры в БП 1.6 (2.0) покажем , что запрос более эффективен, чем рекурсия.

23.11.2010    51626    824    Ish_2    258    

Выполнение кода C# из 1С

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

Обработка показывает возможности выполнения кода С# из программы 1С.

23.11.2010    11693    248    AlkB    9    

Братья и сестры, кузены и кузины в Структуре подчиненности

Работа с интерфейсом v8 БП2.0 УПП1 Россия Бесплатно (free)

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

04.11.2010    9129    108        12    

Экспорт встроенных XML-схем описаний типов 1С:Предприятия

Обмен через XML Практика программирования v8 1cv8.cf Бесплатно (free)

Экспорт встроенных XML-схем описаний типов 1С:Предприятия

01.11.2010    22074    200    Dmitryiv    7    

Консоль команд

Инструментарий разработчика v8 1cv8.cf Бесплатно (free)

Написание и выполнение кода прямо в режиме предприятия

21.10.2010    5860    286    RafaelRS    11    

АЦРК: Взаимодействие с сайтом (HTTP)

WEB Инструментарий разработчика v8 1cv8.cf Бесплатно (free)

Обработка демонстрирует взаимодействие программы на 1С с веб-сайтом. Оказывается, это не так сложно.

11.10.2010    15966    158    acrk    2