helpf.pro
Регистрация

v8: Реквизиты ТЧ

Bell
17.05.2013 14:19Прочитано: 2365
Здравстуйте
Подскжите как вырулить из ситуации
Не вводя доп параметров.
В документу была одна ТЧ товары. Расчет данных по строке ТЧ шел так(Код приведен не весь взял неоходимое )
Общий модуль

Код 1C v 8.х
 Процедура ААА(СтрокаТЧ, РасчетНалогов, ТипМХ) Экспорт
Если РасчетНалогов = Перечисления.РасчетНалогов.НалогиСверху Тогда
СтрокаТЧ.Цена = СтрокаТЧ.Сумма/СтрокаТЧ.Количество;
СтрокаТЧ.ЦенаУчетная = СтрокаТЧ.Цена; Учетную цену уравнивали и Ценой
ИначеЕсли РасчетНалогов = Перечисления.РасчетНалогов.НалогиВсумме Тогда
СтрокаТЧ.Цена = СтрокаТЧ.Сумма/СтрокаТЧ.Количество;
СтрокаТЧ.ЦенаУчетная = СтрокаТЧ.Цена;
КонецЕсли;
КонецПроцдуры


Модуль формы документа

Код 1C v 8.х
 Процедура БББ(Элемент)
СтрокаТЧ = ЭлементыФормы.Товары.ТекущиеДанные;
ТипМХ = Управление.ПолучитьЗначениеТипаМХ(МХ);
РаботаСТЧ.ААА(СтрокаТЧ, РасчетНалогов, ТипМХ);
КонецПроцдуры


Возникла необходимость ввести дополнительные ТЧ (Комиисия и Тара).Там цена=ЦенаУчетная и нет необходимости вводить дополнительный ревизит таб.части (ЦенаУчетная) Как грамотно отработать Общий модуль, что бы не вводить дополнительных параметром
Хочу через найти реквизить ТЧ документа

Код 1C v 8.х
 Функция ЕстьРеквизитТабЧастиДокумента(ИмяРеквизита, МетаданныеДокумента, ИмяТЧ) Экспорт
ТЧ = МетаданныеДокумента.ТабличныеЧасти.Найти(ИмяТЧ);
Если ТЧ = Неопределено Тогда // Нет такой таб. части в документе
Возврат Ложь;
Иначе
Возврат НЕ (ТЧ.Реквизиты.Найти(ИмяРеквизита) = Неопределено);
КонецЕсли;
цФункции


Код 1C v 8.х
 Процедура ААА(СтрокаТЧ, РасчетНалогов, ТипМХ) Экспорт
Если РасчетНалогов = Перечисления.РасчетНалогов.НалогиСверху Тогда
СтрокаТЧ.Цена = СтрокаТЧ.Сумма/СтрокаТЧ.Количество;
// СтрокаТЧ.ЦенаУчетная = СтрокаТЧ.Цена;
// Добалвяю поиск реквзита ТЧ, как быть с Метаданными документа
Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ЦенаУчетная", ??????????????, "Товары") Тогда
СтрокаТЧ.ЦенаУчетная = СтрокаТЧ.Цена;
КонецЕсли;


Иначе ....


КонецЕсли;
КонецПроцдуры

Изменено 17.05.13 14:20:44
Yandex
Возможно, вас также заинтересует
Реклама на портале
Mokey
17.05.2013 14:36Ответ № 1
У меня есть такая функция в общем модуле:
Код 1C v 8.х
 Функция ПолучитьМетаданныеДокументаПоСсылкеНаСтроку(СтрокаТабличнойЧасти) Экспорт

МетаданныеДокумента = Метаданные.НайтиПоТипу(ТипЗнч(СтрокаТабличнойЧасти)).Родитель();
Возврат МетаданныеДокумента;

КонецФункции
Bell
17.05.2013 17:12Ответ № 2
Как ее расписть в общем модуле , что то я не понял.
Она же возвращает все данные по строке, а у меня СтрокаТЧ.ЦенаУчетная там нет.

Еще раз про свой вопрос
1 Имею ТЧ Товары
Столбцы (ЦенаУчетная, Цена, Сумма)

2 Имею ТЧ Тара
Столбцы (Цена, Сумма)

В модуле документа процдура ПриИЗмененииСумма

в ТЧ Товары она должно поствить в столбец ЦенаУчетная = цену
В ТЧ Тара столбца ЦенаУчетная нет .(ну прошла процедура поля нет идем дальше), а выдает ошибку

{ОбщийМодуль.РаботаСТЧ.Модуль(143)}: Поле объекта не обнаружено (ЦенаУчетная)
СтрокаТЧ.ЦенаУчетная = СтрокаТЧ.Цена;

Как в процедура общего модуля проверить наличие этого поля (ТЧ тара ЦенаУчетная) и если его нет продолжить работу
Код 1C v 8.х
 Процедура ААА(СтрокаТЧ, РасчетНалогов, ТипМХ) Экспорт
Если РасчетНалогов = Перечисления.РасчетНалогов.НалогиСверху Тогда
СтрокаТЧ.Цена = СтрокаТЧ.Сумма/СтрокаТЧ.Количество;
СтрокаТЧ.ЦенаУчетная = СтрокаТЧ.Цена; Учетную цену уравнивали и Ценой
ИначеЕсли РасчетНалогов = Перечисления.РасчетНалогов.НалогиВсумме Тогда
СтрокаТЧ.Цена = СтрокаТЧ.Сумма/СтрокаТЧ.Количество;
СтрокаТЧ.ЦенаУчетная = СтрокаТЧ.Цена;
КонецЕсли;
КонецПроцдуры

Изменено 17.05.13 17:14:27
Mokey
17.05.2013 17:38Ответ № 3
(2) Bell, я думал, Вы задаётесь вопросом, что подставить вместо ?????????????, вот я Вам и предложил, как из ссылки на ТЧ (а она у Вас передаётся) найти метаданные документа и передать их в функцию, а остальное у Вас всё описано уже.

Пы.Сы. Всё просто. Может, пятница уже сказывается? *13
Изменено 17.05.13 17:39:48
Bell
17.05.2013 17:57Ответ № 4
Ну что то ни как
Вроде где то радом
то родитель мешает то вдруго преобразование по типу булево
Bell
17.05.2013 18:32Ответ № 5
Не понимаю чего ругается
Код 1C v 8.х
 Если РасчетНалогов = Перечисления.РасчетНалогов.НалогиСверху Тогда
СтрокаТЧ.Цена = СтрокаТЧ.Сумма/СтрокаТЧ.Количество;

ИмяТЧ = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТЧ);
МетаданныеДокумента = ОбщегоНазначения.ПолучитьМетаданныеДокументаПоСсылкеНаСтроку(СтрокаТЧ);

Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("ЦенаУчетная", МетаданныеДокумента , ИмяТЧ) Тогда
СтрокаТЧ.ЦенаУчетная = СтрокаТЧ.Цена;
КонецЕсли;

ИначеЕсли .....

КонецЕсли;


{ОбщийМодуль.ОбщегоНазначения.Модуль(91)}: Значение не является значением объектного типа (Родитель)
МетаданныеДокумента = Метаданные.НайтиПоТипу(ТипЗнч(СтрокаТЧ).Родитель());
Изменено 17.05.13 18:33:08
Bell
18.05.2013 09:33Ответ № 6
Подсмотрел в типовой эту эе функцию Эта отрабатывает без проблем
Хотя интересно почему первая не идет????

Код 1C v 8.х
 Функция ПолучитьМетаданныеДокументаПоСсылкеНаСтроку(СтрокаТЧ) Экспорт

//МетаданныеДокумента = Метаданные.НайтиПоТипу(ТипЗнч(СтрокаТЧ)).Родитель());
//Возврат МетаданныеДокумента;

Возврат Метаданные.НайтиПоТипу(ТипЗнч(СтрокаТЧ)).Родитель();

КонецФункции

Изменено 18.05.13 09:34:37
Mokey
20.05.2013 10:23Ответ № 7
(6) Bell, довольно странно, потому что у меня работает на ура, проверьте, что из себя представляет СтрокаТЧ, возможно, в ней кроется подвох.
а в первом варианте у Вас скобки лишние.
Bell
20.05.2013 11:24Ответ № 8
Да дело в скобке, а я мучался. Хотя наверное я допускал ошибки и другие на начальном этампе, т.к я функцию сразу откопировл.
Подсказка: Вы можете приложить к ответу файл или изображение щелкнув по значку или в редакторе.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.