Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
18 апр 2024, 04:11

Вызов функции модуля формы документа из внешней обработки

Автор red14_88, 26 фев 2011, 15:20

0 Пользователей и 1 гость просматривают эту тему.

red14_88

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

prog1c7.7


red14_88

//******************************************************************************
// ПриИзмененииНоменклатуры()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  Нет
//
// Вызывается из формул элементов диалога:
//  Колонка "Номенклатура" табличной части документа.
//
// Описание:
//  Производит проверку правильности выбора номенклатуры (Не даем выбрать услугу)
//
Процедура ПриИзмененииНоменклатуры()
   
   Если Номенклатура.Выбран()=1 Тогда
      Если Номенклатура.ВидНоменклатуры=Перечисление.ВидыНоменклатуры.Услуга Тогда
         Предупреждение("В этом документе услугу выбирать нельзя!",60);
          Номенклатура = "";
      ИначеЕсли Номенклатура.ВидНоменклатуры=Перечисление.ВидыНоменклатуры.Работа Тогда
         Предупреждение("В этом документе работы выбирать нельзя!",60);
          Номенклатура = "";
      КонецЕсли;   
   КонецЕсли;
   
   //Единица    = Номенклатура.БазоваяЕдиница;
   //Коэффициент = Единица.Коэффициент;
   //СтавкаНДС    = Номенклатура.СтавкаНДС;
   //
   СтараяПартия = Партия;
   Если ПустоеЗначение(Партия) = 0 Тогда
      Если Партия.Владелец <>  Номенклатура Тогда
         УдалитьПартию();
         Партия = "";
      КонецЕсли;
   КонецЕсли;
   
    СоздатьПартию(СтараяПартия);

   Если ПустоеЗначение(Номенклатура) = 1 Тогда
         
      // Очистили Номенклатуру
      Единица       = 0;
      Коэффициент    = 0;                 
      Возврат;
   КонецЕсли;

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

prog1c7.7

Пока НовОбъект.ПолучитьСтроку () = 1 Цикл
НовОбъект.АктивизироватьСтроку(НомерСтроки);

red14_88

Активизация строки не даёт ровным счетом ничего... :dfbsdfbsdf:

prog1c7.7

ты делаешь обход в нем делаешь процедуру, правильно понял?
зачем обработкаожидания ?

red14_88

Другого способа вызвать процедуру не нашёл вообще.

prog1c7.7

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

red14_88

Да, как заполняться автоматом (в зависимости от вида документа). Обработка ожидания выбрана просто как первый попавшийся под руку вариант. Нужно заполнение автоматом, реализованное в форме каждого из документов поутём обращения к методам формы. Это должно обеспечить универсальноть и тот момент, что если что-то изменить в методе формы-потом не надо будет лезть в обработку.

prog1c7.7

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

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск