Версия для печати темы (https://pro1c.org.ua/index.php?s=bc100bf2c66621a21584a6bce1196fdf&showtopic=24993)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ Поле "Вес" из "Формы элемента"

Автор: candrey 07.09.15, 11:16

Добрый день.

1с 8.2 файловая. обычный интерфейс. УТ.
Вопрос. 1)Как добавить ссылку на "Форму списка" из "Формы элемента" с "Основной панели- поле "Вес"

Принскрин прилогаю.

Спасибо за помощь.

Автор: DrLivsi 07.09.15, 11:38

В событии"ПриПолученииДанных" табличного поля СправочникСписок, получаем вес номенклатуры и вставляем в нужную колонку.

Автор: candrey 07.09.15, 11:55

Цитата(DrLivsi @ 07.09.15, 12:38) *
В событии"ПриПолученииДанных" табличного поля СправочникСписок, получаем вес номенклатуры и вставляем в нужную колонку.


В форме списка Есть ВнешнееСобытие

его код
Процедура ВнешнееСобытие(Источник, Событие, Данные)

    Если Не ВводДоступен() Тогда
        Возврат;
    КонецЕсли;

    ПолучитьСерверТО().ОбработатьВнешнееСобытие(Источник, Событие, Данные, ЭтаФорма);

КонецПроцедуры // ВнешнееСобытие()


Вы про этот участок говорите?

Автор: DrLivsi 07.09.15, 12:13

У табличного поля есть свойство ПриПолученииДанных, вставляем туда код

Процедура СправочникСписокПриПолученииДанных(Элемент, ОформленияСтрок)

Для Каждого СтрокаОформления Из ОформленияСтрок Цикл
    ТекДанные=СтрокаОформления.ДанныеСтроки;
    ТекСсылка=ТекДанные.Ссылка;
    Если НЕ ТекДанные.ЭтоГруппа Тогда

             СтрокаОформления.Ячейки.Вес.УстановитьТекст(ТекСсылка.ЕдиницыИзмерения[0].Вес);

    КонецЕсли;

КонецЦикла;
КонецПроцедуры;


Автор: candrey 07.09.15, 12:34

Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)
    // Вставить содержимое обработчика.
    
    

Для Каждого СтрокаОформления Из ОформленияСтрок Цикл
    ТекДанные=СтрокаОформления.ДанныеСтроки;
    ТекСсылка=ТекДанные.Ссылка;
    Если НЕ ТекДанные.ЭтоГруппа Тогда

            СтрокаОформления.Ячейки.Вес.УстановитьТекст(ТекСсылка.ЕдиницыИзмерения[0].Вес);

    КонецЕсли;

КонецЦикла;


КонецПроцедуры


ругается на ошибку
{Справочник.Номенклатура.Форма.ФормаСписка.Форма(914)}: Поле объекта не обнаружено (ЕдиницыИзмерения)
            СтрокаОформления.Ячейки.Вес.УстановитьТекст(ТекСсылка.ЕдиницыИзмерения[0].Вес);


это надо реквизит создать(ЕдиницыИзмерения) и прикрутить к колонке?

Автор: DrLivsi 07.09.15, 13:01

Цитата(candrey @ 07.09.15, 13:34) *
это надо реквизит создать(ЕдиницыИзмерения) и прикрутить к колонке?

Нет. Посмотрите как у вас называется табличная часть (та где указан вес) и замените имя.

Если ЕдиницыИзмерения у вас отдельный справочник, тогда выбираете из него запросом по владельцу

Автор: candrey 07.09.15, 13:16

Т.е в справочнике "Единицы измерения"? Таблица называется "Единицы измерения"

Или Вы говорите про спрвочник "Номенклатура"? названия таблицы?

Да справочники отдельные. т.е Номенклатура и Единицы измерения

Автор: DrLivsi 07.09.15, 13:31

Вставте вместо строки "СтрокаОформления.Ячейки.Вес.УстановитьТекст(ТекСсылка.ЕдиницыИзмерения[0].Вес);"

Выборка =Справочники.ЕдиницыИзмерения.Выбрать(,ТекСсылка);
        
Выборка.Следующий();

СтрокаОформления.Ячейки.Вес.УстановитьТекст(Выборка.Вес);

Автор: candrey 07.09.15, 13:37

    Для Каждого СтрокаОформления Из ОформленияСтрок Цикл
    ТекДанные=СтрокаОформления.ДанныеСтроки;
    ТекСсылка=ТекДанные.Ссылка;
    Если НЕ ТекДанные.ЭтоГруппа Тогда
        Запрос3 = Новый Запрос;
        Запрос3.Текст =

        
   "ВЫБРАТЬ
|    ЕдиницыИзмерения.Ссылка,
|    ЕдиницыИзмерения.ВерсияДанных,
|    ЕдиницыИзмерения.ПометкаУдаления,
|    ЕдиницыИзмерения.Предопределенный,
|    ЕдиницыИзмерения.Владелец,
|    ЕдиницыИзмерения.Родитель,
|    ЕдиницыИзмерения.ЭтоГруппа,
|    ЕдиницыИзмерения.Код,
|    ЕдиницыИзмерения.Наименование,
|    ЕдиницыИзмерения.ЕдиницаПоКлассификатору,
|    ЕдиницыИзмерения.Вес,
|    ЕдиницыИзмерения.Объем,
|    ЕдиницыИзмерения.Коэффициент
|ИЗ
|    Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения";

Рез3 = Запрос3.Выполнить();
Таб3 = Рез3.Выгрузить();
  КонецЕсли;

            СтрокаОформления.Ячейки.Вес.УстановитьТекст(ТекСсылка.ЕдиницыИзмерения[0].Вес);

    
КонецЦикла;


ошибка

{Справочник.Номенклатура.Форма.ФормаВыбора.Форма(970)}: Поле объекта не обнаружено (ЕдиницыИзмерения)
            СтрокаОформления.Ячейки.Вес.УстановитьТекст(ТекСсылка.ЕдиницыИзмерения[0].Вес);

Автор: sava1 07.09.15, 13:41

Вес - реквизит справочника ?

Автор: candrey 07.09.15, 15:07

Теперь работает
с таким кодом.

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

СтрокаОформления.Ячейки.Вес.УстановитьТекст(Выборка.Вес);
    
КонецЕсли;
КонецЦикла;


Спасибо Вам DrLivsi за помощь в освоении языка 1С icon_beer17.gif

Извините за наглось.
А как можно установить для поля "Вес" признак "Контроль незаполненого поля" т.е при создании новой номенклатуры это поле было обязательное для заполнения.

Стоит "АвтоотметкаНезаполненого" и "автовыборНезаполненого"
Спасибо.

Реквизит "Вес" в справочнике "Единицы измерения"
Стоит проверка заполнения- Выдавать ошибку!!!

Но неработает как нужно.

Автор: Vofka 07.09.15, 15:47

Цитата(candrey @ 07.09.15, 16:07) *
Извините за наглось.

Правила, пункт 6. Тема закрывается.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua