Имя: Пароль:
1C
1С v8
Глюк при добавлении строки табличной части копированием 1С 8.3.12 УФ
0 davlen86
 
26.10.18
14:14
Доброго времени суток, уважаемые форумчане! Помогите плиз кто знает.
Создал свой документ, в этом документе есть две табличные части: "ТранспортныеНакладные" и "ТоварныйСостав", в первой тч есть реквизит ID, в который устанавливается УникальныйИдентификатор, во второй тч есть реквизит ID_ТН он копируется из текущей строки первой тч при добавлении. Так вот проблема в том что после того как добавил во вторую тч новую строку, в первой тч перестает копировать строки, т.е.  добавляется пустая строка и она не заходит в процедуру ТранспорнтыеНакладныеПриНачалеРедактирования. Подскажите может кто то сталкивался уже. Спасибо
1 davlen86
 
26.10.18
14:15
&НаКлиенте
Процедура ТранспорнтыеНакладныеПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
    
    Если НоваяСтрока ИЛИ Копирование ИЛИ НЕ ЗначениеЗаполнено(Элемент.ТекущиеДанные.ID) Тогда
        Элемент.ТекущиеДанные.ID = Новый УникальныйИдентификатор;
        Если ЗначениеЗаполнено(Объект.Номер) Тогда
            Элемент.ТекущиеДанные.НомерНакладной = Объект.Номер+"/"+Формат(Элемент.ТекущиеДанные.НомерСтроки,"ЧГ=0");
        КонецЕсли;    
        
        Объект.СуммаДокумента = Объект.ТранспорнтыеНакладные.Итог("Сумма");
        Объект.СуммаНДС       = Объект.ТранспорнтыеНакладные.Итог("СуммаНДС");

    КонецЕсли;    
    
КонецПроцедуры

&НаКлиенте
Процедура ТоварныйСоставПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
    
    Если НоваяСтрока Тогда
        Если Объект.ТранспорнтыеНакладные.Количество() > 0 Тогда  
            Элемент.ТекущиеДанные.ID_ТН = Элементы.ТранспорнтыеНакладные.ТекущиеДанные.ID;
        Иначе
            Сообщить("Необходимо сначала добавить транспортную накладную.");
        КонецЕсли;    
    КонецЕсли;    
    
КонецПроцедуры
2 davlen86
 
26.10.18
14:20
есть еще процедура которая устанавливает отбор во второй тч при активизации строки в первой тч.

&НаКлиенте
Процедура ТранспорнтыеНакладныеПриАктивизацииСтроки(Элемент)
    
    Если Элемент.ТекущиеДанные <> Неопределено И Элемент.ТекущиеДанные.ID <> ТекущиеИДСтрокиТрансНакл Тогда  
        УстановитьОтборТоварногоСостава(Элемент.ТекущиеДанные.ID);
    КонецЕсли;    
    
КонецПроцедуры

&НаСервере
Процедура УстановитьОтборТоварногоСостава(ИД)
    
    СтруктОтбора = Новый ФиксированнаяСтруктура("ID_ТН",?(ИД="","заглушка",ИД));
    Элементы.ТоварныйСостав.ОтборСтрок = СтруктОтбора;
    ТекущиеИДСтрокиТрансНакл = ИД;
    
КонецПроцедуры
3 dezss
 
26.10.18
14:22
Кэш продувал?
4 asady
 
26.10.18
14:23
(0) ну так проассоциируй обработчик с событием.
5 davlen86
 
26.10.18
14:26
(4) не понял. Дело в том что он ассоциирован, он работает и в него попадает, при копировании строк, но после того как добавить строку во вторую тч, он не срабатывает, при копировании и строка новая пустая.
6 asady
 
26.10.18
14:27
(5) открывай свою форму выдели элемент + правая кнопка мыши - свойства - события - ПриАктивизацииСтроки() - там есть ссылка на обработчик или пусто?
7 dezss
 
26.10.18
14:28
(2) не делай так...
не надо ПриАктивизацииСтроки делать серверных вызовов
8 dezss
 
26.10.18
14:29
(7) + это ведет к абсолютно неадекватному поведению формы в некоторых случаях
9 davlen86
 
26.10.18
14:30
(7) я знаю, что не стоит, потому что получаются бесконечный цикл, чтобы этого избежать я ввел реквизит формы "ТекущиеИДСтрокиТрансНакл" и проверяю его перед тем как вызвать серверный метод. Сначала тоже не мог понять в чем дело. Если вы знаете какую то альтернативу, то поделитесь плиз
10 davlen86
 
26.10.18
14:31
(7) как тогда можно при активизации строки, установить отбор на вторую тч по ид первой тч?
11 davlen86
 
26.10.18
14:32
(6) да есть.
12 dezss
 
26.10.18
14:33
(9) Это можно делать и на клиенте, но все равно порождается серверный вызов...
13 asady
 
26.10.18
14:35
(11) а ПриНачалеРедактирования() там что?
14 davlen86
 
26.10.18
14:39
(13) все процедуры ассоциированы, трабл в том что обработчик "ТранспорнтыеНакладныеПриНачалеРедактирования" при копировании строк срабатывает, и копируется все нормально, до того момента, пока не добавишь хотя бы одну строчку во вторую тч
15 davlen86
 
26.10.18
14:40
(14) После того как добавил строчку во вторую тч, копироваться перестает, он добавляет новую строку но она пустая, и в обработчик "ТранспорнтыеНакладныеПриНачалеРедактирования" он не попадает.
16 dezss
 
26.10.18
14:40
(14) попробуй сделать на клиенте
   СтруктОтбора = Новый ФиксированнаяСтруктура("ID_ТН",?(ИД="","заглушка",ИД));
    Элементы.ТоварныйСостав.ОтборСтрок = СтруктОтбора;
    ТекущиеИДСтрокиТрансНакл = ИД;


я попробовал сделать на клиенте и на сервере (как у тебя)
когда на сервере, полный бред начал твориться...
все создаваемые новые гуиды 00000000-0000-0000-0000-000000000000
17 davlen86
 
26.10.18
14:41
(16) ок попробую. Спасибо за совет.
18 davlen86
 
26.10.18
14:49
(16)  Помогло спасибо Вам огромное!!!