Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Глюк при добавлении строки табличной части копированием 1С 8.3.12 УФ

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

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

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

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

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


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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует