Форум программистов, компьютерный форум, киберфорум
Наши страницы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.52/54: Рейтинг темы: голосов - 54, средняя оценка - 4.52
CJS
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
1

Обратиться к реквизитам Документа из Модуля этого документа

03.10.2012, 20:56. Просмотров 10670. Ответов 13
Метки нет (Все метки)

Привет всем.

У меня проблема вот с чем: в процедуре обработки документа нужно обратиться к реквизитам самого документа и реквизитам его табличной части.

Например документ Док1, табличные части Расход.Сумма и Расход.Количество, реквизит УчетнаяЦена.

После поиска ответа в интернете пробовал и так и сяк, но что-то не получается.
Подскажите, пожалуйста, где можно прочесть о том, как обращаться из модуля объекта к реквизитам объекта.
Наперед благодарю.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2012, 20:56
Ответы с готовыми решениями:

как можно обратиться к реквизиту справочника из модуля документа?
я пытаюсь вот таким образом: &НаКлиенте Процедура ПробегПриИзменении(Элемент)...

Проведение документа из модуля формы документа
Столкнулся с такой проблемой. Нужно провести документ из формы документа. Побывал на многих сайтах...

Отбор документа по реквизитам
Здравствуйте. Уже перечитал все подобные темы которые нашел, но ничего из приведенного не работает....

Оповещение о скором истечении документа, выполнение документа, истечение документа
Плохо разбираюсь в 1С. Помогите пожалуйста реализовать, чтоб когда документ подходил к истечению...

Заполнение табличной части одного документа из табличной части этого же документа
Здравсвуйте. 1С 8.2. Есть документ в этом документе 2 табличные части В 1 табличной части...

13
fimbulwinter
308 / 308 / 1
Регистрация: 16.01.2011
Сообщений: 1,073
03.10.2012, 21:18 2
1C
1
2
3
4
Сообщить(Организация);
Для каждого СтрокаТаблицы из Расход Цикл
Сообщить(СтрокаТаблицы.Сумма);
КонецЦикла;
1
CJS
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
03.10.2012, 22:26  [ТС] 3
Цитата Сообщение от fimbulwinter Посмотреть сообщение
1C
1
2
3
4
Сообщить(Организация);
Для каждого СтрокаТаблицы из Расход Цикл
Сообщить(СтрокаТаблицы.Сумма);
КонецЦикла;
Спасибо, но мне не просто их увидеть нужно. Мне нужно:
1C
1
УчетнаяЦена=Расход.Сумма/Расход.Количество
При том именно при проведении, а чтобы при проведении сделать, то это нужно в модуле объекта делать, как я понял (в модуле этого документа)
0
fimbulwinter
308 / 308 / 1
Регистрация: 16.01.2011
Сообщений: 1,073
03.10.2012, 22:37 4
про синтаксис-помощник слышал(а) что нибудь?
0
03.10.2012, 22:37
Dethmontt
Модератор
Эксперт 1С
2736 / 2493 / 443
Регистрация: 10.03.2011
Сообщений: 9,057
Записей в блоге: 1
Завершенные тесты: 1
03.10.2012, 22:40 5
Этого не нужно делать при проведении документа!
Лучше сделать это при изменении суммы и количества в табличной части
1
CJS
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
03.10.2012, 23:20  [ТС] 6
Цитата Сообщение от fimbulwinter Посмотреть сообщение
про синтаксис-помощник слышал(а) что нибудь?
дело в том, что я сразу ctrl+F1 на этой функции ... оно выдает 2 варианта - оба связаны с выводом сообщения пользователю ...

Добавлено через 1 минуту
Цитата Сообщение от Dethmontt Посмотреть сообщение
Этого не нужно делать при проведении документа!
Лучше сделать это при изменении суммы и количества в табличной части
Возможно, но у меня по заданию:
при проведении расходной накладной , с учетом актуальности итогов
0
sonatto
62 / 60 / 0
Регистрация: 02.10.2012
Сообщений: 448
03.10.2012, 23:58 7
Цитата Сообщение от CJS Посмотреть сообщение
дело в том, что я сразу ctrl+F1 на этой функции ... оно выдает 2 варианта - оба связаны с выводом сообщения пользователю ...

Добавлено через 1 минуту

Возможно, но у меня по заданию:
в чем проблема? 1
УчетнаяЦена=Расход.Сумма/Расход.Количество
вместо сообщения возьми реквизиты, вычисли результат и передай обратно в Строкатаблицы

Добавлено через 4 минуты
Цитата Сообщение от CJS Посмотреть сообщение
дело в том, что я сразу ctrl+F1 на этой функции ... оно выдает 2 варианта - оба связаны с выводом сообщения пользователю ...

Добавлено через 1 минуту

Возможно, но у меня по заданию:
задания могут составлять - сильно умные, согласно методологии 1с все вычисления делаются до проведения, а проведение - это запись чего нибудь куда нибудь
0
duk337
2951 / 1763 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
04.10.2012, 01:08 8
Цитата Сообщение от CJS Посмотреть сообщение
при проведении расходной накладной , с учетом актуальности итогов
При проведении все данные лучше получить запросом к проводимому доку. "с учетом актуальности итогов" - подозрительная формулировка. Имеются в виду режимы проведения или состояние на складе списываемого товара?
0
CJS
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
04.10.2012, 09:42  [ТС] 9
Цитата Сообщение от sonatto Посмотреть сообщение
в чем проблема? 1
УчетнаяЦена=Расход.Сумма/Расход.Количество
вместо сообщения возьми реквизиты, вычисли результат и передай обратно в Строкатаблицы
Сделал в модуле объекта (в модуле документа РасходнаяНакладная) вот такой код(добавил его в конец обработчика ОбработкаПроведения):
1C
1
2
3
4
5
6
7
8
    Для каждого СтрокаТаблицы из Расход Цикл    //Строки табличной части(Расход) документа
Сообщить(СтрокаТаблицы.Сумма);
Сообщить(СтрокаТаблицы.Количество);
 
Сообщить(СтрокаТаблицы.УчетнаяЦена);
СтрокаТаблицы.УчетнаяЦена = СтрокаТаблицы.Сумма/СтрокаТаблицы.УчетнаяЦена;
 
КонецЦикла;
И вот так попробовал:
1C
1
2
3
4
5
6
7
Для каждого СтрокаТаблицы из Расход Цикл    //Строки табличной части(Расход) документа
Сообщить(СтрокаТаблицы.Сумма);
Сообщить(СтрокаТаблицы.Количество);
 
Документы.РасходнаяНакладная.УчетнаяЦена= СтрокаТаблицы.Сумма/СтрокаТаблицы.УчетнаяЦена;
 
КонецЦикла;
В обоих случаях при нажатии на "Провести и закрыть" пишет:
Поле объекта не обнаружено (УчетнаяЦена)
Название задал правильно - проверил. В сообщениях выводит Сумму и Количество.

А можно поподробнее , как вы имели в виду это нужно сделать?

Добавлено через 5 минут
Этого не нужно делать при проведении документа!
Лучше сделать это при изменении суммы и количества в табличной части
Попробовал сделать при изменении Количества. Вот процедура обработки:
1C
1
2
3
4
5
6
Процедура РасходКоличествоПриИзменении(Элемент)
    СтрокаТабличнойЧасти = Элементы.Расход.ТекущиеДанные;
     СтолбецУчетнойЦены= Элементы.УчетнаяЦена;
     СтолбецУчетнойЦены   = СтрокаТабличнойЧасти.Сумма/СтрокаТабличнойЧасти.Количество;
 
КонецПроцедуры
Но после изменения Количества, оно не изменяет УчетнаяЦена.

Добавлено через 1 минуту
Цитата Сообщение от duk337 Посмотреть сообщение
Имеются в виду режимы проведения или состояние на складе списываемого товара?
Там получается нужно просто взять дату проведения документа и на основании этой даты расчитывать УчетнуюЦену.
0
duk337
2951 / 1763 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
04.10.2012, 10:04 10
Цитата Сообщение от CJS Посмотреть сообщение
расчитывать УчетнуюЦену.
Вот и ответ: похоже, этого поля нет в тч. Обычно там просто Цена. А Учетная - это тип, по которому из регистра сведений надо получить цену с фильтром по дате и номенклатуре. Скорее всего УчетнаяЦена - это расчетная величина, которая есть в форме, но нет в структуре хранимых данных.

Добавлено через 1 минуту
или получить её из остатков складского регистра накопления
1
CJS
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
04.10.2012, 10:31  [ТС] 11
Цитата Сообщение от duk337 Посмотреть сообщение
Вот и ответ: похоже, этого поля нет в тч. Обычно там просто Цена. А Учетная - это тип, по которому из регистра сведений надо получить цену с фильтром по дате и номенклатуре. Скорее всего УчетнаяЦена - это расчетная величина, которая есть в форме, но нет в структуре хранимых данных.
Ай блин! Я же да, в обработке проведения заношу в РегистрНакопления и Сумму и Количество с документа. Тут же можно Сумму на Количество разделить и присвоить это значение переменной. Но только как потом мою переменную закинуть в Документы.РасходнаяНакладная.УчетнаяЦена?

Вот такой код проведения на данный момент:
1C
1
2
3
4
5
6
7
8
9
10
11
Процедура ОбработкаПроведения(Отказ, Режим)
    Движения.ОстаткиТМЦ.Записывать = Истина;
    Для Каждого ТекСтрокаРасход Из Расход Цикл
        Движение = Движения.ОстаткиТМЦ.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
        Движение.Период = Дата;
        Движение.ТМЦ = ТекСтрокаРасход.ТМЦ;
        Движение.Склад = Склад;
        Движение.Количество = ТекСтрокаРасход.Количество;
        Движение.Сумма = ТекСтрокаРасход.Сумма;
    КонецЦикла;
А что имелось в виду под "тч" ?
0
duk337
2951 / 1763 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
04.10.2012, 10:53 12
Цитата Сообщение от CJS Посмотреть сообщение
Но только как потом мою переменную закинуть в Документы.РасходнаяНакладная.УчетнаяЦена?
1. Подготовить таблицу списания: это тч (Табличная часть объекта) левое соединение РНОстатки по списку товаров из Объект.Расход (обычно Товары, а Расход - таблица списания), Объект.Дата. УчетнаяЦена в запросе это ОстатокСумма/ОстатокКоличество.

2.
1C
1
Движение.Сумма = ТекСтрокаРасход.Сумма;
Заменить на
1C
1
Движение.Сумма = СтрокаТабСписания.УчетнаяЦена*СтрокаТабСписания.Количество;
3. Закинуть в тч УчЦену
1C
1
2
3
4
строки=тч.НайтиСтроки(СтрокаТабСписания.Номенклатура,"Номенклатура");
Для Каждого Ик Из строки Цикл
Ик.УчЦ=СтрокаТабСписания.УчетнаяЦена;
КонеЦикла;

Не по теме:

Мог наврать в синтаксисе. Синхронизируйте с синт.помом

1
CJS
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
04.10.2012, 12:55  [ТС] 13
Цитата Сообщение от duk337 Посмотреть сообщение
1. Подготовить таблицу списания: это тч (Табличная часть объекта) левое соединение РНОстатки по списку товаров из Объект.Расход (обычно Товары, а Расход - таблица списания), Объект.Дата. УчетнаяЦена в запросе это ОстатокСумма/ОстатокКоличество.

2.
1C
1
Движение.Сумма = ТекСтрокаРасход.Сумма;
Заменить на
1C
1
Движение.Сумма = СтрокаТабСписания.УчетнаяЦена*СтрокаТабСписания.Количество;
3. Закинуть в тч УчЦену
1C
1
2
3
4
строки=тч.НайтиСтроки(СтрокаТабСписания.Номенклатура,"Номенклатура");
Для Каждого Ик Из строки Цикл
Ик.УчЦ=СтрокаТабСписания.УчетнаяЦена;
КонеЦикла;

Не по теме:

Мог наврать в синтаксисе. Синхронизируйте с синт.помом

Спасибо, но для меня сложновато пока мисть. А вот предыдущее сообщение натолкнуло на мысль - решил проблему.

Добавлено через 3 минуты
Благодарю всех за участие, проблема решена - я в обработчика проведения обращался к тем полям, которые сам сформировал конструктор при создании проведения.

Если вдруг кто знает по какой книге можно разобраться с тем, как из любого места получить значение любого реквизита (методы, а также то, каким образом просто обратиться к этому реквизиту ... например ТакойТообъект.ТакаятоТабличнаяЧасть.ТакойТоРеквизит), скнитьте , пожалуйста название или ссылку.
0
duk337
04.10.2012, 12:59     Обратиться к реквизитам Документа из Модуля этого документа
  #14

Не по теме:

МОСГ - основной Ваш инструмент. А то, что доступно - лучше, чем в отладчике, не определить. Лучше один раз пощупать, чем стопицот представить

0
04.10.2012, 12:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.10.2012, 12:59
Привет! Вот еще темы с ответами:

Как Из Документа-объекта Обратиться К Реквизиту Формы?
Здравствуйте! Подскажите, пожалуйста, как из документа объекта обратиться к реквизиту формы этого...

как в документе обратиться к значением другого документа
Версия 8.1 очень поможете я ламер но мне очень надо!

Как изменить текст надписи формы документа при записи документа
Здравствуйте уважаемые, у меня простой вопрос - как мне при записи документа изменить надпись на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.