Добрый день, получил задание сделать внешнюю обработку, которая позволяет:
1. Отобрать расходные накладные за указанный период;
2. Дать пользователю отметить нужные документы(поле"флажок");
3. Выполнить для отмеченных документов перерасчет процента скидки и перепровести документы

Однако, я изучаю 1с меньше месяца и впервые столкнулся с таким объектом как обработка. Дали книгу Радченко (Практическое пособие), но я почти ничего там не нашел про обработки. Прошу поделиться источниками, где можно подробно изучить как пользоваться этим объектом конфигурации. Заранее спасибо!
---
Задача простая. Вы изначально учитесь писать запрос к документам с отбором по дате. В консоли запросов. Потом как это у вас получится сделать. Создаете новую внешнюю обработку, Файл-новый-внешняя обработка. Создаете реквизиты которые будут вашей датой начала и конца. Их будете передавать в запрос. Так же вам надо выводить результат запроса на экран. Создаете таблицу значений (как вариант). Прописываете необходимые колонки (совпадают в результатом запроса) плюс булевая для галочки. После чего переходите в процедуру с формы. Вставляйте в нее ваш запрос. Параметрами будут являться ваши значения с формы. Результат запроса выгружайте в ТЗ. После того как сделаете так что ТЗ заполняется. Проходите по тз и выбирайте строки с галочками (можно выгрузить колонку). Можете их складывать (допустим в массив). По идее вам нужен только сам документ. Собираете ссылки. Перебираете массив и для каждой ссылки получаете объект. Выполняете необходимые действия с объектами и делаете перезапись (проведение). Естественно что это общая схема и на каждом этапе возникнут дополнительные вопросы и не все получится с первого раза. Но один из вариантов решения задачи - такой.

P/s Увидел после того как написал, что управляемая форма. Запрос должен быть на сервере. Кнопка на клиенте.
---
https://wiseadvice-it.ru/o-kompanii/blog/articles/vneshnyaya-obrabotka-v-1s-8-3/
---
не открывается ссылочка
---
У тебя управляемые формы или обычные?
---
Управляемые
---
---
---
Задача простая. Вы изначально учитесь писать запрос к документам с отбором по дате. В консоли запросов. Потом как это у вас получится сделать. Создаете новую внешнюю обработку, Файл-новый-внешняя обработка. Создаете реквизиты которые будут вашей датой начала и конца. Их будете передавать в запрос. Так же вам надо выводить результат запроса на экран. Создаете таблицу значений (как вариант). Прописываете необходимые колонки (совпадают в результатом запроса) плюс булевая для галочки. После чего переходите в процедуру с формы. Вставляйте в нее ваш запрос. Параметрами будут являться ваши значения с формы. Результат запроса выгружайте в ТЗ. После того как сделаете так что ТЗ заполняется. Проходите по тз и выбирайте строки с галочками (можно выгрузить колонку). Можете их складывать (допустим в массив). По идее вам нужен только сам документ. Собираете ссылки. Перебираете массив и для каждой ссылки получаете объект. Выполняете необходимые действия с объектами и делаете перезапись (проведение). Естественно что это общая схема и на каждом этапе возникнут дополнительные вопросы и не все получится с первого раза. Но один из вариантов решения задачи - такой.

P/s Увидел после того как написал, что управляемая форма. Запрос должен быть на сервере. Кнопка на клиенте.
---
Спасибо, попробую сделать, как вы сказали. Можете уточнить пожалуйста, выходит когда получится сделать отбор по дате в запросе, запрос надо в модуль формы скопировать и туда передавать реквизиты даты, параметры?
---
пасибо, попробую сделать, как вы сказали. Можете уточнить пожалуйста, выходит когда получится сделать отбор по дате в запросе, запрос надо в модуль формы скопировать и туда передавать реквизиты даты, параметры?

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

```1c
    Запрос=Новый Запрос;
    Запрос.Текст="ВЫБРАТЬ
    | ОказаниеУслуги.Ссылка КАК Ссылка КАК Наименование
    |ИЗ
    | Документ.ОказаниеУслуги КАК ОказаниеУслуги
    |ГДЕ
    | ОказаниеУслуги.Дата >= &ДатаНачала
    | И ОказаниеУслуги.Дата <= &ДатаОкончания";
    Результат=Запрос.Выполнить();
    ТЗ=Новый ТаблицаЗначений;
    Таблица.Колонки.Добавить("Наименование");
    Строка=Таблица.Добавить();
    ТЗ = Результат.Выгрузить();
```
---
Ой добавил еще колонки к таблице значений, одну булево, а другую не знаю как сделать, чтобы передать поле из таблицы. На экран удалось вывести.
---
результат запроса выгрузили в ТЗ? Получили таблицу с документами? Если да то теперь переходите к пункту 2. Собирайте строки с галочками.
---
Выгрузил в таблицу, но не понимаю как передать Дату начала и дату окончания, которые пользователь вводит в форме.

```1c
    &НаСервере
    Процедура Документы
    Запрос=Новый Запрос;
    Запрос.УстановитьПараметр("ДатаНачала");
    Запрос.УстановитьПараметр("ДатаОкончания");

    Запрос.Текст="ВЫБРАТЬ
    | ОказаниеУслуги.Ссылка КАК Ссылка КАК Наименование
    |ИЗ
    | Документ.ОказаниеУслуги КАК ОказаниеУслуги
    |ГДЕ
    | ОказаниеУслуги.Дата >= &ДатаНачала
    | И ОказаниеУслуги.Дата <= &ДатаОкончания";

    Результат = Запрос.Выполнить();
    СпособОбхода = ОбходРезультатаЗапроса.Прямой;
    ТабЗнач = Результат.Выгрузить(СпособОбхода);

    КонецПроцедуры
```
---
Пришел к такому коду:

```1c
    &НаКлиенте
    Процедура Сформировать(Команда)

    СформироватьНаСервере();
    КонецПроцедуры

    &НаСервере
    Процедура СформироватьНаСервере ()
    Запрос=Новый Запрос;

    Запрос.УстановитьПараметр("ДатаНачала",НачалоДня(ДатаНачала));
    Запрос.УстановитьПараметр("ДатаОкончания",КонецДня(ДатаОкончания));

    Запрос.Текст="ВЫБРАТЬ
    | ОказаниеУслуги.Ссылка КАК Наименование
    |ИЗ
    | Документ.ОказаниеУслуги КАК ОказаниеУслуги
    |ГДЕ
    | ОказаниеУслуги.Дата >= &ДатаНачала
    | И ОказаниеУслуги.Дата <= &ДатаОкончания";

    Результат = Запрос.Выполнить();
    ТаблицаДокументов = Результат.Выгрузить();
    Наименования.Загрузить(ТаблицаДокументов);

    КонецПроцедуры
```

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

А отчего нельзя посмотреть создание формы обработки (а разницы то ведь нет. форма она и есть форма) на примере какого-нибудь документа в имеющейся конфигурации?
---
Просто в конфигурации только 2 документа, а все взаимодействие с ними ограничиваются процедурами ПриИзменении табличной части перечня номенклатуры, поэтому и не понимаю, как работать с формой, где требуются другие действия
---
В Яндексе можно поискать информацию по поводу демонстрации возможностей
1с 8 Демонстрационная конфигурация "Управляемое приложение"
---
Как создать внешнюю обработку в 1С 8.3 (управляемые формы)
Рассмотрим в данной статье пошаговую инструкцию по созданию внешней обработки в 1С 8.3 в режиме управляемого приложения, соответственно, будем использовать управляемые формы. А самое главное — мы научимся подключать её к механизму «внешних обработок» конфигураций 1С, построенных на библиотеке стандартных подсистем версии 2.0 и новее.

Задача будет следующая: создать простейшую внешнюю обработку, которая будет выполнять групповое действие над справочником «Номенклатура», а именно, устанавливать выбранный процент ставки НДС для указанной группы номенклатуры.

Содержание

1 Включение механизма внешних обработок в программе
2 Создание новой внешней обработки в 1С 8.3 на примере
3 Описание функции «Сведения О Внешней Обработке»
4 Подключение внешней обработки в 1С 8.3
Включение механизма внешних обработок в программе
Для этого сразу произведем необходимую настройку в программе (рассматривается конфигурация 1С 8.3: «Бухгалтерия предприятия 3.0» на управляемых формах).

Заходим в меню «Администрирование» и по ссылке «Печатные формы, отчеты и обработки» переходим в настройки. Здесь нужно установить флажок «Дополнительные отчеты и обработки»:

включение в конфигурации 1С дополнительных отчетов и обработок

Установка данного флажка дает нам возможность использовать внешние обработки.

Создание новой внешней обработки в 1С 8.3 на примере
Теперь переходим в конфигуратор. В меню «Файл» выбираем «Новый…». Откроется окно выбора вида создаваемого файла. Выбираем «Внешняя обработка»:

выбор вида документа

Откроется окно новой внешней обработки. Сразу зададим ей имя. Оно будет предложено при сохранении обработки на диск:

указание наименования новой обработки 1С

Добавим новую управляемую форму обработки. Указываем, что это форма обработки и она является основной:

создание формы обработки

На форме у нас будет два реквизита:

ГруппаНоменклатуры – ссылка на справочник «Номенклатура»;
ВыбСтавкаНДС – ссылка на перечисление Ставки НДС.
Создаем реквизиты в колонке «Реквизит» в верхнем правом окне. Перетаскиваем мышкой их в левое верхнее окно. Новые реквизиты должны сразу отобразиться на форме внизу.

Очередность реквизитов можно менять стрелками «Вверх» – «Вниз»:

Расположение элементов на форме

Получите 267 видеоуроков по 1С бесплатно:

Бесплатный видео самоучитель по 1С Бухгалтерии 8.3 и 8.2;
Самоучитель по новой версии 1С ЗУП 3.0;
Хороший курс по 1С Управление торговлей 11.
Осталось добавить кнопку «Установить». В управляемых формах нельзя просто так добавить кнопку на форму. Даже если добавить её в структуру элементов формы, на самой форме её видно не будет. Кнопку обязательно нужно связать с командой, которую она будет выполнять. Переходим к закладке «Команды» и добавляем команду «УстановитьСтавкуНДС». В свойствах команды создаем действие. Обработчик команды выбираем «На клиенте». Команду можно добавить на форму также простым «перетаскиванием» в раздел с элементами формы.

В модуле формы будет создана одноименная процедура. В ней вызовем процедуру на сервере:

&НаКлиенте

Процедура УстановитьСтавкуНДС(Команда)

УстановитьСтавкуНДСНаСервере();

КонецПроцедуры

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

&НаСервере

Процедура УстановитьСтавкуНДСНаСервере()

Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| Номенклатура.Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Ссылка В ИЕРАРХИИ (&ГруппаНоменклатуры)
| И НЕ Номенклатура.ПометкаУдаления
| И НЕ Номенклатура.ЭтоГруппа»;

Запрос.УстановитьПараметр(«ГруппаНоменклатуры», ГруппаНоменклатуры);
РезЗапроса = Запрос.Выполнить();
ВыбДетЗаписи = РезЗапроса.Выбрать();

Пока ВыбДетЗаписи.Следующий() Цикл

СпрНомОбъект = ВыбДетЗаписи.Ссылка.ПолучитьОбъект();
СпрНомОбъект.СтавкаНДС = ВыбСтавкаНДС;

Попытка
СпрНомОбъект.Записать();
Исключение
Сообщить(«Ошибка записи объекта «»» + СпрНомОбъект + «»»!
|» + ОписаниеОшибки());
КонецПопытки;

КонецЦикла;

КонецПроцедуры

Возвращаемся на закладку «Форма», добавляем на форму кнопку и связываем ее с командой:

добавление команды на форму

Как таковая наша обработка готова к использованию. Чтобы ее вызвать, в режиме «1С Предприятия» нужно зайти в меню «Файл» – «Открыть» и выбрать созданный файл.

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

Для этого и служит раздел «Дополнительные отчеты и обработки».

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

Описание функции «Сведения О Внешней Обработке»
Приведу пример содержимого данной функции. Она должна быть экспортной и, соответственно, располагаться в модуле обработки:

Функция СведенияОВнешнейОбработке() Экспорт

ДанныеДляРег = Новый Структура();
ДанныеДляРег.Вставить(«Наименование», «Установка ставки НДС»);
ДанныеДляРег.Вставить(«БезопасныйРежим», Истина);
ДанныеДляРег.Вставить(«Версия», «ver.: 1.001»);
ДанныеДляРег.Вставить(«Информация», «Обработка для установки ставки НДС в справочнике Номенклатура»);
ДанныеДляРег.Вставить(«Вид», «ДополнительнаяОбработка»);

ТабЗнКоманды = Новый ТаблицаЗначений;
ТабЗнКоманды.Колонки.Добавить(«Идентификатор»);
ТабЗнКоманды.Колонки.Добавить(«Использование»);
ТабЗнКоманды.Колонки.Добавить(«Представление»);

НовСтрока = ТабЗнКоманды.Добавить();
НовСтрока.Идентификатор = «ОткрытьОбработку»;
НовСтрока.Использование = «ОткрытиеФормы»;
НовСтрока.Представление = «Открыть обработку»;
ДанныеДляРег.Вставить(«Команды», ТабЗнКоманды);

Возврат ДанныеДляРег;

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

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

Как видим, все довольно просто. Не совпадает лишь один реквизит: «ВариантЗапуска» – «Использование». Если посмотреть код одного из общих модулей, то мы увидим, как возникает связка этих полей:

Вариант загрузки внешней обработки

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

Подключение внешней обработки в 1С 8.3
Перейдем теперь в режим «1С Предприятия» и добавим внешнюю обработку:

регистрация обработки в системе

дополнительная информация

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

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
---
Вот еще материальчик, осваивай... дарю\

https://programmist1s.ru/kak-sozdat-vneshnyuyu-obrabotku-v-1s-8-3-upravlyaemyie-formyi/