Требуется помощь.
В документе имеется реквизит Номенклатура и табличная часть ОбъемРемонта, в табличной части ссылки на справочник с о перечнем работ.
Как при сохранении документа в элементы справочника. которые были задействованы, записать информацию о номенклатуре, для которой они были использованы.
У меня при попытке записи в справочник с переченем работ вылетает ошибка "Объект недоступен для изменения" т.е элементы которые используюттся в форме не доступны для редактирования.
Цель задачи записать в справочник информацию о номенклатуре для которой используется элемент, для дальнейшего использования этих данных при отборе работ для конкретной номенклатуры.
В документе имеется реквизит Номенклатура и табличная часть ОбъемРемонта, в табличной части ссылки на справочник с о перечнем работ.
Как при сохранении документа в элементы справочника. которые были задействованы, записать информацию о номенклатуре, для которой они были использованы.
У меня при попытке записи в справочник с переченем работ вылетает ошибка "Объект недоступен для изменения" т.е элементы которые используюттся в форме не доступны для редактирования.
Цель задачи записать в справочник информацию о номенклатуре для которой используется элемент, для дальнейшего использования этих данных при отборе работ для конкретной номенклатуры.
По теме из базы знаний
- Статьи затрат и элементы затрат (часть 1)
- Управление состоянием для шаблона MVC и работы с данными объекта
- Конвертация данных 2. Использование подключаемых обработок в правилах обмена. Конвертация дерева значений
- О формах 1С замолвите слово... Необычное использование знакомого всем объекта
- Особенности использования мобильной платформы на крупных предприятиях
Найденные решения
(11) А прямо так и писать
&НаСервере
Процедура НаполнениеЦенника()
Отбор = Новый Структура("Номенклатура", Объект.Номенклатура);
Для Каждого СтрокаТЧ Из Объект.ОбъемРемонта Цикл
Если СтрокаТЧ.ОбъемРаботы.Номенклатура.НайтиСтроки(Отбор).Количество() = 0 Тогда
ЭлементОбъект = СтрокаТЧ.ОбъемРаботы.ПолучитьОбъект();
НоваяСтрока = ЭлементОбъект.Номенклатура.Добавить();
НоваяСтрока.Деталь = Объект.Номенклатура;
ЭлементОбъект.Записать();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) в процедуре ПередЗаписью
Для Каждого СтрокаТЧ Из Работы.ОбъемРемонта Цикл
Сообщить(СтрокаТЧ.ОбъемРаботы);
ЭлементОбъект = СтрокаТЧ.ОбъемРаботы.ПолучитьОбъект();
НоваяСтрока = ЭлементОбъект.Ссылка.Номенклатура.Добавить();
на это строке ошибка "Объект недоступен для изменения."
НоваяСтрока.Номенклатура = Номенклатура;
ЭлементОбъект.Записать();
КонецЦикла;
Показать
(14) нет цель собрать данные какая номенклатура используется для какой работы, чтобы в дальнейшем по этим данным сделать автоподбор для выбора работ для конкретной номенклатуры. Сначала хотел в ручную ввести соответствие, но это получается несколько тысяч позиций. а так оно само постепенно соберется.
Наймите программиста, это не будет дорого
Это все делается не так, архитектуру программы тоже надо сделать правильно, и язык программирования 1с тоже не настолько банален, как кажется на первый взгляд из-за того, что там все по-русски.
Это все делается не так, архитектуру программы тоже надо сделать правильно, и язык программирования 1с тоже не настолько банален, как кажется на первый взгляд из-за того, что там все по-русски.
исправил код.
Но все равно пишет
Ошибка при установке значения атрибута контекста (Объект)
{Документ.Работы.Форма.ФормаДокумента.Форма(177)}: НаполнениеЦенника( Объект, Объект.Номенклатура);
по причине:
Нельзя изменять поле, содержащее объект данных формы
Для Каждого СтрокаТЧ Из Работы.ОбъемРемонта Цикл
Сообщить(СтрокаТЧ.ОбъемРаботы);
ЭлементОбъект = СтрокаТЧ.ОбъемРаботы.ПолучитьОбъект();
НоваяСтрока = ЭлементОбъект.Номенклатура.Добавить();
НоваяСтрока.Деталь = Номенклатура_оборудования;
ЭлементОбъект.Записать();
КонецЦикла;
ПоказатьНо все равно пишет
Ошибка при установке значения атрибута контекста (Объект)
{Документ.Работы.Форма.ФормаДокумента.Форма(177)}: НаполнениеЦенника( Объект, Объект.Номенклатура);
по причине:
Нельзя изменять поле, содержащее объект данных формы
(8)
&НаСервере
Процедура НаполнениеЦенника(Работы, Номенклатура_оборудования)
Для Каждого СтрокаТЧ Из Работы.ОбъемРемонта Цикл
Сообщить(СтрокаТЧ.ОбъемРаботы);
ЭлементОбъект = СтрокаТЧ.ОбъемРаботы.ПолучитьОбъект();
НоваяСтрока = ЭлементОбъект.Номенклатура.Добавить();
НоваяСтрока.Деталь = Номенклатура_оборудования;
ЭлементОбъект.Записать();
КонецЦикла;
//
КонецПроцедуры
Показать
(11) А прямо так и писать
&НаСервере
Процедура НаполнениеЦенника()
Отбор = Новый Структура("Номенклатура", Объект.Номенклатура);
Для Каждого СтрокаТЧ Из Объект.ОбъемРемонта Цикл
Если СтрокаТЧ.ОбъемРаботы.Номенклатура.НайтиСтроки(Отбор).Количество() = 0 Тогда
ЭлементОбъект = СтрокаТЧ.ОбъемРаботы.ПолучитьОбъект();
НоваяСтрока = ЭлементОбъект.Номенклатура.Добавить();
НоваяСтрока.Деталь = Объект.Номенклатура;
ЭлементОбъект.Записать();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот