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

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

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

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

Реализация основана на статье Нестандартная расшифровка СКД или расшифровка одного отчета СКД при помощи другого отчета СКД, но имеет существенное дополнение, а именно позволяет производить как стандартное действие расшифровки отчета, так и нестандартное (расшифровку через другой отчет). Причем управление параметрами и отборами в текущей реализации вынесено в отдельные процедуры и функции, что повысило наглядность кода.

За основу отчета для расшифровки взят [УТ11] Дебиторка fifo по долгам контрагентов (СКД, управляемый интерфейс), к которому добавлена актуальная возможность расшифровки через стандартный отчет УТ11 "РасчетыСПартнерами". 

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

Анимированная gif картинка показывает то, что увидит пользователь при попытке расшифровки по элементу "Партнер", предварительно построенного начального отчета:

Принцип работы

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

Реализация:

  1. Прежде всего, чтобы иметь возможность запрограммировать расшифровку нам понадобится форма расшифровываемого отчета, например ФормаОтчета, её необходимо добавить (элементы формы система добавит сама).

  2. Для элемента формы «Результат» в событии «ОбработкаРасшифровки» нужно добавить процедуру, например: «РезультатОбработкаРасшифровки»

  3. В модуле этой формы (ФормаОтчета) нужно наполнить процедуру РезультатОбработкаРасшифровки содержимым:

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

   
ЭтоГруппа = Ложь;
//Заполняем массив отрабатывемых типов 
   
МассивРасшифровываемых = Новый Массив();
   
МассивРасшифровываемых.Добавить("Партнер");
   
МассивРасшифровываемых.Добавить("Контрагент");
   
МассивРасшифровываемых.Добавить("Организация");

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

   
Если РасшифровываемоеЗначение = Неопределено Тогда Возврат; КонецЕсли;
   
СтандартнаяОбработка = Ложь;


//Создание и заполнени объекта ОбработкаРасшифровкиКомпоновкиДанных (подробности в Хелпе)

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

   
ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.Нет;
   
ПараметрВыполненногоДействия = Неопределено;
   
ДоступныеДействия = Новый Массив;
   
ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение);
   
//ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Отфильтровать);
    //ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Оформить);
    //ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Расшифровать);
    //ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Сгруппировать);
    //ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Упорядочить);
   
ДополнительныеПунктыМеню = Новый СписокЗначений;
   
ОбщаяСтрока = "Показать расчеты с отбором " + """" + Строка(ТипЗнч(РасшифровываемоеЗначение)) + " = " + РасшифровываемоеЗначение + """";
   
ДополнительныеПунктыМеню.Добавить( 1, ОбщаяСтрока + " за месяц");
   
ДополнительныеПунктыМеню.Добавить( 3, ОбщаяСтрока + " за 3 месяца");
   
ДополнительныеПунктыМеню.Добавить( 6, ОбщаяСтрока + " за пол года");
   
ДополнительныеПунктыМеню.Добавить(12, ОбщаяСтрока + " за год");


//Выдаем меню расшифровки, считываем реакцию пользователя
   
ОбработкаРасшифровки.ВыбратьДействие(Расшифровка, ВыполненноеДействие, ПараметрВыполненногоДействия, ДоступныеДействия, ДополнительныеПунктыМеню);

    Если
ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.Нет Тогда
    ИначеЕсли
ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение Тогда

//Имитация стандартного действия
       
ОткрытьЗначение(ПараметрВыполненногоДействия);
    ИначеЕсли
ТипЗнч(ВыполненноеДействие) = Тип("Число") Тогда // Тут требуется наша расшифровка

       
ФормаР = ПолучитьФорму("Отчет.РасчетыСПартнерами.Форма", , , РасшифровываемоеЗначение); //Форма Расшифровки.

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


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

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

//Формируем и выводим отчета-расшифровку
       
СтруктураВозврата = ОбработатьРасшифровкуНаСервере(ФормаР.Отчет, "ОтчетОбъект.РасчетыСПартнерами", ФормаР.Результат, ФормаР.ДанныеРасшифровки, ФормаР.УникальныйИдентификатор);
       
ФормаР.Результат = СтруктураВозврата.Результат;
       
ФормаР.ДанныеРасшифровки = СтруктураВозврата.ДанныеРасшифровки;
       
ФормаР.Элементы.Результат.ОтображениеСостояния.Видимость = Ложь;  //Избавление от надписи. Отчет не сформирован
       
ФормаР.Элементы.Результат.ОтображениеСостояния.ДополнительныйРежимОтображения = ДополнительныйРежимОтображения.НеИспользовать;
       
ФормаР.Открыть();

    КонецЕсли;
КонецПроцедуры

 

Серверная процедура ПолучитьРасшифровкуНаСервере, вызываемая из РезультатОбработкаРасшифровки - получает значение расшифровки (конкретную ссылку на элемент справочника, список типов которых переданы в параметрах), а также возвращает признак группы ЭтоГруппа:

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

    Если
ПолеНоменклатура = Неопределено Тогда
        Возврат Неопределено;
    Иначе
       
ЭтоГруппа = ПолеНоменклатура.Значение.ЭтоГруппа;
        Возврат
ПолеНоменклатура.Значение;
    КонецЕсли;
КонецФункции


Клиентская процедура УстановитьЗначениеОтбораКомпоновщикаНастроек вызываемая из РезультатОбработкаРасшифровки (и из УстановитьЗначениеОтбораКомпоновщикаНастроекПоОбразцу) - устанавливает параметры отбора Компоновщика настроек отчета расшифровки, сначала пытается произвести установку пользовательских настроек отбора:

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

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

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

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

   
ЭлементОтбора.ПравоеЗначение = Значение;
   
ЭлементОтбора.Использование = Использование;
   
ЭлементОтбора.ВидСравнения = ВидСравнения;
КонецПроцедуры

 

Клиентская процедура УстановитьЗначениеОтбораКомпоновщикаНастроекПоОбразцу вызываемая из РезультатОбработкаРасшифровки - устанавливает параметры отбора Компоновщика настроек отчета расшифровки извлекая их из текущего (расшифровываемого) отчета:

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

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

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

 

Клиентская функция  ПолучитьЗначениеПераметраКомпоновщикаНастроек и процедура УстановитьЗначениеПераметраКомпоновщикаНастроек вызываемые из РезультатОбработкаРасшифровки - устанавливают и получают значения параметров из компоновшика настроек СКД:

&НаКлиенте
Функция ПолучитьЗначениеПераметраКомпоновщикаНастроек(КомпоновщикНастроек, ИмяПараметра)
   
ИДНастройки = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(ИмяПараметра).ИдентификаторПользовательскойНастройки;
   
Коллекция = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы;
    Возврат
Коллекция.Найти(ИДНастройки).Значение;
КонецФункции

&НаКлиенте

Процедура УстановитьЗначениеПераметраКомпоновщикаНастроек(КомпоновщикНастроекР, ИмяПараметра, Значение)
   
ИДНастройкиПараметраР = КомпоновщикНастроекР.Настройки.ПараметрыДанных.Элементы.Найти(ИмяПараметра).ИдентификаторПользовательскойНастройки;
   
КоллекцияР = КомпоновщикНастроекР.ПользовательскиеНастройки.Элементы; //Пользовательские настройки
   
КоллекцияР.Найти(ИДНастройкиПараметраР).Значение = Значение;
КонецПроцедуры

 

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

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

 

Коротко поясню что делается в основной процедуре  РезультатОбработкаРасшифровки: 

  1. Получаем Ссылку (одного из нужных типов), по которой пользователь произвел клик (вызов серверной функции "ПолучитьРасшифровкуНаСервере") 

  2. Формируем и наполняем содержимым объект ОбработкаРасшифровки

  3. Выводим на экран меню расшифровки и считываем выбор пользователя

  4. В зависимости от выбора пользователя либо вызываем стандартное действие, либо производим нестандартную расшифровку (//infostart.ru/public/151562/)

 

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

Наименование Файл Версия Размер
ДолгиКлиентов.erf

.erf 15,06Kb
10.12.12
267
.erf 15,06Kb 267 Скачать

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Поручик 4446 11.12.12 12:02 Сейчас в теме
(0) Может оформите код нормально, с помощью раскраски кода http://infostart.ru/public/19856/? Цветомузыка по глазам бьёт.
2. mxm2 1187 11.12.12 17:00 Сейчас в теме
(1) Поручик, Спасибо за ссылку: Переделал, но не уверен что стало лучше.
3. Модератор раздела artbear 12.12.12 10:51 Сейчас в теме
Хорошо бы шрифт поменять. Текущий слишком плотный, буквы очень близко :(
4. mxm2 1187 12.12.12 18:06 Сейчас в теме
(3) artbear, уменьшил размер шрифта, теперь вроде "читабельно"
5. gn@mik 51 24.12.12 17:28 Сейчас в теме
Большое спасибо. Данный алгоритм помог мне создать отчет остатки товаров с расшифровкой по оборотам за период.
6. mxm2 1187 24.12.12 20:56 Сейчас в теме
(5) gn@mik, если в пределах стандартной (или почти стандартной) конфигурации - то смело выкладываете результат, и Вам польза и сообществу.
7. It-developer 20 02.04.13 12:13 Сейчас в теме
Спасибо. 3 часа *бъюсь уже с расшифровкой. Это статья тоже немного помогла
8. mxm2 1187 02.04.13 14:22 Сейчас в теме
(7) It-developer, возможно это вариант проще: http://infostart.ru/public/161994/
19. newvideo 20.02.20 10:00 Сейчас в теме
(8)Подскажите пожалуйста а как можно ? получить данные не ячейки, на которой кликает юзер, а данные группировки, в которой эта ячейка находится и название колонки, ведь в моем отчете нет ссылки в ячейке, есть только сумма, а сумму нужно расшифровать с разным результатом, в зависимости от того где эта ячейка расположена в отчете.
20. user1287374 25.03.20 22:06 Сейчас в теме
(19) ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля()[0].Поле - это будет наименование колонки
Взяла тут, мне помогло
http://infostart.dexcel.ru/public/18961/
9. Serge_ASB 25.03.14 11:23 Сейчас в теме
а как-то можно сделать. чтобы расшифровка выдавалась в одной таблице с отчетом, как нижний уровень группировки, например?
Было б удобно:
например Документ Реализация, а к нему снизу табличная часть документа: наименование, количество, цена, сумма
Или
Документ Выписка, а к нему снизу документы Поручение входящее/исходящее - Контрагент, Сумма (приход/Расход)
11. alex_shkut 48 03.06.14 15:50 Сейчас в теме
(9)Думаю, что можно. Добавить программно вложенную схему с рашифровкой или сделать нужное количество предопределенных.
Перестроить программно структуру отчета с вставкой вложенной схемы на нужный уровень и переформировать полученный отчет.
Это только теория, я ее не проверял.
10. alex_shkut 48 03.06.14 15:44 Сейчас в теме
В файловом варианте все работало без проблем, пришлось изменить немного код:
Данные = ДанныеРасшифровкиОтчета; //было ПолучитьИзВременногоХранилища( тра-ля-ля
Поскольку никакого сервера не было в помине - все было "на клиенте" по умолчанию.
Теперь клиент-сервер.
Исходные: сервер терминалов Виндовс, толстый клиент. Сервер 1С и база Постгри на Линуксе.

Попытка исполнить отчет созданный на базе этой статьи привел к ошибке "Процедура с таким именем не определена ?ПолучитьРасшифровку"
Пытался понять, как все это подружить, и просто убрал директиву &НаСервере
Работает. Можно допилить под все варианты, но я пока этим заниматься не буду. Тонкий клиент мне еще не светит :)))
12. Razrab1c 41 07.01.15 21:28 Сейчас в теме
спасибо огромное, мне статья очень помогла!
13. gusen_it 01.03.15 13:03 Сейчас в теме
Спасибо за публикацию, мне очень помогло... хотя я и переделал на 8.2 в режиме толстого клиента в файловой версии.
Все получилось кроме одной одного момента..

Во втором отчете, который был открыть передачей параметров расшифровки перестает работать расшифровка отрытого отчета (второго)

В отчете "А" путем добавления своих параметров расшифровки и обработки их в процедуре РезультатОбработкаРасшифровки открываю второй отчет "Б" через вызов:
ФормаР = Отчеты.Долговая.ПолучитьФорму("ФормаОтчета");

Но вот во втором отчете "Б" перестает открывается стандартное меню расшифровки.
Вместо него появляется меню с какими то цифрами.

Как это можно исправить?

14. chmv 07.04.15 17:42 Сейчас в теме
15. maloy-v 25.09.15 10:04 Сейчас в теме
Управляемые формы - это заворот мозгофф...
Видимо, я древний как мамонт, но тока дошли руки до этого дела.
Конечно, гениальный финт, с формированием отчёта без открытия формы!

Где-то на Мисте я подсмотрел такой вариант:

получили значение расшифровки и решили, что будем открывать другой отчёт:
...................
ПараметрыОтчета = Новый Структура("КлючВарианта","РасчетыСПартнерами");
ПараметрыОтчета.Вставить("СформироватьПриОткрытии",Истина);

ФормаОтчета = ПолучитьФорму("Отчет.РасчетыСПартнерами.Форма",ПараметрыОтчета);

НастройкиРасчеты = ФормаОтчета.Отчет.КомпоновщикНастроек.Настройки;
ПользНастройкиРасчеты = ФормаОтчета.Отчет.КомпоновщикНастроек.ПользовательскиеНастройки;
............................
бла бла бла..... устанавливаем пользовательские настройки компоновщика открываемого отчёта.
............................
ПараметрыОтчета.Вставить("ПользовательскиеНастройки",ПользНастройкиРасчеты);

ФормаОтчета.Открыть();

Вроде, работает, и можно не морочиться с ОтображениеСостояния.
Или я не замечаю каких-то косяков в таком подходе?
16. Ольга_tmp 60 29.05.16 04:12 Сейчас в теме
ФормаР = ПолучитьФорму("ВнешнийОтчет.МойОтчет.Форма", , , РасшифровываемоеЗначение);
ОтчетОбъект = ДанныеФормыВЗначение(ФормаР.Отчет, Тип(""ВнешнийОтчетОбъект.МойОтчет""))

во второй строке ошибка "Несоответствие типов (параметр номер '2')"

Работает такой вариант: ОтчетОбъект = ДанныеФормыВЗначение(ФормаР.Отчет, ТипЗнч(РеквизитФормыВЗначение("Отчет")));
17. kotlovD 71 05.09.17 08:33 Сейчас в теме
18. akim2040 21 22.05.18 07:58 Сейчас в теме
Может кто скинуть простой пример расшифровки для внешнего отчета. Когда расшифровывается одна вложенная схема другой? Соответственно для каждой схемы настроен свой вариант отчета.
Оставьте свое сообщение

См. также

Списание (корректировка) задолженности контрагентов УНФ 1.6 Промо

Закрытие периода Дебиторская и кредиторская задолженность Обработка документов Дебиторская и кредиторская задолженность v8 УНФ Украина БУ Абонемент ($m)

Обнуление задолженности контрагентов в конфигурации "Управление небольшой (нашей) фирмой" версии 1.6 с помощью документа "Корректировка регистров".

1 стартмани

24.07.2019    23329    15    DMon    1    

Рассылка дебиторской задолженности клиентам

Дебиторская и кредиторская задолженность Email v8 v8::ОУ УТ11 УУ Абонемент ($m)

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

2 стартмани

08.11.2020    492    2    viktor_and_ko    0    

Создание заказов на перемещение с сохранением резервов по заказам клиентов в УТ 11.4

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

В статье разберу вопрос подготовки отгрузки по заказу с одного склада при резерве на нескольких складах.

5 стартмани

26.10.2020    667    0    malikov_pro    8    

Простой пример отчета на СКД. Программное формирование, расшифровка, работа с параметрами и отборами

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

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

1 стартмани

15.10.2020    1834    2    Stivens    10    

Вам нравятся запросы в 1С? Промо

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

Речь не только о том, что простейший запрос с "легальным" оформлением растянется на пол-экрана, речь еще обо всем, что нужно написать "в нагрузку" к тексту запроса. Все эти "Новый Запрос", "УстановитьПараметр" и последующие пляски с обработкой результата... Пора с этим заканчивать!

1 стартмани

03.07.2019    21227    5    m-rv    88    

Сверка взаиморасчетов по нескольким контрагентам для УТ 11

Дебиторская и кредиторская задолженность v8 v8::ОУ УТ11 Россия УУ Абонемент ($m)

Внешняя обработка Сверка взаиморасчетов по нескольким контрагентам для УТ 11.

1 стартмани

07.10.2020    765    0    klaos    0    

Расчет просрочки платежа для Реализации товаров и услуг

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

Обработка позволяет рассчитать просроченные по оплате отгрузки.

3 стартмани

19.08.2020    908    1    ah7777777    2    

Быстрое формирование наборов данных Объект схемы СКД

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

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

1 стартмани

05.07.2020    4274    5    Алексей Воробьев    16    

ВСТАВИТЬ В Справочник.Номенклатура (Код, Наименование) ЗНАЧЕНИЯ ("001", "Новый товар") Промо

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

Вас не обманывают ваши глаза, это запрос на изменение данных! И это работает без прямого доступа к БД, регистрации и смс.

1 стартмани

01.06.2018    30901    86    m-rv    57    

Групповое создание актов сверки + отборы для выбора контрагентов на СКД

Обработка документов Дебиторская и кредиторская задолженность v8::БУ v8::СКД БП3.0 Россия БУ Абонемент ($m)

Обработка облегчает процесс массового формирования актов сверки.

1 стартмани

29.06.2020    1789    3    1C_Lab    7    

Построение графика в диапазоне изменений без точек

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

График изменений каких-либо величин во всем диапазоне и в области изменения, без точек.

1 стартмани

30.05.2020    1618    2    yc_2011    4    

Метод восстановления битых ссылок в настройках СКД при консольно-конфигураторной разработке отчетов

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

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

1 стартмани

30.04.2020    4294    0    zaxarovsky    4    

Сравнение pdf-файлов актов сверки Промо

Универсальные обработки Дебиторская и кредиторская задолженность Дебиторская и кредиторская задолженность v8 v8::БУ БП2.0 Россия БУ Абонемент ($m)

Обработка сравнивает два pdf-файла, в которых находятся стандартные печатные формы актов сверки, и показывает на экране совпадающие и/или отличающиеся по суммам документы взаиморасчетов.

1 стартмани

19.12.2018    18060    14    Torin99    2    

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

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

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

1 стартмани

04.02.2020    2879    0    KawaNoNeko    2    

Преобразование объекта Отбор компоновки данных в Запрос

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

Преобразует объект Отбор компоновки данных в объект Запрос (с заполнением текста и параметров).

1 стартмани

20.12.2019    3928    4    okon-teh    2    

Групповое формирование Актов сверки взаиморасчетов для УТ 10.3 (КА 1.1, УПП 1.3)

Обработка документов Дебиторская и кредиторская задолженность v8::ОУ УТ10 Россия УУ Абонемент ($m)

Групповое формирование и перезаполнение (ранее сформированных) актов сверок.

1 стартмани

07.10.2019    2155    7    alonzomozley    0    

Заполняем по шаблону (по умолчанию) Промо

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

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

1 стартмани

08.02.2018    28730    19    mvxyz    17    

Закрытие неоплаченных накладных через ПКО

Обработка документов Дебиторская и кредиторская задолженность Дебиторская и кредиторская задолженность v8 v8::ОУ УТ10 Украина УУ Абонемент ($m)

Обработка закрывает неоплаченные накладные через ПКО. Перечень расходных накладных, которые отражены только по управленческому учету и по которым не было оплат.

1 стартмани

10.09.2019    2037    0    sergqwert15    0    

Правила обмена УТ 10.3 - БП 2.0 (привязка документов оплаты к заказу)

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

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

1 стартмани

26.08.2019    3361    3    Comrade88    0    

Проверка несуществующих полей в настройках СКД

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

Обработка находит все поля настроек СКД, которые утратили свою актуальность Подходит для УТ 11, ERP, КА 2.

1 стартмани

20.06.2019    4905    3    MuI_I_Ika    2    

Нечеткий поиск одним запросом Промо

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

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

1 стартмани

28.12.2015    28255    71    vasvl123    9    

Рассылка актов сверки

Email Дебиторская и кредиторская задолженность Дебиторская и кредиторская задолженность v8 v8::ОУ УТ11 БУ Абонемент ($m)

Пакетная отправка актов сверки взаиморасчетов на электронную почту партнеров.

2 стартмани

03.06.2019    4765    16    waol    14    

Заполнение Документа расчета и Объекта расчета в документе Ввод остатков

Обработка документов Дебиторская и кредиторская задолженность Дебиторская и кредиторская задолженность v8 v8::ОУ УТ11 Россия УУ Абонемент ($m)

При выгрузке из 1С 7.7 Торговля + Склад в 1С 8 Управление торговлей ред. 11.4 столкнулся с проблемой переноса остатков. Документ Ввод остатков Расчетов с партнерами заполняется не полностью. Не заполняется документ расчетов, Объект расчетов, сумма управленческая. Раньше эти реквизиты не требовали обязательного заполнения. Но с какого-то релиза стало обязательным. Хорошо когда контрагентов мало, а если много и еще по нескольким документам. То вручную сидеть заполнять мне просто лень. Поэтому написал маленькую обработку для заполнения этих реквизитов.

1 стартмани

23.04.2019    2698    16    yura-100    3    

Пример внешней обработки с вызовом типового отчета на СКД и передачей ему настроек и вывода результата в таблицу значений (в частности, для новичков)

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

Разрабатывалась на 1С:Зарплата и управление персоналом в кредитных организациях, редакция 3.1 (3.1.5.407), поэтому использует типовой отчет Состояние штатного расписания, но технология работает для любой конфигурации. Пример внешней обработки с вызовом типового отчета на СКД "Состояние штатного расписания" и передачей ему настроек, изменения имен колонок после выполнения на имена указанные в "Пользовательских полях" или "заголовках" и вывода результата в таблицу значений.

1 стартмани

21.03.2019    6403    11    pavel_pss    0    

Работа с публикациями "Инфостарт" Промо

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

Работа с рублевыми публикациями на сайте "Инфостарт": ведение клиентов, заказов, обновление файлов публикации, рассылка обновлений.

1 стартмани

13.09.2018    22150    13    RocKeR_13    16    

Автоматическое создание документа Списание задолженности на основании данных отчета Ведомость расчетов с клиентами. УТ 11.4

Дебиторская и кредиторская задолженность Обработка документов Дебиторская и кредиторская задолженность v8 v8::ОУ УТ11 Россия УУ Абонемент ($m)

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

1 стартмани

19.03.2019    2654    15    IvanDK    1    

Фильтр по адресному складу в виде дерева

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

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

1 стартмани

06.03.2019    5362    0    Kutuzov    3    

Вывод характеристик и их значений в динамический список

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

Если в запросе динамического списка используется конструкция {ХАРАКТЕРИСТИКИ ...}, то как вывести на форму колонки с характеристиками?

1 стартмани

22.02.2019    6359    2    kasper076    3    

Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции Промо

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

Данная публикация содержит в себе редактор и интерактивную карту склада или иного помещения, на которой в реальном времени отображается позиция устройства, координаты которого вычисляются по уровням сигнала нескольких роутеров Wi-Fi. В статье и приложенным к ней разработкам предлагаются инструменты и методика для реализации вычисления точной геопозиции внутри помещений с помощью нейронной сети. Конфигурация написана на релизе 1С:Предприятие 8.3.12.1412, клиентское приложение имеет минимальный уровень совместимости SDK -16.

5 стартмани

09.08.2018    28664    26    informa1555    26    

Загрузка реестров СДЭК для УТ 11.4

Дебиторская и кредиторская задолженность Обработка документов Дебиторская и кредиторская задолженность v8::ОУ УТ11 Россия УУ Абонемент ($m)

Обработка решает проблему зачета оплат по заказам клиента при расчетах через службу доставки СДЭК.

2 стартмани

16.02.2019    4450    9    Vo-Va    1    

Модуль, реализующий хранение настроек отчетов СКД в типовом регистре "Сохраненные настройки"

Практика программирования v8 v8::СКД КА1 БП2.0 ЗУП2.5 УТ10 БП1.6 Абонемент ($m)

Модуль, обеспечивающий хранение настроек отчетов на СКД в типовом регистре "Сохраненные настройки", присутствующем в конфигурациях УПП 1.2, 1.3, УТ 10.3, БП 2.0 и т.д.

1 стартмани

12.01.2019    6517    0    lunjio    0    

История реквизитов организаций (печати, факсимиле, КПП, телефон)

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

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

1 стартмани

11.01.2019    4736    4    da_1c    0    

1С: Предприятие + корпоративный чат, как наладить оперативные уведомления за 10 минут Промо

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

Как сделать автоматические уведомления о разных событиях из 1С в корпоративный чат MyChat для сотрудников компании

1 стартмани

14.08.2016    48602    36    Demanoidos    60    

Задача 1.13. 1С: Специалист по платформе 8.3

Практика программирования Решение задач на 1С:Специалист v8 v8::ОУ Абонемент ($m)

Вариант решения задачи 1.13 с комментарием основных моментов (тестировалось на релизе 8.3.9.2170).

1 стартмани

05.01.2019    9986    3    user913680    8    

Формирование актов сверки взаиморасчетов (УТ 10.3)

Обработка документов Дебиторская и кредиторская задолженность Дебиторская и кредиторская задолженность v8 v8::ОУ УТ10 Россия БУ УУ Абонемент ($m)

Обработка для "массированного" создания актов сверок взаиморасчетов в УТ 10.3.

2 стартмани

28.12.2018    3871    2    Jokemas    0    

Передача набора данных типа Объект в отчет СКД

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

Пример показывает, каким образом можно передать таблицу значений в отчет СКД (в набор данных объект). Пример работает как на обычных, так и на управляемых формах.

1 стартмани

12.11.2018    28325    5    evgen7938    4    

Работа с данными выбора Промо

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

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

1 стартмани

17.07.2018    49167    17    kalyaka    16    

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

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

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

1 стартмани

12.08.2018    6636    28    MaxCreator    0    

Полезные примеры составления схемы компоновки данных #2

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

Еще один набор примеров как решить частные задачи в СКД

1 стартмани

22.05.2018    31740    11    SITR-utyos    13    

Быстрое определение интервалов в запросе Промо

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

В статье описывается новый метод определения интервалов между данными различных записей в запросе. В отличие от общеизвестного метода, время работы предлагаемого метода зависит от объема данных ЛИНЕЙНО. Это обеспечивает ему значительный выигрыш по быстродействию на больших объемах данных. В качестве иллюстрации возможностей метода приведен отчет, показывающий гистограмму распределения времени между продажами.

1 стартмани

01.10.2015    52209    35    ildarovich    41    

Условное оформление дерева значений на управляемой форме

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

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

1 стартмани

28.04.2018    16856    27    Kutuzov    0    

Пользовательские макеты для внешних печатных форм (обработок)

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

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

2 стартмани

05.03.2018    19411    15    simy4    14    

Хранение файлов в томах на диске (для УПП 1.3) Промо

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

Доработка типовой УПП 1.3 в плане хранения присоединенных файлов вне базы данных

2 стартмани

05.06.2016    58290    10    wowik    32    

СКД. Использование встроенного макета, разделителя страниц Промо

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

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

1 стартмани

31.03.2017    15541    18    Vin_Tik    0