helpf.pro
Регистрация
 +7 
Распечатать

1С 8.3 : СКД Внешний источник данных, грузим из ТЗ и далее получаем остатки на каждый документ

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

Решения возможны следующие:

  • Изменить запрос в СКД
  • Сформировать запрос обычным способом и подставить эти данные в СКД как внешние

Рассмотрим последний вариант:

Внешний источник данных, грузим из ТЗ

Для вывода отчета я использую шаблон All4CF.ru_Template_SKD_v4.1 в нем уже реализованы почти все необходимые функции и работает в Обычных и УП формах.

В модуле объекта уже есть функция

Код 1C v 8.2 УП
 Функция ПолучитьТаблицуВнешнегоНабораДанных()
Возврат Новый ТаблицаЗначений;
КонецФункции // ПолучитьТаблицуВнешнегоНабораДанных()

установим в ней наш запрос, получается примерно так:

Код 1C v 8.2 УП
 // В данной функции можно сформировать таблицу внешнего набора данных для СКД
//
// Функция должна возвращать таблицу данных (например таблицу значений)
//
Функция ПолучитьТаблицуВнешнегоНабораДанных()

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
| ВложенныйЗапрос.Регистратор КАК ДокРеал,
| ВложенныйЗапрос.Регистратор.Доставка КАК ДокДоставка
|ПОМЕСТИТЬ ОплаченнаяРеализация
|ИЗ
| (ВЫБРАТЬ
| ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.Регистратор КАК Регистратор
/////// Огромный запрос .......
| СГРУППИРОВАТЬ ПО
| ДоставкаПромежуточнаяНакладная.Ссылка,
| ДоставкаПромежуточнаяНакладная.Ссылка.Счет,
| ДоставкаПромежуточнаяНакладная.Ссылка.ВыставленоКлиенту,
| ИздержкиРаспределенныеНеНаОП.РаспределеннаяИздержка,
| ДоставкаПромежуточнаяНакладная.Ссылка.СтоимостьПрайс + ДоставкаПромежуточнаяНакладная.Ссылка.ЗатратыПриДоставке) КАК ДанныеПоДоставкам
| ПО ДанныеПоРеализации.ДокументПродажи.Доставка = ДанныеПоДоставкам.ДокДоставка";
Запрос.УстановитьПараметр("КонецПериода", НастройкаПериода.ДатаОкончания);
Запрос.УстановитьПараметр("НачалоПериода", НастройкаПериода.ДатаНачала);
Запрос.УстановитьПараметр("НачалоПериодаМинусГод", НастройкаПериода.ДатаНачала-(86400*365));
Результат = Запрос.Выполнить();
Выборка = Результат.Выгрузить();
Возврат Выборка;
КонецФункции // ПолучитьТаблицуВнешнегоНабораДанных()

Ниже в коде происходит установка внешних данных из нашей ТЗ с именем ТаблицаВнешнегоНабораДанных

Код 1C v 8.2 УП
 // при необходимости вставим внешние наборы данных в СКД
ВнешниеНаборыДанных = Новый Структура;

ТаблицаВнешнегоНабораДанных = ПолучитьТаблицуВнешнегоНабораДанных();
ВнешниеНаборыДанных.Вставить("ТаблицаВнешнегоНабораДанных",ТаблицаВнешнегоНабораДанных);

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

ВывестиРезультатКомпоновкиСАвтофиксациейСтрок(ТабличныйДокумент, ПроцессорКомпоновкиДанных, ДанныеРасшифровки.Элементы,,,КоличествоФиксируемыхСтолбцов);

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

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

Получение остатков на документ в СКД

Набор данных Запрос - назвали его Остатки:

Теперь установим связи Запроса и Объекта

Остатки нужно получать на дату документа и по контрагенту

Далее, если нужно, задайте вычисляемые поля, ресурсы, параметры и Настройте Список вывода...

Пример результата отчета:

Разместил:   Версии: | 8.2 УП | 8.3 |  Дата:   Прочитано: 74019
 +7 
Распечатать
Возможно, вас также заинтересует
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 50
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
1C: Enterprise Development Tools 52
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем
Google maps : вывод точек на карту и режим панорамы 9
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора
Microsoft SQL Server Native Client Добавление значения в столбец "datetime" привело к переполнению 2
При формировании отчета на СКД получили ошибку: Microsoft SQL Server Native Client 11.0: Добавление значения в столбец "datetime" привело к переполнению Подробнее текст такой: ... по причине: Ошибка компоновки данных по причине: Ошибка получени
PostgreSQL: установка, настройка, обслуживание 11
PostgreSQL напрямую "из коробки" применяться для использования с 1С Предприятем не может. Необходима именно адаптированная версия от 1С, превращающая PostgreSQL в блокировочник, причем нужно понимать, что блокировки будут накладываться на всю таблиц
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.