Имя: Пароль:
1C
1С v8
Заполнение реквизита тч при открытии документа
, ,
0 noooobok
 
17.06.15
15:04
Здравствуйте! 1с 8.2 упп

Задача в следующем:

необходимо добавить колонку "Артикул" в табличную часть документа "Распоряжение на изменение рецептуры". Также Артикул должен соответствовать Номенклатуре и наоборот.
Это я сделал. Добавил новый реквизит в тч, добавил колонку на форму, добавил событие ПриИзменении для артикула и номенклатуры.

Код следующий:

Процедура ПродукцияНоменклатураПриИзменении(Элемент)
    
     СтрокаТабличнойЧасти = ЭлементыФормы.Продукция.ТекущиеДанные;
     СтрокаТабличнойЧасти.Артикул = Элемент.Значение.Артикул;
                
КонецПроцедуры

Процедура ПродукцияАртикулПриИзменении(Элемент)
    
    СтрокаТабличнойЧасти = ЭлементыФормы.Продукция.ТекущиеДанные;
  
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Номенклатура.Ссылка
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура
        |ГДЕ
        |    Номенклатура.Артикул = &Артикул
        |    И Номенклатура.ВидНоменклатуры = &ВидНоменклатуры";

    Запрос.УстановитьПараметр("Артикул", СтрокаТабличнойЧасти.Артикул);
    Запрос.УстановитьПараметр("ВидНоменклатуры", Справочники.ВидыНоменклатуры.НайтиПоКоду("000000023"));
    Результат = Запрос.Выполнить().Выбрать();
    КолВоЗаписей = Результат.Количество();
    
    
    Если КолВоЗаписей = 1 Тогда
        //Выборка = Результат.Выбрать();

         Результат.Следующий();
        СтрокаТабличнойЧасти.Номенклатура = Результат.Ссылка;
    КонецЕсли;
    
    
КонецПроцедуры


В итоге при вводе Артикула изменяется Номенклатура и наоборот.

Но есть одна недоработка, которую не знаю как пофиксить: если заходишь в существующий документ, в котором уже есть номенклатура, колонка Артикул не заполнена. Заполняется только при изменении.

Хелпанете? Мб в Процедуру ПриОткрытии допилить чего-нибудь?
1 Ненавижу 1С
 
гуру
17.06.15
15:06
не нужен реквизит Артикул в ТЧ документа, он и так однозначно вычисляется по номенклатуре, его надо расчитывать при показе ТЧ
2 noooobok
 
17.06.15
15:20
(1)
Можно более подробно?
3 D_E_S_131
 
17.06.15
15:22
(2) В УПП много документов, где такое сделано. Можно самому посмотреть. Принцип один — работать с ОформлениемСтроки, используя предопределенную процедуру ПриВыводеСтроки().
4 Stim
 
17.06.15
15:27
НИКОГДА
НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ
НЕ ИЗМЕНЯЙ ДАННЫЕ В ПРОЦЕДУРЕ ПРИОТКРЫТИИ()

!!!
5 D_E_S_131
 
17.06.15
15:29
(4) А чего эта? Во всех типовых ПриОткрытии меняются данные,  а ему нельзя?
6 totparen
 
17.06.15
15:38
(5) Мне кажется ЕМУ, пока нельзя. ))
7 Ненавижу 1С
 
гуру
17.06.15
15:43
(5) это в каких?
8 Stim
 
17.06.15
15:44
(5) например
9 totparen
 
17.06.15
15:45
(5) Видимо имеется в виду Данные, как реквизиты объекта, а не как код процедуры.
10 totparen
 
17.06.15
16:11
(0)

В табличную часть формы, добавьте поле "Артикул",
В обработчик события ПриВыводеСтроки, табличного поля

ОформлениеСтроки.Ячейки.Артикул.УстановитьТекст(ДанныеСтроки.Номенклатура.Артикул);
11 D_E_S_131
 
17.06.15
16:19
(7)(8) Например Заказ покупателя из УТ 10.3 имеет такой код в ПриОткрытии()

Если ЭтоНовый() Тогда
        
        ИнициализироватьНовыйДокумент(ПараметрОбъектКопирования, ПараметрОснование);

    Иначе
        
        НастройкаПравДоступа.ОпределитьДоступностьВозможностьИзмененияДокументаПоДатеЗапрета(ДокументОбъект, ЭтаФорма);

    КонецЕсли;
12 noooobok
 
17.06.15
16:20
(3) спасибо за наводку, сделал так:

Процедура ПродукцияПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    
      ОформлениеСтроки.Ячейки.Артикул.ОтображатьТекст = Истина;
      ОформлениеСтроки.Ячейки.Артикул.Текст = ДанныеСтроки.Номенклатура.Артикул
    
    
КонецПроцедуры
13 Stim
 
18.06.15
09:08
(11) И? Речь идет о открытии уже существующего документа, а не создании нового
14 mikiFox
 
18.06.15
09:25
Не нужно ничего менять в процедурах. Напиши внешнюю обработку, перебери доки и проставь везде артикулы. Или действительно выводи только информативно ПриВыводеСтроки в колонку тч, а реквизит тч удали тогда
15 Kurbash
 
18.06.15
09:41
а если изменить форму саму а не объект? добавит реквизит в ТЧ ФОРМЫ, и путь к данным прописать артикул из ТЧ номенклатуры?
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс