Подстановка значений в табл. часть документа

1. Hunta 21.10.08 16:46 Сейчас в теме
Помогите пожалуйста, в ТИС 9.2 В поступление ТМЦ добавил новый реквизит Штрих код, чтобы был поиск по этому реквизиту, все работает, но не подставляются другие значения (ед. изм, цена розн и т.п). При выборе к колонке Номенклатура позиции ТМЦ, всеотлично подставляется. Как заставить, чтобы при нахождении по ШК подставлялись и остальные реквизиты? Нашёл в модуле формы процедуру ПриИзмененииНоменклатуры(), пробовал её прописать в формулу колонки Номенклатура, не работает. Добавлял:

Форма.Номенклатура.ВыполнятьФормулуТолькоПриИзменении(0)

Не работает, по идее ведь должно срабатывать при переходе от колонки к колонке.
Подскажите пожалуйста, воде всё уже испробовал...
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. PeRom 51 21.10.08 16:55 Сейчас в теме
А где ШК ищешь(процедура)?
а те что в формулах колонки срабатывают только при интерактивном изменении...
3. Hunta 21.10.08 17:04 Сейчас в теме
В табличную часть добавлен реквизит ШК (строка, 13)

Код
Процедура ПоискПоШК()
      
   ШтрихКод            = ШК;
   СпрЕдИзм            = СоздатьОбъект ("Справочник.Единицы");
   СпрНоменклатура = СоздатьОбъект ("Справочник.Номенклатура");

   СпрЕдИзм.НайтиПоРеквизиту("ШтрихКод",ШтрихКод,1);
      
   Номенклатура = СпрНоменклатура.ТекущийЭлемент();
      
КонецПроцедуры
Показать полностью


Срабатывает совершенно верно, только при выборе в колонке Номенклатура.
Нашёл процедуру глПересчетТаблЧасти (), но не могу добиться её срабатывания, максимум, что удалось выжать, это подставление Страны происхождения

4. PeRom 51 21.10.08 17:28 Сейчас в теме
Номенклатура = СпрНоменклатура.ТекущийЭлемент();//номенкл выбрал программно, а процедура ПриИзмененииНоменклатуры() срабатывает только при интерактивном выборе, может стоит её здесь и запустить????)
5. Hunta 21.10.08 17:29 Сейчас в теме
Поправка

Код

Процедура ПоискПоШК()
      
   ШтрихКод           = ШК;
   СпрЕдИзм            = СоздатьОбъект ("Справочник.Единицы");
   СпрНоменклатура = СоздатьОбъект ("Справочник.Номенклатура");

   СпрЕдИзм.НайтиПоРеквизиту("ШтрихКод",ШтрихКод,1);
   
   Если СпрНоменклатура.НайтиЭлемент (СпрЕдИзм.Владелец) = 0 Тогда
      
      Предупреждение ("Товар с данным штрих кодом не найден!");
      
   КонецЕсли;
      
   Номенклатура = СпрНоменклатура.ТекущийЭлемент();
   
КонецПроцедуры

Показать полностью
6. PeRom 51 21.10.08 17:47 Сейчас в теме
Ну ииииииии???

А если так попробовать:
Код
//....................................   
   Номенклатура = СпрНоменклатура.ТекущийЭлемент();
   ПриИзмененииНоменклатуры();
КонецПроцедуры
Показать полностью
7. Hunta 21.10.08 17:49 Сейчас в теме
Пожалуйста объясните на пальцах. Т.е. после
Код
Номенклатура = СпрНоменклатура.ТекущийЭлемент();
Показать полностью

добавить вызов процедуры
Код
ПриИзмененииНоменклатуры()
Показать полностью

Попробовал, заполнилось тока поле Страна.
8. PeRom 51 21.10.08 17:56 Сейчас в теме
А что ещё должно заполнится? или что ещё заполняется через проц ПриИзмененииНоменклатуры()? (с типовыми практически не работаю, поэтому и спрашиваю)
9. PeRom 51 21.10.08 17:58 Сейчас в теме
Там ещё наверняка есть проц ОбработкаПодбора(), она срабатывает при закрытии формы выбора, можт в ту сторону копнуть?
10. Hunta 21.10.08 17:59 Сейчас в теме
Заполняются Единицы, Коэффициент, Цена, Наценка, Розничная цена ну и Страна.
11. AlexeyPapanov 466 21.10.08 22:52 Сейчас в теме
у вас штрихкод это реквизит типа "справочник"?
может ошибка в том, что программа не может правильно спозиционироваться на нужном элементе справочника Номенклатура, отсюда и выходит косяк с невозможностью заполнить остальные реквизиты.
в 1с есть функции, помогающие найти владельца (или что-то другое - в общем, найти хозяина выбранного ШК).
как справочник Договоры, подчинен Контрагентам, так и ШК должен быть подчинен Номенклатуре, как мне кажется.
может я и ошибаюсь, но по логике я пришел к такому выводу.
12. PeRom 51 22.10.08 10:54 Сейчас в теме
13. Hunta 22.10.08 10:59 Сейчас в теме
>"не может правильно спозиционироваться на нужном элементе справочника Номенклатура"

Почему не может, она же подставляет в колонку Номенклатура, текуйщий элемент, который нашла по реквизиту подчинённого ему справочника Единицы измерения

Я вот тут думаю, пойти путем, при переходе от колонки Штрих код всё равно открывать форму справочника для выбора, и позиционировать курсор на найденом товаре, т.е. в принципе получится , что мы так и так выбираем нужный нам элемент.
Тока вот пока не могу найти как в форме выбора спозиционировать на текущем элементе...
14. PeRom 51 22.10.08 11:13 Сейчас в теме
покажи ПриИзмененииНоменклатуры()
попробуем с ней разобраться
15. Hunta 22.10.08 11:25 Сейчас в теме
Код
//******************************************************************************
// ПриИзмененииНоменклатуры()
//
// Параметры:
//  Нет
//
// Возвращаемое значение:
//  Нет
//
// Вызывается из формул элементов диалога:
//  Колонка "Номенклатура" табличной части документа.
//
// Описание:
//  Производит проверку правильности выбора номенклатуры (Не даем выбрать услугу)
//
Процедура ПриИзмененииНоменклатуры()
   
   Если Номенклатура.Выбран()=1 Тогда
      Если Номенклатура.ВидНоменклатуры=Перечисление.ВидыНоменклатуры.Услуга Тогда
         Предупреждение("В этом документе услугу выбирать нельзя!
         |Для оформления поступления услуг воспользуйтесь документом """
         + ПолучитьПустоеЗначение("Документ.ПоступлениеПрочее").ПредставлениеВида()+""".",60);
          Номенклатура = "";
      ИначеЕсли Номенклатура.ВидНоменклатуры=Перечисление.ВидыНоменклатуры.Работа Тогда
         Предупреждение("В этом документе работы выбирать нельзя!
         |Для оформления поступления работ воспользуйтесь документом """
         + ПолучитьПустоеЗначение("Документ.ПоступлениеПрочее").ПредставлениеВида()+""".",60);
          Номенклатура = "";
      КонецЕсли;   
   КонецЕсли;     
    
   СтараяПартия = Партия; 
   Если ПустоеЗначение(Партия) = 0 Тогда
      Если Партия.Владелец <>  Номенклатура Тогда
         УдалитьПартию(); // реквизит Партия будет очищен в глПересчетТаблЧасти
      КонецЕсли;
   КонецЕсли;
   
   глПересчетТаблЧасти(Контекст,Форма.ТекущаяКолонка());   
   
    СоздатьПартию(СтараяПартия);

КонецПроцедуры // ПриИзмененииНоменклатуры()
Показать полностью



Думаю, что особый интерес вызывает
Код
глПересчетТаблЧасти(Контекст,Форма.ТекущаяКолонка());   
Показать полностью

Но привызове её в колонке штирих код, как ей передать найденные данные из колонки номенклатура?
16. PeRom 51 22.10.08 11:50 Сейчас в теме
А что в ней с ТекущаяКолонка() происходит? наврядли там проверяеся позиция в колонке, скорее всего только имя...
А насчёт передачи нужной колонки непомню, приходится больше 8-ой заниматься, а там совсем другой принцип.
17. Hunta 22.10.08 12:08 Сейчас в теме
Понятно, буду дальше мозг ломать. всем спасибо за помощь и терпение ;). Как сделаю, отпишу....
18. PeRom 51 22.10.08 12:10 Сейчас в теме
Удачи! Будут вопросы, пиши.
19. Hunta 22.10.08 14:44 Сейчас в теме
Ура!!!! Победил.
Добавил глПересчетТаблЧасти (Контекст, "Номенклатура");
с параментром колонки Номенклатура


...
Код
ПроставитьНаценку("Цена");
глПересчетТаблЧасти (Контекст, "Номенклатура");
Показать полностью

...
Rimidalw; +1 Ответить
20. PeRom 51 22.10.08 15:15 Сейчас в теме
Ну вот и добрался! Поздравляю.:)
21. Hunta 22.10.08 16:05 Сейчас в теме
=) Спасибо! Тебе спасибо, за отзывчивость...
22. Hunta 24.10.08 14:58 Сейчас в теме
Одну часть сделал, вот столкнулся ещё с проблемой, из подбора в накладной не заполняется поле Штрих код. Подскажите пожалуйста, как из подбора передать в табл. часть документа реквизит подчинённого справочника - Единицы измерения, и подставить его в соответствуюющую колонку табл. части документа. Просто даже не знаю где копать, в модуле формы для подбора, или в модуле формы документа, и каким образом из подбора добавляются позиции?
23. lefthander 24.10.08 16:21 Сейчас в теме
юзай методы подбора в части обработкаподбора("Элемент","КонтФормы") - как раз вторым параметром передается контекст формы откуда открыли подбор а первый параметр это и есть элемент справочника подбора или документ или снова код в студию ;-)
Или через СписокЗначений передай нужные параметры методом ОткрытьПодбор
24. Hunta 24.10.08 16:42 Сейчас в теме
Я правильно понял? В форме подбора выбираются элементы и добавляются в СписокЗначений. Вот Здесь интересно нужен ли поиск по подчинённым объектам справочника, если мы хотим и их выбрать-найти???? а потом из таблицыЗначений всё это хозяйство выгружается в форму документа вызвавшего обработку ОткрытьПодбор. И ещё вопрос, если это все в начале добавляется в ТалицуЗначений, то в этой таблице должно быть столько же значений, сколько значений мы хотим получить от подбора???
Данный код вызывается при выборе Номенклатуры в документе, для заполнения поля ШК, он работает, а вот из подбора не работает...
Код
Процедура ПоказатьШК()
   
   СпрНомен   = СоздатьОбъект ("Справочник.Номенклатура");
   ТекТов     = СпрНомен.ТекущийЭлемент();
   
   СпрПодчЕд  = СоздатьОбъект ("Справочник.Единицы");
   СпрПодчЕд.ИспользоватьВладельца (Номенклатура.ТекущийЭлемент());
   
   //   
   Если Номенклатура <> "" Тогда
      
      СпрПодчЕд.ВыбратьЭлементы();
      
      //
      Пока СпрПодчЕд.ПолучитьЭлемент () = 1  Цикл
      
         ШК = СпрПодчЕд.ШтрихКод;
         
      КонецЦикла;  // Пока 
      //
   
      КонецЕсли;
      //

КонецПроцедуры    // ПоказатьШК ()  
Показать полностью
25. lefthander 27.10.08 12:11 Сейчас в теме
//*Подскажите пожалуйста, как из подбора передать в табл. часть документа реквизит подчинённого справочника - Единицы измерения, и подставить его в соответствуюющую колонку табл. части документа.
Ну если сам объект передал, типа Товар, то

Единица=Товар.ЕдиницаПоУмолчанию;

Ну или вот кусок кода может поможет ;-)

//****************************
ВвестиЧисло(Штрих,"Введите Штрих Код",13,0,);

КодТов=Число(Сред(Строка(Штрих),2,6));
СпрТовар=СоздатьОбъект("Справочник.Номенклатура");
СпрТовар.НайтиПоКоду(КодТов);
Если (Штрих<1000000000000) или (СпрТовар.НайтиПоКоду(КодТов)=0) тогда
Предупреждение ("Не верно!");
Иначе
ШтрихКод=Штрих;
СпрШтрих=СоздатьОбъект("Справочник.ШтрихКоды");
Единицы=СоздатьОбъект("Справочник.Единицы");
СпрШтрих.ИспользоватьВладельца(СпрТовар.ТекущийЭлемент());
Единицы.ИспользоватьВладельца(СпрТовар.ТекущийЭлемент());
СпрШтрих.НайтиПоКоду(Штрих);
Товар=СпрТовар.ТекущийЭлемент();
Цена=СпрШтрих.РозничнаяЦена;
Количество=1;
РозничнаяЦена=СпрШтрих.РозничнаяЦена;
РозничнаяСумма=РозничнаяЦена*Количество;
Коэффициент=1;
Единицы.ВыбратьЭлементы();
Единица=Единицы.ТекущийЭлемент();
КонецЕсли;
//*
Здесь вводится число 13 знаков - ШК, выделяется 6 знаков начиная со второго - это код товара в спр номенклатуры, по этому коду находится товар и все что к нему идет. Спр ШК подчинен Номенклатуре.
26. Hunta 27.10.08 23:51 Сейчас в теме
Вышел из ситуации применив

Процедура ПриОкончанииРедактированияСтроки()
ПоказатьШК()
КонецПроцедуры

Но в этом случае необходимо проходить ручками все строки табл. части дока, конечно не очень практично...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот