Нестандартная расшифровка СКД или расшифровка одного отчета СКД при помощи другого отчета СКД установкой пользовательских настроек (в управляемых формах, методика + пример для УТ11)

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

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

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

Обратите внимание, что добавлены еще два варианта реализации подобного функционала:

1. //infostart.ru/public/161994/, в реализации он еще проще, но имеет некоторые ограничения.

2. //infostart.ru/public/165599/, в реализации несколько сложнее, но зато позволяет использовать одновременно как стандартную так и нестандартную расшифровку, кроме того он позволяет устанавливать дополнительные параметры отчета-расшифровки.

Оба эти отчета основаны на текущем.

 

Итак начнем Smile

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

При расшифровке отчета «НеликвидыНоменклатуры» хочется использовать отчет «АнализДвиженийТоваровСРезервамиУпак», оба отчета самопальные и внедерены в УТ11 (оба отчета во вложении к теме). Т.е. при клике на ячейке с номенклатурой исходного отчета, должен быть построен отчет-расшифровка уже установленным отбором по этой номенклатуре, до кучи можно установить другие параметры отчета расшифровки (например период и склад)

  1. Прежде всего, чтобы иметь возможность запрограммировать расшифровку нам понадобится ФормаОтчета «НеликвидыНоменклатуры», её необходимо добавить (элементы формы система добавит сама).
  2. Для элемента формы «Результат» в событии «ОбработкаРасшифровки» нужно добавить процедуру, например: «РезультатОбработкаРасшифровки»
  3. В модуле этой формы нужно наполнить процедуру содержимым:

Сначала нужно понять в каком же месте произошло событие, требующее расшифровки  (иначе говоря нужно узнать какую номенклатуру выбрал пользователь), т.к. «РезультатОбработкаРасшифровки» работает на клиенте, тут потребуется вызов серверной функции с передачей в качестве параметра переменной «Расшифровка»

Номенклатура = ПолучитьРасшифровкуНаСервере(Расшифровка, ЭтоГруппа);

Тут передается также переменная ЭтоГруппа – для возврата признака выбранной номенклатуры.

Сама функция:

&НаСервере

Функция ПолучитьРасшифровкуНаСервере(Расшифровка, ЭтоГруппа = Ложь)

               Данные = ПолучитьИзВременногоХранилища(ДанныеРасшифровки); //Здесь основная «недокументированная фишка»: Переменная ДанныеРасшифровки не описана в хелпе, также не описано что Данные, нужно получать путем извлечения из временного хранилища,

               Поля = Данные.Элементы.Получить(Расшифровка).ПолучитьПоля(); //Тут получаем поля расшифровки, среди которых находим нужное.

               ПолеНоменклатура = Поля.Найти("Номенклатура");

               Если ПолеНоменклатура = Неопределено Тогда

                               Возврат Неопределено;

               Иначе

                               ЭтоГруппа = ПолеНоменклатура.Значение.ЭтоГруппа;

                               Возврат ПолеНоменклатура.Значение;

               КонецЕсли;

КонецФункции

Далее, в основной процедуре, нужно получить форму отчета, которым будем производить расшифровку:

ФормаДТСР = ПолучитьФорму("Отчет.АнализДвиженийТоваровСРезервамиУпак.Форма");

Получить настройки этого отчета:

Настройки = ФормаДТСР.Отчет.КомпоновщикНастроек.Настройки;

Найти и заполнить нужные параметры и отборы отчета-расшифровки:

ИДНастройкиПериод = Настройки.ПараметрыДанных.Элементы.Найти("Период").ИдентификаторПользовательскойНастройки;  //Идентификатор пользовательской настройки "Период"

//Поиск доступных полей отбора по имени: 

ПолеСклад = Настройки.Отбор.ДоступныеПоляОтбора.Элементы.Найти("Склад").Поле;

ПолеНоменклатура = Настройки.Отбор.ДоступныеПоляОтбора.Элементы.Найти("Номенклатура").Поле;

//Поиск идентификаторов пользовательских настроек по доступным полям настроек (к сожалению только перебором):   

ИДЭлмОтбораСклад = "";

Для Каждого Элемент Из Настройки.Отбор.Элементы Цикл

Если Элемент.ЛевоеЗначение = ПолеСклад Тогда ИДЭлмОтбораСклад = Элемент.ИдентификаторПользовательскойНастройки;         Прервать; КонецЕсли;

КонецЦикла;

ИДЭлмОтбораНоменклатура = "";

Для Каждого Элемент Из Настройки.Отбор.Элементы Цикл

Если Элемент.ЛевоеЗначение = ПолеНоменклатура Тогда ИДЭлмОтбораНоменклатура = Элемент.ИдентификаторПользовательскойНастройки;     Прервать; КонецЕсли;

КонецЦикла;

//Установка отбора по Номенклатуре, которая была получена в самом начале процедуры: 

Коллекция = ФормаДТСР.Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы; //Пользовательские настройки

ЭлементОтбораНоменклатуры = Коллекция.Найти(ИДЭлмОтбораНоменклатура);

ЭлементОтбораНоменклатуры.ПравоеЗначение = Номенклатура;

ЭлементОтбораНоменклатуры.Использование = Истина;

ЭлементОтбораНоменклатуры.ВидСравнения = ?(ЭтоГруппа, ВидСравненияКомпоновкиДанных.ВИерархии, ВидСравненияКомпоновкиДанных.Равно);

               

//Установка отбора по Складу (из текущего отчета)

КоллекцияЗдесь = ЭтаФорма.Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы;

НастройкиЗдесь = ЭтаФорма.Отчет.КомпоновщикНастроек.Настройки;

ПолеСкладЗдесь = НастройкиЗдесь.Отбор.ДоступныеПоляОтбора.Элементы.Найти("Склад").Поле;

ИДЭлмОтбораСкладЗдесь = "";

Для Каждого Элемент Из НастройкиЗдесь.Отбор.Элементы Цикл

Если Элемент.ЛевоеЗначение = ПолеСкладЗдесь Тогда ИДЭлмОтбораСкладЗдесь = Элемент.ИдентификаторПользовательскойНастройки;         Прервать; КонецЕсли;

КонецЦикла;

ЭлементОтбораСкладЗдесь = КоллекцияЗдесь.Найти(ИДЭлмОтбораСкладЗдесь);

ЭлементОтбораСклад = Коллекция.Найти(ИДЭлмОтбораСклад);

ЭлементОтбораСклад.ПравоеЗначение = ЭлементОтбораСкладЗдесь.ПравоеЗначение;

ЭлементОтбораСклад.Использование = ЭлементОтбораСкладЗдесь.Использование;

ЭлементОтбораСклад.ВидСравнения = ЭлементОтбораСкладЗдесь.ВидСравнения;

ИДНастройкиПериодЗдесь = НастройкиЗдесь.ПараметрыДанных.Элементы.Найти("Интервал").ИдентификаторПользовательскойНастройки;

КонецПериодаЗдесь = КоллекцияЗдесь.Найти(ИДНастройкиПериодЗдесь).Значение.ДатаОкончания;

//Установка параметра Период

Коллекция.Найти(ИДНастройкиПериод).Значение = Новый СтандартныйПериод(ДобавитьМесяц(КонецПериодаЗдесь, -12),КонецПериодаЗдесь);

Для заполнения параметров отчета снова придется вызвать серверную функцию:

СтруктураВозврата = ОбработатьРасшифровкуНаСервере(ФормаДТСР.Отчет, ФормаДТСР.Результат, ФормаДТСР.ДанныеРасшифровки, ФормаДТСР.УникальныйИдентификатор);

Текст функции:

&НаСервере

Функция ОбработатьРасшифровкуНаСервере(Знач ОтчетХ, Знач РезультатХ, Знач ДанныеРасшифровкиХ, Знач ИДФормы)

                ОтчетОбъект = ДанныеФормыВЗначение(ОтчетХ, Тип("ОтчетОбъект.АнализДвиженийТоваровСРезервамиУпак")); //Для компоновки результата

                РезультатХ.Очистить();

                ОтчетОбъект.СкомпоноватьРезультат(РезультатХ, ДанныеРасшифровкиХ);                                  //Собственно формирование отчета

                АдресДанныеРасшифровки = ПоместитьВоВременноеХранилище(ДанныеРасшифровкиХ, ИДФормы);             //тоже "недокументированная фишка", Запоминаем расшифровку (с ИД формы). Это необходимо, чтобы у отчета расшифровки в свою очередь тоже была расшифровка, но уже стандартная, ИДФормы - нужен, чтобы эта стандартная расшифровка сработала не один раз, а до тех пор пока существует указанная форма.

                Возврат Новый Структура("Результат,ДанныеРасшифровки", РезультатХ, АдресДанныеРасшифровки);         //Возвращаем результат и Адрес расшифровки, чтобы отчет-расшифровку тоже можно было расшифровать, но уже стандартной расшифровкой. Обратим внимание на то, что на клиенте извлечение из временного хранилища НЕ ПРОИЗВОДИТСЯ, система сама извлечет Данные Расшифровки, по мере необходимости.

КонецФункции

Далее, в основной процедуре, заполняем форму отчета-расшифровки и выводим его на экран:

                ФормаДТСР.Результат = СтруктураВозврата.Результат;

                ФормаДТСР.ДанныеРасшифровки = СтруктураВозврата.ДанныеРасшифровки;

                ФормаДТСР.Элементы.Результат.ОтображениеСостояния.Видимость = Ложь;  //Избавление от надписи. "Отчет не сформирован, бла, бла, бла"

                ФормаДТСР.Элементы.Результат.ОтображениеСостояния.ДополнительныйРежимОтображения = ДополнительныйРежимОтображения.НеИспользовать;

                ФормаДТСР.Открыть();

Коротко поясню что здесь делается:

      1. Получаем Номенклатуру, по которой пользователь произвел клик (вызов серверной функции "ПолучитьРасшифровкуНаСервере") 
      2. Получаем ФормуДТСР - отчета-расшифровки, по имени в метаданных
      3. Получаем Настройки ФормыДТСР (формы отчета расшифровки)
      4. По идентификаторам заполняем пользовательские настройки ФормыДТСР (формы отчета расшифровки), Номенклатуру - из п.1., Склад - из настроек исходного отчета, Период - отталкиваясь от Периода исходного отчета
      5. Производим формирование отчета расшифровки (вызов серверной функции "ОбработатьРасшифровкуНаСервере")
      6. Заполнение ФормыДТСР (формы отчета расшифровки) параметрами, которые вернула функция п.5
      7. Легкое наведение "лоска", и отображение заполненной  ФормыДТСР  (формы отчета расшифровки) 

Это собственно все. Все оказалось просто. Реализация во вложении, но комментариев в реализации значительно меньше )).

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

Наименование Файл Версия Размер
Raschifrovka.zip

.zip 17,78Kb
11.09.12
334
.zip 17,78Kb 334 Скачать

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. andrei.k 12.09.12 08:25 Сейчас в теме
Помещение во временное хранилище обработок и отчетов это, конечно, не "недокументированная фишка", но в данном воплощении несомненно плюс. Да и, кстати, с Днем программиста!
3. mxm2 1185 12.09.12 08:40 Сейчас в теме
(1) andrei.k, "Помещение во временное хранилище обработок и отчетов" - именно, что не отчетов, а данных расшифровки... как говорится это "две большие разницы, или четыре маленькие" (с); причем, если внимательно отсмотреть код, то увидите что часть работы по помещению расшифровки во временное хранилище и извлечению из него система "делает сама".

Данные = ПолучитьИзВременногоХранилища(ДанныеРасшифровки); //Здесь основная «недокументированная фишка»,
"ДанныеРасшифровки" - это в хелпе не описано...

АдресДанныеРасшифровки = ПоместитьВоВременноеХранилище(ДанныеРасшифровкиХ, ИДФормы); //тоже "недокументированная фишка", Запоминаем расшифровку (с ИД формы)
До этого вообще долго доходил методом проб и ошибок, причем обратите внимание, что на клиентской строне нет извлечения из временного хранилища, т.к. это делает сама СКД, и еще: если здесь убрать ИДФормы, то все будет работать, но расшифровка будет успешно получена только 1 раз... а на второй - ошибка...

Вас тоже с 256 днем с начала года ).
wowik; purgin; dutlovva; bogdan_sukonnov; +4 Ответить
5. andrei.k 12.09.12 09:03 Сейчас в теме
(3) у меня никаких претензий к вам нет, здесь видно, что проведена большая работа. Я к тому, что у Временного хранилища тип произвольный, а значит что туда можно пихать все что угодно, помимо картинок я туда помещал обработки, но для других целей. Здесь же идея гениальная.
7. mxm2 1185 12.09.12 09:51 Сейчас в теме
(5) andrei.k, "у меня никаких претензий к вам нет" - дело не в этом, а в понимании кода.

"Здесь же идея гениальная.", если Вы про то помещение во временное хранилище данных расшифровки, то эта идея, от 1С... по мне так ничего идея, но в том то и подвох, что она недокуметирована и доходить до нее приходится через отладчик...
22. ksai 20.09.12 12:36 Сейчас в теме
(3)
"ДанныеРасшифровки" - это в хелпе не описано...

Интересно, существует ли вообще в природе адекватное полное описание всех возможностей СКД?
Среди официальной литературы 1С ничего подобного не встречал. :( Может кому-то больше повезло в этих поисках?
P.S. Книгу Хрусталевой не вспоминать, там только основы.
2. mxm2 1185 12.09.12 08:26 Сейчас в теме
один из отчетов: "Неликвиды" уже засветился на "инфостарте": http://infostart.ru/public/137723/ (правда без расшифровки), по сути - это модификация того отчета, но с заострением внимания на программинге расшифровки.
4. Rustig 1592 12.09.12 09:01 Сейчас в теме
(0) я хотел бы уточнить смысл, потому что не сталкивался с таким: вы описываете такую ситуацию, что сначала формируется один отчет, в другом окне формируется второй отчет, из второго отчета вызывается расшифровка, но расшифровка настроена так, что используется заданный отбор первого отчета. Правильно я понимаю вас?
8. mxm2 1185 12.09.12 09:55 Сейчас в теме
(4) Rustig, "что используется заданный отбор первого отчета" - ага Плюс отбор по номенклатуре той ячейки, по которой произвели клик в форме первого отчета.
9. Rustig 1592 12.09.12 10:13 Сейчас в теме
(8) Насколько я понял из кода, отбор конкретно привязан к Складу, Номенклатуре, Периоду. Нельзя ли решить эту задачу через глобальные переменные: глСклад, глНомен, глПериод. Переменные задаются при формировании первого отчета, затем используются при формировании любых других отчетов. Или в вашей задаче заложен подводный камень, который я не вижу? Заранее спасибо за совместное обсуждение проблематики. С уважением, Рустем
10. mxm2 1185 12.09.12 10:33 Сейчас в теме
(9) Rustig, через глобальные - можно, но это:
1. в том числе потребует изменения в команде или форме отчета расшифровки
2. требует хранения этих переменных, доступных как на сервере так и на клиенте
3. менее универсально, т.к. возможно потребуется расширение списка переменных, скажем если потребуется отбор по Сегменту или Подразделению...
4. а если пользователь сначала открыл расшифровку по одной номенклатуре, а затем, не закрывая этой расшифровки, по другой?

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

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


Использовать, например:

УстановитьОтборПоОбразцу(КомпоновщикНастроек, "Склад", КомпоновщикНастроекЗдесь, "Склад")

Ну и для отбора по полю, в котором кликнули - тоже отдельную функцию. типа:

УстановитьОтборПо(КомпоновщикНастроек, "Номенклатура", Номенклатура)
27. mxm2 1185 11.12.12 10:05 Сейчас в теме
(9) Rustig, http://infostart.ru/public/165599/ - реализовано более наглядное заполнение параметров отчета-расшифровки.

(24) chemezov, http://infostart.ru/public/165599/ - еще "красивее".

(23) alexware, http://infostart.ru/public/165599/ - еще пара "ответов", которые сам долго искал.

(22) ksai, http://infostart.ru/public/165599/ - некое расширение возможностей, текущего отчета.

(21) DanDem, http://infostart.ru/public/165599/ - возможно Вам тоже поможет.

(6) w-divin, http://infostart.ru/public/165599/ - более "продвинутая" версия.

Это сообщение напоминает спам ))), но, надеюсь, будет полезно.
6. w-divin 12.09.12 09:46 Сейчас в теме
вот уж действительно огромное спасибо. экономия моего времени оказалась колоссальная ))) все откладывал реализацию подобной расшифровки. Оказалось не зря. Огромнейшее спасибо...
11. bmwx5 12.09.12 11:50 Сейчас в теме
практически типовой подход к Расшифровке на СКД, почти так же освещен в видео уроке Гилева "Расшифровка в отчетах на СКД". Пробежал по коду еще раз уложил в голове, видео урок все же советую
12. mxm2 1185 12.09.12 12:20 Сейчас в теме
(11) bmwx5, когда-то натыкался на это видео, но до конца у меня не получилось реализовать по видео. В частности "ДанныеРасшифровки", видимо там освещено, но не помню точно. Когда встала проблема расшифровки - видео не нашел, вот и пришлось изобретать велосипед. А потом выяснилось, что люди, в частности те с которыми я общаюсь, тоже не вполне знают эту тему. Вот и решил причесать и выложить. Подход действительно типовой. К стати ссылка на "живое" видео у Вас есть? Зашлите по-возможности.
14. bmwx5 12.09.12 16:37 Сейчас в теме
13. DoctorRoza 12.09.12 13:39 Сейчас в теме
Спасибо, нужное решение серьезной задачи!
15. jekapankin 12.09.12 21:48 Сейчас в теме
16. DanDem 17.09.12 05:39 Сейчас в теме
У меня такой вопрос.
Например если пользователь кликает не на "Номенклатуру", а на какой-нибудь показатель в отчете. Как в этом случае получить "Номенклатуру" что бы построить "свой отчет"(расшифровку этого показателя)
Вроде в статье я не нашел ответ на этот вопрос.
17. mxm2 1185 17.09.12 08:21 Сейчас в теме
(16) DanDem, в коде обработки расшифровки есть такие строки
Номенклатура = ПолучитьРасшифровкуНаСервере(Расшифровка, ЭтоГруппа);
Если Номенклатура = Неопределено Тогда Возврат; КонецЕсли;
СтандартнаяОбрабтка = Ложь;


Для упрощения восприятия я их не описал в тексте статьи, однако в отчете они есть;

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

Теперь конкретно про Ваш вопрос:
Если, предполагается нестандартная расшифровка по другому показателю (т.е. при клике пользователя на другом поле), то его аналогичным образом можно "вытащить" из расшифровки.
18. DanDem 17.09.12 08:42 Сейчас в теме
(17) Суть этих строк я понял. Спасибо.
У меня как раз проблема "вытащить из расшифровки" необходимую информацию.
Данные = ПолучитьИзВременногоХранилища(ДанныеРасшифровки);

В Данные я не нахожу необходимой информации(либо не знаю как искать). Меня интересует схема извлечения необходимых данных.
20. mxm2 1185 17.09.12 08:50 Сейчас в теме
(18) DanDem, пробуйте через отладчик,
Данные = ПолучитьИзВременногоХранилища(ДанныеРасшифровки);
Эта строка вернет таблицу всех доступных расшифровок, в этой таблице можно искать по ИД. связи между расшифровками установить не удалось, возможно, её нет;
21. DanDem 17.09.12 10:14 Сейчас в теме
(20) ээээ... тупо стал лазить по строкам таблицы и на второй попытке (Элемент[10] :)) наткнулся на необходимое.
Попробовал организовать поиск по таблице через цикл - не получилось ничего хорошего. По ИД замечательно было бы. Как получить ИД не понятно.
mxm2,пасибо за наставления.
19. mxm2 1185 17.09.12 08:45 Сейчас в теме
(16) DanDem, "Как в этом случае получить "Номенклатуру" что бы построить "свой отчет"(расшифровку этого показателя)" - по-видимому в для этого случая нужно специальным образом фомировать расшифровку первого отчета, возможно, через макет, навскидку решить эту задачу у меня не получилось.
28. Spacer 303 04.01.13 19:34 Сейчас в теме
(16) DanDem, Возможно вам поможет мой код.
Я использую собственную функцию получения данных расшифровки, отличную от описанной в данной статье.

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

&НаСервере
Функция ПолучитьДанныеРасшифровки(Расшифровка, СтруктураДанных, ОбъектРасшифровки=Неопределено)

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


Пояснения:
ОбъектРасшифровки - это значение расшифровки колонки отчета на которой был произведен клик;
СтруктураДанных - структура в которой вы описываете состав данных которые вы хотите извлечь из расшифровки;
ЗначениеРасшифровки - структура содержащая данные извлеченные из расшифровки.

Таким образом, вы можете получить значение "Номенклатура", щелкнув на любой другой колонке,
например на колонке "Серия".
newvideo; purgin; smit1c; dutlovva; Vanchez; CyberCerber; invertercant; ioanGR; Silverghoust; Харьковец; Algiz; h00k; kutuzov-2007; +13 Ответить
29. TitanLuchs 250 30.01.13 17:49 Сейчас в теме
(28) Отлично, как раз то что искал. Вариант ТС работает отлично, но не позволяет вытащить номенклатуру при клике на другую колонку.
30. TitanLuchs 250 30.01.13 17:54 Сейчас в теме
(28) И даже работает! Спасибо тебе, добрый фей, ты сэкономил мне лишний час времени!!!
35. mxm2 1185 31.01.13 10:31 Сейчас в теме
(30) TitanLuchs, (32) Leon99, http://infostart.ru/public/165599/ - тут тоже самое с выбором вариантов.
47. newvideo 20.02.20 11:25 Сейчас в теме
(28) Спасибо, помогло при извлечении данных по группировкам кликнутой ячейки и название колонки
48. newvideo 20.02.20 12:35 Сейчас в теме
(28) а как получить значение ячейки ресурса, Поле.Значение возвращает null??
23. alexware 01.10.12 05:10 Сейчас в теме
Скачал демонстрационные файлы. Спасибо. Нашел ответы на свои вопросы. До этого по этой теме читал только Хрусталеву. Там по расшифровке нужного для себя материала не нашел.
24. chemezov 35 22.11.12 09:34 Сейчас в теме
Понравилось, работает :)
25. mxm2 1185 22.11.12 10:24 Сейчас в теме
43. Cyberhawk 123 04.12.14 13:09 Сейчас в теме
Воспользовался данной методикой в УТ 11.1.6.26 под платформой 8.3.4.496 для рашифровки в типовой отчет, у которого не создана ни одна форма.
Изменения, которые пришлось внести в код автора публикации:
  • 1
    Вместо
    ФормаДТСР.Результат

    теперь
    ФормаДТСР.ОтчетТабличныйДокумент

  • 2
    Вместо
    ФормаДТСР.ДанныеРасшифровки

    теперь
    ФормаДТСР.ОтчетДанныеРасшифровки

  • 3
    Вместо
    ФормаДТСР.Элементы.Результат

    теперь
    ФормаДТСР.Элементы.РезультатИБыстрыеНастройки.ПодчиненныеЭлементы.ОтчетТабличныйДокумент

P.S. И почему-то (для озвученного примера в УТ 11.1.6.26) не заработал более простой способ из (25).
26. arian89 26.11.12 12:04 Сейчас в теме
31. Leon99 30.01.13 19:00 Сейчас в теме
32. Leon99 30.01.13 19:00 Сейчас в теме
33. Leon99 30.01.13 19:01 Сейчас в теме
я и не думал, что на инф. такие отзывчивые люди)
34. Leon99 30.01.13 19:01 Сейчас в теме
36. viktorinka777 11.02.14 15:56 Сейчас в теме
А есть подобная статья по обычному приложению?)
40. NittenRenegade 89 17.09.14 13:29 Сейчас в теме
(36) viktorinka777, тоже столкнулся с сабжем. Видимо, в случае неуправляемого приложения "незадокументированная фишка" не работает. Что внушает некоторые опасения от использования её и в УФ. А ну как новая версия платформы изменит своё поведение?
41. mxm2 1185 17.09.14 15:37 Сейчас в теме
(40) NittenRenegade, в неуправляемом все значительно проще, причем расшифровка подробно описана в стандартных желтых книжечках от 1С
42. NittenRenegade 89 17.09.14 14:01 Сейчас в теме
(41) похоже уже нашел и даже использовал:
ЗначенияПолейРасшифровки = ДанныеРасшифровки.Элементы.Получить(Расшифровка).ПолучитьПоля().Найти("Контрагент");
	Если ЗначенияПолейРасшифровки <> Неопределено Тогда
		
		Контрагент = ЗначенияПолейРасшифровки.Значение;
		
	КонецЕсли;


Учился я уже по УФ, так что не уверен что в моих желтых книжечках это было.
37. alex_shkut 48 19.02.14 16:07 Сейчас в теме
Кто может подсказать?
Пробую данный код (или одну из его модификаций)
База файловая, все отборы добавлены заранее в схему.
Все отборы и параметры заполняются программно перед компоновкой.
Свойство ИдентификаторПользовательскойНастройки у отборов всегда "" т.е. пустая строка.
Код:
ИДНастройкиПериодЗдесь = НастройкиЗдесь.ПараметрыДанных.Элементы.Найти("Интервал").ИдентификаторПользовательскойНастройки;
не работает...
38. mxm2 1185 19.02.14 16:29 Сейчас в теме
(37) alex_shkut, в текущей СКД (из которой производится расшифровка) есть параметр "Интервал" (он доступен в качестве пользовательских настроек)?
39. jills2001 27.03.14 10:52 Сейчас в теме
Коллеги, большое спасибо за подробную статью. Очень помогла понять принцип работы расшифровки в управляемом приложении, и сильно сэкономила время на изучение и реализацию данной темы.
44. Alligator84 68 25.08.17 11:07 Сейчас в теме
Доброго дня!
Большое спасибо автору и всем участникам.
Разработка действительно дельная.
У меня возникла одна проблема: в отчете, который выводится как расшифровка отсутствует стандартное поведение если пытаться вызвать стандартную расшифровку данного отчета. Описание ошибки: значение данных расшифровки отсутствует либо имеет неправильный тип
Кто сталкивался и решил данную проблему?
49. serega_ivchenko 28.04.20 14:19 Сейчас в теме
(44) Удалось побороть ошибку "значение данных расшифровки отсутствует либо имеет неправильный тип"?
45. akim2040 20 21.05.18 08:32 Сейчас в теме
Что бы не плодить кучу внешних отчетов, хочу вместо двух сделать 1, со вложенными схемами. Вот только не понял как обратиться к этой самой вложенной схеме для расшифровки?
46. Cерый 16 03.10.19 17:04 Сейчас в теме
В ОФ при компоновке (СкомпоноватьРезультат) во второй параметр процедура возвращает переменную, в которую будет записана информация расшифровки, достаточно в отчет расшифровки передать эту переменную и присвоить ее значение переменной ДанныеРасшифровки, это описано в Синтакс-помощнике, необязательно временными хранилищами ...
Оставьте свое сообщение

См. также

Безопасная работа с транзакциями во встроенном языке Промо

Практика программирования v8 1cv8.cf Абонемент ($m)

Разбираемся с опасностями использования транзакций во встроенном языке 1С. Познаем ошибку "В данной транзакции уже происходили ошибки". Учимся защищаться от них.

1 стартмани

25.03.2019    35295    tormozit    54    

Cбор и анализ ошибок при помощи Sentry, или как упростить жизнь себе и пользователям

Практика программирования Интеграция v8 Абонемент ($m)

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

1 стартмани

09.10.2020    2361    hexhoc    12    

Программная корректировка при выводе отчета СКД

Практика программирования v8 v8::СКД 1cv8.cf Абонемент ($m)

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

1 стартмани

08.10.2020    2632    dabu-dabu    8    

Строка по шаблону с помощью СКД

Практика программирования v8::СКД 1cv8.cf Абонемент ($m)

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

1 стартмани

28.08.2020    489    Keyman    2    

Как выполнить отчет на СКД через COM и получить данные отчета? Промо

Практика программирования v8 УПП1 Россия Абонемент ($m)

Для чего это нужно. Например, нужно в одной базе получить какой-либо показатель из другой базы. Этот показатель вычисляется в каком-либо сложном отчете, который написан на СКД. Можно, конечно, "скопипастить" текст запроса из другой базы, немного подправить его и выполнять в том же COM подключении. Но с этим теряется гибкость: если отчет изменился, то нужно помнить о том, что где-то есть его "немного модифицированная" копия. В статье будет рассмотрен пример получения данных из базы ЗУП.

2 стартмани

08.05.2018    27113    wowik    3    

Библиотека программного изменения формы (УФ)

Инструментарий разработчика Работа с интерфейсом Универсальные функции v8 1cv8.cf Абонемент ($m)

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

1 стартмани

07.08.2020    4235    BuriyLesha    17    

Настройка колонок для вывода в отчет

Практика программирования Работа с интерфейсом v8::СКД 1cv8.cf Украина Абонемент ($m)

Иногда возникает задача вывести в отчет по запросу не все колонки, а только определенные.

1 стартмани

12.07.2020    1791    user847462    2    

Управление состоянием для шаблона MVC и работы с данными объекта

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

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

1 стартмани

18.03.2020    3554    kalyaka    33    

Программное создание динамического списка на управляемой форме. (Динамическое создание динамического списка). Готовая процедура + обработка - демонстрационный пример Промо

Практика программирования Универсальные функции v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

19.01.2018    58234    rpgshnik    31    

Запуск фонового задания во внешней обработке без регистрации в справочнике "Дополнительные отчеты и обработки"

Практика программирования v8::УФ ЗУП3.x Россия Абонемент ($m)

Описал, как показать прогресс выполнения длительной операции во внешней обработке, и при этом не регистрировать обработку в справочнике "ДополнительныеОтчетыИОбработки". Проверял на БСП версии "3.1.2.264".

1 стартмани

09.03.2020    4074    VinnieThePOOH    5    

Методика обновления формы объекта данных при изменении объекта

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

09.03.2020    8266    tormozit    13    

Отправка уведомлений с помощью командной строки, Оповещения с сервера на клиент с помощью командной строки

Практика программирования v8 1cv8.cf Россия Абонемент ($m)

Отправка уведомлений с помощью команды командной строки msg. Оповестить пользователей из серверного модуля или регламентного задания, с помощью командной строки msg.

1 стартмани

05.03.2020    5756    user5300    3    

Как нарисовать граф на 1С Промо

Практика программирования v8 Абонемент ($m)

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

1 стартмани

09.08.2013    70532    ildarovich    117    

СКД: штрихкоды в несколько колонок

Практика программирования v8::СКД ERP2 Россия Абонемент ($m)

СКД. Ресурсы в несколько колонок, на примере РС Штрихкоды номенклатуры.

1 стартмани

02.03.2020    2067    shetill    0    

Вывод сообщений в HTML поле средствами 1С

Практика программирования v8 v8::УФ Абонемент ($m)

Пример использования вывода большого количества сообщений в поле HTML. С возможностью открывать ссылочные объекты и создавать новые объекты передавая параметры прямо из HTML поля. Протестировано на релизах 8.3.12 и 8.3.15+

2 стартмани

31.01.2020    5857    burni4    16    

Как в 1С создать паутинку "как на Инфостарте"

Практика программирования v8::УФ 1cv8.cf Россия Абонемент ($m)

Добрый день, уважаемы коллеги! В этой статье я расскажу, как в 1С создать отчет - "паутинку" на примере отчета по компетенциям сотрудника (разрабатывала на платформе 1С:Предприятие 8.3 (8.3.13.1865).

1 стартмани

15.01.2020    9090    user660153_aleks.pisanets    17    

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

Практика программирования v8 Абонемент ($m)

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

1 стартмани

28.09.2016    39518    ildarovich    22    

Краткое руководство по внесению изменений в конфигурацию

Практика программирования v8 1cv8.cf Абонемент ($m)

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

1 стартмани

13.01.2020    17257    sapervodichka    41    

"Живые" картинки со Snap.SVG

Практика программирования WEB Работа с интерфейсом v8 Абонемент ($m)

В статье рассмотрен пример использования http-сервисов для визуализации данных

1 стартмани

24.10.2019    13572    blackhole321    7    

RLS - дубли условий в запросах к СУБД

Практика программирования Роли и права v8 v8::Права 1cv8.cf Абонемент ($m)

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

1 стартмани

07.10.2019    8474    geron4    4    

Бесплатная проверка контрагентов в ФНС (общий модуль с алгоритмом). На примере выводим статус в список справочника контрагентов Промо

Практика программирования v8 1cv8.cf Абонемент ($m)

Если вам интересно проверить контрагенте в ФНС, вам поможет данная публикация. Весь алгоритм работы строится на основе данных, полученных с сервиса http://npchk.nalog.ru совершенно бесплатно.

1 стартмани

01.02.2018    35130    rpgshnik    49    

Полезные процедуры и функции для программиста

Практика программирования Универсальные функции v8 1cv8.cf Россия Абонемент ($m)

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

07.10.2019    30305    HostHost    40    

Многопоточная обработка данных на примере перепроведения документов

Обработка документов Практика программирования v8 ERP2 УТ11 КА2 Абонемент ($m)

Дальнейшее развитие темы фоновой обработки данных - проведение документов в потоках. Настройка параметров и запуск основного процесса (менеджера потоков). Разбивка документов для проведения на не связанные друг с другом наборы и запуск дополнительных фоновых заданий для отдельных потоков. Отслеживание выполнения каждого потока в родительском сеансе.

1 стартмани

17.09.2019    9237    ids79    46    

Описание формата внутреннего представления данных 1С в контексте обмена данными

Практика программирования Внешние источники данных v8 v8::УФ 1cv8.cf Абонемент ($m)

Фирма 1С не рекомендует использовать внутреннее представление данных для любых целей, которые отличны от обмена с 1С:Предприятием 7.7. Но сама возможность заглянуть на "внутреннюю кухню" платформы с помощью функций ЗначениеВСтрокуВнутр(), ЗначениеВФайл(), ЗначениеИзСтрокиВнутр() и ЗначениеИзФайла(), дала возможность сообществу программистов 1С разработать новые приемы разработки и анализа. Так, именно на использовании внутреннего представления был построен алгоритм "быстрого массива", который позволяет практически мгновенно создать массив в памяти на основании строки с разделителями. С помощью разбора внутреннего представления можно "на лету" программным кодом выполнить анализ обычной формы и даже сделать редактор графической схемы. Во внутреннем формате сохраняют свои данные между сеансами различные популярные внешние обработки. А еще это возможность сделать быстрый обмен с внешними системами.

1 стартмани

06.09.2019    19478    Dementor    30    

БСП: Дополнительная обработка (Регламенты), примеры от простого к сложному Промо

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

Очень много попадается странных решений, которые можно решить через БСП:Дополнительные отчеты и обработки. Я бы вообще БСП из-за этой подсистемы переименовал в «Большое Спасибо Программистам». Поработаем с подсистемой в части написания регламентных заданий.

1 стартмани

10.05.2018    44971    dsdred    36    

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

Практика программирования v8 Абонемент ($m)

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

1 стартмани

27.08.2019    10891    ids79    21    

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

Практика программирования v8 1cv8.cf Абонемент ($m)

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

2 стартмани

24.08.2019    10910    BenGunn    22    

Организация функционала наценок по позициям либо сегментам номенклатуры в УТ 11.4

Ценообразование, анализ цен Практика программирования Ценообразование, анализ цен Разработка v8::ОУ v8::УФ УТ11 Россия УУ Абонемент ($m)

В статье описан один из методов реализации задачи установки скидок/наценок в соответствии с заданным процентом по позициям/сегментам номенклатуры. Так-же продемонстрирован принцип создания произвольного запроса к ИБ в виде цен. Протестировано на релизе Управление торговлей, редакция 11.4.8.92.

1 стартмани

07.08.2019    4201    cheiser1982    2    

Некоторая работа с данными через COM Промо

Практика программирования v8 Абонемент ($m)

В статье приведены примеры работы с Платформой 8.X через COM (точнее, через объект COMConnector). Примеры кода были использованы при реализации прикладных задач в процессе трудовой деятельности.

2 стартмани

05.12.2012    57564    wowik    32    

Изменяющееся контекстное меню в 1С 8.3

Практика программирования Работа с интерфейсом Разработка v8 v8::УФ Абонемент ($m)

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

1 стартмани

06.08.2019    15873    signum2009    16    

Процедура ПриКомпоновкеРезультата

Практика программирования v8 1cv8.cf Абонемент ($m)

Коллекция кода

1 стартмани

26.07.2019    38950    vasilev2015    64    

10 способов получить модуль числа (а может, и больше)

Практика программирования Разработка v8 1cv8.cf Абонемент ($m)

Пишем функцию вычисления модуля числа. Сколько способов существует? Давайте посчитаем!

1 стартмани

11.07.2019    8398    sam441    29    

Работа со схемой запроса Промо

Инструментарий разработчика Практика программирования v8 v8::Запросы Абонемент ($m)

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

1 стартмани

24.04.2018    44233    kalyaka    35    

Ловец дедлоков СУБД

Производительность и оптимизация (HighLoad) Практика программирования Разработка v8 Россия Абонемент ($m)

Анализ простейшего дедлока СУБД в рабочей базе с использованием ЦУП (центра управления производительностью) и profiler MS SQL (Microsoft SQL Server). Эта статья будет полезна людям, изучающим вопросы оптимизации работы 1С, или тем, у кого возникают дедлоки в рабочей базе. UPD 09.07.2019 добавлено воспроизведение блокировки в случае установки управляемой блокировки перед чтением набора записей регистра сведений. UPD 10.07.2019 добавлена тестовая база с примером.

1 стартмани

08.07.2019    11146    azazana    79    

Многоуровневая нумерация в отчете СКД (программный вывод)

Практика программирования v8::СКД 1cv8.cf Абонемент ($m)

Реализация многоуровневой нумерации при программном выводе отчета СКД основываясь на его структуре.

1 стартмани

01.07.2019    7079    lmnlmn    7    

Мониторинг производительности и искусственный интеллект

Производительность и оптимизация (HighLoad) Практика программирования Разработка v8 Абонемент ($m)

Расскажем и покажем практически, как использовать искусственный интеллект на страже мониторинга производительности. У вас появится возможность создать собственного помощника Ларису, которая возьмет на себя вопросы по контролю и диагностике состояния обслуживаемой системы.

1 стартмани

01.07.2019    9286    ivanov660    28    

Многопоточность. Универсальный «Менеджер потоков» (фреймворк) с отслеживанием зависимости объектов Промо

Практика программирования Математика и алгоритмы Универсальные функции Производительность и оптимизация (HighLoad) v8 1cv8.cf Россия Абонемент ($m)

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

26.05.2017    49134    DarkAn    86    

"Убер на складе": динамический расчет маршрутов с учетом реальных расстояний

Учет ТМЦ Практика программирования Учет ТМЦ v8 УУ Абонемент ($m)

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

3 стартмани

24.06.2019    15818    informa1555    17    

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

Практика программирования Разработка v8 1cv8.cf Абонемент ($m)

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

1 стартмани

21.06.2019    29227    Evil Beaver    128    

Простые примеры сложных отчетов на СКД

Практика программирования v8 v8::СКД 1cv8.cf Абонемент ($m)

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

1 стартмани

12.06.2019    29933    Hatson    31    

Новый запрос и новая таблица значений как функции Промо

Практика программирования v8 Абонемент ($m)

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

1 стартмани

27.11.2012    45278    ildarovich    46    

Как вывести в СКД две независимые таблицы, объединенные одним полем

Работа с интерфейсом v8::СКД Абонемент ($m)

Надо вывести в отчет на СКД 2 таблицы, которые содержат различные данные, объединяемые одним полем. Количество строк в каждой таблице может быть произвольным. Если выводить с помощью обычного соединения таблиц, то мы получим перемножение строк. Чтобы его избежать обычно используются циклы. Но в данной статье мы разберемся как это сделать только средствами СКД.

1 стартмани

06.06.2019    6249    swimdog    13    

Картинки во внешней печатной форме (Шапка и табличная часть)

Печатные формы документов Практика программирования Разработка v8::ОУ v8::УФ УТ11 Россия Абонемент ($m)

Способы вывести на печать картинку в шапке и в табличной части внешней печатной формы. Управление торговлей, редакция 11 (11.4.7.150).

1 стартмани

27.05.2019    11041    Povinger    2    

Создание внешней печатной формы в формате документа Word

Практика программирования Разработка v8 1cv8.cf Абонемент ($m)

В статье написано, как создать внешнюю печатную форму (для конфигураций с БСП) в формате Word.

1 стартмани

17.05.2019    13783    ВикторП    21    

Уровни, глубина, прародители, циклы и аналоги запросом Промо

Практика программирования v8 1cv8.cf Абонемент ($m)

В продолжение публикации «Транзитивное замыкание запросом» [http://infostart.ru/public/158512/] добавлены другие варианты использования того же приема. Приведены запросы для быстрого определения уровней всех элементов справочника, максимальной глубины справочника, прародителей произвольных элементов справочника, запрос для быстрого определения циклов (на примере справочника спецификаций «1С:Управление производственным предприятием») и определения множеств аналогов номенклатуры (также на примере конфигурации «1С:Управление производственным предприятием»).

1 стартмани

13.11.2012    112110    ildarovich    98    

Ops средствами 1С:Предприятие

Практика программирования Разработка v8 1cv8.cf Абонемент ($m)

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

1 стартмани

23.04.2019    17410    blackhole321    28    

1C + Python + Django Rest Framework + Vue.js. Опыт несложной full-stack разработки

Практика программирования Внешние источники данных Обмен через XML WEB Разработка v8 1cv8.cf Абонемент ($m)

В этой статье мы рассмотрим путь и основные моменты создания небольшого вэб-сервиса, который мы называем "Онлайн Прайс-лист". Выгрузка из 1С, бэкенд, фронтенд, получение заказов в 1С.

1 стартмани

22.04.2019    33265    riposte    65    

Вывод вариантов СКД в таблицы на управляемой форме

Практика программирования Работа с интерфейсом v8 v8::УФ v8::СКД 1cv8.cf Абонемент ($m)

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

05.04.2019    11249    artkor    1    

Неоплаченные долги при распределении оплаты по правилу ФИФО одним запросом и намного быстрее, чем Вы думали Промо

Практика программирования Дебиторская и кредиторская задолженность Дебиторская и кредиторская задолженность v8 v8::СКД КА1 УТ10 УПП1 УУ Абонемент ($m)

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

1 стартмани

28.02.2014    68358    ildarovich    125    

Легкий "тюнинг" УТ 10.3

Практика программирования Разработка v8 v8::ОУ УТ10 Россия УУ Абонемент ($m)

Вариант программной реализации изменения форм типовых объектов для конфигурации Управление торговлей 10.3.

1 стартмани

15.03.2019    4413    pm74    6    

Пример использования СКД и данных расшифровки на мобильной платформе

Практика программирования Разработка v8 v8::Mobile v8::СКД 1cv8.cf Россия Абонемент ($m)

СКД в мобильном приложении и меню действий на основе данных расшифровки (отчет, совместимый с мобильной платформой 8.3.13.45).

1 стартмани

12.03.2019    5548    majoram    0    

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

Практика программирования Разработка v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

12.03.2019    36371    ni_cola    31