Хранение настроек внешних отчетов на СКД в 1С

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

Разработка - Практика программирования

Код для сохранения и восстановления настроек внешних отчетов на СКД в УПП 1.3, БП 1.6, 2.0, УТ 10.3, КА 1.1

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

 

Для хранения настроек отчетов в УПП существуют два метаданных. Регистр сведений "Сохраненные настройки" и одноименный справочник.

Структура метаданных

Их структура похожа, в обоих есть информация:

  1. О пользователе, который может использовать данную настройку
  2. "СохранятьАвтоматически" - сохранять настройку при закрытии
  3. "ИспользоватьПриОткрытии" - при открытии будет выведен отчет по настройке с данной галочкой. Галочка может стоять только у одной настройки к каждому отчету. Если ни у одной настройки галочки нет, то будет выведена типовая настройка СКД.
  4. Реквизит с типом "Хранилище значения" (в справочнике реквизит "ХранилищеНастроек", в регистре сведений ресурс "СохраненнаяНастройка"). В данном объекте собсвенно и хранятся настройки. Как известно хранилище значения может хранить любое значение.

 

В регистре сведений хранятся настройки для отчетов, построенных на универсальном отчете, в справочнике - построенных на СКД. Логично сохранять настройки в справочнике. Но после беглого взгляда возникает несколько но:

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

 

Регистр сведений. Как говорилось выше - в нем хранятся настройки для отчетов на универсальном отчете. Но просмотрев механизм, я решил использовать его, так как процедуры работы с сохранением и восстановлением настроек взять гораздо проще, и более того, данный механизм использован не только в отчетах, но и в типовой обработке "Универсальный журнал", код из которой, немного изменив, я и приспоспособил для решения данной задачи.

 

Итак. На форму надо добавить кнопки сохранения и восстановления значений настроек Сохранить / восстановить настройки, добавить процедуры к ним, и написать код в процедуры "ПриОткрытии" и "ПриЗакрытии".

//////////////////////////////////////////////////////////////////////////////////////

Процедура ДействияФормыСохранитьНастройки(Кнопка)

    Если
мТекущаяНастройка<>Неопределено Тогда
       
СтруктураНастройки = мТекущаяНастройка;
    Иначе
       
СтруктураНастройки = Новый Структура;
       
СтруктураНастройки.Вставить("ИмяОбъекта", Строка(ЭтотОбъект));
       
СтруктураНастройки.Вставить("НаименованиеНастройки", Неопределено);
       
СтруктураНастройки.Вставить("ИспользоватьПриОткрытии", Ложь);
       
СтруктураНастройки.Вставить("СохранятьАвтоматически", Ложь);
    КонецЕсли;

   
СтруктураНастройки.Вставить("Пользователь", глЗначениеПеременной("глТекущийПользователь"));
   
СохраненнаяНастройка = Новый ХранилищеЗначения(КомпоновщикНастроек.ПолучитьНастройки());
   
СтруктураНастройки.Вставить("СохраненнаяНастройка", СохраненнаяНастройка);

   
ВозвращаемаяСтруктура = УниверсальныеМеханизмы.СохранениеНастроек(СтруктураНастройки);

    Если
ВозвращаемаяСтруктура <> Неопределено Тогда
       
мТекущаяНастройка = ВозвращаемаяСтруктура;
    Иначе
       
мТекущаяНастройка = СтруктураНастройки
;
    КонецЕсли;

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

 

Сохранение настройки

//////////////////////////////////////////////////////////////////////////////////////

Процедура ДействияФормыВосстановитьНастройки(Кнопка)

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

   
ВозвращаемаяСтруктура = УниверсальныеМеханизмы.ВосстановлениеНастроек(СтруктураНастройки);

    Если
ВозвращаемаяСтруктура <> Неопределено Тогда
       
мТекущаяНастройка = ВозвращаемаяСтруктура;
       
КомпоновщикНастроек.ЗагрузитьНастройки(мТекущаяНастройка.СохраненнаяНастройка.Получить());
    КонецЕсли;

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

Восстановление настройки 

//////////////////////////////////////////////////////////////////////////////////////

Процедура ПриОткрытии()
   
СтруктураНастройки = Новый Структура;
   
СтруктураНастройки.Вставить("Пользователь", глЗначениеПеременной("глТекущийПользователь"));
   
СтруктураНастройки.Вставить("ИмяОбъекта", Строка(ЭтотОбъект));

    Если
УниверсальныеМеханизмы.ПолучитьНастройкуИспользоватьПриОткрытии(СтруктураНастройки) Тогда
       
мТекущаяНастройка = СтруктураНастройки;
       
КомпоновщикНастроек.ЗагрузитьНастройки(мТекущаяНастройка.СохраненнаяНастройка.Получить());
    Иначе
       
//установка первоначальных настроек, например периода и т.д.
   
КонецЕсли;
КонецПроцедуры

//////////////////////////////////////////////////////////////////////////////////////

Процедура ПриЗакрытии()

    Если
мТекущаяНастройка <> Неопределено И мТекущаяНастройка.НаименованиеНастройки <> Неопределено
        И
мТекущаяНастройка.Свойство("СохранятьАвтоматически") И мТекущаяНастройка.СохранятьАвтоматически Тогда

       
ТекПользователь = глЗначениеПеременной("глТекущийПользователь");
        Если
ТекПользователь<> мТекущаяНастройка.Пользователь Тогда
           
Ответ = Вопрос("Вы восстановили настройку другого пользователя, сохранить ее в
            |ваших настройках?"
, РежимДиалогаВопрос.ДаНет);
            Если
Ответ = КодВозвратаДиалога.Да Тогда
                Если
ВвестиСтроку(мТекущаяНастройка.НаименованиеНастройки,
                   
"Укажите наименование сохраняемой настройки") Тогда
                   
мТекущаяНастройка.Пользователь = ТекПользователь;
                   
УниверсальныеМеханизмы.СохранитьНастройку(мТекущаяНастройка);
                КонецЕсли;
            КонецЕсли;
        Иначе
           
УниверсальныеМеханизмы.СохранитьНастройку(мТекущаяНастройка);
        КонецЕсли;
    КонецЕсли;

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

//////////////////////////////////////////////////////////////////////////////////////

Данный, достаточно небольшой код, позволяет сохранять и восстанавливать настройки внешнего отчета на СКД.



 

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

Вознаграждение за ответ
Показать полностью
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Kochevnic 14.11.11 22:11 Сейчас в теме
2. mikl79 113 15.11.11 08:02 Сейчас в теме
3. MYRZILKA123 2 15.11.11 15:19 Сейчас в теме
4. Il 24 16.11.11 08:28 Сейчас в теме
5. netserfer 89 16.11.11 08:52 Сейчас в теме
Всё гениальное просто, всё сложное не нужно (с)М.Калашников :)
6. ligailnet 16.11.11 09:15 Сейчас в теме
7. Dunga 35 16.11.11 09:41 Сейчас в теме
8. Dunga 35 16.11.11 09:42 Сейчас в теме
А как хранить настройки в файле в отчетах не СКД.
10. Istur 1445 16.11.11 11:23 Сейчас в теме
(8) Полностью аналогично. Настойки хранятся в ресурсе "СохраненнаяНастройка" с типом "Хранилище значения". У меня хранится там КомпоновщикНастроек.Настройки, но там может храниться все, что угодно. Структура, ТаблицаЗначения и т.д. По коду мне кажется вполне должно быть понятно, где и что заменять.
9. psamt1k 16.11.11 10:18 Сейчас в теме
Как любит говорить один мой друг: то, что дохтур прописал!
Спасибо!
11. echo77 1188 16.11.11 18:19 Сейчас в теме
Экспортные процедуры типовых отчетов на СКД:
СохранитьНастройку()
ПрименитьНастройку()

не спасут отца русской демократии?
12. Istur 1445 16.11.11 18:31 Сейчас в теме
(11) Да, можно было бы брать и оттуда, тогда бы сохранение происходило в справочник. Но там не чисто эти 2 процедуры, а из них вызываются еще и другие процедуры. И плюс открытие и закрытие, надо смотреть как там. Реализация через регистр мне показалась проще, чем вычленять код из модуля. В данном модуле все сделано универсально, поэтому брать что-либо достаточно сложно, пришлось бы много удалять.
13. echo77 1188 16.11.11 18:47 Сейчас в теме
(12) я не пойму - вы свою подсистему пишете с нуля? Или же создаете функционал сохранения/загрузки настроек для типовых отчетов?
14. Istur 1445 16.11.11 18:48 Сейчас в теме
(13) второе. Точнее нет, функционал загрузки/сохранения для внешних отчетов, не типовых.
15. echo77 1188 16.11.11 19:25 Сейчас в теме
(14) Судя по скриншотам(панель ваиратов отчета и т.д.) вы делаете это для своих отчетов постронные на базе шаблона типового отчета (Статья ИТС "Разработка отчетов при помощи универсального механизма "Шаблон типового отчета"")
16. Istur 1445 16.11.11 20:43 Сейчас в теме
(15) нет. панели вариантов там нет. там есть самая обычная командная панель, на которую вынесены кнопки сохранения и восстановления настроек. второе. я не делаю массово это для своих отчетов. один раз на работе нужно было так сделать, на форме должен быть только отбор, поэтому шаблон СКДшный использовать нельзя было. а так у нас на работе есть сделанный на основе типового шаблон отчета, мы используем всегда его. Да и другим рекомендую строить отчеты на шаблоне.. вот не знаю как его назвать. На нем еще отчет построен "План-фактный анализ себестоимости выпуска" в УПП. Поэтому даже не знаю когда придется так делать еще раз. Но думаю рано или поздно придется. На ИТС статью не читал, завтра на работе почитаю. Будет обидно, если там уже все описано.
17. sanjabor 17 17.11.11 10:23 Сейчас в теме
Если отчет разрабатывается с нуля, можно за основу взять шаблон типового отчета с ИТС. Там в основном нужно только свою СКД и настройки вывода задать.

ЗЫ Описанные настройки можно применять и к внешним обработкам. Плюсы - те же.
18. Istur 1445 17.11.11 10:36 Сейчас в теме
(17) Я как раз выше распинался что вполне прекрасно знаю о этом отчете. И там же написал, что для решения той конкретной задачи его использование не подходило.
19. angellbroken 21.11.11 11:20 Сейчас в теме
Помоему очень удобная штука)
20. opiumdx 23.11.11 07:46 Сейчас в теме
21. Il 24 24.11.11 04:25 Сейчас в теме
И еще плюсик - можно настройки отчета копировать под конкретного пользователя!
22. dtitov 28.11.11 11:10 Сейчас в теме
23. Silvice 02.12.11 19:54 Сейчас в теме
24. angler225 118 24.01.12 16:33 Сейчас в теме
25. lsp71 27.02.12 11:16 Сейчас в теме
1. Спасибо за идею и за открытый код.
2. Интересно, зачем 1С создала 2 разных механизма для одной и той же цели (сохранение/восстановление настроек)?
26. l-Rain 12.11.12 13:33 Сейчас в теме
Спасибо большое! Пригодилось.
27. red80 12.11.12 13:38 Сейчас в теме
Полезнее было бы поискать точки входа в типовые механизмы сохранения/восстановления настроек и описать способы работы с ними, тогда не важно было бы как что реализовано.
28. Alex141516 11.03.13 17:02 Сейчас в теме
хочу предупредить на всякий случай, а то в инете есть люди которые мучаются вопросом типа почему в запросе есть поле, а в скд оно не выводится (хотя в настройках самого скд оно есть)? в случае если отчет или обработка с использованием скд у вас дорабатывается в процессе, чтобы не попасть в полные непонятки - нужно сбрасывать настройки пользователя после обновления отчета, можно не все, а именно то что касается изменений, я в отчете делаю переменную "версия отчета" и если она у пользователя не совпадает с текущей - сбрасываю настройки пользователя и уведомляю его.
29. unoDosTres 27.05.13 16:48 Сейчас в теме
спасибо за открытый код, весьма эффективное решение
30. ogion 26.09.13 11:04 Сейчас в теме
2 дня искал и вот оно! Спасибо, добрый человек.
31. KlintuhovDE 25.11.13 15:33 Сейчас в теме
Спасибо автору! пригодилось )
Прикрепленные файлы:
32. TeMochkiN 29.11.13 12:35 Сейчас в теме
Замечательное решение, только у меня при закрытии формы автоматически почему-то не сохраняет настройки либо некорректно сохраняется, а при открытии замечательно автоматически восстанавливается настройка, сохраненная вручную
релиз УПП 1.3.44.1
ща поковыряюсь конечно в чем может быть дело, может я что-то упустил
33. TeMochkiN 29.11.13 12:53 Сейчас в теме
Во, добавил одну строчку и заработало:

Процедура ПриЗакрытии()
	Если мТекущаяНастройка <> Неопределено И мТекущаяНастройка.НаименованиеНастройки <> Неопределено
		И мТекущаяНастройка.Свойство("СохранятьАвтоматически") И мТекущаяНастройка.СохранятьАвтоматически Тогда
		
		//Добавленная мною строка
		мТекущаяНастройка.Вставить("СохраненнаяНастройка", Новый ХранилищеЗначения(КомпоновщикНастроек.ПолучитьНастройки()));
	
		ТекПользователь = глЗначениеПеременной("глТекущийПользователь");
		Если ТекПользователь <> мТекущаяНастройка.Пользователь Тогда
			Ответ = Вопрос("Вы восстановили настройку другого пользователя, сохранить ее в
			|ваших настройках?", РежимДиалогаВопрос.ДаНет);
			Если Ответ = КодВозвратаДиалога.Да Тогда
				Если ВвестиСтроку(мТекущаяНастройка.НаименованиеНастройки,
					"Укажите наименование сохраняемой настройки") Тогда
					мТекущаяНастройка.Пользователь = ТекПользователь;
					УниверсальныеМеханизмы.СохранитьНастройку(мТекущаяНастройка);
				КонецЕсли;
			КонецЕсли;
		Иначе
			УниверсальныеМеханизмы.СохранитьНастройку(мТекущаяНастройка);
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры
Показать
rutadmeen; user1114234; Tapochki-tmn; evgenum; rpgshnik; mihan; +6 Ответить
34. kernelio 4 16.05.14 17:27 Сейчас в теме
35. sternu 21.08.14 12:23 Сейчас в теме
Спасибо огромное, помогло в УПП! А то один пользователь замучил с настройками внешнего отчета, сама не умеет настроить отчет и 1С периодически забывала настройки, а мне не улыбается регулярно по пол-часа по телефону восстанавливать все варианты настроек отчета заново :)
36. svilsa 5 01.10.14 11:38 Сейчас в теме
Спасибо, пригодилось для внешнего отчета, в котором необходимо дать пользователю возможность подсмотреть "Настройки всех пользователей".
Светлый ум; +1 Ответить
37. imozg 163 06.10.14 14:57 Сейчас в теме
38. 6630 1 10.03.15 10:58 Сейчас в теме
Спасибо автору. Работает.
39. Sniper9mm 10.03.15 11:08 Сейчас в теме
40. Светлый ум 268 18.06.15 06:14 Сейчас в теме
41. Andrekaa 27.07.15 14:24 Сейчас в теме
помогло, спасибо
еще бы такой же пример для ПостроителяОтчетов
42. PVG_73 17 31.07.15 15:18 Сейчас в теме
Спасибо, сам начал было сие, но забросил... :-)
43. a.rezyhin 23 14.10.15 10:58 Сейчас в теме
Спасибо! Очень нужная статья!
44. buch_n 09.02.16 15:50 Сейчас в теме
45. docerman 54 15.11.16 16:55 Сейчас в теме
Вот спасибо. Просто спас).
46. Chrizt 244 25.11.16 17:01 Сейчас в теме
Под управляемые формы в толстом клиенте на 8.2 пришлось немножко переделать, но получилось.
Спасибо, автор!
47. Lilia 18.01.17 17:43 Сейчас в теме
Спасибо огромное! Мучение с настройками внешних отчетов закончилось!
48. Gary077 17.03.17 12:06 Сейчас в теме
49. rpgshnik 2522 29.03.17 05:02 Сейчас в теме
50. AMS_Guskov_VL 24.05.17 06:09 Сейчас в теме
8.3 толстый клиент, не работает. Формы с настройками сохранения и восстановления появляются, список настроек сохраняется. Сами настройки не восстанавливаются. Отличия у меня только рисунки на кнопках сохранения и восстановления, таких рисунков не нашел, переопределить стандартные кнопки тож не сумел. Штука полезная подскажите как пользоваться?
И в регистре сведений "Сохраненные настройки" сорока появляется.
56. Tapochki-tmn 43 07.02.18 15:42 Сейчас в теме
(50)

Ты уже наверняка разобрался, но для кого-то может оказаться полезным:

Кнопки сохранения/восстановления создавал сам на панели, и навесил указанные обработчики.
После копирования процедур ПриОткрытии() и ПриЗакрытии() не забываем еще раз указать форме, что у нее эти обработчики есть путем выбора этих обработчиков в свойствах формы.

Для восстановления настроек надо чтобы они сохранились.
У автора ошибочка в процедуре ПриЗакрытии(), забыл или не посчитал нужным указать строку:

Если мТекущаяНастройка <> Неопределено И мТекущаяНастройка.НаименованиеНастройки <> Неопределено
И мТекущаяНастройка.Свойство("СохранятьАвтоматически") И мТекущаяНастройка.СохранятьАвтоматически Тогда

мТекущаяНастройка.Вставить("СохраненнаяНастройка", Новый ХранилищеЗначения(КомпоновщикНастроек.ПолучитьНастройки())); //потому, что значения настроек схемы СКД могли поменяться, а в настройке значения полученные при открытии формы

...

Где должна располагаться эта строка уже показали в комменте 33.

Может это все к твоему случаю и не относилось, но пусть будет тут ;)
51. Red_Devil 162 21.06.17 10:12 Сейчас в теме
Автор ты бы упомянул что в модуле необходимо объявить твою переменную Перем мТекущаяНастройка;
user1114234; +1 Ответить
52. Red_Devil 162 21.06.17 10:17 Сейчас в теме
53. user595031_fagosor 27.07.17 07:36 Сейчас в теме
Автору СПАСИБО, пригодилось :)!
54. EvgenS 03.10.17 15:59 Сейчас в теме
Подскажите как можно поместить в настройки табличные части у которые в настройках формы указаны как сохраняемые значения.
Наверное вместо этой строки
СохраненнаяНастройка = Новый ХранилищеЗначения(КомпоновщикНастроек.ПолучитьНастройки());
мне нужно поместить табличные части, подскажите как это сделать?
55. Tapochki-tmn 43 07.02.18 15:29 Сейчас в теме
При написании обработки обмена добавил форму для установки/сохранения параметров обмена и разместил на форме поля ввода.

В обработчике "ПриИзменении" этих полей навесил процедуру "ЗначениеНастройкиОбменаПриИзменении":

Процедура ЗначениеНастройкиОбменаПриИзменении(Элемент)
	ТиповыеОтчеты.УстановитьПараметр(КомпоновщикНастроек, Элемент.Имя, ЭлементыФормы[Элемент.Имя].Значение);
КонецПроцедуры


При закрытии формы, с учетом добавленной строки, как указано выше в 33 комменте...

мТекущаяНастройка.Вставить("СохраненнаяНастройка", Новый ХранилищеЗначения(КомпоновщикНастроек.ПолучитьНастройки()));


...измененные значения параметров сохраняются в регистре и восстанавливаются при открытии формы:

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

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

	
КонецПроцедуры
Показать


Можно использовать типовую функцию:

ТиповыеОтчеты.ПолучитьПараметр(КомпоновщикНастроекКоллекцияЗначений, ИмяПараметра)
Азверин; +1 Ответить
57. tinkerbell 15.02.18 08:17 Сейчас в теме
58. echo77 1188 15.02.18 09:35 Сейчас в теме
59. UserPro 4 22.06.18 11:05 Сейчас в теме
60. amigozzz1@gmail.com 16.04.19 13:33 Сейчас в теме
Идеально. Автор, Спасибо !
61. Азверин 3 03.04.20 09:19 Сейчас в теме
Подскажите, во внешнем отчёте на СКД есть Параметр (реквизит).
Как в таком случае сохранять и восстанавливать значение Параметра?
По текущему коду параметр не восстанавливается.
62. Азверин 3 03.04.20 09:28 Сейчас в теме
(61) в (55) ответ! спасибо тебе!
63. rutadmeen 67 13.05.20 19:38 Сейчас в теме
Оставьте свое сообщение

См. также

Звуковое управление в 1С 8.3 Промо

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

В данной статье описано создание библиотеки для звукового управления (выполнение команд голосом) для платформы 1С 8.3. Задача была поставлена так, чтобы модуль функционировал непосредственно на клиенте 1С, осуществляя управление формами, и взаимодействовал с интерфейсом.

16.03.2021    2662    velemir    28    

Нестандартное использование СКД

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

Программист 1С в компании «БКС-технологии» Алексей Шиянов в ходе Infostart Meetup Novosibirsk продемонстрировал необычный способ использования СКД и сравнил результаты заполнения движений документа через СКД с классическим подходом к заполнению движений через запросы и циклы.

вчера в 11:23    273    user1127305    3    

Полезные примеры СКД, ч.2

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

Еще несколько примеров решения задач в СКД.

06.04.2021    2804    Neti    7    

Пример платежного календаря. СКД. Работает на любой платформе, без привязки к данным. Подробное описание действий

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

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

02.04.2021    596    parshachello    1    

Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions Промо

Универсальные функции Практика программирования v8 Бесплатно (free)

"Я не могу просто взять и скопировать код с гитхаба", "у нас 1С микросервисами окружена", "возможностей мало" - частые фразы 1С разработчиков. которым не хватает возможностей платформы в современном мире. Faas, конечно, история не новая, но нас сдерживало 152ФЗ и задержки по пингам. Для того, чтобы действительно использовать в 1С код, к примеру, на Python, надо было приложить усилия. Теперь всё намного проще - берём и используем.

28.12.2020    5114    comol    28    

Полезные примеры СКД, ч.1

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

Подборка видео по решению различных задач в отчетах на СКД.

30.03.2021    4770    Neti    18    

Обзор полезных методов БСП 3.1.4

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

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

25.03.2021    11036    rayastar    45    

Сравнение данных с февралем високосного года (проблема 29 февраля)

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

Думаю, в практике многим приходится неоднократно сталкиваться с необходимостью разработки отчёта типа LFL (like for like), сравнивающего аналогичные периоды разных лет, например, текущего выбранного периода с аналогичным периодом прошлого года. В новых конфигурациях такой отчёт есть в составе конфигурации (см. "Сравнение продаж аналогичных периодов"), а в старых обычно приходится добавлять. Если не учесть нюанс сравнения с февралём високосного года, данные в отчёте за прошлый период могут быть некорректными.

02.03.2021    278    lolipoka    4    

Использование программных перечислений, ч.1: строковые константы Промо

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

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

10.12.2016    38855    unichkin    74    

Отбор на форму (документа, справочника, обработки) с помощью СКД

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

Добавляем удобный отбор на форму документа с помощью СКД

09.02.2021    4004    John_d    15    

Установка нескольких фильтров/отбора СКД в табличной форме, хранение в табличной части для отправки push/email уведомлений (ОтборКомпоновкиДанных, КомпоновщикНастроек, ДинамическийСписок)

Работа с интерфейсом Практика программирования v8 v8::УФ v8::СКД Бесплатно (free)

Рассмотрим, как организовать установку фильтров/отбора СКД (динамического списка) на push/email уведомления в подсистеме EDIbot (WebApp) для 1С в табличной части "События уведомлений".

02.11.2020    1062    SizovE    0    

Вычислить РАЗНОСТЬДАТ в рабочих днях

Практика программирования БСП (Библиотека стандартных подсистем) v8::Запросы v8::СКД ERP2 БП3.0 УТ11 ЗУП3.x Бесплатно (free)

Вычисление количества рабочих днях между двумя датами в запросе.

20.10.2020    3135    antonivan    17    

Вспомогательные инструкции в коде 1С Промо

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

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    32605    tormozit    105    

Вывод дерева в табличный документ СКД

Практика программирования Универсальные функции v8 v8::СКД Бесплатно (free)

Вывод содержимого элемента формы "ДанныеФормыДерево" в табличный документ средствами СКД.

09.07.2020    3331    Yashazz    7    

Роль "Остатки" поля набора данных СКД в отчете и в расшифровке

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

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

24.05.2020    4520    kasper076    17    

Макет оформления в отчете с несколькими СКД

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

Как заставить работать макет оформления в отчёте с несколькими СКД.

14.05.2020    3400    vendim    1    

Оформление и рефакторинг сложных логических выражений Промо

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

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

20.09.2012    79722    tormozit    131    

СКД. Использование Менеджера временных таблиц в системе компоновки

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

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

29.04.2020    8383    the1    38    

Ограничения полей, или как обмануть СКД?

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

Каждое из ограничений полей можно обойти. Рассмотрим варианты обхода и способы обезопасить свой отчет.

15.04.2020    11370    SeiOkami    39    

Работа с запросами в 1С СКД. Отладка СКД

Практика программирования v8::Запросы v8::СКД Россия Бесплатно (free)

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

15.04.2020    4032    ProfessionStore    3    

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

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

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

11.07.2007    50618    tormozit    48    

Работа с запросами в 1С СКД. Особенности работы запросов в СКД. Часть 3

Практика программирования v8::Запросы v8::СКД Россия Бесплатно (free)

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

13.04.2020    7034    ProfessionStore    4    

СКД: Прозрачная обработка результата

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

В статье дан ответ на вопрос о том, как "прозрачно" обработать результат компоновки (да хотя бы картинки вставить после того, как отчет сформирован).

13.04.2020    4638    starik-2005    16    

Работа с запросами в 1С СКД. Особенности работы запросов в СКД. Часть 2

Практика программирования v8::Запросы v8::СКД Россия Бесплатно (free)

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

12.04.2020    5620    ProfessionStore    11    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

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

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017    47472    tormozit    74    

Работа с запросами в 1С СКД. Особенности работы запросов в СКД. Часть 1

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

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

11.04.2020    8241    ProfessionStore    9    

Работа с запросами в 1С СКД. Язык выражений СКД и подмена запросов

Практика программирования v8::Запросы v8::СКД Россия Бесплатно (free)

Хотя эта статья называется «Работа с запросами в 1С СКД», нельзя не упомянуть про язык выражений СКД. Да – у системы компоновки данных есть свой язык! Это не язык платформы 1С, это не язык запросов. Это еще один язык, который используется 1С в СКД для обработки полученного набора (ов) данных.

11.04.2020    7502    ProfessionStore    25    

Работа с запросами в 1С СКД. Примеры использования расширения языка запросов СКД

Практика программирования v8::Запросы v8::СКД Россия Бесплатно (free)

Все тонкости использования расширения языка запросов 1С для СКД вы можете изучить по ссылкам, которые приведены в предыдущей статье. Здесь мы рассмотрим конкретные кейсы применения данного расширения.

10.04.2020    7675    ProfessionStore    4    

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

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

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    16612    m-rv    2    

Запросы 1С СКД. Возможности и ограничения

Практика программирования v8::Запросы v8::СКД Россия Бесплатно (free)

В этом цикле статей мы рассмотрим особенности работы системы компоновки данных с запросами в 1С.

10.04.2020    9516    ProfessionStore    14    

Вложенные СКД

Практика программирования Конфигурирование 1С v8 v8::СКД Бесплатно (free)

Возможности, нюансы, заметки.

26.03.2020    7469    Yashazz    19    

СКД - одна из проблем связи Наборов данных

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

Официальная информация: 1. В схеме компоновки данных нет указания типа связи. Все связи считаются ЛЕВЫМИ внешними соединениями. 2. Если для вложенного набора данных указано условие фильтра, тогда связь вложенного набора данных с родительским набором данных считается ВНУТРЕННЕЙ. Или как получить все результаты основного набора при отборе в зависимом.

03.03.2020    6073    BelikovSA    9    

Как прикрутить ГУИД к регистру сведений Промо

Практика программирования Перенос данных из 1C8 в 1C8 Разработка v8 Бесплатно (free)

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

16.04.2019    21210    m-rv    17    

Получение значений всех полей в иерархии структуры отчета

Практика программирования Математика и алгоритмы v8::СКД Россия Бесплатно (free)

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

28.02.2020    2338    real_MaxA    1    

Для чего нужен флаг "Автозаполнение" в СКД и каких проблем без него можно избежать

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

Речь пойдет о флаге «Автозаполнение» в наборе данных Запрос Системы компоновки данных (СКД). Сразу хочу отметить, что флаг «Автозаполнение» доступен только в наборе данных - Запрос.

26.02.2020    8015    Neti    41    

Программная работа с настройками СКД

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

Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.

27.01.2020    43050    ids79    26    

Как сделать запрос на изменение данных Промо

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

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    32941    m-rv    22    

[СКД] Программное создание схемы компоновки данных

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

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    32479    John_d    22    

СКД. Шаг 3. Используем макеты для оформления отчета

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

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

13.01.2020    23136    aximo    14    

Последовательности событий при проведении документа 1С. Шпаргалка + про формы + про расширения

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

Собрал информацию о событиях/подписках/расширениях в одном месте.

30.12.2019    24989    kuzyara    38    

Метод формирования движений в типовых регистрах нетиповыми регистраторами Промо

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

Вариант решения задач с проведением по типовым регистрам нетиповыми регистраторами. Зачем - чтобы при сравнении конфигурации не обращать внимание на свойства регистров и исключить вероятность допущения горькой оплошности при обновлении информационных баз, заменив типы регистраторов основной конфигурации типами конфигурации поставщика. Для программных продуктов, имеющих в своем составе метаданных документ "Корректировка регистров"("Корректировка записей регистров").

05.12.2017    29003    itriot11    34    

[СКД] Вывод картинки в результат любого отчета на СКД

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

Если у вас в справочнике Номенклатура (или другом справочнике) заполнена картинка, то ее можно легко вывести для наглядности отчета.

09.12.2019    10491    John_d    16    

СКД. Лайфхак №2. Собираем отчет еще удобнее

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

В этой публикации я хочу вам описать еще один интересный и относительно новый подход к одному из довольно тривиальных методов работы с СКД для построения отчетов.

20.11.2019    10801    aximo    18    

Простейший пример создания бизнес-процессов

Практика программирования Управление бизнес-процессами (BPM) v8::Бизнес-процессы 1cv8.cf Бесплатно (free)

Простой пример создания бизнес-процессов в несколько шагов. Может пригодиться при первом знакомстве с ними или для решении задач экзамена 1С:Специалист по платформе.

20.11.2019    23100    YPermitin    19    

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    79062    Serginio    113    

Некоторые редко используемые возможности СКД

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

В статье перечислены некоторые возможности СКД, которые позволят расширить круг решаемых при помощи этого механизма задач. Здесь показано, как использовать папки полей, и предложена альтернатива некоторым функциям языка выражений СКД.

11.11.2019    12569    kser87    40    

Лайфхак работы с СКД. Собираем отчет.

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

В этой статье я опишу небольшой "лайфхак" по сборке отчетов в СКД. Думаю, этот подход будет интересен тем, кто хочет быстро оформить отчет.

25.10.2019    26641    aximo    38    

Немного про СКД. Характеристики и проверка пустого отчета

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

Пример использования характеристик в СКД и программная работа с ними. А также описание проверки результата отчета на заполненность.

10.10.2019    13551    YPermitin    7    

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

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

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    38564    ids79    40    

Полезняшки по СКД и построителям. Просто код

Практика программирования Универсальные функции v8 v8::СКД Бесплатно (free)

Полезные процедуры и функции для работы с построителями и СКД. Просто исходник.

10.10.2019    10853    Yashazz    47    

Две схемы СКД в одном отчете с пользовательскими параметрами

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

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

10.10.2019    11687    evgeni-red    9