Управляемое приложение. Внешняя обработка. Создание связанных объектов

12.04.11

Разработка - Инструментарий разработчика

Задача: В "1С:Управление торговлей 11" (релиз 11.06.7). Создать документ Счет-фактура выданный аванс на основании документа Поступление безналичных денежных средств из формы документа или из формы списка документов.

Файлы

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

Наименование Скачано Купить файл
(только для физ. лиц)
Создать счет-фактуру выданный аванс на основании поступления безналичных денежных средств
.epf 7,57Kb
262 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Условия:

1) До записи нового документа счет-фактура выданный аванс показать его заполненную, по основанию, форму и предложить пользователю интерактивно его записать;

2) Обработку создания документа сделать внешней и подключаемой к форме документа основания.

Нюанс: У документа счет-фактура выданный аванс в конфигурации оснований не задано.

Решение:

Шаг 1.

Понятно, что от нас требуется создать внешнюю обработку вида "СозданиеСвязанныхОбъектов" и подключить её в информационную базу.

Приведу код в модуле обработки:

 

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

    ПараметрыРегистрации = Новый Структура;
    МассивНазначений = Новый Массив;
    МассивНазначений.Добавить("Документ.ПоступлениеБезналичныхДенежныхСредств");

    ПараметрыРегистрации.Вставить("Вид", "СозданиеСвязанныхОбъектов");
    ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
    ПараметрыРегистрации.Вставить("Наименование", "Создать документ счет-фактура на аванс на основании документа поступление безналичных денежных средств");
    ПараметрыРегистрации.Вставить("Версия", "1.0");
    ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
    ПараметрыРегистрации.Вставить("Информация", "Дополнительная обработка табличной части к документу счет-фактура выданный аванс");

    ТаблицаКоманд = ПолучитьТаблицуКоманд();

    ДобавитьКоманду(ТаблицаКоманд,
    "Счет-фактура на аванс",
    "Счет-фактура на аванс",
    "ВызовКлиентскогоМетода",
    Истина);

    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

    Возврат ПараметрыРегистрации;
КонецФункции

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

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Истина, Модификатор = "")
  НоваяКоманда = ТаблицаКоманд.Добавить();
  НоваяКоманда.Представление = Представление;
  НоваяКоманда.Идентификатор = Идентификатор;
  НоваяКоманда.Использование = Использование;
  НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
  НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры


Так как нам придется работать с формами объектов, мы просто вынуждены использовать метод ВызовКлиентскогоМетода для вызова команды внешней обработки.

Напомню, при использовании ВызовСерверногоМетода с формами объектов работать не получится.

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

Шаг 2.

Так как мы использовали ВызовКлиентскогоМетода, то обязательную процедуру, для внешней подключаемой обработки создания связанных объектов, ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив, СозданныеОбъекты) Экспорт, необходимо выполнять &НаКлиенте в модуле формы обработки, а значит создадим любую форму обработки, пользователь её всеравно не увидит, и поместим внутрь модуля формы следующий код:

 

&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив, СозданныеОбъекты) Экспорт

    //Переберем все выбранные документы на основании, которых будет созданы другие новые документы
    //В нашем случае это всего один документ "Поступление безналичных денежных средств"
    Для каждого Элемент из ОбъектыНазначенияМассив Цикл

        //Получая форму объекта создаваемого документа, мы уже создаем этот объект
        ФормаДок = ПолучитьФорму("Документ.СчетФактураВыданныйАванс.ФормаОбъекта");

        //Далее мы получаем объект только, что созданной формы и помещаем её в переменную
        //В объекте содержатся все реквизиты (элементы) формы
        ДанныеФормы = ФормаДок.Объект;

        //Мы помещаем объект формы в переменную,
        //так как должны передать её в процедуру на сервере,
        //где нельзя изменять объект формы, зато можно править переменную содержащую его
        СоздатьНовыйДокумент(Элемент, ДанныеФормы);

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

        //Открываем результат выполнения обработки
        ФормаДок.Открыть();
    КонецЦикла;

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


Ниже приведу код, который у вас может быть совершенно другим, и делать какие-либо другие манипуляции с объектом формы:

 

&НаСервере
Процедура СоздатьНовыйДокумент(Элемент, НовыйОбъект)

    Основание = Элемент.Ссылка;

    НовыйОбъект.Дата = ТекущаяДата();
    НовыйОбъект.Организация = Основание.Организация;
    НовыйОбъект.ДокументОснование = Основание;
    НовыйОбъект.Контрагент = Основание.Контрагент;
    ДанныеОснования = ПолучитьДанныеОснованияНаСервере(НовыйОбъект.ДокументОснование);
    ЗаполнитьЗначенияСвойств(НовыйОбъект, ДанныеОснования);

    Для каждого СтрокаТЧ из Основание.РасшифровкаПлатежа Цикл
        НоваяСтрока = НовыйОбъект.Авансы.Добавить();
        Если ЗначениеЗаполнено(СтрокаТЧ.СчетНаОплату) Тогда
            НоваяСтрока.Содержание = "Предварительная оплата" + ФормированиеПечатныхФорм.СформироватьЗаголовокДокумента(СтрокаТЧ.СчетНаОплату, НСтр("ru=' по счету на оплату'"));
        КонецЕсли;
        НоваяСтрока.Сумма = СтрокаТЧ.Сумма;
        НоваяСтрока.СтавкаНДС = Перечисления.СтавкиНДС.НДС18_118;
        ТекПроцентНДС = ЦенообразованиеКлиентСервер.ПолучитьСтавкуНДСЧислом(НоваяСтрока.СтавкаНДС);
        НоваяСтрока.СуммаНДС = ЦенообразованиеКлиентСервер.РассчитатьСуммуНДС(НоваяСтрока.Сумма, ТекПроцентНДС);
    КонецЦикла;

    НовыйОбъект.Сумма = НовыйОбъект.Авансы.Итог("Сумма");
    НовыйОбъект.СуммаНДС = НовыйОбъект.Авансы.Итог("СуммаНДС");

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

&НаСервере
Функция ПолучитьДанныеОснованияНаСервере(ДокументОснование)

    ДанныеОснования = Документы.СчетФактураВыданныйАванс.ПолучитьВходящиеНомерДатуДокумента(ДокументОснование);

    Возврат ДанныеОснования;

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


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

Если есть более оптимальные, более правильные решения поставленной задачи, сообщайте об этом мне или публикуйтесь самостоятельно, не молчите. На данный момент информации о внешних подключаемых обработках на управляемом приложении почти нет, даже книги Радченко М.Г. дают её в ограниченном объеме.

P.S. Следующая задача, которую я пытаюсь решить: внешняя подключаемая обработка заполнения объекта без его записи в информационную базу.

Релиз платформы: 8.2.13.219 Файл-сервер

UPD: Хорошие примеры от Поручик: первый и второй

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

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

15500 руб.

02.09.2020    207516    1139    411    

1035

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    37460    213    111    

201

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

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

16000 руб.

10.11.2023    17038    74    39    

89

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    24748    65    28    

94

Инструментарий разработчика Программист 1С v8.3 1С:Управление нашей фирмой 3.0 Платные (руб)

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

9500 руб.

17.05.2024    35755    130    53    

173

SALE! 30%

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

Инструмент для генерации OpenApi (Swagger) спецификаций на основании файлов конфигураций 1С. Это консольное и десктопное приложение на языке Rust с полноценным редактором кода, содержащим автозамену и подсвечивание ошибок для быстрого и безошибочного написания документирующего комментария.

18000 12600 руб.

22.11.2024    2139    1    0    

8

Инструментарий разработчика 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    3046    7    0    

12
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Поручик 4594 12.04.11 16:10 Сейчас в теме
(0)
>>>> сообщайте об этом мне или публикуйтесь самостоятельно, не молчите.
Слушаюсь, вашескородие. Сделано.

Реализация/Перемещение товаров на основании поступления товаров для Управления торговлей 11
http://infostart.ru/public/83963/

Поступление безналичных денежных средств на основании реализации товаров для Управления торговлей 11
http://infostart.ru/public/83248/
arturlix; 79044970523; +2 Ответить
2. alexk-is 6546 13.04.11 08:19 Сейчас в теме
Программный код в тексте публикации можно раскрасить получше.
ANDRU48DOP; +1 Ответить
3. 79044970523 936 13.04.11 15:02 Сейчас в теме
Оформил текст кода разукрашкой. Спасибо. Очень полезная вещь!
4. пользователь 15.09.11 14:44
Сообщение было скрыто модератором.
...
5. andron79 13.01.12 10:04 Сейчас в теме
Спасибо, очень помогло.
6. пользователь 13.01.12 15:33
Сообщение было скрыто модератором.
...
7. Гость 20.02.12 00:30
Спасибо, очень пригодилась
8. Поручик 4594 30.06.12 16:28 Сейчас в теме
(0) Вот вам ещё две работы по теме, если актуально:
http://infostart.ru/public/141777/
http://infostart.ru/public/141765/
9. Yury1001 1475 17.07.12 11:41 Сейчас в теме
Это всё хорошо, а как изменить тот объект из которого вызвал?
Вернее изменить я его могу но форма не видит этих изменений, а если объект записать то нужно форму закрыть и заново открыть.

ч/з 9мин ...ну или Действия Перечитать, всё равно лажа.

З.Ы. Ногами не бейте - два часа страдаю, пока ничего не получается.
Нет ли где случайно примера заполнения табличной части?

а, всё, нашел http://infostart.ru/public/84119/
извиняюсь
10. 79044970523 936 17.07.12 19:05 Сейчас в теме
Я верю что будет другое решение.
11. Вальская Людмила 5 17.10.13 09:42 Сейчас в теме
Спасибо!
Если кто может - подскажите толковую книжку по программированию для управляемого приложения!
(Ажеронок и проч, "Разработка управляемого интерфейса" не предлагать!)
13. AleksSF 229 13.12.13 23:54 Сейчас в теме
(11) Вальская Людмила,
На мой взгляд это самое лучшее http://www.spec8.ru/
12. sumixam 08.11.13 07:49 Сейчас в теме
Добрый день коллеги, хотел бы поитересоваться нет ли у кого ссылки на статью или примерчик, где можно глянуть как из документа на управляемой форме (свой документ), ввести на основании документ первичный в бухгалтерии (30 типов документов) или УПП буду очень признателен за информацию, пока ничего путнегоне нашел. Спасибо.
14. elian 149 25.04.14 12:05 Сейчас в теме
Автор умалчивает о структуре параметров, которая необходима для корректного создания документов, например, в конфигурации БП 3.0.
15. MasterIt 29.09.14 15:41 Сейчас в теме
Мне, как новичку в программировании 1С было очень интересно, спасибо!
16. SemenovaMarinaV 22.10.14 18:21 Сейчас в теме
а как посмотреть структуру подчиненности в ЗУП 3.0
17. kudim 28.11.14 11:08 Сейчас в теме
Спасибо! информация полезная еще бы то же самое, но для форм с программным формированием колонок в табличных частях создаваемого документа.
18. evg_m 9 23.01.15 09:36 Сейчас в теме
Подскажите пожалуйста. Сделала я обработку по вашему примеру. В отладке работает как надо. При регистрации обработки в поле показывать указываю "В формах элементов справочников и документов", т.е. не в списке команд. В документе появляется моя команда, но создается только пустая форма документа. А если в списке команд, тогда открывается форма с командой и от туда все заполняется. Как сделать чтобы работало из формы???
19. vadyasty 26.02.16 08:20 Сейчас в теме
Спасибо, с Вашей помощью заполняем требование-накладную по инвентаризации
20. DrDrew34 24.05.16 09:02 Сейчас в теме
21. bestboroda 02.08.21 12:20 Сейчас в теме
Спасибо! Полезно, доступно и понятно!
Оставьте свое сообщение