Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 апр 2024, 09:04

Обращение к реквизиту справочника из модуля формы документа

Автор Golickoff, 17 фев 2015, 04:44

0 Пользователей и 1 гость просматривают эту тему.

Golickoff

Всем привет.

Есть справочник, в котором перечисляются рабочие инструменты на складе. У каждого инструмента есть реквизит "количество использований", предназначенный для контроля износа инструмента. Помимо этого, есть документ "выдача инструмента", в котором указывается кому из рабочих какой с утра выдали инструмент. Согласно техническому регламенту, у каждого инструмента есть свой срок службы. То есть, нож мы можем использовать только 10 раз, после чего его использование запрещено. Можно ли при проведении этого документа в том случае, если этот нож попал в него, то есть был выдан рабочему, увеличить в справочнике значение реквизита "количество использований" у ножа на единицу? Нож -- это, само собой, абстракция. В документе имеется несколько разных инструментов и для каждого из них при проведении документа необходимо увеличить значение реквизита "количество использований" на единицу. Мечта, или реальность?
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Luzer1C

Данный механизм считаю неоптимальным. А так можно всё. Проблема только в ресурсах.
СпрНож = Нож.Ссылка.ПолучитьОбъект();
СпрНож.КоличествоИспользований = СпрНож.КоличествоИспользований + 1;
СпрНож.Записать();
Как-то так.
Халамбалам.

Golickoff

Цитата: Luzer1C от 17 фев 2015, 05:12
СпрНож = Нож.Ссылка.ПолучитьОбъект();
СпрНож.КоличествоИспользований = СпрНож.КоличествоИспользований + 1;
СпрНож.Записать();
Ага, со второй частью всё ясно. А как мне получить список всех ресурсов, использованных в документе?
Документ выглядит так:
NИнструментПолучил
1НожИванов
2ДолотоПетров
3Диск циркулярной пилыСидоров
4НожПупкин
.........
xyz
И нужно сделать то же самое для каждого использованного инструмента от 1 до x. То есть, сначала составить список выданных инструментов, затем найти каждый инструмент из списка в справочнике и только потом добавить каждому найденному инструменту единицу в реквизит "КоличествоИспользований" справочника "Инструменты".
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Luzer1C

С помощью "Для каждого..."
Для каждого РеквизитТЧ Из [Имя табличной части] Цикл
НожСпр = РеквизитТЧ.Ссылка.ПолучитьОбъект();
<<ну и так далее>>
КонецЦикла

Проще пареной репы.
Халамбалам.

Golickoff

Написал в модуле формы документа следующий код:
СтрокаТабличнойЧасти = Элементы.Инструмент.ТекущиеДанные;
Для каждого СтрокаТЧ из Справочники.Инструменты цикл
Если СтрокаТЧ = СтрокаТабличнойЧасти
Тогда СтрокаТЧ.КоличествоИспользований = СтрокаТЧ.КоличествоИспользований + 1
КонецЕсли;
КонецЦикла;

Но конфигурация не запускается, выдавая {Документ.ВыдачаИнструмента.Форма.ФормаДокумента.Форма(23,26)}: Переменная не определена (Справочники)
Для каждого СтрокаТЧ из <<?>>Справочники.Инструменты цикл (Проверка: Тонкий клиент)

Что не так с этим кодом?
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Luzer1C

СтрокаТабличнойЧасти = Элементы.Инструмент.ТекущиеДанные;
Эту строку убрать
Справочники.Инструменты - Здесь должно быть имя табличной части документа.
Товары, Инструменты, Материалы... Как то так.
Халамбалам.

Golickoff

Цитата: Luzer1C от 17 фев 2015, 07:10
СтрокаТабличнойЧасти = Элементы.Инструмент.ТекущиеДанные;
Эту строку убрать
Справочники.Инструменты - Здесь должно быть имя табличной части документа.
Товары, Инструменты, Материалы... Как то так.
Спасибо, сейчас поковыряюсь.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Luzer1C

Для каждого СтрокаТЧ Из Инструменты Цикл
НожСпр = СтрокаТЧ.Инструмент.ПолучитьОбъект();
НожСпр.КоличествоИспользований = НожСпр.КоличествоИспользований + 1;
НожСпр.Записать();
КонецЦикла
Научись пользоваться отладчиком. Понимать будешь больше.
Халамбалам.

Похожие темы (5)

Рейтинг@Mail.ru

Поиск