Табличная часть из дополнительных реквизитов с обработкой событий в расширении

08.08.19

Разработка - БСП (Библиотека стандартных подсистем)

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

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

Наименование Файл Версия Размер
ТабЧастьИзДопРеквизитов
.cfe 256,11Kb
7
.cfe 12.05.19 256,11Kb 7 Скачать

С версии платформы 8.3.11.2867 стало возможным с помощью расширений добавлять к прикладному решению собственные структуры для хранения данных, в том числе табличные части и реквизиты табличных частей. И это замечательно. Однако не всегда конфигурация работает на старшей версии платформы и в нужном режиме совместимости. Кроме того, при добавлении в расширение объектов хранения данных возможны неочевидные проблемы при обновлении (см., например, публикацию 1039552). Поэтому в ряде случаев представляется разумным использовать совместно с расширением механизм дополнительных реквизитов.

Пример выполнен в конфигурации "1С:Документооборот КОРП 2.1" (далее ДО), однако подход применим к любой конфигурации на управляемых формах с БСП и режимом совместимости, допускающим использование расширений.

 

Постановка задачи

В конфигурации ДО необходимо создать вид внутреннего документа Премия, с табличной частью позволяющей учитывать премии сотрудников подразделения. При выборе сотрудника в строке табличной части должна подставляться его должность. Реквизит Должность должен быть недоступен для изменения. При изменении в строке ТЧ суммы премии должна изменяться сумма документа – реквизит Итого распределено. Конфигурация на полной поддержке, включать возможность изменения нельзя.

 

Решение

Создаем вид внутреннего документа – Премия (НСИ / Виды документов / Создать). Устанавливаем флаг Учитывать сумму документа. Остальные настройки – по желанию. (Напомню, что внутренний документ в ДО – это справочник).

 

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

Итак, добавляем три новых доп. реквизита Сотрудник1 – Соотрудник3:

Обратите внимание, свойства Виден, Доступен и др. заполнять следует только в том случае, если мы не собираемся их изменять программно. Ручные настройки перекрывают программные. В текущей задаче свойства доп. реквизитов заполнять не следует. Исключение – доп. реквизит Фактическая численность, у которого можно установить флаг Заполнять обязательно.

 Совет

Добавляем три доп. реквизита Должность1Должность3 (тип Должность):

Добавляем три доп. реквизита Сумма1Сумма3 (тип Число 10, 2):

Аналогично добавляем три доп. реквизита Основание1Основание3 (тип Строка).

И добавляем реквизиты шапки:  Итого распределено (тип Число 10, 2)  и Фактическая численность (тип Число 2,0; Заполнять обязательно).

В результате получаем 14 доп. реквизитов документа Премия, из них два – реквизиты шапки и 12 – реквизиты собственно таблицы:

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

Идем в меню Еще / Настройки / Изменить форму и настраиваем.

У группы Премия устанавливаем горизонтальную группировку.

В группе Премия создаем четыре группы:

- Сотрудник (Отображение – Слабое выделение);

- Занимаемая должность (Отображение – Сильное выделение)

- Сумма премии (Отображение – Сильное выделение)

- Основание (Отображение – Сильное выделение)

У всех групп группировка вертикальная, флаг Отображать заголовок установлен.

Перетаскиваем поля доп. реквизитов в соответствующие группы. В результате форма настройки будет выглядеть так:

 

У всех полей доп. реквизитов устанавливаем Положение заголовкаНет.

 

Настраиваем шапку. В группе Свойства создаем группу Шапка (Отображение – Нет, Группировка – Вертикальная, Отображать заголовок – Нет).

В группе Шапка создаем две группы: Группа подразделение и Группа сумма и численность. У обеих групп Отображение – Нет, Группировка – Горизонтальная, Отображать заголовок – Нет.

В группу Группа подразделение  перетаскиваем из группы Реквизиты / Группа элемента / ГруппаПраво / Реквизиты реквизит (стандартный, не доп.) Подразделение и, выделив этот реквизит, добавляем кнопкой Добавить поля реквизит Руководитель.

В группу Группа сумма и численность перетаскиваем из той же группы Реквизиты / Группа элемента / ГруппаПраво / Реквизиты группу Группа сумма и наш доп. реквизит Фактическая численность. У реквизита Сумма устанавливаем заголовок Премиальный фонд (сумма).

Доп. реквизит Итого распределено перемещаем в группу Шапка.

В результате форма настройки будет выглядеть так:

 

А вкладка Свойства  документа Премия так:

 

 

Далее открываем конфигуратор и добавляем расширение (Конфигурация / Расширения конфигурации / Добавить):

 

Добавляем в расширение форму элемента справочника ВнутренниеДокументы и План видов характеристик ДополнительныеРеквизитыИСведения (нужен для установки типа реквизита формы).

В расширении добавляем реквизиты формы:

- ЭтоПремия – тип Булево;

- КоличествоСтрокВТаблицеПремия – тип Число 3,0;

- ИтогоСумма – тип Число 10,2.

- СвойствоИтогоРаспределено – тип ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения.

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

Код модуля формы элемента справочника ВнутренниеДокументы в расширении представлен ниже:

 

 

// Добавлены реквизиты формы(для документа вида Премия):
// ЭтоПремия - Булево
// ИтогоСумма - Число 
// КоличествоСтрокВТаблицеПремия - Число
// СвойствоИтогоРаспределено - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура Премия_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
	
	Если Объект.ВидДокумента = Справочники.ВидыВнутреннихДокументов.НайтиПоНаименованию("Премия") Тогда
		
		ЭтоПремия = Истина;
		
		///////////////////////////////////
		КоличествоСтрокВТаблицеПремия = 3;
		///////////////////////////////////
		
		СвойствоИтогоРаспределено = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Итого распределено (Премия)");
		
		ОбработатьУстановкуДействияДляДопреквизитов_Премия(Отказ, СтандартнаяОбработка, Неопределено);
		
	Иначе
		ЭтоПремия = Ложь; 
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура Премия_ПриОткрытииПосле(Отказ)
	
	Если ЭтоПремия Тогда
		
		Элементы.Подразделение.АвтоОтметкаНезаполненного = Истина;
		
		УстановитьСвойстваПолей_Премия();
		
	КонецЕсли;
	
КонецПроцедуры


&НаСервере
Процедура Премия_ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
	
	Если ЭтоПремия Тогда
		Если НЕ ЗначениеЗаполнено(Объект.Подразделение) Тогда
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
			НСтр("ru = 'Поле ""Подразделение"" не заполнено'"), ,
			"Подразделение", "Объект");
			Отказ = Истина;
		КонецЕсли;	
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура Премия_ПослеЗаписи(ПараметрыЗаписи)
	УстановитьСвойстваПолей_Премия();
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормыПремияНазначаемые

&НаКлиенте
Процедура СуммаПриИзменении_Премия()
	
	ИтогоСумма = 0;
	Для Сч=1 По КоличествоСтрокВТаблицеПремия Цикл
		СуммаТекущая = НайтиДопреквизитВФорме("Сумма"+СокрЛП(Сч));
		Если СуммаТекущая.Видимость Тогда
			ИтогоСумма = ИтогоСумма + Число(СокрЛП(СуммаТекущая.ТекстРедактирования));
		КонецЕсли;
	КонецЦикла;
	
	УстановитьЗначениеДопРеквизитаИтогоРаспределено();
	
	УстановитьСвойстваПолей_Премия();
	
КонецПроцедуры

&НаКлиенте
Процедура СотрудникПриИзменении()
	
	ЗначениеДопРеквизитаСотрудник = Вычислить("ЭтаФорма." + ТекущийЭлемент.Имя);
	Должность = РаботаСПользователями.ПолучитьДолжность(ЗначениеДопРеквизитаСотрудник);
	
	НаименованиеДопреквизитаСотрудник = ПолучитьНаименованиеДопреквизитаПоИмени(ТекущийЭлемент.Имя);
	НомерСтрокиТаблицы = СтрЗаменить(НаименованиеДопреквизитаСотрудник,"Сотрудник","");
	
	НаименованиеДопреквизитаДолжность = "Должность" + НомерСтрокиТаблицы + " (Премия)";	
	УстановитьЗначениеДопРеквизитаДолжность(НаименованиеДопреквизитаДолжность, Должность);
	
	УстановитьСвойстваПолей_Премия();
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаСервере
Процедура УстановитьДействияДляДопреквизита(НаименованиеДопРеквизита, ДействиеСтрока, ПроцедураСтрока)
	
	СтруктураПоиска = Новый Структура("Наименование", НаименованиеДопРеквизита);
	ИмяДопРеквизита = ЭтаФорма.Свойства_ОписаниеДополнительныхРеквизитов.НайтиСтроки(СтруктураПоиска)[0].ИмяРеквизитаЗначение;
	ДопРеквизит = Элементы[ИмяДопРеквизита];
	ДопРеквизит.УстановитьДействие(ДействиеСтрока, ПроцедураСтрока);
	
КонецПроцедуры

// Параметры:
//  НаименованиеДопРеквизита  - Строка
// Возвращаемое значение:
//  ПолеФормы   - искомый допреквизит типа ПолеФормы
&НаКлиенте
Функция НайтиДопреквизитВФорме(НаименованиеДопРеквизита)
	
	СтруктураПоиска = Новый Структура("Наименование", НаименованиеДопРеквизита);
	МассивСтрок = ЭтаФорма.Свойства_ОписаниеДополнительныхРеквизитов.НайтиСтроки(СтруктураПоиска);
	Если МассивСтрок.Количество() = 0 Тогда
		Возврат Неопределено;
	Иначе
		ИмяДопРеквизита = МассивСтрок[0].ИмяРеквизитаЗначение;
		ДопРеквизит = Элементы[ИмяДопРеквизита];
		Возврат ДопРеквизит;
	КонецЕсли;
	
КонецФункции

&НаСервере
Процедура ОбработатьУстановкуДействияДляДопреквизитов_Премия(Отказ, СтандартнаяОбработка, ДополнительныеПараметры)
	
	Для Сч=1 По КоличествоСтрокВТаблицеПремия Цикл
		УстановитьДействияДляДопреквизита("Сумма" + СокрЛП(Сч), "ПриИзменении", "СуммаПриИзменении_Премия");
		УстановитьДействияДляДопреквизита("Сотрудник" + СокрЛП(Сч), "ПриИзменении", "СотрудникПриИзменении");
	КонецЦикла;
	
КонецПроцедуры

&НаКлиенте
Процедура УстановитьСвойстваПолей_Премия()
	
	УстановитьТолькоПросмотрДляПоля("Итого распределено");
	УстановитьТолькоПросмотрДляПолейДолжность();
	УстановитьКнопкаОткрытияЛожьДляПолейДолжность();
	
КонецПроцедуры

// Возвращает наименование доп. реквизита
// Параметры:
//  ИмяДопреквизита  - Строка. Например, ДополнительныйРеквизитЗначение_71A6C86Dx0E4Ex11E8x873Dx0022155C4930_71A6C875x0E4Ex11E8x873Dx0022155C4930
// Возвращаемое значение:
//  НаименованиеДопреквизита  - Строка. Например, Сотрудник1
//
&НаКлиенте
Функция ПолучитьНаименованиеДопреквизитаПоИмени(ИмяДопреквизита)
	
	СтруктураПоиска = Новый Структура("ИмяРеквизитаЗначение", ИмяДопреквизита);
	МассивСтрок = ЭтаФорма.Свойства_ОписаниеДополнительныхРеквизитов.НайтиСтроки(СтруктураПоиска);
	Если МассивСтрок.Количество()=0 Тогда
		Возврат Неопределено;
	Иначе
		НаименованиеДопреквизита = МассивСтрок[0].Наименование;
		Возврат НаименованиеДопреквизита;
	КонецЕсли;
	
КонецФункции

&НаСервере
Процедура УстановитьЗначениеДопРеквизитаИтогоРаспределено()
	
	УправлениеСвойствами.ПеренестиЗначенияИзРеквизитовФормыВОбъект(ЭтаФорма, Объект);
	
	НашлиСтроку = Ложь;
	Если Объект.ДополнительныеРеквизиты.Количество() = 0 Тогда
		НоваяСтрока = Объект.ДополнительныеРеквизиты.Добавить();
		НоваяСтрока.Свойство = СвойствоИтогоРаспределено;
		НоваяСтрока.Значение = ИтогоСумма;
	Иначе
		
		Для каждого Строка Из Объект.ДополнительныеРеквизиты Цикл
			Если Строка.Свойство.Ссылка = СвойствоИтогоРаспределено Тогда
				Строка.Значение = ИтогоСумма;
				НашлиСтроку = Истина;
			КонецЕсли;
		КонецЦикла;
		
		Если НЕ НашлиСтроку Тогда
			НоваяСтрока = Объект.ДополнительныеРеквизиты.Добавить();
			НоваяСтрока.Свойство = СвойствоИтогоРаспределено;
			НоваяСтрока.Значение = ИтогоСумма;
		КонецЕсли;
		
	КонецЕсли;
	
	УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтаФорма, Объект);
	ОбработатьУстановкуДействияДляДопреквизитов_Премия(Неопределено, Неопределено, Неопределено);
	Модифицированность = Истина;
	
КонецПроцедуры

&НаСервере
Процедура УстановитьЗначениеДопРеквизитаДолжность(НаименованиеДопреквизитаДолжность, Должность)
	
	УправлениеСвойствами.ПеренестиЗначенияИзРеквизитовФормыВОбъект(ЭтаФорма, Объект);
	
	Если Объект.ДополнительныеРеквизиты.Количество() = 0 Тогда
		Возврат;
	КонецЕсли;
	
	СвойствоТекущаяДолжность = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(НаименованиеДопреквизитаДолжность);
	
	НашлиСтроку = Ложь;
	Для каждого Строка Из Объект.ДополнительныеРеквизиты Цикл
		Если Строка.Свойство.Ссылка = СвойствоТекущаяДолжность Тогда
			Строка.Значение = Должность;
			НашлиСтроку = Истина;
			Прервать;
		КонецЕсли;
	КонецЦикла;
	
	Если НЕ НашлиСтроку Тогда
		НоваяСтрока = Объект.ДополнительныеРеквизиты.Добавить();
		НоваяСтрока.Свойство = СвойствоТекущаяДолжность;
		НоваяСтрока.Значение = Должность; 
	КонецЕсли;
	
	УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтаФорма, Объект);
	ОбработатьУстановкуДействияДляДопреквизитов_Премия(Неопределено, Неопределено, Неопределено);
	Модифицированность = Истина;
	
КонецПроцедуры

&НаКлиенте
Процедура УстановитьТолькоПросмотрДляПоля(НаименованиеДопРеквизита)
	
	ДопРеквизитПоле = НайтиДопреквизитВФорме(НаименованиеДопРеквизита);
	Если ДопРеквизитПоле <> Неопределено Тогда
		ДопРеквизитПоле.ТолькоПросмотр = Истина;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура УстановитьТолькоПросмотрДляПолейДолжность()
	
	Для Сч =1 По КоличествоСтрокВТаблицеПремия Цикл
		УстановитьТолькоПросмотрДляПоля("Должность" + СокрЛП(Сч));
	КонецЦикла;
	
КонецПроцедуры

&НаКлиенте
Процедура УстановитьЗначениеСвойстваПоляФормыДопРеквизита(НаименованиеДопРеквизита, СвойствоПоляФормы, ЗначениеСвойстваПоляФормы)
	
	ДопРеквизитПоле = НайтиДопреквизитВФорме(НаименованиеДопРеквизита);
	Если ДопРеквизитПоле <> Неопределено Тогда
		Выполнить("ДопРеквизитПоле." + СвойствоПоляФормы + "=" + ЗначениеСвойстваПоляФормы);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура УстановитьКнопкаОткрытияЛожьДляПолейДолжность()
	
	Для Сч =1 По КоличествоСтрокВТаблицеПремия Цикл
		УстановитьЗначениеСвойстваПоляФормыДопРеквизита("Должность" + СокрЛП(Сч), "КнопкаОткрытия", "Ложь")
	КонецЦикла;
	
КонецПроцедуры

#КонецОбласти

 

Таким образом, в документе получаем таблицу следующего вида:

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

Остается только перейти в Настройка и администрирование / Поддержка и обслуживание / Управление пользовательскими настройками и скопировать настройки документа всем (или избранным) пользователям. Это функционал БСП.

В реальной боевой базе (госучреждение) внутренний документ Премия содержит 30 строк. Таково максимальное количество сотрудников в отделе. Кроме того, настроен автозаполняемый шаблон Word, бизнес-процесс согласования-утверждения документа, настроены права, сделан отчет. Работают два года, все довольны. Конфигурация на полной поддержке. Это к тому, что на доп. реквизитах можно делать полноценную автоматизацию.

Боевая конфигурация ДГУ 2.1.9.3 работает на платформе 8.3.9.1850. Настоящая публикация готовилась на платформе 8.3.13.1690 в демо-версии ДО 2.1.12.2 (режим совместимости 8.3.8).

табличная часть ТЧ дополнительные реквизиты допреквизиты расширение

См. также

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

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

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

07.02.2024    2344    YA_418728146    11    

40

1С:БСП Дополнительные реквизиты и сведения

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Бесплатно (free)

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

19.01.2024    5122    PROSTO-1C    5    

45

Шаблоны новых объектов 1С для 1С:Бухгалтерии предприятия

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Платформа 1С v8.3 1С:Бухгалтерия 3.0 Бесплатно (free)

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

28.12.2023    4819    mrXoxot    11    

99

Настройка истории изменений. Подключение новых объектов (которых нет в списке) к системе версионирования (БСП) без изменения конфигурации

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Бесплатно (free)

Много материалов и видео в сети о том, как подключить объект, которого нет в списке настроек, к системе версионирования БСП. Суть сводится к изменению определяемого типа, на который все завязано. Но это предполагает изменение конфигурации. Недавно встала задача подключить объект, которого нет в определяемом типе без снятия замков. Пришлось изучить вопрос глубже. Здесь пояснения и краткая инструкция с картинками. Как подключиться, используя только расширение.

20.11.2023    1600    user1374747    0    

32

Ключи аналитик учета в ЕРП, КА, УТ

Механизмы типовых конфигураций Платформа 1С v8.3 1С:ERP Управление предприятием 2 Россия Управленческий учет Бесплатно (free)

Разбираемся, зачем в системе ЕРП созданы справочники: ключи аналитик учета, зачем созданы аналогичные по набору измерений регистры сведений. Какие проблемы они решают, какие создают новые и что с этим делать.

08.11.2023    7016    ids79    25    

74

Как включить привилегированный режим для дополнительных отчетов и обработок

БСП (Библиотека стандартных подсистем) Конфигурации 1cv8 Бесплатно (free)

Как отключить безопасный режим для дополнительных отчетов и обработок РазрешениеНаИспользованиеПривилегированногоРежима

14.10.2023    3651    SpecRam    16    

33
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. ilya.rudziak 34 14.05.19 10:22 Сейчас в теме
Здравствуйте.Решение хорошее. А вы не пробовали определить вид вкладки Свойства прямо в расширении в зависимости от внутреннего вида документа (программно)?
2. mvxyz 322 14.05.19 14:45 Сейчас в теме
(1) А есть ли смысл усложнять? В данном случае и так будут отображаться только допреквизиты соответствующего вида документа.
3. mvxyz 322 14.05.19 14:51 Сейчас в теме
(1) Программно в зависимости от вида документа менял заголовок вкладки "Свойства", например, на "Премия".
4. Gomodrila 15.05.19 18:13 Сейчас в теме
Не юзабельно. Таких документов возможно потребуется не один десяток. Настраивать каждый, писать отдельный код и прочее. Да и настройки скорее всего в конце концов поедут.

Для одного документов, возможно, рабочее решение, но не более.
5. mvxyz 322 15.05.19 20:34 Сейчас в теме
А как юзабельно? Да, в ДО обычно не один десяток видов внутренних документов (а также входящих и исходящих), которые являются элементами справочника. И каждый вид нужно настраивать. Вы предлагаете не настраивать? Забить?
Настройки никуда не едут. Если пользователь сам испортит свои настройки, то ничто не мешает скопировать их ему от администратора или другого пользователя. Это очень просто.
Если Вы смотрели код, то могли заметить, что большая часть кода универсальна.
6. Vasvas05 22 16.05.19 22:10 Сейчас в теме
Что плохого в снятие конфигурации с поддержки? Если она выполнена грамотно. У заказчиков такие страхи обычно из за предыдущих "разработчиков" после которых уже было не обновить 1с. А тем более 1с документооборот конфигурация обновляется раз в два года)) Как в знаменитой фразе : "Разработка хорошая, но зачем"
7. mvxyz 322 16.05.19 22:54 Сейчас в теме
(6) Если у организации есть фикси, который занимается конфигурацией, и есть уверенность, что он не уволится, то включение возможности изменения в принципе, конечно, не страшно. А если организация обращается к франчу, где движение кадров сопоставимо со скоростью смены времен года? Опыт подсказывает мне, что если есть возможность оставить на полной поддержке, то лучше оставить.
klaus38; acanta; +2 Ответить
8. insurgut 207 30.05.20 17:15 Сейчас в теме
В результате получаем 14 доп. реквизитов документа Премия, из них два – реквизиты шапки и 12 – реквизиты собственно таблицы

Наверное не лучший подход к решению задачи. Чтобы сохранить табличную часть в доп. реквизитах достаточно 1 реквизита! Устанавливаем для него тип - Строка (неограниченная). При создании на сервере мы этот реквизит считываем как запись JSON, перед записью соответственно преобразует таблицу в строку записи JSON.
9. mvxyz 322 30.05.20 21:12 Сейчас в теме
(8) А что мы в этом случае выигрываем?
И как строить отчеты? Разбирать JSON в ПриКомпоновкеРезультата?
10. insurgut 207 31.05.20 07:15 Сейчас в теме
(9) как что? Гибкость разработки, любое количество строк в таблице без необходимости доработки формы и отчетов. В вашем случае если понадобится добавить ещё одну строку, нужно будет "допиливать" и форму и отчет. Как частный случай создание отдельного реквизита на отдельную ячейку таблицы конечно подойдет, но универсальным его точно не назовешь.
11. mvxyz 322 31.05.20 11:02 Сейчас в теме
(10) Эта конструкция по-определению не предназначена для таблиц с большим количеством строк. В данном примере мы знаем, что в отделе не больше 30 человек, то есть строк не больше 30.
Но Ваше предложение - интересное, спасибо. И да, так, конечно, существенно универсальнее. Стоит попробовать.
12. Yashazz 4709 31.05.20 16:55 Сейчас в теме
Я такое делал ещё в 2008 году для БП 1.6, гораздо проще и гибче, нежели предложенное решение.
13. mvxyz 322 31.05.20 23:14 Сейчас в теме
(12) В 2008 году не было расширений. Механизм расширений появился в платформе 8.3.6 в 2015 году.
14. Yashazz 4709 01.06.20 20:05 Сейчас в теме
(13) Естественно. Так вот я и без расширений сделал быстро и удобно портируемый механизм. Я вам открою секрет: и до расширений люди работали, и без них жизнь возможна. Более того, без них она порой гораздо лучше)
15. mvxyz 322 01.06.20 23:23 Сейчас в теме
(14) Публикация про то, как добавить табличную часть к объекту конфигурации, не включая возможность изменения конфигурации. Вам удалось реализовать такое в 2008 году для БП 1.6?
За открытый секрет - спасибо. Я и не подозревал, что и без расширений люди работают. Наверное, это выдающиеся специалисты.
16. Yashazz 4709 04.06.20 11:15 Сейчас в теме
(15) Ну изменения-то были - прям целая подсистема. Но публикация-то вовсе не про "возможность изменения". Потому как "не включая возможность изменения" - это за вас уже 1С сделала в виде той самой концепции расширений, и тут вы нифига нового не изобрели, а лишь пользуетесь. И не стоит подавать свою поделку как изобретение означенного способа, ибо не ваше это изобретение.
А ваше - довольно странный и не самый удобный способ реализовать некий функционал. Смекаете разницу? Не принцип, а всего лишь функционал. Впрочем, если вы не гнушаетесь грязного популизма, и желаете выдать разработку фирмы 1С за своё новшество, то флаг в руки)
17. mvxyz 322 04.06.20 16:22 Сейчас в теме
(16)
если вы не гнушаетесь грязного популизма, и желаете выдать разработку фирмы 1С за своё новшество, то флаг в руки

Эк вас понесло... Вы публикацию то читали? Хотя бы первые два абзаца?
18. LKonstantin 01.04.22 09:18 Сейчас в теме
А переменное количество строк этим способом не реализовать? сначала одна строка и кнопка добавить
Оставьте свое сообщение