Управляемое приложение. Внешняя обработка. Заполнение объекта

Публикация № 84119

Разработка - Практика программирования

Пример интерактивного изменения данных в форме документа из внешней обработки заполнения на управляемом приложении.

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

Условия:

1) Перед заполнением табличной части документа получить от пользователя подтверждение на это действие;

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

3) После заполнения табличной части не записывать документ, а разрешить пользователю продолжить редактирование изменной табличной части или самостоятельно записать документ.

Решение:

Пункты 1 и 2 не представляют особой сложности, но пункт 3 заставил меня задуматься и написать, по-моему мнению, топорный, но исправно действующий код.

Шаг 1.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Шаг 2.

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

&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
    //Спросим у пользователя разрешение на продолжение обработки
    Режим = РежимДиалогаВопрос.ДаНет;
    Текст = "Текущие данные документа будут заменены новыми без возможности восстановления.
    |Продолжить?";
    Ответ = Вопрос(Текст, Режим, 0);
    Если Ответ = КодВозвратаДиалога.Да Тогда

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

            //Зададим ключ поиска документа, из которого вызвана данная обработка,
            //чтобы получить ссылку на редактирумый документ в удобном виде для
            //функции ОткрытьФорму()
            КлючПоиска = Новый Структура("Ключ", Элемент);

            //Но нам не надо открывать новую форму (окно) для изменяемого документа, а
            //Нам надо все изменения показать в уже открытых у клиента окнах
            Окна = ПолучитьОкна();
            Для каждого Окно из Окна Цикл

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

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

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

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

        КонецЦикла;
    КонецЕсли;
КонецПроцедуры

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

 

&НаСервере
Функция ЗаполнитьОбъект(НовыйОбъект)

    Если ТипЗнч(НовыйОбъект.ДокументОснование) = Тип("ДокументСсылка.ПоступлениеБезналичныхДенежныхСредств") Тогда

        Если НовыйОбъект.ДокументОснование.РасшифровкаПлатежа.Количество() > 0 Тогда
            НовыйОбъект.Авансы.Очистить();
        КонецЕсли;

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

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

 

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

Поэтому если есть другое решение поставленной задачи, то обязательно сообщите о нем.

Скачать файлы

Наименование Файл Версия Размер
Заполнение табличной части документа счет-фактура на аванс

.epf 8,27Kb
849
.epf 8,27Kb 849 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. artbear 1206 15.04.11 07:49 Сейчас в теме
В чем разница сабжа и http://infostart.ru/public/84001/ ?
одну из них удали или опиши различия или одну из них (сабж) удалю я.
3. Поручик 4458 15.04.11 08:17 Сейчас в теме
(1) Не разбираешься, не лезь. И описывать различия не требуется, кто в теме, в курсе.

Разница такая, что в этой статье описана методика заполнения объекта (аналог из УПП 1.2 или УТ 10.3 - заполнение табличных частей), а в другой - описание создания связанных объектов или ввода на основании.
Статья полезная, сам думал, как бы это сделать пооптимальней. Намудили Намудрили разработчики с БСП.
criptid; cheburashka; Denis_Lebedinsky; Serg3141; stoptime; Enyel; hromovanton; Dmitri93; Krasnyj; klmop; MarinaLed; Lo1jke; dbachinsky; Spacer; tkv44; shard; biz-intel; KazeNoYaida; ShyThun; kote; Cobalt River; Nuobu; Denizzz; +23 2 Ответить
2. Denizzz 15.04.11 08:09 Сейчас в теме
Вроде как в первом случае используется СозданиеСвязанныхОбъектов
а во втором ЗаполнениеОбъекта
в принципе задача то одна, а вот решения разные. Обратил внимание на ВыполнитьКоманду
4. Поручик 4458 15.04.11 08:18 Сейчас в теме
>>> в принципе задача то одна
Нет, это разные задачи.
5. Denizzz 15.04.11 08:21 Сейчас в теме
В данном контексте читать как "Результат один"
Понимаю, что основной задаче для автора является ее реализация.
6. Denizzz 15.04.11 08:23 Сейчас в теме
Поручик пишет:
Намудрили разработчики с БСП.

полностью согласен. БСП еще допиливать и допиливать
7. artbear 1206 15.04.11 10:16 Сейчас в теме
(0) Автор, все еще жду ответа и исправления в описании!

(3) 1. Будь вежливее.
2. Цель моего предложения в (1) - автор ДОЛЖЕН расписать отличие одной обработки от другой, чтобы пользователь сайта, который не разбирается в этом (а ведь статья именно для таких пользователей! ), мог понять отличие и назначение каждой статьи.
Если ТЕБЕ эта моя цель непонятна/недоступна, это твои проблемы!
Уважаю тебя за твои работы, но здесь ты неправ.

ЗЫ На будущее - Не лезь и не обсуждай работу Модераторов.
Ляль Дикий; echo77; 1c.pro.fun; Lyolik; copperfox; pipetkabeatboo; www2000; altimait; +8 3 Ответить
8. 79044970523 15.04.11 12:16 Сейчас в теме
Разница публикаций очевидна из их названия.
Поясню:
1) Создание связанных объектов
2) Заполнение объекта

Задачи поставлены разные.
1) Создать документ счет-фактура выданный аванс на основании документа поступление безналичных денежных средств
2) В форме документа счет-фактура выданный аванс заполнить табличную часть Авансы

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

Я мог конечно написать только суть и даже не публиковать обработку, но тогда по собственному опыту скажу, что были бы только вопросы и плевки в мою сторону, особенно у новичков.
TaTaPuH-Magic; taasha25; baracuda; KarV; svartemov; drcrasher; Denizzz; Поручик; +8 Ответить
11. Поручик 4458 15.04.11 12:38 Сейчас в теме
(10) Успокойся, здесь люди всё таки адекватные, статью не удалят.
Это две разные публикации о разных задачах. Заявляю, как человек постоянно с прошлого года работающий с УТ 11 и вообще с БСП.
12. Alraune 1486 15.04.11 13:24 Сейчас в теме
(10) Не стоит выставлять копию письма здесь.
А насчет
человек читающий публикации и имеющий аккаунт на http://infostart.ru некомпетентен в вопросах программирования на процедурном языке 1С

- это вполне может быть, здесь полно таких, вот я, к примеру. Поэтому Вам предложили только более понятно описать, о чем материал в статье, чтобы нам, "чайникам", было понятно. Удалять статьи никто не собирался.
13. TbSasha 09.05.11 18:27 Сейчас в теме
Подскажите можно ли как то делать отладку внешней подключаемой обработки?
И как какая тут последовательность надо вначале создать документ "счет-фактура выданный аванс" потом выбрать у него в основание "поступление безналичных денежных средств" а потом нажать заполнение?
14. MAntaNA 6 12.05.11 01:30 Сейчас в теме
Хм, а если после выполнения обработки при любой попытке изменить реквизит или просто сохранить пишет «Ошибка блокировки объекта. Объект уже заблокирован <наименование сеанса>» ?
15. MAntaNA 6 12.05.11 02:03 Сейчас в теме
Разобрался.
Опа, нет ещё...
Короче, нифига не выходит с заполнением формы без сохранения данных в объекте: форма заполняется - но больше с ней ничего не сделать: «Ошибка блокировки объекта. Объект уже заблокирован». Пришлось в серверной процедуре записывать объект с помощью ДанныеФормыВЗначение... Пытался прикрутить к УТ 11.0.6.7 заполнение графы «Основание» в ПКО описанием документа-основания ПКО...
16. magicdee87 12.05.11 14:56 Сейчас в теме
как обойти «Ошибка блокировки объекта. Объект уже заблокирован», подскажите оч надо
17. MSensey 49 12.05.11 17:43 Сейчас в теме
Кстати, а зачем обработка заполнения ТЧ счета-фактуры на аванс?
На мой взгляд правильней заполнять с/ф в обработке формирования с/ф на аванс.
18. 79044970523 13.05.11 10:51 Сейчас в теме
MSensey пишет:

Кстати, а зачем обработка заполнения ТЧ счета-фактуры на аванс?

На мой взгляд правильней заполнять с/ф в обработке формирования с/ф на аванс.


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

MAntaNA пишет:

Хм, а если после выполнения обработки при любой попытке изменить реквизит или просто сохранить пишет «Ошибка блокировки объекта. Объект уже заблокирован <наименование сеанса>» ?


Верно подмечено. Разбираюсь в этой проблемой в данный момент.
19. plevakin 19.08.11 16:12 Сейчас в теме
Так никто и не разобрался с
Ошибка блокировки объекта.
?
Не хочу троллить, но автор сам пользовался этой обработкой?
20. fsolution 11.10.11 17:51 Сейчас в теме
Сталкнулся с проблемой когда созданная внешняя обработка по загрузке прайса из XLS в док заказ клиента - выдавал в документе что он заблокирован, и в результате после заполнения таблич части документа нельзя было его не записать не сохранить - это безусловно баг УТ 11 и пофиксят непонятно в каких релизах потом - но проблема осталась!
21. fsolution 13.10.11 18:12 Сейчас в теме
Короче, нифига не выходит с заполнением формы без сохранения данных в объекте: форма заполняется - но больше с ней ничего не сделать: «Ошибка блокировки объекта. Объект уже заблокирован». Пришлось в серверной процедуре записывать объект с помощью ДанныеФормыВЗначение... Пытался прикрутить к УТ 11.0.6.7 заполнение графы «Основание» в ПКО описанием документа-основания ПКО...

Вопрос блокировок конечно очень обширный, поэтому я хотел бы для себя разобраться для начала в каком то одном частном вопросе. А именно как работает свойство БлокироватьДляИзменения у набора записей в 8.2 в управляемом режиме (SQL). Если для предыдущих версий платформы все достаточно понятно, так например:
Для 8.1 (Автоматический режим) ответы будут следующие:
1) Когда читаются данные, которые необходимо изменять в текущей транзакции необходимо в запросе указывать "ДЛЯИЗМЕНЕНИЯ"
2) Блокировка накладывается в момент выполнения запроса, диапазон блокируемых данных определяется условиями в запросе.
3) Блокируется запись, а так же чтение другими транзакциями, запросы которых используют директиву "ДЛЯИЗМЕНЕНИЯ"

Для 8.1 (Управляемый режим)
1) Когда читаются данные которые необходимо изменять в текущей транзакции нужно установить исключительную блокировку, когда необходимо просто обеспечить неизменность прочитанных данных - разделяемую.
2) Блокировка устанавливается явно, методом Заблокировать() блокируемые записи так же явно указываем в коде.
3) Разделяемая - запрещает запись, Исключительная - Чтение и запись

Для 8.2 (Управляемый режим) в принципе верно тоже что и для 8.1 (Управляемый),
но это если использовать старую методику - сначала контроль остатков, потом проведение.
Как действовать при новой методике, непонятно... ответ судя по всему кроется в понимании принципов работы этой самой "БлокироватьДляИзменения"


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

//Далее мы получаем объект только, что повторно открытой формы и помещаем её в переменную
//В объекте содержатся все реквизиты (элементы) формы
НовыйОбъект = Форма.Объект;
22. Diakon 25.10.11 17:23 Сейчас в теме
Большое спасибо за обработку, нашел её с Мисты, так что не удаляйте).Пустые ссылки это не хорошо.
23. AvalonE2008 98 27.10.11 09:14 Сейчас в теме
Спасибо за пример работы с формами. Очень помогло.
24. curys 27.10.11 11:33 Сейчас в теме
Большое спасибо за обработку)
25. vasiliy_b 281 18.11.11 12:21 Сейчас в теме
Поставил, плюс, но все таки получается пример не рабочий...
Думаю стоит исправить... пока проблема будет не решена.
27. 79044970523 21.11.11 11:51 Сейчас в теме
Я знал, что так будет :)
happyden; +1 Ответить
28. starjevschik 22.11.11 21:24 Сейчас в теме
Отлично сделано. Автору полный зачет. Работает на платформе .528 без вопросов.
Незачет 1с. Собственно проблема в том, что в обработку не передается форма, из которой она открыта. Но автор нашел нужное окошко, молодец.
32. AlexO 129 05.01.12 23:25 Сейчас в теме
(28)(26) 123456,
т.е. в каких-то релизах и типовых работает, в каких-то - нет?
где и как в 8.2 теперь подключаются все внешние отчеты, обработки, обработки ТЧ, ВПФ?
29. serov_sergey 12.12.11 09:10 Сейчас в теме
Насторожила эта строчка:

Форма = ОткрытьФорму("Документ.СчетФактураВыданныйАванс.Форма.ФормаДокумента",КлючПоиска,,,Окно);

А если этой обработкой нужно заполнять не один вид документов, а несколько? Надо чтобы данные вписывались в уже открытую форму объекта.
30. iaa 19.12.11 12:42 Сейчас в теме
а как быть, если мне необходимо открыть форму обработки, выполнить в форме ряд действий, потом нажать кнопку типа "Заполнить табличную часть документа"?
как попасть в этом случае в эту процедуру?
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт


и где брать значения для переменных?
31. 79044970523 20.12.11 03:18 Сейчас в теме
serov_sergey пишет:

Насторожила эта строчка:



Форма = ОткрытьФорму("Документ.СчетФактураВыданныйАванс.Форма.ФормаДокумента",КлючПоиска,,,Окно);



А если этой обработкой нужно заполнять не один вид документов, а несколько? Надо чтобы данные вписывались в уже открытую форму объекта.


Предоставьте выполнение этой задачи богу Шиве.
33. AlexO 129 06.01.12 02:59 Сейчас в теме
(0) и все эти сложности шаг 1-3 (вызов команды внешней обработки и т.д.) только из-за того, что внесенные данные внеслись в ТЧ формы, но не отображаются на форме динамически (т.к. записи вновь созданного дока не было)? в результате, делаем кучу манипуляций, создаем новый экзепляр формы, заполняем его ТЧ данными, и уже его даем пользователю на редактирование?
35. yku 344 28.02.12 00:07 Сейчас в теме
(0) Сегодня с товарищем разбирали данную задачку. И нашли-таки решение:

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

&НаКлиенте
Процедура ПроцедураОбработкиОбъектов() 
	
	ЭтаФорма.Закрыть();
		
	ОбъектыНазначенияМассив = СписокЭлементов.ВыгрузитьЗначения();
	
	Окна = ПолучитьОкна();
	
	Для Каждого Элемент из ОбъектыНазначенияМассив Цикл
		
		Для Каждого Окно из Окна Цикл
			
			Если НЕ Окно.Основное Тогда
				
				Форма = Окно.ПолучитьСодержимое();
				
				ОбъектФормы = Неопределено;
				
				Попытка
					ОбъектФормы = Форма.Объект;
				Исключение
				КонецПопытки;
				
				Если ОбъектФормы <> Неопределено 
					И ОбъектФормы.Ссылка = Элемент Тогда
						
						ОбъектФормы.Комментарий = формат(ТекущаяДата());
						
					КонецЕсли;
				КонецЕсли;
				
		КонецЦикла;	
   			
	КонецЦикла;
	
КонецПроцедуры
Показать


СписокЭлементов - в форму обработки добавлен реквизит типа "список значений".
И есть недостаток - ненадолго открывается форма обработки.
Огонек; Val300; БольшойЧайник; Поручик; new1c; +5 Ответить
36. yku 344 28.02.12 01:05 Сейчас в теме
Дальнейшее, может быть, является очевидным. Однако, у меня на разбор полётов ушло около часа.

----
[ Всё, что далее написано, относится к получению формы через "Окно.ПолучитьСодержимое()", а не ОткрытьФорму(...) ]

И вообще, начал копать, почему же так происходит. Оказалось, что получив объект формы, и изменив данные у этого объекта, отображение данных на форме тоже меняется. Но затем, после завершения процедуры "ВыполнитьКоманду", закрывается окно списка обработок, управление передается в модуль команды. После чего из-за того что у команды стоит галочка "изменяет данные" данные формы обновляются (т.е. восстанавливаются) из ссылки.

Способ в (35) как раз обходит этот момент. Так как, после всего этого форма обработки у нас остается открытой, и вызывает подключенный обработчик. И при вызове его закрывается.

Примечательно, что у команды вызова печатных форм, такой галочки нет. И данные на форме должны оставаться такими, какими мы и хотим без всяких финтов ушами.
37. salus 18 16.08.12 09:55 Сейчас в теме
(35) yku,
Начиная с УТ 11.0.8.13 данный механизм обновления формы перестал работать. Что изменилось?
38. yku 344 20.08.12 10:36 Сейчас в теме
(37) salus,
С УТ 11 я сталкиваюсь крайне редко. А так, не разбирался.
39. salus 18 20.08.12 10:54 Сейчас в теме
(38) yku,
Посмотрите, пожалуйста, вот это http://infostart.ru/public/148039/. Все прекрасно работала на старом релизе, а на новом до закытия формы обработки.
40. yku 344 20.08.12 11:11 Сейчас в теме
(39) salus,
Не верю что это связано с обновлением УТ. Ваш код и в более ранних версиях УТ должен работать точно так же как и сейчас.
Достоверность (37) ставится под сомнение.

PS. Не нашел своего кода в вашей обработке (точнее, ключевой "фишки"). Так что вопрос не ко мне. Либо вопрос не так сформулирован.
41. salus 18 20.08.12 11:25 Сейчас в теме
(40) yku,
"Не нашел своего кода в вашей обработке (точнее, ключевой "фишки")"
Если можно, то расшифруйте Вашу фразу. Хоть какая-то дополнительная информация.

"Не верю что это связано с обновлением УТ. Ваш код и в более ранних версиях УТ должен работать точно так же как и сейчас.
Достоверность (37) ставится под сомнение. "

Это же можно легко проверить. Вся инфомация доступна.
44. salus 18 20.08.12 11:41 Сейчас в теме
(41) salus,
"Не нашел своего кода в вашей обработке (точнее, ключевой "фишки")"
Если можно, то расшифруйте Вашу фразу. Хоть какая-то дополнительная информация. И все это много времени не требует...
42. salus 18 20.08.12 11:28 Сейчас в теме
(40) yku,
И еще. Оно и работает на более ранних версиях.
43. yku 344 20.08.12 11:31 Сейчас в теме
(42) salus,
Как всегда, время - вот чего не хватает.
Но заинтригован. Скачаю. Проверю на 11.0.7
45. yku 344 20.08.12 12:47 Сейчас в теме
Разобрался.
(37) salus,
По крайней мере в УТ 11.0.7.18 присутствует ошибка в конфигурации. И видимо, в следующих релизах её исправили.
В коих механизм из моего комментария вполне работает.

PS. По поводу нежелания разжевывать детально. У вас интерес денежный, у меня же интерес... просто интерес.
46. salus 18 20.08.12 14:24 Сейчас в теме
(45) yku,

Если Ваш код в следующих конфигурациях работает, то это уже информация. Спасибо.
47. AndiA 20.12.12 16:35 Сейчас в теме
По-моему лучше делать по другому
1. Перенаправить на открытие формы обработки
ДобавитьКоманду(ТаблицаКоманд,
"...",
"...",
"ОткрытиеФормы",
Истина,
"");
2. При создании формы обработки из параметров найти ссылку на вызывающий объект и сохранить куда-нибудь ссылку
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ЗагрузкаИзExel.ОбъектСсылка = Документы.УстановкаЦенНоменклатуры.ПустаяСсылка();
попытка
парам = ЭтаФорма.Параметры;
если парам.ОбъектыНазначения.Количество()>0 Тогда
ЗагрузкаИзExel.ОбъектСсылка = парам.ОбъектыНазначения[0];
КонецЕсли;
Исключение
КонецПопытки;
КонецПроцедуры
3. Заполнить форму документа интерактивно (либо если форма обработки не нужна в модуле ПриОткрытии)
&НаКлиенте
Процедура УстановитьЦены(Команда)

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

ДокФорма.Объект.Комментарий = "Загрузка из файла "+ЭтаФорма.ЗагрузкаИзExel.ИмяФайла;
ДокФорма.Объект.Ответственный = Пользователи.ТекущийПользователь();
найденацена = ложь;
если ВСуществующийДокумент тогда
для каждого стр из ДокФорма.Объект.ВидыЦен цикл
если стр.ВидЦены = ЭтаФорма.ЗагрузкаИзExel.ВидЦены тогда
найденацена = истина;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;

если не найденацена тогда
новстр = ДокФорма.Объект.ВидыЦен.Добавить();
новстр.ВидЦены = ЭтаФорма.ЗагрузкаИзExel.ВидЦены;
КонецЕсли;

для каждого стр из ЭтаФорма.ЗагрузкаИзExel.СписокРезультата цикл
если стр.НоменклатураСсылка<>ПустаяСсылкаСправочника("Номенклатура") Тогда
новстр = ДокФорма.Объект.Товары.Добавить();
новстр.Номенклатура = стр.НоменклатураСсылка;
новстр.Цена = стр.Цена;
новстр.ВидЦены = ЭтаФорма.ЗагрузкаИзExel.ВидЦены;
новстр.ЦенаИзмененаВручную = истина;
новстр.Характеристика = ВернутьХарактеристику(стр.Характеристика,стр.НоменклатураСсылка);
новстр.Упаковка = ВернутьУпаковку(стр.НоменклатураСсылка,стр.ЕдИзм);
КонецЕсли;
КонецЦикла;
ДокФорма.ПриСозданииНаСервере(Ложь, истина); // это чтобы форма этого заморочного документа правильно построилась
ДокФорма.Модифицированность = Истина;
ДокФорма.Открыть();
ЭтаФорма.Закрыть();
КонецПроцедуры
4. Не забыть в параметрах формы обработки создать параметр "ОбъектыНазначения"
kashafeev; Kaval88; +2 Ответить
48. volvulus 20 18.02.13 16:40 Сейчас в теме
Почему-то никак не получается запустить обработку в управляемой форме в обычном приложении.
Постоянно выдает вот такую ошибку:

{ОбщийМодуль.ДополнительныеОтчетыИОбработки.Модуль(201)}: Ошибка при вызове метода контекста (Подключить)
Возврат ВнешниеОбработки.Подключить(АдресВоВременномХранилище,, БезопасныйРежим);
по причине:
Ошибка подключения внешних метаданных
по причине:
Неправильный путь к файлу 'e1cib/tempstorage/49c11b29-ff5d-4612-aee4-7f8d785c2cda'
49. 79044970523 19.02.13 06:52 Сейчас в теме
Добавь обработку в состав конфигурации. Внешняя обработка на управляемых формах не запустится в обычном приложении.
50. Aleksey_3 11.03.13 14:18 Сейчас в теме
А подскажите почему может не вызываться форма обработки. Т.е. сделал обработку заполнения как тут написано, подключил её к БП 3.0. Она появилась в документе. Нажимаю заполнить ... и ничего, т.е. совсем нечего форма обработки не вызывается.

Я уже даже прописал

&НаСервере
Процедура ПриСозданииНаСервере()
Сообщить("ПриСозданииНаСервере");
1;
КонецПроцедуры

Т.е. модуль с ошибками - вообще никакой реакции. Скачал обработку, которая в статье - аналогично.

Что еще можно проверить?
51. Aleksey_3 11.03.13 17:04 Сейчас в теме
вообщем так и не понял почему, но методом научного тыка скопировал в форму реализацию 2 процедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьНазначаемуюКоманду(Команда)
    
    Если НЕ ДополнительныеОтчетыИОбработкиКлиент.ВыполнитьНазначаемуюКомандуНаКлиенте(ЭтаФорма, Команда.Имя) Тогда
        РезультатВыполнения = Неопределено;
        ДополнительныеОтчетыИОбработкиВыполнитьНазначаемуюКомандуНаС­ервере(Команда.Имя, РезультатВыполнения);
        ДополнительныеОтчетыИОбработкиКлиент.ПоказатьРезультатВыполненияКоманды(ЭтаФорма, РезультатВыполнения);
    КонецЕсли;
    
КонецПроцедуры

&НаСервере
Процедура ДополнительныеОтчетыИОбработкиВыполнитьНазначаемуюКомандуНаС­ервере(ИмяЭлемента, РезультатВыполнения)
    
    ДополнительныеОтчетыИОбработки.ВыполнитьНазначаемуюКомандуНаСервере(ЭтаФорма, ИмяЭлемента, РезультатВыполнения);
    
КонецПроцедуры
Показать



и всё заработало.
52. Angry 11 29.03.13 12:35 Сейчас в теме
Пробовал в УТ 11.1 не работает. Исследования показали, что во всем виноват кусок кода в общей форме форме "ДополнительныеОтчетыИОбработки"

// Обновить форму владельца
Если ТипЗнч(ВладелецФормы) = Тип("УправляемаяФорма") Тогда
Попытка
ВладелецФормы.Прочитать();
Исключение
КонецПопытки;
КонецЕсли;

Закомментировав выделенное всё заработало.
53. Mortiferus 340 12.07.13 15:36 Сейчас в теме
Спасибо. Помогло. Все сработало без проблем.
54. kereo 56 08.08.13 18:26 Сейчас в теме
Попробуйте заменить
             //Зададим ключ поиска документа, из которого вызвана данная обработка,
             //чтобы получить ссылку на редактирумый документ в удобном виде для
             //функции ОткрытьФорму()
             КлючПоиска = Новый Структура("Ключ", Элемент);

             //Но нам не надо открывать новую форму (окно) для изменяемого документа, а
             //Нам надо все изменения показать в уже открытых у клиента окнах
             Окна = ПолучитьОкна();
             Для каждого Окно из Окна Цикл

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

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

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

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

на
Объект = ВладелецФормы.Объект;
ЗаполнитьОбъект(Объект);
myoker; DedMoroz1983; Spacer; yku; Val300; +5 Ответить
55. DimanYa 14.08.13 10:38 Сейчас в теме
Теперь такая морока стала с заполнением табличных частей по сравнению с обычными формами.
Раньше действие было простое, а теперь занимает в 10 раз больше времени.
И я может не нашёл, но факт если у человека много табличных частей на форме все внешнии обработки их заполнения будут лежать в общей кучи через кнопку "Заполнить"
56. kereo 56 16.08.13 11:44 Сейчас в теме
(55) DimanYa, А зачем вам в документе много табличных частей, которые заполняются обработкой?
57. DimanYa 16.08.13 12:14 Сейчас в теме
Ну на данном этапе в данном мне это не нужно. Но чисто гипотетически такая необходимость может возникнуть.

Представим, что у нас существует допустим 3-4 табличные части. Для каждой у нас есть своя внешняя обработка. Раньше пользователь видел под кнопокй заполнить кнопку для этой конкретной таблицы. Теперь же будет одна общая кнопка "Заполнить" и лишь по их названию можно понять, что и куда.

Я не говорю, что это сверх неудобно, просто чисто с точки удобства это ухудшение.

Кстати взять типой документ "Поступление товаров и услуг" у него 7 различных табличных части: Оборудование, ОбъектыСтроительства, Товары, Услуги, ВозвратнаяТара, ЗачетАвансов, АгентскиеУслуги.
58. infosoft-v 498 21.08.13 12:12 Сейчас в теме
Добрый день, коллеги.
Спасибо за всю информацию, которая помогла получить результат.
У меня обработка заполнения должна заполнять табличную часть документа "Заказ покупателя"
Обработка запускается из открытой формы существующего заказа это значит, что мне не нужно перебирать аргумент "ОбъектыНазначенияМассив" и я сразу беру первый элемент массива.

На форме обработки у меня расположена кнопка, по нажатию которой выполняется команда, к которой привязана процедура "ЗагрузитьЗаказ"


&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
	
	// Ссылку на исходный документ сохраняю в реквизите обработки
	Объект.СсылкаНаОбъект = ОбъектыНазначенияМассив[0];
	
	Если НЕ ПустаяСсылка(Объект.СсылкаНаОбъект)Тогда
		// Мне нужно поучить от пользователя некоторую информацию информацию
		// для этого я открываю Форму внешней обработки заполнения объектов
		ЭтаФорма.Открыть();
	КонецЕсли;
	
КонецПроцедуры



&НаКлиенте
// Команда для кнопки формы внешней обработки
Процедура ЗагрузитьЗаказ(Команда)
	
	// Закрываю форму внешней обработки
	ЭтаФорма.Закрыть();
	
	// Повторно открываю форму нужного объекта, 
	// в моём случае это Документ "Заказ клиента"
	// Если форма уже открыта, то повторного открытия не происходит,
	// но возвращается объект "Управляемая форма"
	Параметр = Новый Структура("Ключ", Объект.СсылкаНаОбъект); 
	Форма = ОткрытьФорму("Документ.ЗаказКлиента.ФормаОбъекта",Параметр);
	ОбъектФормы = Форма.Объект;
	
	// Далее ваша функциональность
	ОбъектФормы.Комментарий = формат(ТекущаяДата());
	
КонецПроцедуры
Показать
el-gamberro; +1 Ответить
59. Alister 9 09.09.13 13:33 Сейчас в теме
Спасибо, помогло разобраться, как сделать у себя.
60. IrinaL___ 11.10.13 10:27 Сейчас в теме
61. Slava.62.ru 21 16.10.13 15:37 Сейчас в теме
Благодарю мучился сам долго. (
62. Вальская Людмила 5 17.10.13 10:42 Сейчас в теме
63. VADol 24.10.13 15:24 Сейчас в теме
Спасибо! Тоже долго маялся! Помогло!
65. AndrewM 28.10.13 17:07 Сейчас в теме
66. ilonnaa 29.10.13 14:46 Сейчас в теме
Спасибо огромное! Очень помогло!

"...в модуле формы обработки, а значит создадим любую форму обработки, пользователь её всеравно не увидит...:"

Вот это был ключевой момент)
67. PRO100_NigGaZ 63 31.10.13 08:33 Сейчас в теме
У меня открывает новое окно :( (перед этим я открываю форму печформы модально)
68. svetanik 5 11.11.13 06:03 Сейчас в теме
Очень помогла статья, а также комментарий infosoft-v. СПАСИБО!
Заполняю Заказ (УТ11.1) данными из внешнего файла, сохраняю, но Состояние Обеспечения не видит данных для анализа. В чем может быть дело?
69. CTDEVIce 13 18.02.14 10:01 Сейчас в теме
Отлично все отработало. Только вот возникла проблема - документ остался незаполненным. Начал разбираться. Сразу после команды КопироватьДанныеФормы(НовыйОбъект, Форма.Объект); объект заполнен, из цикла выходит, а потом форма чистится. Такое ощущение, что чистится в методе конфиги, который вызвал метод клиента ВыполнитьКоманду().

Конфигурация Розница 2.0, полугодовой давности.
70. CTDEVIce 13 18.02.14 10:13 Сейчас в теме
Еще одна особенность. В вызове клиента открываю форму для ввода данных от пользователя. Открываю модально. В остальном вроде все то же самое. Щас конфигу посмотрел - не увидел чтобы форма чистилась или обновлялась после вызова клиентского метода.
71. filterhouse 28 01.04.14 09:44 Сейчас в теме
Отличная статья, долго искал, хоть какое то описания, а тут прям готовый пример.
72. IRLes 204 09.04.14 23:36 Сейчас в теме
Как-то сложно написано, можно же проще. Я не вникал как там со счетами-фактурами, но заполнить таблицу можно очень просто и не нужно столько кода.
Если это общеобразовательный пример, а не частный случай, то, возможно вариант ниже будет более понятным?
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения) Экспорт

	Для каждого СсылкаНаОбъект Из ОбъектыНазначения Цикл

		ФормаОбъекта 	= ПолучитьФорму(ПолучитьПолноеИмяДокумента(СсылкаНаОбъект)+".ФормаОбъекта", Новый Структура("Ключ", СсылкаНаОбъект));
		ОбъектСсылки 	= ФормаОбъекта.Объект;
		Запасы 		= ОбъектСсылки.Запасы;
		НовСтр          = Запасы.Добавить();
		
	КонецЦикла; 
	
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьПолноеИмяДокумента(СсылкаНаОбъект)
	
	Возврат СсылкаНаОбъект.Метаданные().ПолноеИмя(); 
	
КонецФункции
Показать

Но все-равно спасибо, навело на мысль сделать проще :)
scanner1980; exitel; svilsa; jmi; +4 Ответить
74. 79044970523 21.05.14 08:00 Сейчас в теме
(72) Правильное решение.
Сейчас эта публикация не должна быть актуальна, так как она создавалась еще на первых релизах УТ 11. Когда БСП только появлялась, когда не хватало информации из общих источников.
(73) Поэтому спустя 3 года после публикации говорить, что это колхоз бессмысленно. На тот момент это была единственная известная мне публикация с необходимым решением. Сейчас можно книжку купить или в любой конфигурации на управляемых формах подсмотреть.
svilsa; UnsavedSoul; kyrasol; dimaster; +4 Ответить
73. elian 100 03.05.14 22:02 Сейчас в теме
Мне одному кажется, что поиск открытых окон - это явный колхоз? Кто ни будь подскажет ссылку на документацию по БСП или пример обработки из лабораторий 1С, где делается именно так? Вот обработка _ДемоДополнительнаяОбработкаЗаполненияНазначаемая из БСП, в ней нет никакого поиска открытых окон...
75. XelOla 17 02.08.14 23:20 Сейчас в теме
76. Anyu-n 27 02.12.14 16:00 Сейчас в теме
Ребят, все эпик.... обработка классная... вроде все понятно, но столкнулось с засадой РЕКВИЗИТ ТАБ.ЧАСТИ КОЛИЧЕСТВО..
уТ 11.1.9.51 Пытаюсь по кнопке изменить колонку количество (в доп.реквизитах лежит число, его нужно кинуть в таблицу) Причем так же меняю цену - все делается как мне нужно! А количество - никак....

Это моя функция действия:
Процедура ЗаполнитьДокумент(ДокументОбъект)

ТЗ=ДокументОбъект.Товары.Выгрузить();
ДокументОбъект.Товары.Очистить();
ном=0;
кол= ДокументОбъект.ДополнительныеРеквизиты.Количество();
Пока ном < кол цикл
Если ДокументОбъект.ДополнительныеРеквизиты.Получить(ном).свойство.заголовок="Кол-во ЛИТРОВ" тогда
ТЗ[0].количество = ДокументОбъект.ДополнительныеРеквизиты[ном].значение;
КонецЕсли;
Если ДокументОбъект.ДополнительныеРеквизиты.Получить(ном).свойство.заголовок="Цена ЛИТРАЖ" тогда
ТЗ[0].цена = ДокументОбъект.ДополнительныеРеквизиты[ном].значение;
КонецЕсли;

ном=ном+1;
КонецЦикла;
ДокументОбъект.Товары.Загрузить(ТЗ);


Потом загружаю....

&НаКлиенте
Процедура Загрузить(Команда)

// Обновляем форму документа
ИмяДокумента = ПолучитьИмяМетаданныхДокумента(Объект.СсылкаНаДокумент);
Окна = ПолучитьОкна();
Для каждого Окно из Окна Цикл
Если НЕ Окно.Основное
И Найти(Окно.Заголовок, Объект.СсылкаНаДокумент) Тогда
ФормаДокумента = Окно.ПолучитьСодержимое();
Если Не ФормаДокумента = Неопределено Тогда
ФормаДокумента.Закрыть();
КонецЕсли;
ФормаДокумента = ОткрытьФорму("Документ."+ИмяДокумента+".Форма.ФормаДокумента",Новый Структура("Ключ", Объект.СсылкаНаДокумент),,,Окно);
НовыйОбъект = ФормаДокумента.Объект;
ЗаполнитьДокумент(НовыйОбъект);
КопироватьДанныеФормы(НовыйОбъект, ФормаДокумента.Объект);
ФормаДокумента.Объект.товары[0].количество=НовыйОбъект.товары[0].количество; //я уже и так пыталась
КонецЕсли;
КонецЦикла;
// Обновляем форму списка
ОповеститьОбИзменении(Тип("ДокументСсылка."+ИмяДокумента));

// Закрываем форму обработки
ЭтаФорма.Закрыть();

КонецПроцедуры
В итоге цена меняется, а количество прежнее..... :'(
Уже и отладчиком проходила вроде цифра из доп.реквизитов стоит... а в форме не обновляется... помогите.... я же делала по вашей методике
77. Anyu-n 27 03.12.14 11:15 Сейчас в теме
Жесть.. методом проб и ошибок выяснила, что менять нужно реквизит ФормаДокумента.Объект.товары[0].количествоупаковок
Причем в настройках Номенклатуры галочка с "упаковок номенклатуры" СНЯТА
Я может что пропустила... зачем тогда в табличной части реквизит "КОЛИЧЕСТВО"? если есть Реквизит "КоличествоУпаковок"
78. el-gamberro 56 15.02.15 18:41 Сейчас в теме
Спасибо за общение. Покурил. Общее решение нашел такое:

Парам = Новый Структура("Ключ", Объект.СсылкаНаОбъект); //это передали в форму заполнения
Форма = ПолучитьФорму("Документ.ОтчетКомитентуОПродажах.Форма.ФормаДокументаОПродажах",Парам); //окна не ищем, переполучаем уже открытое
Форма.ЭтотОбъект.Прочитать(); //обновляем нашу форму, перед этим сам объект-документ в базе уже заполнен и сохранен (записан, проведен)
scanner1980; igor-pn; sg12; Magnastrag; +4 Ответить
85. Magnastrag 20.10.15 16:56 Сейчас в теме
(78) el-gamberro, Спасибо огромное, выручил.
79. ivprovotorov 16 20.02.15 08:32 Сейчас в теме
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт 
	типц = ПолучитьТипЦенДляВозвратов();
	
	для каждого воз из ОбъектыНазначенияМассив цикл

		Сообщить(""+ТипЗнч(воз)+" "+воз+" "+ТекущаяДата());  // тут нормально выходит сообщение

		УстановитьСебестоимость(типц, воз);

	КонецЦикла;

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


&Насервере
Функция УстановитьСебестоимость(типц, воз)
	Сообщить(""+ТипЗнч(воз)+" "+воз);  // тут тишина

	сообщ = ""; 
	объ = воз.ссылка.получитьобъект();
	для каждого тов из объ.товары цикл
		..............................................
	КонецЦикла;
	
	Попытка
		объ.записать();
	Исключение
		сообщ = сообщ + "Не удалось записать документ " + воз.ссылка + " " + ОписаниеОшибки();
	КонецПопытки;
	
	Возврат сообщ;
КонецФункции
Показать


Обработка заполнения нормально подключилась. Кнопка "Заполнение" появилась. При нажатии на кнопку сообщение из процедуры ВыполнитьКоманду нормально выходит. А из функции УстановитьСебестоимость полная тишина, ни моих сообщений, ни сообщений об шибках, как будто в функции ни одной строчки кода.

Когда запустил обработку через меню "Файл - Открыть" и вручную вызвал процедуру ВыполнитьКоманду, всё отработало без замечаний.

&НаКлиенте
Процедура тест(Команда)  //запускается кнопкой на форме
	мас = новый Массив;

	для каждого воз из элементы.список.ВыделенныеСтроки цикл
		мас.Добавить(элементы.список.данныестроки(воз).Ссылка);
	КонецЦикла;

	ВыполнитьКоманду("",мас);

КонецПроцедуры
Показать

1С:Предприятие 8.3 (8.3.5.1460)
1С:Предприятие 8. Общепит (3.0.33.19)
80. DexterMorgan777 3 29.04.15 16:40 Сейчас в теме
81. rif-nrr 11 13.06.15 14:31 Сейчас в теме
Полезная статья, автор, спасибо за труд! Сделал свою на основе статьи - все получилось.
82. XelOla 17 05.09.15 00:51 Сейчас в теме
Будьте добры
я пытаюсь создать заполнение Авизо по расчетам исходящее на основании Поступление товаров и услуг
использую вашу СведенияОВнешнейОбработке
ругается на
{ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(505)}: Недостаточно фактических параметров
ФормаВнешнегоОбъекта.ВыполнитьКоманду(ПараметрыВызоваСервера.ИдентификаторКоманды, ПараметрыВызоваСервера.ОбъектыНазначения);
откуда эта ошибка идет из модуля объекта или модуля формы?
83. 79044970523 07.09.15 07:29 Сейчас в теме
84. valeriy-vm 32 16.09.15 22:23 Сейчас в теме
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| УстановкаСебестоимостиТовары.Номенклатура,
| МАКСИМУМ(УстановкаСебестоимостиТовары.Цена) КАК Цена
|ИЗ
| Документ.УстановкаСебестоимости.Товары КАК УстановкаСебестоимостиТовары
|ГДЕ
| УстановкаСебестоимостиТовары.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| УстановкаСебестоимостиТовары.Номенклатура";
Запрос.УстановитьПараметр("Ссылка",Объект.СсылкаДок);
ОбДок = Объект.СсылкаДок.ПолучитьОбъект();
ОбДок.Товары.Загрузить(Запрос.Выполнить().Выгрузить());
ОбДок.Записать();
86. svbel85 18 30.01.16 10:36 Сейчас в теме
Спасибо за статью, я уже голову себе сломал как из одного документа заполнять другой не записывая заполняемый, это так легко делалась раньше без БСП, а теперь окна приходится открытые перебирать.... очень странно
87. Vahnin 14.02.16 22:31 Сейчас в теме
Если использовать ВызовКлиентскогоМетода, выполняется процедура ВыполнитьКоманду в модуле формы.
У формы обработки есть реквизит ВладелецФормы. Через него и можно редактировать все, что вашей душе угодно. Если конечно не запускать обработку из формы списка.
88. o3ophuk 11.03.16 00:07 Сейчас в теме
Спасибо автору поста.
Если актуально - в результате у меня получился такой код(Задача была изменить цену на определенный коэффициент без записи документа для розницы 2.1.4):

////////////////////////////////////////////////////////////////////////////////
// Клиент - Программный интерфейс

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

	Открыть();
	
КонецПроцедуры

////////////////////////////////////////////////////////////­////////////////////
// Клиент

&НаКлиенте
Процедура ИзменитьЦену(Команда)
	// Вставить содержимое обработчика.
	
	Если НЕ ЗначениеЗаполнено(Коэффициент) Тогда
		Возврат;
	КонецЕсли;
	
    Для каждого Элемент из ОбъектыНазначения Цикл

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

&НаСервере
Функция ЗаполнитьОбъект(Форма)
	
	ТЧ = Форма.Товары;
	Для Каждого Строка Из ТЧ Цикл
		
		Строка.Цена = Строка.Цена * Коэффициент;
		Строка.Сумма = Строка.Цена*Строка.Количество;
		
	КонецЦикла;
	
	Форма.СуммаДокумента = ТЧ.Итог("Сумма");
	
КонецФункции
Показать
scanner1980; +1 Ответить
89. dklp 34 21.04.16 12:17 Сейчас в теме
подскажите, как отключить проверку записанности объекта перед вызовом обработки заполнения? это только через Конфигуратор можно сделать?
90. mikl79 112 29.04.16 11:42 Сейчас в теме
Спасибо, впервые сегодня написал обработку заполнения табл.части на базе вашей обработки.
Было бы круто если бы был пример вызова окна перед заполнением, в котором можно выбрать какие-нибудь параметры заполнения (например, другой документ).
92. alabuga 19.05.16 10:58 Сейчас в теме
(90) mikl79, там тоже самое. Но лучше сделать так
1) в функции СведенияОВнешнейОбработке() ставишь "ОткрытиеФормы" вместо "ВызовКлиентскогоКетода"
2) кидаешь на форму нужные параметры и кнопку "заполнить" привязываешь к ней процедуру "ВыполнитьКоманду" (можешь назвать по своему)
и все.
P.S. очевидно команда Открыть() уже не нужна, сразу можно заполнять
91. mikl79 112 29.04.16 11:44 Сейчас в теме
Почему обработка не передает признак модифицированности?
93. igor-pn 72 30.05.16 00:34 Сейчас в теме
Пример, на основе БСП, который мне помог.Текст просто вставляем в модуль объекта, форму в обработку вообще не добавляем. В итоге меняем реквизиты формы объекта (в нашем случае справочник "Склады"), но не записываем ее.


////////////////////////////////////////////////////////////­////////////////////
// ПРОГРАММНЫЙ ИНТЕРФЕЙС

#Область ПрограммныйИнтерфейс

// Возвращает сведения о внешней обработке.
Функция СведенияОВнешнейОбработке() Экспорт
	
	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("1.1");
	
	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиЗаполнениеОбъекта();
	ПараметрыРегистрации.Версия = "1.3";
	ПараметрыРегистрации.Назначение.Добавить("Справочник.Склады");
	
		
	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
	НоваяКоманда.Представление = НСтр("ru = 'Заполнить наименование ""Склады"" не записывая объект (заполнение формы)'");
	НоваяКоманда.Идентификатор = "ЗаполнитьНаименование";
	НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыЗаполнениеФормы();
	НоваяКоманда.ПоказыватьОповещение = Ложь;
	НоваяКоманда.Скрыть = Истина;
	
	Возврат ПараметрыРегистрации;
	
КонецФункции

// Интерфейс для выполнения команд обработки.
Процедура ВыполнитьКоманду(ИмяКоманды, ОбъектыНазначения, ПараметрыВыполнения) Экспорт
	
	ПараметрыРегистрации = СведенияОВнешнейОбработке();
	ПараметрыРегистрации.Команды.Колонки.Идентификатор.Имя = "ИмяКоманды";
	ЭтаКоманда = ПараметрыРегистрации.Команды.Найти(ИмяКоманды, "ИмяКоманды");
	Если ЭтаКоманда = Неопределено Тогда
		ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru = 'Команда ""%1"" не поддерживается обработкой ""%2""'"),
			ИмяКоманды,
			Метаданные().Представление()
		);
	КонецЕсли;
	
	Если ИмяКоманды = "ЗаполнитьНаименование" Тогда
		ЗаполнитьНаименование(ПараметрыВыполнения.ЭтаФорма, ПараметрыВыполнения.РезультатВыполнения);
	КонецЕсли;
	
	
КонецПроцедуры

#КонецОбласти

////////////////////////////////////////////////////////////­////////////////////
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ

#Область СлужебныеПроцедурыИФункции

// Обработчик команды.
Процедура ЗаполнитьНаименование(Форма, РезультатВыполнения)
	
	Форма.Объект.наименование = "111111111111111111111111111111111111111111111111111111";
	Форма.Модифицированность = Истина;
	
	СтандартныеПодсистемыКлиентСервер.ВывестиСообщение(
		РезультатВыполнения,
		НСтр("ru = 'Поле ""Наименование"" успешно заполнено'"),
		"Объект.Наименование");
	
КонецПроцедуры

#КонецОбласти
Показать
Spacer; v.a.ryag; +2 Ответить
94. slawanix 13 18.08.16 11:44 Сейчас в теме
Прочитал статью вместе с комментариями. Изначально тема неправильно раскрыта, поэтому и вопросов много.
По существу нет никаких проблем с блокировками. Достаточно к табличной части обратиться через свойство ВладелецФормы. Делается это примерно так (демо):

&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
	Для каждого  ТекущаяСтрока из ВладелецФормы.Объект.Материалы Цикл
		ТекущаяСтрока.Количество = 100 ;
		Сообщить(ТекущаяСтрока.Количество) ;
	КонецЦикла ;	
КонецПроцедуры
Показать


Тип значения свойства ВладелецФормы - УправляемаяФорма.
Все отлично отрабатывает. При этом у обработки должен быть Вид = ЗаполнениеОбъекта, а у Команды тип = ВызовКлиентскогоМетода.
Весь модуль объекта у меня выглядит так:
#Область РегистрацияОбработки

Функция СведенияОВнешнейОбработке() Экспорт
	
	Назначения = Новый Массив ;
	Назначения.Добавить("Документ.ОтражениеЗарплатыВУчете") ;
	
	ПараметрыРегистрации = Новый Структура ;
	ПараметрыРегистрации.Вставить("Вид","ЗаполнениеОбъекта");
	ПараметрыРегистрации.Вставить("Назначение",Назначения);
	ПараметрыРегистрации.Вставить("Наименование","Корректировка счетов учета, подразделений и видов платежей");
	ПараметрыРегистрации.Вставить("Версия","1.0");
	ПараметрыРегистрации.Вставить("Информация","Дополнительная обработка табличной части документа ""Зарплата (ЗУП 2.5, ЗиК 7.7)""");
	ПараметрыРегистрации.Вставить("БезопасныйРежим",Истина);
	
	Команды = ПолучитьТаблицуКоманд() ;
	ДобавитьКоманду(Команды, "Скорректировать счета учета, подразделения и виды платежей","ИзменитьДокумент","ВызовКлиентскогоМетода",Ложь);
	
	ПараметрыРегистрации.Вставить("Команды",Команды) ;
	
	Возврат ПараметрыРегистрации;
	
КонецФункции

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

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

#КонецОбласти
Показать


У обработки должна быть создана Форма, на которой не нужно создавать никаких команд, объектов и элементов управления. В ней должна быть только Экспортная процедура ВыполнитьКоманду, текст команды см. выше.
Хочу отметить отдельно и заострить на этом внимание: Не смотря на то, что у добавляемой Команды (см. текст МодуляОбъектов) устанавливается тип ВызовКлиентскогоМетода, в модуле формы можно, при необходимости, создавать процедуры и функции, исполняемые на сервере и обращаться к ним из процедуры Выполнить(). Никаких ограничений я не обнаружил.
samara04; Ariva; m1_1976; asp-1c; Alias; +5 Ответить
96. viktorinka777 04.01.17 12:23 Сейчас в теме
(94) Мне нужно сделать заполнение ТЧ результатом запроса. Вызываю серверную процедуру. Что в нее передать? и как тогда обновлять форму?
97. slawanix 13 04.01.17 20:17 Сейчас в теме
(96), что передать в серверную процедуру зависит от Вашей задачи, в некоторых случаях можно вообще ничего не передавать... Как вариант, можно в серверной функции выполнить запрос, результат запроса передать обратно на Клиент и там заполнить ТЧ. Форму никаким специальным образом обновлять не придется, при заполнении само все обновится.
viktorinka777; +1 Ответить
98. Alias 159 10.02.17 18:51 Сейчас в теме
(94) Большое спасибо. Действительно, всё просто... А я-то провозился с этой проблемой (открыть свою форму для выбора параметров заполнения и заполнить потом форму документа без записи).

В ВыполнитьКоманду() вставил всего две строки
ЭтаФорма.РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
ЭтотОбъект.Открыть();

чтобы открылась форма обработки заполнения. А там уже -- полная свобода, и общение с заполняемой формой как Вы и сказали, через ВладелецФормы.Объект

Помогли.
99. slawanix 13 10.02.17 20:29 Сейчас в теме
(98), пожалуйста, рад, что мое сообщение Вам помогло.
105. mart-sha 292 28.01.18 19:37 Сейчас в теме
106. mart-sha 292 28.01.18 19:42 Сейчас в теме
(98)Пожайлуста подскажите, сделал по вашему варианту ,

ЭтаФорма.РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
ЭтотОбъект.Открыть();

после того как форма открылась, на ней поле "Коэффициент"- числовое и кнопка "Расчет" (и связанная с ней функция). Кнопка не срабатывает, нажимаем, но функция не выполняется.
103. Mails79 12 18.07.17 13:29 Сейчас в теме
(94) Очень простой и удачный способ. Но в случаи с вызовом обработки заполнения из формы списка нужно будет "ставить заглушку". Вариант же предложенный в статье универсален по отношению к способу вызова (просто проигнорирует вызов из списка).
95. DedMoroz1983 02.11.16 08:53 Сейчас в теме
Полезно. Статья помогла сделать свою обратотку, заполнения дополнительных реквизитов, без изменения основной формы, а с помощью формы отбработки.
100. Anchoret 42 16.03.17 16:06 Сейчас в теме
Остался вопрос, как обновить отображение данных на форме, чтобы сразу увидеть изменения?
Оставьте свое сообщение

См. также

FormCodeGenerator Программная доработка форм. Часть 2 (Режим работы "Режим сравнения форм") на примере ERP 2.5 Промо

Практика программирования Адаптация типовых решений Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Данная публикация является продолжением описания функционирования обработки "FormCodeGenerator " в режиме сравнения форм и генерирования кода на основании сравнения. Подходит для перевода уже доработанных форм с интерактивной доработки на программную. Данный режим работы обработки снизит издержки при дальнейших обновлениях конфигураций.

5 стартмани

21.12.2020    1911    11    huxuxuya    11    

Интерактивная справка по объектам 1С (подключаемое расширение)

Практика программирования Работа с интерфейсом v8 ERP2 Абонемент ($m)

База знаний, подключаемая к объектам основной базы. Пополняется интерактивно, формируется в виде статей прямо в 1С (текст, картинки, таблицы, ссылки). Есть возможность прикрепления файлов, привязки к объектам 1С, возможности рейтинга и комментирования пользователями.

3 стартмани

29.09.2020    7821    45    sapervodichka    40    

Конвейер проверки качества кода

Инструментарий разработчика Практика программирования Математика и алгоритмы v8 1cv8.cf Абонемент ($m)

Jenkinsfile для выполнения проверки качества кода. Собирает информацию с АПК, EDT и BSL-LS. Сопоставляет ошибки с гит-репозиторием, выгруженным ГитКонвертором. Отправляет в Сонар.

3 стартмани

04.09.2019    27355    22    Stepa86    46    

Алгоритмы поиска пути в графе

Практика программирования Разработка v8 1cv8.cf Абонемент ($m)

Реализуем алгоритмы поиска пути в графе на платформе 1С 8.3, такие как алгоритм А*, поиск в ширину, жадный поиск, алгоритм Дейкстры и вконце волновой.

1 стартмани

09.07.2019    18691    12    RonX01    10    

Вам нравятся запросы в 1С? Промо

Практика программирования Разработка v8 v8::Запросы 1cv8.cf Абонемент ($m)

Речь не только о том, что простейший запрос с "легальным" оформлением растянется на пол-экрана, речь еще обо всем, что нужно написать "в нагрузку" к тексту запроса. Все эти "Новый Запрос", "УстановитьПараметр" и последующие пляски с обработкой результата... Пора с этим заканчивать!

1 стартмани

03.07.2019    22146    5    m-rv    88    

Работа с публикациями "Инфостарт"

Практика программирования О сообществе WEB v8 УУ Абонемент ($m)

Работа с рублевыми публикациями на сайте "Инфостарт": ведение клиентов, заказов, обновление файлов публикации, рассылка обновлений.

1 стартмани

13.09.2018    22893    13    RocKeR_13    16    

HTTP Сервисы: Путь к своему сервису. Часть 3

Инструментарий разработчика Практика программирования v8 1cv8.cf Абонемент ($m)

Продолжение статьи «HTTP Сервисы: Путь к своему сервису. Часть 2». В предыдущих частях мы использовали только Get, в этой части поговорим о других методах и длительных операциях.

1 стартмани

27.08.2018    40699    63    dsdred    17    

Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции

Инструментарий разработчика Практика программирования v8 Абонемент ($m)

Данная публикация содержит в себе редактор и интерактивную карту склада или иного помещения, на которой в реальном времени отображается позиция устройства, координаты которого вычисляются по уровням сигнала нескольких роутеров Wi-Fi. В статье и приложенным к ней разработкам предлагаются инструменты и методика для реализации вычисления точной геопозиции внутри помещений с помощью нейронной сети. Конфигурация написана на релизе 1С:Предприятие 8.3.12.1412, клиентское приложение имеет минимальный уровень совместимости SDK -16.

5 стартмани

09.08.2018    29586    26    informa1555    26    

ВСТАВИТЬ В Справочник.Номенклатура (Код, Наименование) ЗНАЧЕНИЯ ("001", "Новый товар") Промо

Практика программирования v8 v8::Запросы 1cv8.cf Абонемент ($m)

Вас не обманывают ваши глаза, это запрос на изменение данных! И это работает без прямого доступа к БД, регистрации и смс.

1 стартмани

01.06.2018    31548    88    m-rv    57    

Работа с данными выбора

Практика программирования Работа с интерфейсом v8 Россия Абонемент ($m)

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

1 стартмани

17.07.2018    51569    18    kalyaka    16    

Полезные примеры составления схемы компоновки данных #2

Практика программирования v8 v8::СКД 1cv8.cf Абонемент ($m)

Еще один набор примеров как решить частные задачи в СКД

1 стартмани

22.05.2018    32901    11    SITR-utyos    13    

Печатная форма, сделанная как расширение конфигурации для БП 3.0. Новые возможности БСП

Практика программирования Универсальные печатные формы v8 БП3.0 Абонемент ($m)

Печатные формы на внешних обработках скоро канут в лету. На смену им приходят ПФ, реализованные в виде расширений конфигурации. Не нашел на сайте примеров таких расширений. Привожу пример подобного расширения для БП 3.0.

1 стартмани

06.12.2017    28015    54    kwazi    6    

Заполняем по шаблону (по умолчанию) Промо

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

08.02.2018    29460    19    mvxyz    17    

Паузы при исполнении кода (Sleep для 1С)

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

Решил проверить все найденные варианты паузы для 1С. В результате получилась обработка для тестирования и небольшая статья с итогом.

1 стартмани

28.11.2017    49769    13    swimdog    43    

Telegram-боты

Практика программирования v8 Абонемент ($m)

Описание теории, разбор архитектуры и пример реализации telegram-ботов. Сразу скажу, со структурированием изложения мало что могу поделать. :) редакция от 18.07.2018 Правки последней редакции выделены жирным.

1 стартмани

01.09.2017    34682    134    PLAstic    59    

Умный дом на 1С + ардуино

Практика программирования v8 Абонемент ($m)

Конфигурация для автоматизации быта программиста 1C и не только. В данной статье будет рассказано, как можно использовать 1С для задач, не входящих в стандартные рамки этой платформы. Например, управление домом. В качестве периферии для подключения будет использован микроконтроллер (МК) Ардуино, но на нём не будет никакой логической нагрузки, весь процесс будет проходить на сервере 1С. Работа с пинами ввода/вывода происходит напрямую из 1С.

1 стартмани

07.08.2017    23908    21    sasha777666    63    

Нечеткий поиск одним запросом Промо

Практика программирования v8 1cv8.cf Абонемент ($m)

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

1 стартмани

28.12.2015    29047    71    vasvl123    9    

Расширения конфигураций 1С: учимся перехватывать методы

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

30.05.2017    137333    13    signum2009    48    

Регулярные выражения – это просто. Построитель и отладчик регулярных выражений

Инструментарий разработчика Практика программирования v8 1cv8.cf Абонемент ($m)

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

1 стартмани

13.03.2017    32830    115    romasna    49    

Распознавание текста с помощью нейросетей Google Cloud Vision и 1С

Практика программирования v8 1cv8.cf Абонемент ($m)

Возможности Google Cloud Vision в распознавании текста.

1 стартмани

08.02.2017    31159    131    kiv1c    18    

1С: Предприятие + корпоративный чат, как наладить оперативные уведомления за 10 минут Промо

Практика программирования v8 Абонемент ($m)

Как сделать автоматические уведомления о разных событиях из 1С в корпоративный чат MyChat для сотрудников компании

1 стартмани

14.08.2016    49394    36    Demanoidos    60    

Графическая схема. Управление при помощи XDTO.

Практика программирования v8 Абонемент ($m)

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

2 стартмани

16.01.2017    23722    106    Alxby    23    

Простой редактор плана помещения JavaScript

Практика программирования Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

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

1 стартмани

23.11.2016    22165    97    igel9780    22    

Работа с двоичными данными на примере чтения файлов изображений. Новые возможности 8.3.9

Практика программирования WEB v8 1cv8.cf Россия Абонемент ($m)

В статье приводятся новые функции по работе с двоичными данными, появившимися в версии платформы 8.3.9 , на примере анализа формата и размера изображений. А также пример отправки изображения через API ВКонтакте с помощью новых объектов (без использования ОбъединитьФайлы())

1 стартмани

14.11.2016    27755    16    Anton64    22    

Быстрое определение интервалов в запросе Промо

Практика программирования v8 Абонемент ($m)

В статье описывается новый метод определения интервалов между данными различных записей в запросе. В отличие от общеизвестного метода, время работы предлагаемого метода зависит от объема данных ЛИНЕЙНО. Это обеспечивает ему значительный выигрыш по быстродействию на больших объемах данных. В качестве иллюстрации возможностей метода приведен отчет, показывающий гистограмму распределения времени между продажами.

1 стартмани

01.10.2015    53472    35    ildarovich    41    

Загрузка файлов на сервер с прогрессом и докачкой

Практика программирования v8 1cv8.cf Россия Абонемент ($m)

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

1 стартмани

04.10.2016    14128    53    mrstomak    21    

Несколько шаблонов для доработки типовых конфигураций

Практика программирования Инструментарий разработчика v8 v8::УФ Абонемент ($m)

Предлагаю несколько каркасов для создания новых объектов в типовых конфигурациях. Это выжимка из кода нескольких конфигураций, которая позволит быстро и красиво создавать и дорабатывать объекты метаданных с соблюдением идеологии исходной системы

1 стартмани

03.10.2016    37787    95    json    25    

HTTP-сервис: отчеты [Расширение]

Практика программирования Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Это HTTP-сервис, который возвращает почти любой отчет в HTML, XLSX или в JSON. Сохраните вариант отчета, получите на него ссылку и можно получить данные без захода в 1С. Работает в конфигурациях на основе БСП 2.3.3+, для отчетов на СКД и в 1С 8.3.8+

2 стартмани

30.08.2016    28124    143    Stepa86    15    

Использование методов глобального контекста в системе компоновки данных или недокументированные возможности СКД

Практика программирования Математика и алгоритмы v8::УФ v8::СКД 1cv8.cf Абонемент ($m)

Прочитал на форуме, что СтрРазделить() и ТекущаяДата() работают в языке выражений системы компоновки данных. Почитал справку, там ничего не нашёл, поэтому не поверил. Посмотрел на практике – и правда работает… В данной статье попытался привести весь перечень методов, работающих в СКД, но не описанных в документации.

1 стартмани

05.08.2016    38713    26    klinval    40    

Недокументированное использование стандартных форм Upd.

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

Вам не хватает возможностей в платформе 1С или у Вас нет времени на углубленное изучение платформы 1С? Рассмотрены возможности использования стандартных форм, вызываемых из платформы.

1 стартмани

26.07.2016    29485    78    ZhokhovM    60    

Хранение файлов в томах на диске (для УПП 1.3)

Практика программирования v8 УПП1 Абонемент ($m)

Доработка типовой УПП 1.3 в плане хранения присоединенных файлов вне базы данных

2 стартмани

05.06.2016    59528    11    wowik    32    

БСП 2.3 и БСП 3.0: Просто про выполнение внешней обработки в фоне (c индикацией прогресса выполнения)

Инструментарий разработчика Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

Простое пояснение о том, как сделать внешнюю обработку с фоновым выполнением и индикацией процесса для любой конфигурации на основе БСП 2.3.2. UPDATE 20/09/19: добавлен вариант обработки с индикацией процента выполнения и статусом выполнения для БСП 3.0.

1 стартмани

18.05.2016    64289    191    rozer    65    

Остатки на каждый день в запросе

Практика программирования Учет ТМЦ Учет ТМЦ v8 1cv8.cf УУ Абонемент ($m)

Запрос формирует остатки товаров на каждый день в пределах выбранного периода.

1 стартмани

26.04.2016    62053    19    arakelyan    20    

Вывод остатка товаров на складе в документ Реализация товаров и услуг (для конфигурации Управление Торговлей 11.2 / 11.3 / 11.4)

Практика программирования Оптовая торговля Обработка документов Оптовая торговля v8::ОУ УТ10 УУ Абонемент ($m)

Пример динамического изменения (добавления) данных в табличной части формы стандартного документа из внешней обработки с использованием типа команды "ЗаполнениеФормы".

1 стартмани

25.04.2016    33346    131    dklp    20    

Еще один способ расчета остатков на каждый день в запросе

Математика и алгоритмы Практика программирования v8 Абонемент ($m)

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

1 стартмани

24.04.2016    35760    50    ildarovich    23    

Вывод печатных форм с запросом данных в форму "Печать документов" из подсистемы БСП "Печать".

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

Все не раз видели, как в типовых конфигурациях, построенных на основе БСП (Библиотека стандартных подсистем), печатные формы, построенные на основе Табличного документа, выводятся в специальную форму "ПечатьДокументов". Эта форма входит в состав подсистемы "Печать" из БСП. При разработке своих печатных форм, иногда необходимо запросить у пользователя дополнительные данные необходимые для печати. Тут встает вопрос, как в этом случае вывести печатную форму в форму "Печать документа". В этой статье я рассмотрю, как реализовать вывод печатной формы в упомянутую форму из подсистемы "Печать", в случае если мы хотим перед выводом печатной формы запросить у пользователя дополнительные данные. Здесь будут рассмотрены два случая: когда реализуется печатная форма с использованием подсистемы "Дополнительные отчеты и обработки" и когда печатная форма добавляется в конфигурацию в режиме конфигуратора, т.е. вносятся изменения в типовую конфигурацию.

1 стартмани

29.03.2016    94650    185    lopatin    14    

Выполнение JavaScript кода из 1С в объекте Поле HTML Документа (HTML 5) и вызов события в 1С ПриНажатии

Практика программирования v8 1cv8.cf Россия Абонемент ($m)

Пример выполнения JS кода из 1С в Поле HTML Документа под управляемыми формами, с удобным получением результата в 1С(С помощью вызова привязанного события ПриНажатии к элементу ПолеHTMLДокумента)

1 стартмани

22.03.2016    84156    162    igo1    54    

Количество дней недели (понедельников/вторников/...) в заданном диапазоне одним запросом

Практика программирования v8 Абонемент ($m)

При реализации периодического авто-заполнения маршрутных листов по графику (недельному) необходимо было просчитать стоимость всего периода, с условием выездов только по определенным дням. Заморачиваться с обходом результата не хотелось. Пришлось написать "Небольшой" запрос.

1 стартмани

03.03.2016    19151    1    Alexander.Shvets    5    

Простые радости жизни программиста 1С: выбор типа значения

Работа с интерфейсом Практика программирования v8 1cv8.cf Абонемент ($m)

Предлагаемая в работе обработка включает обычную и управляемую формы, которые максимально точно реализуют функциональность системного диалога выбора типа в толстом клиенте обычное приложение (включая оформление диалога). Эти формы имеют дополнительные интерфейсные удобства и могут быть использованы в качестве альтернативных диалогов выбора типа.

1 стартмани

17.02.2016    51801    54    yuraos    17    

Отображение прогресса выполнения длительных операций в БСП и их отладка в текущем сеансе.

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

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

1 стартмани

17.02.2016    57881    186    balanton    23    

Яндекс.Деньги "Благотворительность"

Инструментарий разработчика Практика программирования v8 1cv8.cf Абонемент ($m)

Яндекс.Деньги теперь в 1С. Форма для приема благотворительных взносов. Форму легко сделать и вставить на любую страницу сайта или блога. Платежи будут приходить на ваш кошелек. На форме есть три способа платежа: из кошелька, с банковской карты, с баланса мобильного.

1 стартмани

16.02.2016    24253    8    Tatitutu    5    

Мастер рассылки e-mail 2.2 для управляемых форм

Практика программирования Email v8 v8::УФ ERP2 БП3.0 УТ11 Абонемент ($m)

Для пользователей: переделанный из старый разработки под 8.2 с использованием библиотеки Мастер рассылки e-mail 2.2 (ERP, УТ, БП) (Только управляемые формы), который теперь может запускаться под любой версией платформы с разрешенными или запрещенными модальными/синхронными вызовами в конфигурации. Также удобный выбор e-mail и их владельцев с помощью отбора динамического списка по любым критериям и галочки исключения.

1 стартмани

29.12.2015    39687    20    milkers    4