Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Выполнить процедуру формы документа со своей обработки. Как?          
Alaid Подменю пользователя
сообщение 13.10.11, 13:29
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 9
Спасибо сказали: 1 раз
Рейтинг: 0

Всем хорошего настроения!

Парни, извините, может вопрос ламерский. Восьмерку только осваиваю.

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

Может ткните пальцем туда, где про это написано.

Заранее благодарен!

DartRomanius Подменю пользователя
сообщение 13.10.11, 14:02
Сообщение #2

Ветеран
Иконка группы
Группа: Местный
Сообщений: 824
Из: Запорожье
Спасибо сказали: 145 раз
Рейтинг: 0

Если обращаться к документу в контексте объекта или ссылки то никак.


Signature
-----------------------------------------------------------------------------------
Единственный, интуитивно понятный интерфейс - мамкина сиська!
Всему остальному надо учиться! (с) Не знаю кто....

Vofka Подменю пользователя
сообщение 13.10.11, 14:13
Сообщение #3

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Форма = Ссылка.ПолучитьФорму("ФормаДокумента");
Форма.Открыть();
Форма.МояЛюбимаяПроцедурочка() // в форме должна быть объявлена как экспортная
Форма.Закрыть();

Спасибо сказали: Dimon_ZP, vbi,

Alaid Подменю пользователя
сообщение 13.10.11, 14:58
Сообщение #4

Молчаливый
*
Группа: Пользователи
Сообщений: 9
Спасибо сказали: 1 раз
Рейтинг: 0

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

Номенклатура=Справочники.Номенклатура;
            Ном=Номенклатура.НайтиПоРеквизиту("ProdID", Rs2.Fields("ProdID").Value);
            Если Ном = Номенклатура.ПустаяСсылка() Тогда
                Сообщить("Номенклатура не найдена!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
            Иначе
                Сообщить(Ном);
                ОбъектДок=НовДок.Ссылка.ПолучитьОбъект();
                НоваяСтрока=ОбъектДок.Товары.Добавить();
                НоваяСтрока.Номенклатура=Ном;
                Форма = НовДок.Ссылка.ПолучитьФорму("ФормаДокумента");
                Форма.Открыть();
                Форма.ТоварыНоменклатураПриИзменении(Форма.Товары.Номенклатура); // Проблемная строка
                Форма.Закрыть();
                ОбъектДок.Записать();
            КонецЕсли;


Вываливается Предупреждение "Поле объекта не обнаружено (Номенклатура)"
Просто "Форма.Номенклатура" тоже не катит.

У меня здесь документ "Реализация товаров и услуг", табличная часть "Товары", Колонка "Номенклатура".

Спасибо сказали: robot1,

Vofka Подменю пользователя
сообщение 13.10.11, 15:54
Сообщение #5

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Ну и не будет конечно же работать. Откуда система знает какую строчку пересчитать? Что у вас находится в ТоварыНоменклатураПриИзменении() ?

Спасибо сказали: Alaid, robot1,

Alaid Подменю пользователя
сообщение 13.10.11, 17:00
Сообщение #6

Молчаливый
*
Группа: Пользователи
Сообщений: 9
Спасибо сказали: 1 раз
Рейтинг: 0

Цитата(Vofka @ 13.10.11, 16:54) *
Ну и не будет конечно же работать. Откуда система знает какую строчку пересчитать? Что у вас находится в ТоварыНоменклатураПриИзменении() ?


Большое спасибо за отклик.

Процедура ТоварыНоменклатураПриИзменении(Элемент) Экспорт

    ПриИзмененииНоменклатурыТовары(Элемент);

КонецПроцедуры // ТоварыНоменклатураПриИзменении()


После описания процедуры ключевое слово "Экспорт"
добавил я.

Процедура ПриИзмененииНоменклатурыТовары(Элемент)

    СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;

    // Выполнить общие действия для всех документов при изменении номенклатуры.
    ОбработкаТабличныхЧастей.ПриИзмененииНоменклатурыТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
    ЗаполнитьСчетаУчетаВСтрокеТабЧастиРегл(СтрокаТабличнойЧасти, "Товары", ОтражатьВБухгалтерскомУчете, ОтражатьВНалоговомУчете);
    ПриИзмененииНоменклатурыТоваров(СтрокаТабличнойЧасти);

    // Рассчитать реквизиты табличной части.
    ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
    ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
    
    УчетСерийныхНомеров.ПроверитьСерийныеНомера(СтрокаТабличнойЧасти, ЭтотОбъект);

    // Ввод состава набора
    УправлениеЗапасами.ДобавитьСоставНабора(СтрокаТабличнойЧасти, ЭтотОбъект);

КонецПроцедуры // ПриИзмененииНоменклатурыТовары()


Меня интересует заполнение всего двух полей (Единица измерения и Коэффициент) которые я мог бы заполнить и прямым
присваиванием, но хочется сделать все как-бы максимально правильно.

И еще вопрос такого плана. А что это за манера такая объявлять процедуру с единственной строчкой вызовом еще одной процедуры?
Причина редактирования: долго мне ещё исправлять?! Пользуйтесь специальными тегами для кода!!!

shurik_shurik Подменю пользователя
сообщение 13.10.11, 17:53
Сообщение #7

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 124
Из: Полтавская обл.
Спасибо сказали: 72 раз
Рейтинг: 0

Цитата(Alaid @ 13.10.11, 18:00) *
А что это за манера такая объявлять процедуру с единственной строчкой вызовом еще одной процедуры?

ТоварыНоменклатураПриИзменении(Элемент) Экспорт

Это обработчик события элемента формы, а это:
ПриИзмененииНоменклатурыТовары(Элемент)

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

Передать в нее нужною строку и объект... без гемора с формой...

Спасибо сказали: Alaid,

Alaid Подменю пользователя
сообщение 14.10.11, 12:03
Сообщение #8

Молчаливый
*
Группа: Пользователи
Сообщений: 9
Спасибо сказали: 1 раз
Рейтинг: 0

Цитата(shurik_shurik @ 13.10.11, 18:53) *
ОбработкаТабличныхЧастей.ПриИзмененииНоменклатурыТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);

Передать в нее нужною строку и объект... без гемора с формой...


Вот она эта процедура.
ОбработкаТабличныхЧастей.ЗаполнитьЕдиницуТабЧасти(НоваяСтрока, НовДок);


Спасибо большое, дорогие коллеги, без вас бы не справился!

MOTOPARTNER Подменю пользователя
сообщение 23.10.20, 16:09
Сообщение #9

Общительный
**
Группа: Пользователи
Сообщений: 41
Из: Харьков
Спасибо сказали: 1 раз
Рейтинг: 0

Цитата(Vofka @ 13.10.11, 15:13) *
Форма = Ссылка.ПолучитьФорму("ФормаДокумента");
Форма.Открыть();
Форма.МояЛюбимаяПроцедурочка() // в форме должна быть объявлена как экспортная
Форма.Закрыть();


Спасибо работает но в сам документ при выборе не вставляется информация она остается в той обработке(((

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 15:00
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!