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

26.09.11

Разработка - Универсальные функции

Заполнение табличных частей и СКД - можно ли вместе?

Бесплатные

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Узнавайте о новых бесплатных решениях в нашей телеграм-группе Инфостарт БЕСПЛАТНО

Наименование Скачано Бесплатно
Zapolnitel.epf
.1245841386 5,21Kb
277 Скачать бесплатно
OtchetPoKontragentam_.erf
.1245841488 9,57Kb
173 Скачать бесплатно

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Думал куда добавить в статьи, или в обработки. Добавил в обработки.

Возникла тут у меня необходимость заполнять контрагентов в скидках с отбором по различным критериям. СКД для этого отлично подходит, но СКД не подключается в моей базовой платформе (УПП 1.2.14.1 - да старая, первый этап обновления уже прошел, скоро в 1-2 скачка до 19 или 22 дойдем) к табличной части. Решил написать обработку...Подумал ещё и сделал её более универсальной. В результате получилась обработка, которую можно подключить к любой табличной части не меняя код. Модифицируется только внешние параметры обработки, которые регулируют подключение источника строк для заполнения и соответствие колонок. Пишется внешняя обработка или отчет, который в итоге при закрытии основной формы выдает таблицу значений. Эта таблица и впихивается в табличную часть.

Параметры:

 ВнешнийФайл (булево) - истина, если обработка с диска, а не из справочника внешних обработок,

 КодПутьОбработкиЗаполнения (строка) - код обработки из справочника или полный путь к обработке на диске

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

 ПолеТабличнойЧасти (строка) - наименование поля табличной части, которое нужно заполнять

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

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

Код обработки:

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

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

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

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

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

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Банковские операции Обмен с интернет-банком Мастера заполнения Нейросети Программист Бухгалтер Пользователь 1С:Предприятие 8 1C:ERP 1С:Бухгалтерия 3.0 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:ERP. Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 1С:Розница 3.0 Платные (руб)

Корректируйте банковские документы быстро и легко! Создайте правило обработки — и оно автоматически применится при загрузке выписки (отбор по любому реквизиту или регулярному выражению). Решение заполняет расшифровку платежа, комиссию эквайринга, подбирает ведомости на выплату зарплаты, помечает дубли из банка на удаление и многое другое. Доплачивать за алгоритмы не нужно — они включены в решение. Обработка работает при загрузке из файлов клиент-банка и через DirectBank. Новое — искусственный интеллект: модель приводит нестандартные назначения платежа к виду, понятному алгоритмам, а ИИ-ассистент прямо в 1С консультирует по решению и разбирает код правил и алгоритмов. Поддерживаются локальные и облачные OpenAI-совместимые модели — данные могут не покидать ваш контур.

15250 руб.

20.12.2024    16887    83    29    

75

ЭДО и ОФД Мастера заполнения 1С 8.3 1С 8.5 1С:Бухгалтерия 3.0 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Расширение добавляет возможность создавать ЭТрН и электронный заказ (заявку) на основании документа «Реализация товаров и услуг». При создании документа автоматически заполняются основные данные: участники перевозки, адреса, транспорт, водитель и сведения о грузе. Работает как расширение, не требует изменения типовой конфигурации и быстро подключается.

6000 руб.

13.05.2026    1483    16    7    

17

Мастера заполнения Поиск данных Инструментарий разработчика Подбор и обработка объектов 1С 8.3 1С 8.5 Платные (руб)

Infostart MagicInput улучшает подбор в полях ввода 1С: ищет по любой части названия и по нескольким ключевым фрагментам, распознаёт ввод в другой раскладке и показывает иконки/статусы объектов прямо в списке. Поддерживает вставку навигационной ссылки/представления документа для автоподбора; для разработчиков доступны поиск по GUID и полному имени предопределённого. Работает в управляемых формах и подключается в большинстве конфигураций 1С 8.3/8.5. Работает на возможностях платформы, внешние компоненты не используются.

6000 руб.

25.02.2026    5015    17    1    

20

Операции по ВЭД Оптовая торговля Розничная торговля Логистика, склад и ТМЦ Мастера заполнения Бухгалтер 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Обработка значительно расширяет функционал типовой конфигурации «1С:Бухгалтерия предприятия» и позволяет осуществлять автоматическое заполнение ГТД в документах «Реализация товаров и услуг», «Списание товаров», «Отчет о розничных продажах», «Отчет комиссионера (агента) о продажах», «Требование-накладная», «Возврат товаров от покупателя», «Комплектация номенклатуры», «Безвозмездная передача», «Отчет производства за смену». Обработка предназначена для работы в конфигурации «1С:Бухгалтерия предприятия 8, редакция 3.0» Есть версия обработки оптимизированная для работы в 1CFresh

12200 руб.

19.06.2012    147008    318    81    

261

Регламентированный учет и отчетность Мастера заполнения Бухгалтер 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Налоговый учет ЕСН Платные (руб)

Обработка позволяет создавать документы "Сведения об уплате налогов на едином налоговом счете" по данным файла операций из личного кабинета ЕНС сайта ФНС в конфигурации 1С:Бухгалтерия предприятия 3.0.

10000 руб.

22.11.2024    5715    36    13    

36

Логистика, склад и ТМЦ Мастера заполнения Ценообразование, анализ цен Бухгалтер Пользователь 1С:Предприятие 8 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Управленческий учет Платные (руб)

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

5084 руб.

28.06.2023    5499    13    5    

13

Внешние источники данных Мастера заполнения Бизнес-аналитик Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия государственного учреждения 1С:Бухгалтерия 3.0 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 1С:Розница 3.0 1С:Документооборот Россия Платные (руб)

Решение позволяет по ИНН производить проверку контрагентов, получая сведения: видов деятельности, данных ЕГРЮЛ, связанных организаций, отчетности, налогов, финансовый анализ, а также в один клик заполнить карточки справочников контрагентов/партнеров по ИНН в программе 1С по данным ФНС. Попробуйте ДЕМО версию перед покупкой.

5000 руб.

12.08.2025    3866    12    20    

12

Корректировка данных Закрытие периода Мастера заполнения Программист Бизнес-аналитик Бухгалтер Пользователь 1С 8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление нашей фирмой 3.0 1С:УНФ Платные (руб)

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

6100 руб.

28.01.2026    1552    5    0    

4
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. igor_gk 49 01.07.09 17:17 Сейчас в теме
Чувствую - нужная вещь, плюсану, пожалуй :)
3. Alex_1066 31.08.09 14:09 Сейчас в теме
Как и (1) что-то чувствую... Но хотелось, чтобы бы в описание программы автор вставлял не код, чуда, им сотворённого, а что-то типа "Help". Что бы любой смертный мог попробовать воспользоваться сим произведением. Но, впрочем, задумка понятна и интерессна. Плюсанём...
2. Telepat 06.08.09 05:16 Сейчас в теме
Мне реально помогло, плюс однозначно.
4. anig99 2865 31.08.09 16:04 Сейчас в теме
(2) так вроде написано (: Нужно написать обработку с основной формой, которая при закрытии возвращает некоторую таблицу значений. Далее нужно заполнить 4 параметра в справочнике внешних обработок для этой обработки и указать откуда её вызывать и для какой табличной части. Всё.
12. dentoma51 8 18.10.11 13:30 Сейчас в теме
До конца не понял,но что хотел получить-получил.
Есть отчет на СКД. Добавил табличную часть ПродажиАвтомобилей,в которой разместил реквизиты результата запроса СКД.
Добавил форму отчета и автоматически разместил на ней все элементы управления. В результате построено ПолеТабличногоДокумента с именем Результат и табличное поле ПродажиАвтомобилей с колонками ,собственно,полей табличной части ПродажиАвтомобилей.
Далее,добавил кнопку с именем ЗаполнитьТЗ,к которой по нажатию привязал процедуру,которую приводит автор,в конце которой загружаю из ТаблицыЗначений свою табличную часть,то есть


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

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

Автору большой плюс. Надо теперь попытаться осмыслить глобальное назначение разработки
5. anig99 2865 31.08.09 16:05 Сейчас в теме
(2)упс...
(3) чуть выше, это для тебя
6. Alex_1066 31.08.09 16:29 Сейчас в теме
(5) Ага, спасибочки, кажется понял - буду пробовать...
7. Alex_1066 01.09.09 15:49 Сейчас в теме
Получилось. Ещё вопросик в развитие...
Возможна ли, при всём при этом, в данном примере передача дополнительных параметров из документа, определяющих условия для СКД (например: заполнение ТЧ остатков по значению склада, счета, МОЛ и т.д... )?
8. anig99 2865 01.09.09 16:29 Сейчас в теме
Подумаю... Теоретически можно. (7) Точное решение скоро выложу
9. SergeyT2006 02.09.09 05:12 Сейчас в теме
10. anig99 2865 02.09.09 08:03 Сейчас в теме
(9) Система компоновки данных - альтернатива Универсального отчета, но более продвинутая и настраиваемая. По дефолту сложнее универсального отчета для пользователей, но если в нём разобраться, но намного лучше.
11. MrXaN 45 23.09.11 14:16 Сейчас в теме
Автору большой плюс
Для отправки сообщения требуется регистрация/авторизация