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

26.09.11

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

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

Скачать файл

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

Наименование По подписке [?]
Zapolnitel.epf
.1245841386 5,21Kb
273
273 Скачать бесплатно
OtchetPoKontragentam_.erf
.1245841488 9,57Kb
171
171 Скачать бесплатно

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

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

Параметры:

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

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

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

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

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

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

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

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

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

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

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

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

См. также

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

Универсальное расширение конфигурации для автоматической загрузки и заполнения реквизитов контрагентов (партнеров) из ОГРН для 1С:ERP Управление предприятием 2 (1С:ERP Управление предприятием 2, редакция 2.4), 1С:ERP Управление предприятием 2 (1С:ERP Управление предприятием 2, редакция 2.2), 1С:Управление торговлей 8 (Управление торговлей, редакция 11.5), 1С:Управление торговлей 8 (Управление торговлей, редакция 11.4), 1С:Управление торговлей 8 (Управление торговлей, редакция 11.3), 1С:Управление торговлей 8 (Управление торговлей, редакция 11.2), 1С:Комплексная автоматизация 8 (1С:Комплексная автоматизация, редакция 2.4), 1С:Комплексная автоматизация 8 (1С:Комплексная автоматизация, редакция 2.2), 1С:Комплексная автоматизация 8 (1С:Комплексная автоматизация, редакция 2.0) и 1С:Бухгалтерия 8 (Бухгалтерия предприятия, редакция 3.0).

3900 руб.

08.11.2017    62985    403    295    

72

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

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

9600 руб.

19.06.2012    138434    260    81    

221

Логистика, склад и ТМЦ Мастера заполнения Пользователь Платформа 1С v8.3 Конфигурации 1cv8 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Обработка заполняет справочник "Автоработы" 3000 авторабот (реквизит сопоставления "Наименование") и справочник "Номенклатура" 200000 артикулами запчастей на популярные модели автомобилей (реквизиты сопоставления "Наименование" и "Артикул").

3600 руб.

07.10.2022    6972    19    0    

17

Закрытие периода Мастера заполнения Бухгалтер Платформа 1С v8.3 Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х Бухгалтерский учет Налоговый учет УСН Платные (руб)

При формировании КУДиР при УСН часто возникает множество вопросов и проблем, к.т.: 1. Как выполняется заполнение книги учета доходов и расходов 2. Неправильно формируется книга учета доходов и расходов в 1С а). Доходы / расходы не попадают в КУДиР; б). Доходы / расходы попадают, но не принимаются к учету и многие другие ошибки. При правильном учёте, книга формируется корректно, но идеальный учет это скорее фантастика, для реальных случаев можно использовать специальный инструмент. Обработка предназначена для заполнения КУДиР. Версия для актуальных конфигураций на управляемых формах поддерживает один механизм заполнения - от бухгалтерской проводки. Старый метод автоматизации штатного заполнения присутствует в отдельной версии для обычных форм.

5880 руб.

12.03.2014    133609    80    97    

107

Мастера заполнения Нейросети Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Платные (руб)

Расширение для заполнения описания товара (номенклатуры) с помощью модели ИИ ChatGPT с ключевыми словами. Расширение формирует продающее описание товара по его наименованию с помощью модели искусственного интеллекта. Будет полезно для владельцев интернет магазинов, каталогов товаров и продающих через маркетплейсы. Адаптировано для основных конфигураций: УТ, ЕРП, КА, УНФ. Прошло аудит на 1cfresh.com. Версия для автоматического заполнения

5000 руб.

13.03.2023    17635    45    49    

75

Обмен с ГосИС Мастера заполнения Системный администратор Бухгалтер Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Простое решение по автоматическому заполнению реквизитов контрагентов (юридических и физических лиц) по ИНН и наименованию. Может использоваться в любых конфигурациях 1С Предприятие 8: УТ 10.2, УТ 10.3 и т.д. Обновление механизмов 2022 года! Программный код открыт.

1200 руб.

23.07.2015    64656    310    15    

179

Оптовая торговля Мастера заполнения Бизнес-аналитик Пользователь Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Данное расширение автоматически заполняет бизнес-регион партнера в 1С (УТ 11, КА 2, ERP) при записи на основании КПП или индекса из адреса. Присутствует возможность сохранить имеющиеся бизнес-регионы партнеров, а также перезаполнить или очистить их при первичном заполнении. Возможен выбор региона по умолчанию для партнера без КПП или адреса (например, если вы не указываете адреса физ. лиц и знаете, что они из Вашего региона).

2000 руб.

29.04.2019    32977    52    51    

55
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 2851 31.08.09 16:04 Сейчас в теме
(2) так вроде написано (: Нужно написать обработку с основной формой, которая при закрытии возвращает некоторую таблицу значений. Далее нужно заполнить 4 параметра в справочнике внешних обработок для этой обработки и указать откуда её вызывать и для какой табличной части. Всё.
12. dentoma51 8 18.10.11 13:30 Сейчас в теме
До конца не понял,но что хотел получить-получил.
Есть отчет на СКД. Добавил табличную часть ПродажиАвтомобилей,в которой разместил реквизиты результата запроса СКД.
Добавил форму отчета и автоматически разместил на ней все элементы управления. В результате построено ПолеТабличногоДокумента с именем Результат и табличное поле ПродажиАвтомобилей с колонками ,собственно,полей табличной части ПродажиАвтомобилей.
Далее,добавил кнопку с именем ЗаполнитьТЗ,к которой по нажатию привязал процедуру,которую приводит автор,в конце которой загружаю из ТаблицыЗначений свою табличную часть,то есть


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

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

Автору большой плюс. Надо теперь попытаться осмыслить глобальное назначение разработки
5. anig99 2851 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 2851 01.09.09 16:29 Сейчас в теме
Подумаю... Теоретически можно. (7) Точное решение скоро выложу
9. SergeyT2006 02.09.09 05:12 Сейчас в теме
10. anig99 2851 02.09.09 08:03 Сейчас в теме
(9) Система компоновки данных - альтернатива Универсального отчета, но более продвинутая и настраиваемая. По дефолту сложнее универсального отчета для пользователей, но если в нём разобраться, но намного лучше.
11. MrXaN 45 23.09.11 14:16 Сейчас в теме
Оставьте свое сообщение