1С Предприятие 7.7(сетевая версия) - 7.70.027
Конфигурация: Производство-Услуги-Бухгалтерия для Украины(7.70.010)
Есть документ,в котором необходимо, при выборе ТМЦ (Справочник ТМЦ) в отдельной колонке подвязывался определенный код (этот код находится тоже в справочнике ТМЦ). Код:
Процедура НайтиКарточку()
Если СокрЛП(НомерКарт) <> "" Тогда
Спр = СоздатьОбъект("Справочник.ТМЦ");
СпрНом = СоздатьОбъект("Справочник.НомераКарточек");
СпрАрт = СоздатьОбъект("Справочник.Артикулы");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент() = 1 Цикл
Если Спр.ЭтоГруппа() = 0 Тогда
СпрНом.ИспользоватьВладельца(Спр);
СпрНом.НайтиПоКоду(НомерКарт);
Если (СпрНом.Выбран() = 1) И (СпрНом.Склад = МестоХранения) Тогда
ТМЦ = Спр.ТекущийЭлемент();
Ед = ТМЦ.ЕдиницаПоУмолчанию;
Коэффициент = 1;
КодДК = ТМЦ.СтНомерКарт;
СпрАрт.ИспользоватьВладельца(ТМЦ);
СпрАрт.ВыбратьЭлементы();
Пока СпрАрт.ПолучитьЭлемент() = 1 Цикл
Если СпрАрт.Склад = МестоХранения Тогда
НоменклНомер = СокрЛП(СпрАрт.Код);
КонецЕсли;
КонецЦикла;
Возврат;
Иначе
ТМЦ = 0;
Ткст = "Карточка с номером "+НомерКарт+" не найдена!";
//Сообщить(Ткст,"!!!");
КонецЕсли;
КонецЕсли;
//
КонецЦикла;
КонецЕсли;
Если ПустоеЗначение(ТМЦ) = 1 Тогда
НоменклНомер = "";
КонецЕсли;
КонецПроцедуры
// ===============================
Процедура НайтиАртикул()
Если СокрЛП(НоменклНомер) <> "" Тогда
Спр = СоздатьОбъект("Справочник.ТМЦ");
СпрНом = СоздатьОбъект("Справочник.НомераКарточек");
СпрАрт = СоздатьОбъект("Справочник.Артикулы");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент() = 1 Цикл
Если Спр.ЭтоГруппа() = 0 Тогда
СпрАрт.ИспользоватьВладельца(Спр);
СпрАрт.НайтиПоКоду(НоменклНомер);
Если (СпрАрт.Выбран() = 1) И (СпрАрт.Склад = МестоХранения) Тогда
ТМЦ = Спр.ТекущийЭлемент();
Ед = ТМЦ.ЕдиницаПоУмолчанию;
КодДК = ТМЦ.СтНомерКарт;
Коэффициент = 1;
СпрНом.ИспользоватьВладельца(ТМЦ);
СпрНом.ВыбратьЭлементы();
Пока СпрНом.ПолучитьЭлемент() = 1 Цикл
Если СпрНом.Склад = МестоХранения Тогда
Номеркарт = СокрЛП(СпрНом.Код);
КонецЕсли;
КонецЦикла;
Возврат;
Иначе
ТМЦ = 0;
Пробовала другие реквизиты выводить (например Код) выводит, а вот тот код кот мне нужен (КодДК) не хочет. Подскажите пожалуйста в чем может быть причина.Спасибо
Цитата(wmatik @ 07.06.11, 10:28) необходимо зарегистрироваться для просмотра ссылки
Подскажите пожалуйста в чем может быть причина.Спасибо
Например в том, что СтНомерКарт - периодический реквизит.
Цитата
КодДК = ТМЦ.СтНомерКарт
Если вам нужно показать СтНомерКарт того ТМЦ, которое выбрали в доке, то добавьте поле Текст в табл.часть дока, и в формуле напишите ТМЦ.СтНомерКарт
я не правильный код вставила,вот так должна выглядеть строка:
КодДК = ТМЦ.КодПоКл;
Где КодПоКл - это реквизит справочника ТМЦ
Цитата
я не правильный код вставила,вот так должна выглядеть строка:
КодДК = ТМЦ.КодПоКл;
Значит в формулу: ТМЦ.КодПоКл
Цитата
Например в том, что СтНомерКарт - периодический реквизит.
Если б был периодич., то помоему в приведенном коде строка КодДК = ТМЦ.КодПоКл, выдала неизвестный объект.
igmig65, написала в формуле ТМЦ.КодПоКл и ничего(
Забыла указать, как формируется КодПоКл. В справочнике ТМЦ Есть реквизит КодПоКл,тип значения - справочник (КодыПоКлассификатору).
Забыла указать, как формируется КодПоКл. В справочнике ТМЦ Есть реквизит КодПоКл,тип значения - справочник (КодыПоКлассификатору).
Цитата(igmig65 @ 07.06.11, 11:04) необходимо зарегистрироваться для просмотра ссылки
выдала неизвестный объект.
Нет, было бы просто пустое значение.
igmig65, когда ставлю тип значения КодДК строка выводит ТМЦ
Цитата
Забыла указать, как формируется КодПоКл. В справочнике ТМЦ Есть реквизит КодПоКл,тип значения - справочник (КодыПоКлассификатору).
Возможно в этом справочнике в форме нет наименования и оно незаполняется програмно, а какой рекв. спр. КодыПоКлассификатору вам нужно показать?
Цитата
igmig65, когда ставлю тип значения КодДК строка выводит ТМЦ
вам нужно добавить поле Текст, там нет типазначения.
Цитата(igmig65 @ 07.06.11, 12:14) необходимо зарегистрироваться для просмотра ссылки
а какой рекв. спр. КодыПоКлассификатору вам нужно показать?
Код
Значит в формулу: ТМЦ.КодПоКл.Код
только в поле ТЕКСТ, а вы реквизит добавляете
Цитата(igmig65 @ 07.06.11, 12:17) необходимо зарегистрироваться для просмотра ссылки
Значит в формулу: ТМЦ.КодПоКл.Код
только в поле ТЕКСТ, а вы реквизит добавляете
Все равно выдает - ТМЦ
Цитата
Все равно выдает - ТМЦ
вы скорей всего добавили поле ввода с типом значения????а нужно в форму кинуть ТЕКСТ
я сделала так:
Реквизит КодДК (тип значения-строка)
В табличную часть документа добавила Текст, в формуле написала ТМЦ.КодПоКл.Код
В итоге ничего не выводит, пусто
ну незнаю, проверьте в отладчике при выборе ТМЦ, что вам вернет ТМЦ.КодПоКл.Код
а можете подсказать как проверить,а то я не умею пользоваться отладчиком
Цитата(wmatik @ 07.06.11, 11:25) необходимо зарегистрироваться для просмотра ссылки
В итоге ничего не выводит, пусто
После
КодДК = ТМЦ.КодПоКл;
Вставьте строку
Сообщить(ТМЦ.КодПоКл);
Или
Сообщить(ПустоеЗначение(ТМЦ.КодПоКл));
Увидите, по крайней мере, хотя бы результат.
Цитата(wmatik @ 07.06.11, 11:47) необходимо зарегистрироваться для просмотра ссылки
пусто
В обоих случаях?
в первом пусто,во втором 1
нет, вру, в первом пусто, во втором случае 0
нет,даже не так, в первом случае выдает то,что надо -нужный код
и что надо изменить,чтобы заполнялась колонка?
Цитата(wmatik @ 07.06.11, 11:57) необходимо зарегистрироваться для просмотра ссылки
и что надо изменить,чтобы заполнялась колонка?
Поставить колонке тип не "текст", а "выражение".
Цитата(-=VJ=- @ 07.06.11, 12:59) необходимо зарегистрироваться для просмотра ссылки
Поставить колонке тип не "текст", а "выражение".
Ниче не пойму, сейчас же тип колонки КодДК строка, причем тут текст или выражение (это же в таблице такие свойства)
Всиавьте в табчасть поле ТЕКСТ, там нет закладки ТИП, а на закладке дополнительно в поле ФОРМУЛА напишите: ТМЦ.КодПоКл
все получилось, а вот можно как-то с помощью другой процедуры это значение получать? просто получается что колонка заполняется, только после того как заполнится номер карточки, а надо бы сделать, чтобы при заполнении тмц
У вашомі коді
КодДККодДК = ТМЦ.КодПоКл;
заповнюється після пошуку номера карточки - отже, логічно номер карточки має бути вже заповненим і записаним в ТМЦ. Прописати в формулі в колонці
КодДК ТМЦ.КодПоКл
.
Сделала немного иначе, а именно:
В формуле КодДК написала такую процедуру ПриВыбореТМЦ():
Процедура ПриВыбореТМЦ()
КодДК=ТМЦ.КодПоКл.Код
КонецПроцедуры
Все заполняет. Насколько такой вариант правильный?
Вариант правильный, только зачем было добавлять реквизит КодДК(тип-строка), чтоб базу лишний раз набивать? Ведь к этому коду есть прямой доступ ч-з ТМЦ - ТМЦ.КодПоКл.Код. Уже сотый раз повторяю, ненужно вам КодДК, просто в табчасть кидаете ТЕКСТ, для отображения этого кода. Он будет автоматом заполняться при выборе ТМЦ, и доступ к нему прямой по той же ссылке.
просто у меня к этому реквизиту КодДК привязан отчет, он (отчет) будет заполнятся, если будет ТЕКСТ?
Зачем вам текст, это только для отображения в диалоге дока, чтоб вы видели в самом документе, а в отчете, просто там где у вас стоит Формула КодДК, замените на ТМЦ.КодПоКл.Код.
и будет вам счастье
Цитата(wmatik @ 07.06.11, 13:52) необходимо зарегистрироваться для просмотра ссылки
Сделала немного иначе, а именно:
В формуле КодДК написала такую процедуру ПриВыбореТМЦ():
Процедура ПриВыбореТМЦ()
КодДК=ТМЦ.КодПоКл.Код
КонецПроцедуры
Все заполняет. Насколько такой вариант правильный?
Чтобы КодДК заполнялся при выборе ТМЦ, формулу ПриВыбореТМЦ() необходтмо вписать для реквизита ТМЦ, а не КодДК.
у реквизита ТМЦ уже есть формула
Тогда либо записать формулу в таком виде
УжеВведеннаяФормула();ПриВыбореТМЦ()
, либо, что лучше, дописать текст процедуры ПриВыбореТМЦ() в уже сущесвующую процедуру, которая указана в формуле. Только лучше писать в таком виде:
Если ТМЦ.Выбран()=1 Тогда
КодДК=ТМЦ.КодПоКл.Код;
КонецЕсли; // ТМЦ.Выбран()=1
у реквизита ТМЦ в формуле вот такая запись: ГлПриИзмененииТовара(Контекст), в глобальник не хочется лезть
Цитата(5_kopeek @ 07.06.11, 15:35) необходимо зарегистрироваться для просмотра ссылки
Тогда либо записать формулу в таком виде
УжеВведеннаяФормула();ПриВыбореТМЦ()
, либо, что лучше, дописать текст процедуры ПриВыбореТМЦ() в уже сущесвующую процедуру, которая указана в формуле. Только лучше писать в таком виде:
Если ТМЦ.Выбран()=1 Тогда
КодДК=ТМЦ.КодПоКл.Код;
КонецЕсли; // ТМЦ.Выбран()=1
Так и какой тип ставить реквизита КодДК?
Цитата
Так и какой тип ставить реквизита КодДК?
Текст.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.