В обычных формах заполнить реквизит табличной части
В УПП есть справочник Основные средства и справочник Подразделения организаций так вот я хочу сделать так чтобы при выборе определенного подразделения у меня выходили в форме выбора только те основные средства которые находятся на этом подразделении. я создал свою форму выбора в справочнике Основные средства и добавил туда реквизит Подразделения хочу заполнить его при открытии но выходит ошибка:
это в форме выбора:
это в документе делаю отбор по подразделениям:
в форме выбора нет возможности сделать отбор по подразделениям это видно на 4 рисунке. поэтому и пытаюсь в свою форму добавить эту колонку чтобы потом сделать по нему отбор
Итератор для значения не определен
{Справочник.ОсновныеСредства.Форма.СС_ФормаВыбора.Форма(58)}: Для Каждого СтрокаТЧ Из СправочникСписок Цикл
подскажите пожалуйста это можно исправить
{Справочник.ОсновныеСредства.Форма.СС_ФормаВыбора.Форма(58)}: Для Каждого СтрокаТЧ Из СправочникСписок Цикл
это в форме выбора:
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
Для Каждого СтрокаТЧ Из СправочникСписок Цикл
СтрокаТЧ.Участок = ПолучитьУчасток(СтрокаТЧ.Наименование);
КонецЦикла;
КонецПроцедуры
это в документе делаю отбор по подразделениям:
Процедура ЗаказыОбъектОСНачалоВыбора(Элемент, СтандартнаяОбработка)
ТабЧасти = ЭлементыФормы.Заказы.ТекущиеДанные;
ФормаПодбора = Справочники.ОсновныеСредства.ПолучитьФормуВыбора("СС_ФормаВыбора");
ФормаПодбора.РежимВыбора = Истина;
ФормаПодбора.ЗакрыватьПриВыборе = Истина;
ФормаПодбора.МножественныйВыбор = Истина;
ФормаПодбора.ВладелецФормы = Элемент;
//ФормаПодбора.Отбор.Код.ВидСравнения = ВидСравнения.Равно;
//ФормаПодбора.Отбор.Участок.Значение = ТабЧасти.Участок;
//ФормаПодбора.Отбор.Код.Использование = Истина;
ФормаПодбора.Открыть();
СтандартнаяОбработка = Ложь
КонецПроцедуры
Показатьв форме выбора нет возможности сделать отбор по подразделениям это видно на 4 рисунке. поэтому и пытаюсь в свою форму добавить эту колонку чтобы потом сделать по нему отбор
Прикрепленные файлы:
По теме из базы знаний
- Быстрый поиск дублей с четким/нечетким поиском по любому сочетанию реквизитов/реквизитов таб. частей с отбором и быстрой заменой значений в ЛЮБЫХ базах 8.1-8.3 (УТ 10.3, БП 2, ЗУП 2.5, КА 1.1, УТ 11, БП 3, УНФ 1.6/3.0, КА 2, ЗУП 3 и т.д.)
- Групповое редактирование реквизитов табличной части и движений документов LITE (управляемая форма)
- Универсальное заполнение табличных частей
- Наглядные доп.реквизиты товара в табличной части документа за 5 минут
- Как автоматически заполнить обработкой табличную часть документа "Ввод начальных остатков" (Тип операции = "Расчеты с партнерами"). 1С: ERP
Найденные решения
Попробуйте вот так
В СсылкаУчасток передавайте данные текущей строки Участок. Так же определите СтандартнаяОбработка = Ложь;
Процедура ЗаказыОбъектОСНачалоВыбора(Элемент, СтандартнаяОбработка)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОсновныеСредства.Ссылка КАК ОсновноеСредство
|ИЗ
| РегистрСведений.МестонахождениеОСБухгалтерскийУчет.СрезПоследних КАК МестонахождениеОСБухгалтерскийУчетСрезПоследних
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ОсновныеСредства КАК ОсновныеСредства
| ПО МестонахождениеОСБухгалтерскийУчетСрезПоследних.ОсновноеСредство = ОсновныеСредства.Ссылка
|ГДЕ
| МестонахождениеОСБухгалтерскийУчетСрезПоследних.Местонахождение = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", СсылкаУчасток);
РезультатЗапроса = Запрос.Выполнить();
Если не РезультатЗапроса.Пустой() Тогда
нФормаВыбора = Справочники.ОсновныеСредства.ПолучитьФормуВыбора("СС_ФормаВыбора");
нФормаВыбора.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке;
нФормаВыбора.Отбор.Ссылка.Значение = РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("ОсновноеСредство");
нФормаВыбора.Отбор.Ссылка.Использование = Истина;
нФормаВыбора.Открыть();
Иначе
// пока ничего
КонецЕсли;
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Это не так работает. Если вы добавили реквизит в справочник, то чтобы заполнить этот реквизит, надо получить объект справочника, заполнить в нем реквизит и записать. И так во всех элементах справочника.
Но это возможно и без добавления реквизита в справочник.
Можно в таблицу СправочникСписок на форме добавить колонку и заполнить эту колонку в событии ПриВыводеСтроки или в событии ПриПолученииДанных элемента формы СправочникСписок.
Но это возможно и без добавления реквизита в справочник.
Можно в таблицу СправочникСписок на форме добавить колонку и заполнить эту колонку в событии ПриВыводеСтроки или в событии ПриПолученииДанных элемента формы СправочникСписок.
(4) использую событие ПриВыводеСтроки
выдает ошибку:
Функция ПолучитьУчасток(Наименование)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| МестонахождениеОСБухгалтерскийУчетСрезПоследних.Местонахождение
|ИЗ
| РегистрСведений.МестонахождениеОСБухгалтерскийУчет.СрезПоследних КАК МестонахождениеОСБухгалтерскийУчетСрезПоследних
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ОсновныеСредства КАК ОсновныеСредства
| ПО МестонахождениеОСБухгалтерскийУчетСрезПоследних.ОсновноеСредство = ОсновныеСредства.Ссылка
|ГДЕ
| ОсновныеСредства.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", Наименование);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если ВыборкаДетальныеЗаписи.Следующий() Тогда
Возврат ВыборкаДетальныеЗаписи.Местонахождение;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
Процедура СправочникСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
ДанныеСтроки.СС_Участок = ПолучитьУчасток(ДанныеСтроки.Ссылка);
КонецПроцедуры
Показатьвыдает ошибку:
Поле объекта недоступно для записи (СС_Участок)
{Справочник.ОсновныеСредства.Форма.СС_ФормаВыбора.Форма(68)}: ДанныеСтроки.СС_Участок = ПолучитьУчасток(ДанныеСтроки.Ссылка);
{Справочник.ОсновныеСредства.Форма.СС_ФормаВыбора.Форма(68)}: ДанныеСтроки.СС_Участок = ПолучитьУчасток(ДанныеСтроки.Ссылка);
Обычные формы, вот пример
нФормаВыбора = Справочники.ТестСправочник.ПолучитьФормуВыбора(, ЭлементыФормы.тестОбъект);
нФормаВыбора.Отбор.ТестРеквизит.ВидСравнения = ВидСравнения.Равно;
нФормаВыбора.Отбор.ТестРеквизит.Значение = "Тест1";
нФормаВыбора.Отбор.ТестРеквизит.Использование = Истина;
нФормаВыбора.Открыть();
(7) Если это элемент формы так это не сработает. Нужно определить где хранится информация подразделения. Как вариант, перед открытием формы, с помощью запроса получить массив участков по условию и ФормаПодбора.Отбор.Участок.ВидСравнениния = ВидСравнения.ВСписке, а значение ФормаПодбора.Отбор.Участок.Значение = РезельтатЗапроса.Выгрузить("...")
Давайте так
В УПП есть справочник Основные средства и справочник Подразделения организаций
как связаны между собой справочники. В основных средствах есть реквизит ссылка Подразделения? Если да, то как он называется?
(13) вот я его пытаюсь заполнить но выдает ошибку:
Поле объекта недоступно для записи (СС_Участок)
{Справочник.ОсновныеСредства.Форма.СС_ФормаВыбора.Форма(59)}: ДанныеСтроки.СС_Участок = ПолучитьУчасток(ДанныеСтроки.Ссылка);
{Справочник.ОсновныеСредства.Форма.СС_ФормаВыбора.Форма(59)}: ДанныеСтроки.СС_Участок = ПолучитьУчасток(ДанныеСтроки.Ссылка);
Поле объекта недоступно для записи (СС_Участок)
{Справочник.ОсновныеСредства.Форма.СС_ФормаВыбора.Форма(63)}: Элемент.ТекущиеДанные.СС_Участок = ПолучитьУчасток(Элемент.ТекущиеДанные.Ссылка);
{Справочник.ОсновныеСредства.Форма.СС_ФормаВыбора.Форма(63)}: Элемент.ТекущиеДанные.СС_Участок = ПолучитьУчасток(Элемент.ТекущиеДанные.Ссылка);
Процедура СправочникСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
ДанныеСтроки.СС_Участок = ПолучитьУчасток(ДанныеСтроки.Ссылка);
КонецПроцедуры
Процедура СправочникСписокПриПолученииДанных(Элемент, ОформленияСтрок)
Элемент.ТекущиеДанные.СС_Участок = ПолучитьУчасток(Элемент.ТекущиеДанные.Ссылка);
КонецПроцедуры
(16)
Функция ПолучитьУчасток(Наименование)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| МестонахождениеОСБухгалтерскийУчетСрезПоследних.Местонахождение
|ИЗ
| РегистрСведений.МестонахождениеОСБухгалтерскийУчет.СрезПоследних КАК МестонахождениеОСБухгалтерскийУчетСрезПоследних
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ОсновныеСредства КАК ОсновныеСредства
| ПО МестонахождениеОСБухгалтерскийУчетСрезПоследних.ОсновноеСредство = ОсновныеСредства.Ссылка
|ГДЕ
| ОсновныеСредства.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", Наименование);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если ВыборкаДетальныеЗаписи.Следующий() Тогда
Возврат ВыборкаДетальныеЗаписи.Местонахождение;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
Показать
Попробуйте вот так
В СсылкаУчасток передавайте данные текущей строки Участок. Так же определите СтандартнаяОбработка = Ложь;
Процедура ЗаказыОбъектОСНачалоВыбора(Элемент, СтандартнаяОбработка)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОсновныеСредства.Ссылка КАК ОсновноеСредство
|ИЗ
| РегистрСведений.МестонахождениеОСБухгалтерскийУчет.СрезПоследних КАК МестонахождениеОСБухгалтерскийУчетСрезПоследних
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ОсновныеСредства КАК ОсновныеСредства
| ПО МестонахождениеОСБухгалтерскийУчетСрезПоследних.ОсновноеСредство = ОсновныеСредства.Ссылка
|ГДЕ
| МестонахождениеОСБухгалтерскийУчетСрезПоследних.Местонахождение = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", СсылкаУчасток);
РезультатЗапроса = Запрос.Выполнить();
Если не РезультатЗапроса.Пустой() Тогда
нФормаВыбора = Справочники.ОсновныеСредства.ПолучитьФормуВыбора("СС_ФормаВыбора");
нФормаВыбора.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке;
нФормаВыбора.Отбор.Ссылка.Значение = РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("ОсновноеСредство");
нФормаВыбора.Отбор.Ссылка.Использование = Истина;
нФормаВыбора.Открыть();
Иначе
// пока ничего
КонецЕсли;
КонецПроцедуры
Показать
(20) ошибка
Ошибка при установке значения атрибута контекста (Значение)
{Документ.СС_ТабельОС.Форма.ФормаДокумента.Форма(142)}: нФормаВыбора.Отбор.Ссылка.Значение = РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("ОсновноеСредство");
по причине:
Неверный тип значения
{Документ.СС_ТабельОС.Форма.ФормаДокумента.Форма(142)}: нФормаВыбора.Отбор.Ссылка.Значение = РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("ОсновноеСредство");
по причине:
Неверный тип значения
(32) СтандартнаяОбработка = Ложь отключает цепочку обработчиков следующих далее. Соответственно ОбработкаВыбора не вызывается для поля.
Просто открывается форму справочника, но никак не обрабатывается.
Как вариант, можно указать владельца формы выбора.
Просто открывается форму справочника, но никак не обрабатывается.
Как вариант, можно указать владельца формы выбора.
нФормаВыбора = Справочники.ОсновныеСредства.ПолучитьФормуВыбора("СС_ФормаВыбора", Элемент);
(31)
СтандартнаяОбработка = Ложь;
Это в начале нужно перед открытием, а лучше в условие, тогда будет отрабатывать условие, если запрос не пустой тогда открывать с отбором, иначе без отбора. В иначе можно ничего не писать, будет открыта форма без отбора
Если не РезультатЗапроса.Пустой() Тогда
СтандартнаяОбработка = Ложь;
.....
(35)
Процедура ЗаказыОбъектОСНачалоВыбора(Элемент, СтандартнаяОбработка)
ТабЧасти = ЭлементыФормы.Заказы.ТекущиеДанные;
Если ЗначениеЗаполнено(ТабЧасти.Участок) Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОсновныеСредства.Ссылка КАК ОсновноеСредство
|ИЗ
| РегистрСведений.МестонахождениеОСБухгалтерскийУчет.СрезПоследних КАК МестонахождениеОСБухгалтерскийУчетСрезПоследних
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ОсновныеСредства КАК ОсновныеСредства
| ПО МестонахождениеОСБухгалтерскийУчетСрезПоследних.ОсновноеСредство = ОсновныеСредства.Ссылка
|ГДЕ
| МестонахождениеОСБухгалтерскийУчетСрезПоследних.Местонахождение = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", ТабЧасти.Участок);
РезультатЗапроса = Запрос.Выполнить();
СписокОС = Новый СписокЗначений;
СписокОС.ЗагрузитьЗначения(РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("ОсновноеСредство"));
Если не РезультатЗапроса.Пустой() Тогда
СтандартнаяОбработка = Ложь;
нФормаВыбора = Справочники.ОсновныеСредства.ПолучитьФормуВыбора("ФормаСписка");
нФормаВыбора.РежимВыбора = Истина;
нФормаВыбора.ЗакрыватьПриВыборе = Истина;
нФормаВыбора.МножественныйВыбор = Истина;
нФормаВыбора.ВладелецФормы = Элемент;
нФормаВыбора.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке;
нФормаВыбора.Отбор.Ссылка.Значение = СписокОС;
нФормаВыбора.Отбор.Ссылка.Использование = Истина;
нФормаВыбора.Открыть();
Иначе
// пока ничего
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Показать
(39)
- во первых это не форма выбора, а форма списка. Можно тут не указывать имя формы, вызовется определенная
СтандартнаяОбработка = Ложь; - этот флаг отключает открытие стандартной формы выбора
И ещё раз, в чем сейчас проблема?
мне тут подсказали что нужно использовать форму выбора с оповещением при закрытии и в этом оповещении заполнять текущее поле
- это для управляемых форм.
нФормаВыбора = Справочники.ОсновныеСредства.ПолучитьФормуВыбора("ФормаСписка");
ПолучитьФормуВыбора()
СтандартнаяОбработка = Ложь; - этот флаг отключает открытие стандартной формы выбора
И ещё раз, в чем сейчас проблема?
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот