|
Как перебрать и изменить табличную часть документа | ☑ | ||
---|---|---|---|---|
0
gabd_marat
27.07.17
✎
17:09
|
Есть документ. В нем табличная часть. Есть колонка номенклатура, кол-во, остаток. остаток заполняется программно (кол-во остаток в регистрах - кол-во док) при активации или при изменении строки. Если в табл части 2 номенклатуры при изменении в одной не отображаются актуальный остаток в другой строке. Как решить данную проблему?
|
|||
1
Ёпрст
27.07.17
✎
17:13
|
заполняйте остаток в ПриИзмененииДанных
|
|||
2
gabd_marat
27.07.17
✎
17:23
|
Не умею пользоваться справочником 1с. Можете скинуть описание? Это событие или метод?
|
|||
3
Мимохожий Однако
27.07.17
✎
17:24
|
(2) Браво.
|
|||
4
1sanekmaloi1
27.07.17
✎
17:25
|
(1)Кидай ему сразу код, пользоваться головой похоже тоже не умеет.
|
|||
5
lodger
27.07.17
✎
17:26
|
(3) это тот самый случай когда СП можно распечатать и продать...
|
|||
6
gabd_marat
27.07.17
✎
17:29
|
Как я понял нужно подключать обработчик изменения данных. ПодключитьОбработчикИзмененияДанных("СправочникОбъект.Ссылка", "ПриИзмененииСсылки", Ложь);
|
|||
7
gabd_marat
27.07.17
✎
17:30
|
(5) Распечатай посмотрю, может куплю
|
|||
8
gabd_marat
27.07.17
✎
17:38
|
Почему не отображается событие формы приизмененииданных?
|
|||
9
gabd_marat
27.07.17
✎
17:43
|
(5) Правильно ли я понимаю, ПриИзмененииДанных это событие формы и оно должно отображаться в стандартных событий форм?
|
|||
10
gabd_marat
27.07.17
✎
17:50
|
1sanekmaloi1, Почему не отображается событие формы приизмененииданных?Правильно ли я понимаю, ПриИзмененииДанных это событие формы и оно должно отображаться в стандартных событий форм?
|
|||
11
Ёпрст
27.07.17
✎
18:02
|
(10) Смотря какая форма, ОФ/УФ
|
|||
12
Ёпрст
27.07.17
✎
18:03
|
и это, если че, событтие табличного поля, а не формы
|
|||
13
h-sp
27.07.17
✎
18:03
|
(10) всё-таки ПриПолученииДанных
|
|||
14
Buster007
27.07.17
✎
18:12
|
(0) а проблема в чем?
в 2 строках одна и та же номенклатура? Или тебе надо при изменении любой строки пересчитывать все остатки в ТЧ? |
|||
15
Базис
naïve
27.07.17
✎
18:31
|
Вы работаете программистом?
С какого? |
|||
16
gabd_marat
28.07.17
✎
13:00
|
(14) Случай когда в 2 строках одна и таже номенклатура , пересчитывается остаток только активной строки номенклатуры, а в другой строке номенклатуры старый остаток.
|
|||
17
bodri
28.07.17
✎
13:08
|
(0) а как остаток заполняется?
|
|||
18
gabd_marat
28.07.17
✎
13:09
|
(14) Или тебе надо при изменении любой строки пересчитывать все остатки в ТЧ?
Необходимо при изменении строки пересчитывались остатки другой строки с той же номенклатурой. |
|||
19
gabd_marat
28.07.17
✎
13:11
|
(17) Остаток = ЗапросОстаток - кол-во док(количество перемещения номенкл).
|
|||
20
gabd_marat
28.07.17
✎
13:12
|
(17)
&НаСервере Функция ОстатокНоменклатуры(Номенклатура) мОбъект = РеквизитФормыВЗначение("Объект"); Результат = МТ_ОперативныйУчетВСкладах.МТ_ПолучитьОстатокНоменклатуры(Номенклатура, мОбъект.СкладОтправитель, мОбъект.Организация, мОбъект); мТаблица = РеквизитФормыВЗначение("Объект.Товары"); ПраметрыОтбора = Новый Структура; ПраметрыОтбора.Вставить("Номенклатура", Номенклатура); СтрокиОтбора = мТаблица.НайтиСтроки(ПраметрыОтбора); КолДок = 0; Для Каждого Строка Из СтрокиОтбора Цикл КолДок = КолДок + Строка.Количество; КонецЦикла; Пока Результат.Следующий() Цикл Элемент = Результат.КоличествоОстаток - КолДок; КонецЦикла; Возврат Элемент; КонецФункции &НаКлиенте Процедура ТоварыНоменклатураПриИзменении(Элемент) Стр = Элементы.Товары.ТекущиеДанные; Номенклатура = Стр.Номенклатура; Количество = ОстатокНоменклатуры(Номенклатура); Стр.Остаток = Количество; //ОбновитьОтображениеДанных(); КонецПроцедуры |
|||
21
bodri
28.07.17
✎
13:16
|
(20)
Правильно работает, как написано так и работает. Добавь хотя бы поиск по таблице, чтоб найти такую же номенклатуру и туда тоже результат пихай. |
|||
22
gabd_marat
28.07.17
✎
14:13
|
(20) Работает правильно, мне нужно (18). Делал через ЗначениеВреквизитформы зависает, так как есть процедура при активации строки. Как решить проблему?
|
|||
23
gabd_marat
28.07.17
✎
14:24
|
При такой реализации зависает
&НаСервере Функция ОстатокНоменклатуры(Номенклатура) мОбъект = РеквизитФормыВЗначение("Объект"); Результат = МТ_ОперативныйУчетВСкладах.МТ_ПолучитьОстатокНоменклатуры(Номенклатура, мОбъект.СкладОтправитель, мОбъект.Организация, мОбъект); мТаблица = РеквизитФормыВЗначение("Объект.Товары"); ПраметрыОтбора = Новый Структура; ПраметрыОтбора.Вставить("Номенклатура", Номенклатура); СтрокиОтбора = мТаблица.НайтиСтроки(ПраметрыОтбора); КолДок = 0; Для Каждого Строка Из СтрокиОтбора Цикл КолДок = КолДок + Строка.Количество; КонецЦикла; Пока Результат.Следующий() Цикл Элемент = Результат.КоличествоОстаток - КолДок; КонецЦикла; Для Каждого Строка Из СтрокиОтбора Цикл Строка.Остаток = Элемент; КонецЦикла; ЗначениеВРеквизитФормы(мТаблица,"Объект.Товары"); Возврат Элемент; КонецФункции &НаКлиенте Процедура ТоварыПриАктивизацииСтроки(Элемент) Стр = Элементы.Товары.ТекущиеДанные; Номенклатура = Стр.Номенклатура; Количество = ОстатокНоменклатуры(Номенклатура); Стр.Остаток = Количество; Для Каждого Строка Из Объект.Товары Цикл Строка.Количество = Элемент; КонецЦикла; //ЗначениеВРеквизитФормы(мТаблица,"Объект.Товары"); //ОбновитьОтображениеДанных(); КонецПроцедуры |
|||
24
gabd_marat
28.07.17
✎
15:40
|
(21) Зависает в бесконечный цикл, скорее всего из-за реквизитаформывзначение и приактивациистроки происходит бесконечный цикл.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |