Подстановка значений в табл. часть документа
Помогите пожалуйста, в ТИС 9.2 В поступление ТМЦ добавил новый реквизит Штрих код, чтобы был поиск по этому реквизиту, все работает, но не подставляются другие значения (ед. изм, цена розн и т.п). При выборе к колонке Номенклатура позиции ТМЦ, всеотлично подставляется. Как заставить, чтобы при нахождении по ШК подставлялись и остальные реквизиты? Нашёл в модуле формы процедуру ПриИзмененииНоменклатуры(), пробовал её прописать в формулу колонки Номенклатура, не работает. Добавлял:
Форма.Номенклатура.ВыполнятьФормулуТолькоПриИзменении(0)
Не работает, по идее ведь должно срабатывать при переходе от колонки к колонке.
Подскажите пожалуйста, воде всё уже испробовал...
Форма.Номенклатура.ВыполнятьФормулуТолькоПриИзменении(0)
Не работает, по идее ведь должно срабатывать при переходе от колонки к колонке.
Подскажите пожалуйста, воде всё уже испробовал...
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
В табличную часть добавлен реквизит ШК (строка, 13)
Срабатывает совершенно верно, только при выборе в колонке Номенклатура.
Нашёл процедуру глПересчетТаблЧасти (), но не могу добиться её срабатывания, максимум, что удалось выжать, это подставление Страны происхождения
Код |
---|
Процедура ПоискПоШК()
ШтрихКод = ШК;
СпрЕдИзм = СоздатьОбъект ("Справочник.Единицы");
СпрНоменклатура = СоздатьОбъект ("Справочник.Номенклатура");
СпрЕдИзм.НайтиПоРеквизиту("ШтрихКод",ШтрихКод,1);
Номенклатура = СпрНоменклатура.ТекущийЭлемент();
КонецПроцедуры
Показать полностью |
Срабатывает совершенно верно, только при выборе в колонке Номенклатура.
Нашёл процедуру глПересчетТаблЧасти (), но не могу добиться её срабатывания, максимум, что удалось выжать, это подставление Страны происхождения
Поправка
Код |
---|
Процедура ПоискПоШК()
ШтрихКод = ШК;
СпрЕдИзм = СоздатьОбъект ("Справочник.Единицы");
СпрНоменклатура = СоздатьОбъект ("Справочник.Номенклатура");
СпрЕдИзм.НайтиПоРеквизиту("ШтрихКод",ШтрихКод,1);
Если СпрНоменклатура.НайтиЭлемент (СпрЕдИзм.Владелец) = 0 Тогда
Предупреждение ("Товар с данным штрих кодом не найден!");
КонецЕсли;
Номенклатура = СпрНоменклатура.ТекущийЭлемент();
КонецПроцедуры
Показать полностью |
Пожалуйста объясните на пальцах. Т.е. после
добавить вызов процедуры
Попробовал, заполнилось тока поле Страна.
Код |
---|
Номенклатура = СпрНоменклатура.ТекущийЭлемент();
Показать полностью |
добавить вызов процедуры
Код |
---|
ПриИзмененииНоменклатуры()
Показать полностью |
Попробовал, заполнилось тока поле Страна.
у вас штрихкод это реквизит типа "справочник"?
может ошибка в том, что программа не может правильно спозиционироваться на нужном элементе справочника Номенклатура, отсюда и выходит косяк с невозможностью заполнить остальные реквизиты.
в 1с есть функции, помогающие найти владельца (или что-то другое - в общем, найти хозяина выбранного ШК).
как справочник Договоры, подчинен Контрагентам, так и ШК должен быть подчинен Номенклатуре, как мне кажется.
может я и ошибаюсь, но по логике я пришел к такому выводу.
может ошибка в том, что программа не может правильно спозиционироваться на нужном элементе справочника Номенклатура, отсюда и выходит косяк с невозможностью заполнить остальные реквизиты.
в 1с есть функции, помогающие найти владельца (или что-то другое - в общем, найти хозяина выбранного ШК).
как справочник Договоры, подчинен Контрагентам, так и ШК должен быть подчинен Номенклатуре, как мне кажется.
может я и ошибаюсь, но по логике я пришел к такому выводу.
>"не может правильно спозиционироваться на нужном элементе справочника Номенклатура"
Почему не может, она же подставляет в колонку Номенклатура, текуйщий элемент, который нашла по реквизиту подчинённого ему справочника Единицы измерения
Я вот тут думаю, пойти путем, при переходе от колонки Штрих код всё равно открывать форму справочника для выбора, и позиционировать курсор на найденом товаре, т.е. в принципе получится , что мы так и так выбираем нужный нам элемент.
Тока вот пока не могу найти как в форме выбора спозиционировать на текущем элементе...
Почему не может, она же подставляет в колонку Номенклатура, текуйщий элемент, который нашла по реквизиту подчинённого ему справочника Единицы измерения
Я вот тут думаю, пойти путем, при переходе от колонки Штрих код всё равно открывать форму справочника для выбора, и позиционировать курсор на найденом товаре, т.е. в принципе получится , что мы так и так выбираем нужный нам элемент.
Тока вот пока не могу найти как в форме выбора спозиционировать на текущем элементе...
Код |
---|
//******************************************************************************
// ПриИзмененииНоменклатуры()
//
// Параметры:
// Нет
//
// Возвращаемое значение:
// Нет
//
// Вызывается из формул элементов диалога:
// Колонка "Номенклатура" табличной части документа.
//
// Описание:
// Производит проверку правильности выбора номенклатуры (Не даем выбрать услугу)
//
Процедура ПриИзмененииНоменклатуры()
Если Номенклатура.Выбран()=1 Тогда
Если Номенклатура.ВидНоменклатуры=Перечисление.ВидыНоменклатуры.Услуга Тогда
Предупреждение("В этом документе услугу выбирать нельзя!
|Для оформления поступления услуг воспользуйтесь документом """
+ ПолучитьПустоеЗначение("Документ.ПоступлениеПрочее").ПредставлениеВида()+""".",60);
Номенклатура = "";
ИначеЕсли Номенклатура.ВидНоменклатуры=Перечисление.ВидыНоменклатуры.Работа Тогда
Предупреждение("В этом документе работы выбирать нельзя!
|Для оформления поступления работ воспользуйтесь документом """
+ ПолучитьПустоеЗначение("Документ.ПоступлениеПрочее").ПредставлениеВида()+""".",60);
Номенклатура = "";
КонецЕсли;
КонецЕсли;
СтараяПартия = Партия;
Если ПустоеЗначение(Партия) = 0 Тогда
Если Партия.Владелец <> Номенклатура Тогда
УдалитьПартию(); // реквизит Партия будет очищен в глПересчетТаблЧасти
КонецЕсли;
КонецЕсли;
глПересчетТаблЧасти(Контекст,Форма.ТекущаяКолонка());
СоздатьПартию(СтараяПартия);
КонецПроцедуры // ПриИзмененииНоменклатуры()
Показать полностью |
Думаю, что особый интерес вызывает
Код |
---|
глПересчетТаблЧасти(Контекст,Форма.ТекущаяКолонка());
Показать полностью |
Но привызове её в колонке штирих код, как ей передать найденные данные из колонки номенклатура?
А что в ней с ТекущаяКолонка() происходит? наврядли там проверяеся позиция в колонке, скорее всего только имя...
А насчёт передачи нужной колонки непомню, приходится больше 8-ой заниматься, а там совсем другой принцип.
А насчёт передачи нужной колонки непомню, приходится больше 8-ой заниматься, а там совсем другой принцип.
Ура!!!! Победил.
Добавил глПересчетТаблЧасти (Контекст, "Номенклатура");
с параментром колонки Номенклатура
...
...
Добавил глПересчетТаблЧасти (Контекст, "Номенклатура");
с параментром колонки Номенклатура
...
Код |
---|
ПроставитьНаценку("Цена");
глПересчетТаблЧасти (Контекст, "Номенклатура");
Показать полностью |
...
Одну часть сделал, вот столкнулся ещё с проблемой, из подбора в накладной не заполняется поле Штрих код. Подскажите пожалуйста, как из подбора передать в табл. часть документа реквизит подчинённого справочника - Единицы измерения, и подставить его в соответствуюющую колонку табл. части документа. Просто даже не знаю где копать, в модуле формы для подбора, или в модуле формы документа, и каким образом из подбора добавляются позиции?
юзай методы подбора в части обработкаподбора("Элемент","КонтФормы") - как раз вторым параметром передается контекст формы откуда открыли подбор а первый параметр это и есть элемент справочника подбора или документ или снова код в студию ;-)
Или через СписокЗначений передай нужные параметры методом ОткрытьПодбор
Или через СписокЗначений передай нужные параметры методом ОткрытьПодбор
Я правильно понял? В форме подбора выбираются элементы и добавляются в СписокЗначений. Вот Здесь интересно нужен ли поиск по подчинённым объектам справочника, если мы хотим и их выбрать-найти???? а потом из таблицыЗначений всё это хозяйство выгружается в форму документа вызвавшего обработку ОткрытьПодбор. И ещё вопрос, если это все в начале добавляется в ТалицуЗначений, то в этой таблице должно быть столько же значений, сколько значений мы хотим получить от подбора???
Данный код вызывается при выборе Номенклатуры в документе, для заполнения поля ШК, он работает, а вот из подбора не работает...
Данный код вызывается при выборе Номенклатуры в документе, для заполнения поля ШК, он работает, а вот из подбора не работает...
Код |
---|
Процедура ПоказатьШК()
СпрНомен = СоздатьОбъект ("Справочник.Номенклатура");
ТекТов = СпрНомен.ТекущийЭлемент();
СпрПодчЕд = СоздатьОбъект ("Справочник.Единицы");
СпрПодчЕд.ИспользоватьВладельца (Номенклатура.ТекущийЭлемент());
//
Если Номенклатура <> "" Тогда
СпрПодчЕд.ВыбратьЭлементы();
//
Пока СпрПодчЕд.ПолучитьЭлемент () = 1 Цикл
ШК = СпрПодчЕд.ШтрихКод;
КонецЦикла; // Пока
//
КонецЕсли;
//
КонецПроцедуры // ПоказатьШК ()
Показать полностью |
//*Подскажите пожалуйста, как из подбора передать в табл. часть документа реквизит подчинённого справочника - Единицы измерения, и подставить его в соответствуюющую колонку табл. части документа.
Ну если сам объект передал, типа Товар, то
Единица=Товар.ЕдиницаПоУмолчанию;
Ну или вот кусок кода может поможет ;-)
//****************************
ВвестиЧисло(Штрих,"Введите Штрих Код",13,0,);
КодТов=Число(Сред(Строка(Штрих),2,6));
СпрТовар=СоздатьОбъект("Справочник.Номенклатура");
СпрТовар.НайтиПоКоду(КодТов);
Если (Штрих<1000000000000) или (СпрТовар.НайтиПоКоду(КодТов)=0) тогда
Предупреждение ("Не верно!");
Иначе
ШтрихКод=Штрих;
СпрШтрих=СоздатьОбъект("Справочник.ШтрихКоды");
Единицы=СоздатьОбъект("Справочник.Единицы");
СпрШтрих.ИспользоватьВладельца(СпрТовар.ТекущийЭлемент());
Единицы.ИспользоватьВладельца(СпрТовар.ТекущийЭлемент());
СпрШтрих.НайтиПоКоду(Штрих);
Товар=СпрТовар.ТекущийЭлемент();
Цена=СпрШтрих.РозничнаяЦена;
Количество=1;
РозничнаяЦена=СпрШтрих.РозничнаяЦена;
РозничнаяСумма=РозничнаяЦена*Количество;
Коэффициент=1;
Единицы.ВыбратьЭлементы();
Единица=Единицы.ТекущийЭлемент();
КонецЕсли;
//*
Здесь вводится число 13 знаков - ШК, выделяется 6 знаков начиная со второго - это код товара в спр номенклатуры, по этому коду находится товар и все что к нему идет. Спр ШК подчинен Номенклатуре.
Ну если сам объект передал, типа Товар, то
Единица=Товар.ЕдиницаПоУмолчанию;
Ну или вот кусок кода может поможет ;-)
//****************************
ВвестиЧисло(Штрих,"Введите Штрих Код",13,0,);
КодТов=Число(Сред(Строка(Штрих),2,6));
СпрТовар=СоздатьОбъект("Справочник.Номенклатура");
СпрТовар.НайтиПоКоду(КодТов);
Если (Штрих<1000000000000) или (СпрТовар.НайтиПоКоду(КодТов)=0) тогда
Предупреждение ("Не верно!");
Иначе
ШтрихКод=Штрих;
СпрШтрих=СоздатьОбъект("Справочник.ШтрихКоды");
Единицы=СоздатьОбъект("Справочник.Единицы");
СпрШтрих.ИспользоватьВладельца(СпрТовар.ТекущийЭлемент());
Единицы.ИспользоватьВладельца(СпрТовар.ТекущийЭлемент());
СпрШтрих.НайтиПоКоду(Штрих);
Товар=СпрТовар.ТекущийЭлемент();
Цена=СпрШтрих.РозничнаяЦена;
Количество=1;
РозничнаяЦена=СпрШтрих.РозничнаяЦена;
РозничнаяСумма=РозничнаяЦена*Количество;
Коэффициент=1;
Единицы.ВыбратьЭлементы();
Единица=Единицы.ТекущийЭлемент();
КонецЕсли;
//*
Здесь вводится число 13 знаков - ШК, выделяется 6 знаков начиная со второго - это код товара в спр номенклатуры, по этому коду находится товар и все что к нему идет. Спр ШК подчинен Номенклатуре.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот