Редактирование табличной части объекта с помощью СКД

Публикация № 549297 16.09.16

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

Обработка табличная часть СКД

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

Описание проблемы и предпосылки

Периодически приходится решать задачи удобного ввода информации пользователем по образу Excel, например, самый простой "План продаж" по месяцам, в котором горизонтально по колонкам расположены месяцы, а вертикально - некая аналитика. Раньше в типовых конфигурациях 1С данная задача не была решена вообще никак. Пользователю предлагалось заполнить обычную табличную часть вручную, добавляя строки и заполняя их датами и необходимой аналитикой. Весь ужас такого ввода объяснять не нужно. Потом разработчики отраслевых решений в "доэскадэшную" эпоху догадались использовать всю мощь макета табличного документа и в "Подрядчик строительства" от "Импульс ИВЦ" уже можно было наблюдать весьма недурное решение в блоке Бюджетирование. Но код был неуниверсальный, сложный и крайне тяжело переносился на другие похожие задачи. В данной статье я постараюсь показать, как решить эту задачу быстро, красиво и с минимальными затратами по времени. Также код, который вы напишете, используя этот пример, вы сможете легко переносить на другие свои решения.

Реализация задачи

Описана для обычных форм, но обработка содержит и УФ без использования модальности. 

Нам понадобится: сам объект редактирования (в данном случае табличная часть), макет СКД, компоновщик настроек компоновки данных, элемент управления "поле табличного документа", обработчик "Обработка расшифровки".

Макет СКД представляет собой соединение двух наборов данных, каждый из которых имеет тип "Набор данных - объект":

 

 

Настройки вывода просты и примитивны - это обычная таблица с итогами:

 

В форме необходимо разместить следующие реквизиты:


 

Основная идея:

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

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

 

СтандартнаяОбработка = Ложь;

ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаСКД));

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

 

Производительность

Существует 2 способа непосредственного ввода значения при двойном клике по ячейки:

1) Через диалоговое окно методами ВвестиЗначение() или ВвестиЧисло()

- этот способ применен в данном примере.

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

Недостатки: вылетает дополнительное окно ввода.

При таком способе ввода в каждой ячейке, как и при формировании обычного отчета на СКД, содержится лишь некий объект типа "ИдентификаторРасшифровкиКомпоновкиДанных", который по сути представляет собой число.

2) Непосредственно в ячейку, как в Excel.

Данный способ с применением СКД можно увидеть в ERP 2.0.

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

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

 

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

Для работы в тонком клиенте необходимо помещать схему СКД и Данные расшифровки во временное хранилище. Хранить полученные адреса удобно в реквизитах формы.

 

Записываем адреса хранилищ в обработчике ПриСозданииНаСервере()
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

//Фрагмент обработчика

	АдреcМакетСКД = ПоместитьВоВременноеХранилище(РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет"), УникальныйИдентификатор);;

	ДанныеРасшифровки = Неопределено;

	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаСКД, КомпоновщикНастроек.Настройки, ДанныеРасшифровки, , Тип("ГенераторМакетаКомпоновкиДанных"));

	ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;                    
	
	ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных, ДанныеРасшифровки);

	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(ПолеТабличногоДокументаПредставление);

	ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

	АдресДанныеРасшифровки = ПоместитьВоВременноеХранилище(ДанныеРасшифровки, Новый УникальныйИдентификатор);

КонецПроцедуры
 
Обработчики событий Поля табличного документа и асинхронные вызовы

Обратите внимание, что во все конструкторы объектов СКД передаются сохраненные адреса  АдресДанныеРасшифровкиАдреcМакетСКД. И почти все процедуры работают на клиенте. Но к сожалению не только лишь все могут работать на клиенте на клиенте реализованы не все объекты СКД. Иногда придется нырнуть на сервер, например для работы с объектом типа ДанныеРасшифровкиКомпоновкиДанных

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

 

 

&НаКлиенте
Процедура ПолеТабличногоДокументаПредставлениеОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)

//Фрагмент обработчика
	ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(АдресДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдреcМакетСКД));

	ПредметРедактирования = ПолучитьИмяТекущегоПоляРедактирования(Расшифровка, АдресДанныеРасшифровки); //ПолучитьПредметРедактирования

	ОбработкаРасшифровки.ПоказатьВыборДействия(
		Новый ОписаниеОповещения("ОбработкаРасшифровкиПоказатьВыборДействияЗавершение", ЭтотОбъект, ДополнительныеПараметры), 
		Расшифровка,
		ДоступныеДействия, 
		ДополнительныеПунктыМеню,,);


КонецПроцедуры


&НаКлиенте
Процедура ПолеТабличногоДокументаПредставлениеПриИзмененииСодержимогоОбласти(Элемент, Область)

//Фрагмент обработчика	

	Область = Элемент.ТекущаяОбласть;
	
	Если Область.Расшифровка = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(АдресДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдреcМакетСКД));
	
КонецПроцедуры


&НаКлиенте
Процедура ПолеТабличногоДокументаПредставлениеПриАктивизацииОбласти(Элемент)

//Фрагмент обработчика

	ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(АдресДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдреcМакетСКД));


КонецПроцедуры

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

 

 

Что еще?

UPD 07.07.2021 Добавлена реализация для тонкого клиента на управляемой форме без использования модальности.

1) Никто не запрещает размещать на форме стандартные настройки компоновщика настроек.

2) Можно добавлять в схему СКД любую другую информацию (с помощью других наборов данных), которая не содержится в табличной части редактируемого объекта, но которая необходима для принятия решения при вводе данных (например свойства номенклатуры).

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

4) Можно и нужно использовать всю мощь СКД и возможностей условного оформления.

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

Наименование Файл Версия Размер
Обработка "Редактирование табличной части в поле табличного документа"

.epf 25,49Kb
132
.epf 1.0 25,49Kb 132 Скачать

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. json 16.09.16 17:33 Сейчас в теме
Есть несколько вопросов:
1. При редактировании тч необходимо иметь возможность добавлять и удалять строки. В данной схеме это предусмотрено?
2. При обновлении курсор в табличном документе позиционируется на верхний левый угол. С этим что-нибудь делаете?
3. Обновляете ли итоги в подвале при вводе числовых значений?
2. Hatson 495 19.09.16 10:10 Сейчас в теме
(1) yurii_host,
1) Добавлять и удалять строки можно. Для этого придется реализовать простую кнопку. В данном примере такой кнопки нет, чтобы не захламлять код.

2) Это не так. Курсор остается на той ячейке, которую редактировали.

3) Итоги рассчитывает СКД. Я просто вызываю процедуру вывода результата в табличный документ после каждого ввода значения.
3. German_Tagil 37 21.09.16 05:32 Сейчас в теме
4. fomix 29 21.09.16 09:44 Сейчас в теме
К чему все это? Если только для какого-то извращения с расчетами в ТЧ, то понятно. А так... Может не так понял автора...
15. vasilev2015 2445 21.09.16 13:08 Сейчас в теме
(4) fomix, если ищете извращений, посмотрите типовой документ "табель" в ЗУП. Там бы это пригодилось. )))
5. Lukich66 82 21.09.16 09:57 Сейчас в теме
"как можно применять средства СКД для редактирования сложной структуры данных, например, табличных частей документов. "
Я увидел только редактирование табличного документа, а не табличной части(Товары,Услуги) документа
6. Diego_Iv 34 21.09.16 10:03 Сейчас в теме
При внедрении блока бюджетирования тоже встречался с подобной задачей. В табличную часть документа (бюджетная операция) необходимо было вводить следующие данные по периодам: Статья бюджета - Проект - Контрагент - Договор - Номенклатура - Сумма операции.
Хотелось чтобы суммы можно было вводить по колонкам, как в экселе. Причем количество периодов в документе могло быть неограниченным (7 дней недели, 30 дней месяца или все 365 дней года).
Предложенное решение с табличным документом, аналогичное упомянутому "Подрядчику строительства" заказчику не понравилось. Табличное поле документа не похожа на обычное в других документах 1С, не работают автоподборы и т.д.

Удалось решить так. По табличной части документа строил таблицу значений с нужным количеством колонок для каждого периода и эту ТЗ выводил в табличное поле документа.



TreeDogNight; Hatson; monkbest; Vlad_2008; gubanoff; +5 Ответить
11. Hatson 495 21.09.16 12:10 Сейчас в теме
(6) Diego_Iv, приложенные картинки не открываются. Может я не туда тыкаю?
16. Diego_Iv 34 21.09.16 13:20 Сейчас в теме
(11) ПКМ - Открыть изображение.

(10) Какие "группировочки и условное оформление" в табличном поле документа? Все эти украшательства решаются печатными формами и отчетами
gubanoff; +1 Ответить
20. Diego_Iv 34 21.10.16 13:23 Сейчас в теме
Попиарюсь...
Описанное в (6) выложил в виде отдельной публикации
http://infostart.ru/public/553075/
7. Трактор 1238 21.09.16 10:20 Сейчас в теме
>> Ячеек в поле табличного документа может быть несколько тысяч, т.е. несколько тысяч полей ввода
Я эту проблему решил так. Добавляю поле ввода в ячейку в момент активизации ячейки. Тормозов практически нет.
Alien_job; st4rk; TreeDogNight; qwinter; afanasko; monkbest; ARL; Hatson; cleaner_it; +9 Ответить
14. Hatson 495 21.09.16 12:21 Сейчас в теме
(7) Трактор, понравилась идея. Пример кода можешь кинуть?
8. drmaxart 140 21.09.16 11:21 Сейчас в теме
Самое очевидное применение - удобное редактирование подчиненных по ключам связи табличных частей
9. Lancelot-2M 113 21.09.16 11:36 Сейчас в теме
Я такую тему делал) С копированием и добавлением строк и даже прямоугольных областей - вау-эффект был у моего начальника, а юзеры не пользуются)))

13. Hatson 495 21.09.16 12:17 Сейчас в теме
(9) Lancelot-2M, надо было сразу статью зафигачить )
10. gubanoff 54 21.09.16 12:10 Сейчас в теме
Создаем на форме таблицу значений (ТЗ), которую программно формируем как хотим. Нужно добавить только две процедуры - при открытии документа загрузить в эту ТЗ данные из ТЧ, при записи документа сохранить данные из ТЧ в ТЗ. Не очень сложная задача. В результате пользователь работает с привычной ему ТЧ (хотя на самом деле это ТЗ на форме, но визуально пользователь разницы не видит). Плюс в ТЗ можно добавлять обработчики событий изменения реквизитов, итоги по колонкам, подбор при вводе значений и т.п., т.е. будет полный аналог ТЧ.
12. Hatson 495 21.09.16 12:14 Сейчас в теме
(10) gubanoff, да, такими решениями кишат старые УТ. Всё здорово, только много говнокода и если пользователь попросит группировочки с итогами, условное оформление и т.д., то "добрый вечер".
21. user702069_savel777v2 03.03.17 15:54 Сейчас в теме
(12) Присоединяюсь.... Изначально сделал на ТЗ по найденной идее http://infostart.ru/public/547892/
Всё бы хорошо... но попросили Итоги по ТЗ.... вот тут я и встрял.. Потому оказалось проще переписать всё на СКД, как Hatson и предложил
немного возни с обработчиками, зато потом в доработке - сказка.... Внешний вид правил многократно, что на ТЗ вылилось бы в килотонны кода.
А на счет обработчиков сначала сделал в виде ВвестиЗначение, а завершилось вообще все на ФормеВвода...
Потому Автору - большая благодарность за идею!
17. Vlad_2008 16 21.09.16 13:38 Сейчас в теме
Во-во, а уж если нужны группировочки, то для этого есть Дерево и УО (в УФ)
gubanoff; +1 Ответить
18. simon_simon 1 26.09.16 09:40 Сейчас в теме
Немного не по теме статьи, но не так давно пришлось делать внешнюю печатную форму с использованием СКД. Данная печатная форма разработана для документа "Пересчет товаров" Розница, редакция 2.1 (2.1.9.20) . Не знаю как у кого, но у меня возникли проблемы найти пример в сети. Везде денег хотели.
По сути печатной формы: По заданию пользователей необходимо было сделать печатную форму с группировками по виду номенклатуры. Внутри группировок непосредственно сами номенклатурные позиции.
Прикрепленные файлы:
ВПФИнвентаризационнаяВедомостьУП.epf
19. monkbest 115 21.10.16 12:28 Сейчас в теме
В ЗУП 3.0 так реадктируется документ Табель при включенной функциАнальной опции наличия территорий выполнения работ. В этом случае там помимо 31 колонки на каждый день для ввода буквы и часов надо еще рисовать поля для указания периоды пребывания на удаленной территории. Т.е. информация мягко говоря не укалдывающаяся в ТЧ из за разнородности.

Второе ТабДок поддрежывает отображение тысяч строк и сотен колонок, а табличная часть в УФ умирает, а в веб-клиенте вообще падает со свякими ошибками javaSript`а
22. lopatin 627 14.03.17 16:45 Сейчас в теме
Есть пример редактирования прямо в ячейке? Без вывода окна?
23. sailor-cat 6 31.07.18 13:24 Сейчас в теме
(22)при активизации области:

Область = ТабличныйДокумент.ТекущаяОбласть;
Область.СодержитЗначение = Истина;
Область.ТипЗначения = ОписаниеТипов;
Область.УстановитьЭлементУправления(Тип("ПолеВвода"));


Но вот как назначить элементу обработчики события, пока не могу сообразить.
24. lopatin 627 08.08.18 05:45 Сейчас в теме
(23) Я делал не при активизации, а обрабатывал табличный документ перед выводом на форму, в частности обходил все ячейки находил нужные мне и проставлял признак содержит значение:

Функция ОбновитьПредставлениеОтчета(ДанныеОтчета, ИсточникНастроек, ПредставлениеДанныхОтчета, УникальныйИдентификаторФормы) Экспорт

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

//...

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

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

	Возврат ЗначенияГруппировок;
	
КонецФункции // ПолучитьВсеЗначенияГруппировокОтчета()

Показать


В самом макете СКД надо области задать вывод расшифровки(см. вложенную картинку)
Прикрепленные файлы:
25. lopatin 627 08.08.18 05:48 Сейчас в теме
(23) Соответственно, чтобы отловить момент изменения значения и записать его в нужное место, определил событие табличного поля на форме - ПриИзмененииСодержимогоОбласти, проверяю расшифровку и если область та что мне нужна записываю значение:

&НаКлиенте
Процедура ПредставлениеДанныхОтчетаПриИзмененииСодержимогоОбласти(Элемент, Область)
	ПредставлениеДанныхОтчетаПриИзмененииСодержимогоОбластиНаСер­вере(Область.Расшифровка, Область.Значение);
КонецПроцедуры

&НаСервере
Процедура ПредставлениеДанныхОтчетаПриИзмененииСодержимогоОбластиНаСер­вере(Расшифровка, Значение)
	Если НЕ Расшифровка = Неопределено Тогда
		Данные = ПолучитьИзВременногоХранилища(ДанныеРасшифровки);
		ЗначенияРасшифровки = ВыводФинансовыхОтчетов.ПолучитьВсеЗначенияРасшифровки(Данные.Элементы[Расшифровка]);		
		ЗначенияГруппировок = ВыводФинансовыхОтчетов.ПолучитьВсеЗначенияГруппировок(Данные, Расшифровка, "Значение", Новый Структура("Показатель,Период"));
		Если ЗначенияРасшифровки.Свойство("Значение") Тогда
			ЗаписатьЗначениеПоказателя(ЗначенияГруппировок.Показатель, Значение);
		КонецЕсли; 
	КонецЕсли; 
КонецПроцедуры
Показать
26. sailor-cat 6 08.08.18 06:41 Сейчас в теме
(25) Согласен, можно и так, но:
1. Как отмечалось выше, добавлять элементы при компоновке результата может быть весьма "дорого".
2. Меня интересовали обработчики других событий, например "Начало выбора". Поэтому и пытался все перенести на форму.
30. Hatson 495 12.07.21 16:03 Сейчас в теме
27. Hatson 495 12.09.18 19:52 Сейчас в теме
Добавил кнопку "Добавить строку" и обработка подорожала ))
28. palax 17.06.21 09:39 Сейчас в теме
Отличное решение. Только жаль, что выполнено для обычных формах, а не управляемых..
29. Hatson 495 07.07.21 17:45 Сейчас в теме
Оставьте свое сообщение

См. также

GGraphics - внешняя компонента для работы с картинками jpg (jpeg), png, bmp, gif, tif Промо

Разработка внешних компонент v8 1cv8.cf Платные (руб)

Позволяет автоматизировать работу с картинками. С помощью компоненты можно измерять размер изображений, поворачивать их, наносить водяные знаки, конвертировать из одного формата в другой. Будет очень полезна для интернет-магазинов и всех, кому постоянно требуется работать с различными графическими форматами. Выполнена по технологии NativeAPI. Работает с форматами: jpg (jpeg), png, bmp, gif, tif

02.09.2010    66852    61    salexdv    241    

Бесплатная отправка сообщений в Whatsapp бот из 1С

Боты v8 1cv8.cf Абонемент ($m)

Задача: Имеются 200 контрагентов, которым ежедневно нужно из отчета 1С выслать сумму их задолженности или предоплаты в Whatsapp (рассылка должна идти с номера менеджера этих контрагентов).

2 стартмани

08.06.2022    5055    16    John_d    44    

Интересная задача на Yandex cup 2021

Математика и алгоритмы Бесплатно (free)

Мое решение задачи на Yandex cup 2021 (frontend). Лабиринт. JavaScript.

12.10.2021    4935    John_d    73    

Создание стартовой базы

Обмен между базами 1C v8 1cv8.cf Абонемент ($m)

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

1 стартмани

11.10.2021    9326    18    sapervodichka    48    

Коннектор: удобный HTTP-клиент для 1С:Предприятие 8 Промо

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

Коннектор - библиотека для работы с HTTP запросами. Библиотека берет на себя всю рутину работы с HTTP запросами. Буквально в одну строку можно получать данные, отправлять, не заботясь о необходимости конструирования URL, кодирования данных и т.п.

31.01.2019    92868    bonv    236    

ТСД на JavaScript (кроссплатформенный, бесплатный)

Терминал сбора данных Бесплатно (free)

Написал ТСД на JavaScript. ТСД не требует установки драйверов (работает в режиме клавиатуры). Будет работать на любом устройстве, где можно установить chrome.

07.09.2021    5791    John_d    114    

Внешняя компонента на C# для парсинга страниц через Phantom JS на сервере 1С х32,х64

Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

PhantomJS - это браузер без окна, используемый для автоматизации взаимодействия с веб-страницами. PhantomJS предоставляет JavaScript API, обеспечивающий автоматическую навигацию, снимки страницы, эмуляции поведение пользователя, что делает его распространенным инструментом, используемым для запуска модульных тестов на основе браузера в автономной системе, такой как среда непрерывной интеграции . PhantomJS основан на WebKit, что делает его похожей на Safari и Google Chrome средой просмотра. Это программное обеспечение с открытым исходным кодом, выпущенное под лицензией BSD.

1 стартмани

06.08.2020    8486    6    DrZombi    7    

Интеграция "Библиотеки интеграции МДЛП 1.1.2.7" с типовой конфигурацией

WEB v8 Здравоохранение, медицина, стоматология Россия Бесплатно (free)

Инструкция для интеграции “Библиотеки интеграции МДЛП 1.1.2.7” в типовые конфигурации, на примере конфигурации “Управление нашей фирмой, редакция 1.6 (1.6.18.168)”.

02.03.2020    10156    RPGrigorev    3    

Регулярные выражения без внешних компонент? Легко! Промо

Механизмы платформы 1С v8 Бесплатно (free)

Сложный способ организовать проверку строки с помощью регулярного выражения в 1С. При этом ни одна внешняя компонента не пострадала. Ну и от платформы (Linux, MustDie) - не зависит.

04.03.2016    75946    starik-2005    109    

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

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

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

21.01.2020    66981    6576    cprit    201    

Хранение файлов - как уменьшить размер базы данных

Инструменты администратора БД v8 Россия Бесплатно (free)

Хранение файлов в базе 1С можно оптимизировать для уменьшения размера хранимых данных.

09.09.2019    10483    2tvad    19    

1С:Ассемблер. Немного летнего веселья!

Языки и среды v8 1cv8.cf Абонемент ($m)

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

1 стартмани

21.06.2019    36356    Evil Beaver    152    

Инструменты бухгалтера: Виджеты рабочего стола Промо

Универсальные обработки Рабочее место v8 v8::БУ БП3.0 Абонемент ($m)

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

2 стартмани

28.08.2017    49010    194    Bazil    32    

Немного о графических файлах. Сжатие. Распознавание текста

Инструментарий разработчика v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

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

1 стартмани

06.05.2019    11682    12    tusv    6    

Практика перехода на Linux и Postgres в небольшой компании (10 пользователей)

Инструменты администратора БД v8 1cv8.cf Бесплатно (free)

Почему я решил поставить давнему клиенту Linux + Postgres вместо Windows + MS SQL? Что меня останавливало раньше?

22.04.2019    36880    starik-2005    183    

HTML-клиент у конфигурации 1С

WEB v8 Бесплатно (free)

Приветствую. В этой публикации опишу свой опыт создания html-клиента для конфигурации 1С с помощью http-сервисов. HTML-клиент в этом случае - это frontend (html + css+ js), который генерирует и выдает пользователю конфигурация + backend, который тоже реализован в этой же конфигурации.

17.04.2019    23286    Smaylukk    122    

Gant 1C 2.* - диаграмма Ганта с таблицей + Планировщик + Отчет (8.1, на управляемой форме/Такси 8.2, 8.3) Промо

Бюджетирование и планирование Производство готовой продукции (работ, услуг) Учет рабочего времени Task Manager v8 1cv8.cf УУ Абонемент ($m)

Внешняя обработка, аналог MS Project в 1Се для работы с задачами: параллельный ввод данных по задачам и график Ганта, дополнительный режим в виде календаря (планировщик), связывание задач и пересчет длительности и дат с учетом выходных, видов связей и запаздываний, расчет затрат, сохранение/открытие проектов в файл на диск или файл ИБ, импорт/экспорт документов Microsoft Project.

1 стартмани

02.12.2011    159318    2675    rare-avis    215    

Уменьшаем трафик: HTTP запрос со сжатием GZIP средствами 1С. На примере выгрузки файлов на Яндекс-диск

WEB v8 1cv8.cf Абонемент ($m)

Обработка демонстрирует отправку тела HTTP запроса со сжатием gzip (метод deflate) средствами платформы 1С. Демонстрация происходит на примере отправки текста или файла на Яндекс.Диск.

1 стартмани

03.09.2018    9585    67    uno-c    8    

Чтение сжатого gzip, deflate HTTP ответа сервера. Без ВК. Уменьши время загрузки и сократи трафик в 3 раза

WEB v8 1cv8.cf Абонемент ($m)

В платформе 1С:Предприятие не реализовано штатного механизма декодирования ответа веб серверов, в которых присутствует gzip сжатие. Некоторые использовали WinHttpRequest.5.1 , кто-то писал ВК. Друзья, хватит. Вот вам решение.

1 стартмани

08.06.2018    25610    130    Malfarion    23    

Создание подключаемой обработки табличной части с диалогом запроса параметров заполнения (управляемые формы)

Обработка документов Обработка справочников v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

03.05.2018    81071    Mirage78    26    

Маркировка: 2D Android Штрихкод сканер + драйвер устройства для 1С Промо

Сканер штрих-кода Розничная торговля v7.7 v8 1cv8.cf 1cv7.md Абонемент ($m)

Драйвер торгового оборудования и приложение для Android, телефон или планшет в качестве стандартного штрихкод сканера для платформы 1С.

3 стартмани

29.11.2016    58766    203    dreamadv    118    

Обработка печатной формы WORD клиент-сервер УФ

Инструментарий разработчика v8::УФ 1cv8.cf Абонемент ($m)

Это моя первая статья на данном портале, но попытаюсь изложить все понятно и подробно. Долгое время у меня заняло создание такой вот внешней обработки. Есть очень много примеров, как сделать подобное на неуправляемых формах (2.0) и очень мало информации касательно управляемых(3.0), по крайней мере я многого найти не смог в доступе. Создание подобное обработки выглядит вполне несложно, если производить все действия на сервере, как это было с 2.0, но в нашем случае необходимо инициализировать открытие документа на клиенте, чему сильно мешает отсутствие возможности передать макет Active Document с сервера на клиент.

2 стартмани

14.03.2018    30909    LeoKeyn    43    

1С: Конвертация данных 3. Инструкции и примеры. EnterpriseData (универсальный формат обмена)

Обмен между базами 1C Файловые протоколы обмена (TXT, XML, DBF), FTP v8 КД Бесплатно (free)

Что такое КД3? Как начать использовать? Полезные дополнения к документации. Что нужно исправить в типовых обработках и конфигурации. Как изменить правила обмена не снимая конфигурацию с поддержки. Как отлаживать правила обмена?

19.11.2017    268903    MaxS    430    

Удаление организации из 1С. Чистка базы 1С. Удаление "не удаляемых" объектов Промо

Чистка данных v8 1cv8.cf Абонемент ($m)

Удалить все документы, чтобы в базе осталась только одна организация со своими документами? Удалить всю информацию в регистрах, не связанную с указанной фирмой? Удалить "неудаляемую" номенклатуру? Легко! Используйте эту обработку.

10 стартмани

02.10.2015    68540    339    spy-83    83    

Зачем 1С-нику NoSQL и CRDT

WEB Бесплатно (free)

В статье речь пойдет о современных инструментах для хранения, транспорта, обработки и обмена данными на примере популярной NoSQL-базы CouchDB.

12.08.2017    24750    unpete    27    

Как я стал одинэсником и переехал из провинции в Москву

О жизни Россия Бесплатно (free)

История покорения Москвы.

29.07.2017    18854    DmitryKSL    138    

54 ФЗ своими руками

ККМ Кассовые операции Розничная торговля v8 Розница Розничная и сетевая торговля (FMCG) Россия УУ Бесплатно (free)

Практический опыт внедрения изменений в 54ФЗ в розничной сети, работающей на 1С. Если вы не хотите платить каким-либо подрядчикам, которые "всё сделают и настроят за вас", то статься может оказаться крайне полезной.

17.04.2017    59484    comol    124    

Монитор журнала регистрации Промо

Журнал регистрации Инструменты администратора БД WEB v8 1cv8.cf Абонемент ($m)

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

2 стартмани

29.06.2015    47006    159    andy23    51    

Формирование штрихкода EAN-13 в SVG с помощью XDTO

Инструментарий разработчика v8 1cv8.cf Россия Абонемент ($m)

В версии платформы 8.3.9 было объявлено о поддержке изображений в формате SVG. Данная обработка демонстрирует работу с данным форматом, а именно его формированием (рисованием). Ну а так как самой популярной картинкой в 1С, наверное, является картинка штрихкода EAN - ее я и решил рисовать.

1 стартмани

24.03.2017    15937    64    kot-stas    22    

План обмена в формате "EnterpriseData" для 1С 7.7

Файловые протоколы обмена (TXT, XML, DBF), FTP Обмен между базами 1C v7.7 1С7:ТиС Абонемент ($m)

Пример организации надёжной синхронизации данных через универсальный формат "EnterpriseData" между конфигурациями на базе 1С 7.7 и произвольными приложениями.

1 стартмани

07.01.2017    28884    27    binex    23    

"Распределение в запросе" или "избавляемся от перебора"

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

Хороший перебор - это отсутствие перебора. Рассмотрим пример замены полного перебора запросом.

16.12.2016    39210    alexandersh    52    

Опыт оптимизации и контроля производительности в БД с 3000 пользователей Промо

HighLoad оптимизация Бесплатно (free)

Данная статья написана по материалам доклада, прочитанного на Конференции Инфостарта IE 2014 29-31 октября 2014 года. Меня зовут Сергей, являюсь руководителем отдела оптимизации и производительности систем в компании "Деловые линии". Цель этого доклада – поделиться информацией о нашем опыте работы с большой базой на платформе 1С, с чем пришлось столкнуться, как удалось обеспечить работоспособность. Уверен, что вам будет интересно, так как подобной информацией мало кто делится, да и про само существование таких систем их владельцы стараются не рассказывать, максимум про это «краем глаза» упоминают участвовавшие в проекте вендоры. **update от 04.03.2016 по вопросам из комментариев

05.08.2015    69138    Sergey.Noskov    119    

Разбираемся с механизмом Дополнительные отчеты и обработки в БСП

БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

Чуть более комплексное описание, чем на других ресурсах

1 стартмани

30.10.2016    209403    json    75    

Редактирование табличной части объекта с помощью СКД

Инструментарий разработчика v8::СКД 1cv8.cf Россия Абонемент ($m)

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

2 стартмани

16.09.2016    38961    132    Hatson    30    

Примеры скриптов на OneScript

OneScript Россия Абонемент ($m)

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

1 стартмани

14.07.2016    35846    52    Drak0n    44    

Автоматический REST-сервис в «1С:Предприятии». OData. Пример работы из Jscript/AJAX Промо

WEB v8 1cv8.cf Абонемент ($m)

Небольшой обзор REST-сервиса в «1С:Предприятии». Рассмотрен механизм работы c REST-сервером 1С:Предприятия из внешнего приложения - веб-страницы с использованием языка JavaScript и технологии AJAX.

1 стартмани

08.10.2014    90452    136    vano-ekt    48    

Набор данных Объект в СКД для решения задач сортировки, нумерации и вывода в отчет произвольных наборов данных

СКД v8::СКД 1cv8.cf Бесплатно (free)

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

04.07.2016    68497    lopatin    13    

Учет путевых листов

Обработка документов Печатные формы Учет рабочего времени Склад и ТМЦ v8 v8::УФ 1cv8.cf БУ УУ Абонемент ($m)

Внешняя обработка по учету путевых листов для управляемых форм. Позволяет сохранять во внешнем файле данные об автомобилях, водителях и путевых листах. Позволяет печатать формы №3 и №4-П. Позволяет вести учет задолженностей водителей за бензин и сравнивать расход по норме (по показаниям спидометра) и фактический расход бензина.

3 стартмани

27.06.2016    19599    82    DrugOn    10    

Google Analytics API, Oauth2.0 и 1c8

WEB v8 1С:Франчайзи, автоматизация бизнеса Бесплатно (free)

Обращение к Google Analytics API, Протокол Oauth 2.0 и запросы от 1С:8 без авторизации пользователя

02.05.2016    28223    Ольга_tmp    18    

Создание внешних печатных форм под управляемым приложением с нуля Промо

Инструментарий разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

Когда мне пришлось создавать внешние печатные формы под приложения на БСП ("1С: Бухгалтерия предприятия 3.0", "1С: Управление торговлей 11"), я обнаружил, что нет грамотных инструкций. Те, что имелись, использовали так называемые шаблоны: готовые обработки, в которых необходимо выполнять определенные корректировки. Но как создать сам шаблон, конкретных мануалов не было, справочную информацию я нашел на сайте ИТС и, обработав ее, написал статью, где подробно и понятно объясняются все этапы создания внешней печатной формы для управляемого приложения на примере конфигурации "1С: Бухгалтерия предприятия 3.0"

1 стартмани

05.06.2014    342518    signum2009    133    

УПД для документа "Поступление товаров и услуг" (БП 3.0) за поставщика

Печатные формы Оптовая торговля Производство готовой продукции (работ, услуг) v8 v8::БУ БП3.0 Россия БУ Абонемент ($m)

Внешняя печатная форма для документа "Поступление товаров и услуг" позволяет печатать "Универсальный передаточный документ (УПД)" за поставщика в ред. постановления Правительства РФ 1137, 625 и 981

1 стартмани

20.12.2015    25373    277    romanco    18    

Автозаполнение адресов в 1С (API Google autocomplete place)

WEB v8 1cv8.cf Бесплатно (free)

В данной статье вы увидите пример, как можно с помощью API Google autocomplete place делать подсказки при заполнении адреса

19.10.2015    14208    d.alexandr    27    

Использование встроенных отчетов для создания анализа корректности данных при исчислении НДС с авансов полученных

Оптовая торговля v8 БП2.0 Россия БУ НДС Бесплатно (free)

На Инфостарте много выложено внешних отчетов, направленных на контроль правильности исчисления НДС с авансов полученных. Хочу поделиться своим опытом использования встроенного отчета (для Бухгалтерия предприятия.Редакция 3.0) и порядка создания настроек отчета для процедур контроля за исчислением НДС с авансовых платежей покупателей, особенно в случаях применения различных налоговых ставок НДС

1 стартмани

22.07.2015    9264    lvk74    3    

Подписываем файлы с помощью ЭЦП средствами 1с Промо

Универсальные обработки Защита ПО и шифрование v8 1cv8.cf Абонемент ($m)

Обработка для подписи с помощью сертификата (ЭЦП) произвольных файлов, только средствами платформы 1с. Работает на всех конфигурациях, но только на последних платформах 8.2 и 8.3, где есть менеджер криптографии.

1 стартмани

05.09.2013    81417    472    anig99    29    

1С Бухгалтерия 8. Часть 1: Настройка параметров учета Промо

Регламентированный учет и отчетность v8 БП2.0 Россия БУ Бесплатно (free)

Залогом правильного ведения бухгалтерского и налогового учета в программе 1С Бухгалтерия 8 является правильная настройка параметров учета и учетной политики. Разработчики 1С постарались, чтобы эти настройки были простыми и понятными. Тем не менее, есть ряд подводных камней, о которые могут спотыкаться даже опытные пользователи.

05.11.2011    230855    vdi1950    124