Не обновляется форма документа

1. Serg-007 29.05.26 07:31 Сейчас в теме
Привет!
В 1С Бух 3 сделал расширение "Акция", в карточке номенклатуры добавил реквизит "Акционный товар" (тип булево), в док "Установка цен" вывел в табличную часть столбец "Акционный товар". Сотрудник открывает карточку номенклатуры, ставит галку "Акционный товар" и в док. "Установка цен" при подборе товара в табличной части видит акционный товар или нет (для контроля). Надоело им открывать каждую номенклатуру, чтоб ставить галку, и говорят: сделай кнопку, чтоб сразу весь товар, который находится в документе стал акционным, т.е. проставить галку в каждой номенклатуре и чтоб в столбце "Акционный товар" в документе тоже отобразилась галка.
Итог: всё почти работает, но при нажатии на кнопку не обновляется форма документа, т.е. в доке галки нет, а в карточке номенклатуры - есть.
Подскажите как победить, чтоб в доке галка тоже появлялась?

Код установки галки:

ТЧ_Товары = Объект.Товары; 

Для каждого СтрокаТЧ Из ТЧ_Товары Цикл

Товар = СтрокаТЧ.Номенклатура;
мТовар = Товар.ПолучитьОбъект();
мТовар.АкционныйТовар = Истина;
мТовар.Записать();

КонецЦикла;
Показать
По теме из базы знаний
Найденные решения
2. Sashares 33 29.05.26 07:45 Сейчас в теме
(1) По завершению изменения номенклатуры вызвать на клиенте ОповеститьОбИзменении()
Serg-007; spacecraft; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Sashares 33 29.05.26 07:45 Сейчас в теме
(1) По завершению изменения номенклатуры вызвать на клиенте ОповеститьОбИзменении()
Serg-007; spacecraft; +2 Ответить
3. Vlan 36 29.05.26 07:49 Сейчас в теме
(2) А почему просто не добавить
СтрокаТЧ.АкционныйТовар = Истина

или что-то вроде этого?
4. Sashares 33 29.05.26 07:49 Сейчас в теме
(3) Так это реквизит номенклатуры. В документе он выводится как реквизит ссылки.
5. Vlan 36 29.05.26 07:50 Сейчас в теме
(4) А нужно показать в документе, где это реквизит табличной части. Я так понял
6. Sashares 33 29.05.26 07:52 Сейчас в теме
(5) Например, через изменить форму можно в пользовательском режиме вывести реквизиты ссылки. Речь об этом.
8. Vlan 36 29.05.26 07:54 Сейчас в теме
(6) Это понятно. Но если мы принудительно меняем реквизит номенклатуры, не вижу препятствий поменять и реквизит формы документа.
10. Sashares 33 29.05.26 08:43 Сейчас в теме
(8) А попробуй)
Нет там реквизитов формы
11. Vlan 36 29.05.26 09:22 Сейчас в теме
(10) Нет реквизитов - нет проблем! (с)
У ТС создана колонка табличной части.
12. Sashares 33 29.05.26 09:24 Сейчас в теме
(11)
У ТС создана колонка табличной части.

Вам кажется.
13. Vlan 36 29.05.26 09:45 Сейчас в теме
(12) "..в карточке номенклатуры добавил реквизит "Акционный товар" (тип булево), в док "Установка цен" вывел в табличную часть столбец "Акционный товар"..."
16. Sashares 33 29.05.26 10:09 Сейчас в теме
(13)
в док "Установка цен" вывел в табличную часть столбец "Акционный товар"..."

И где там про создание колонки табличной части?
19. spacecraft 29.05.26 11:14 Сейчас в теме
(13) тут просто разница терминологий. Не в табличную часть, а в элементы выведен реквизит номенклатуры из табличной части. С данными этого элемента не возможно работать программно. Оно только для отображения.
Sashares; +1 Ответить
39. Serg-007 04.06.26 16:18 Сейчас в теме
(2) Переписал свой код + добавил на клиенте ОповеститьОбИзменении() - вобщем помогло, спасибо!
Sashares; +1 Ответить
7. Prikum 3 29.05.26 07:52 Сейчас в теме
(1)
но при нажатии на кнопку не обновляется форма документа
Если обновить форму, то вот
ОбновитьОтображениеДанных
30. anton13m 4 01.06.26 11:11 Сейчас в теме
(1)
в карточке номенклатуры добавил реквизит "Акционный товар" (тип булево)

Лучше было бы использовать типовой механизм дополнительных реквизитов и сведений.
9. VZyryanov 29.05.26 08:25 Сейчас в теме
ЭтаФорма.Прочитать();
14. Serg-007 29.05.26 10:02 Сейчас в теме
(9) Пробовал, не обновляется
17. Sashares 33 29.05.26 10:10 Сейчас в теме
(14) Осталось попробовать еще 2 предложенных варианта.
Интрига даже, что же поможет.
15. Serg-007 29.05.26 10:05 Сейчас в теме
Заметил вот что: после прохождение кода, галки в номенклатуре проставляются тут всё ОК ну и как описано выше в доке - нет, но если зайти в карточку номенклатуры и нажать "Провести и закрыть", потом эту номенклатуру перевыбрать в доке, тогда галка проставляется в столбце.
18. ZergKRSK 130 29.05.26 11:05 Сейчас в теме
(15)
в столбце

Какой путь к данным у этого столбца? Ну так, на всякий случай
20. RoyFincher 4 29.05.26 13:21 Сейчас в теме
&НаКлиенте
Процедура УстановитьПризнакАкционный(Команда)
    
    // твой код изменения признака
    УстановитьПризнакНаСервере();
    
    // Обновляем значения в табличной части
    Для Каждого СтрокаТЧ Из Объект.Товары Цикл
        СтрокаТЧ.АкционныйТовар = ПолучитьПризнакАкционный(СтрокаТЧ.Номенклатура);
    КонецЦикла;
    
    // Принудительно обновляем отображение
    Элементы.Товары.Обновить();
    
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьПризнакАкционный(Номенклатура)
    Возврат Номенклатура.АкционныйТовар;
КонецФункции
Показать
21. Sashares 33 29.05.26 13:23 Сейчас в теме
(20) Платформа умеет выводить реквизиты по ссылке без кода.
Зачем так сложно?
26. RoyFincher 4 29.05.26 17:21 Сейчас в теме
22. binx 176 29.05.26 15:24 Сейчас в теме
А если после нажатия кнопки, после записи Номенклатур, что-то такое сделать
Элементы.ТаблицаАкционныйТовар.ПутьКданным = ""
Элементы.ТаблицаАкционныйТовар.ПутьКданным = "Номенклатура.АкционныйТовар"
23. Sashares 33 29.05.26 15:59 Сейчас в теме
(22) Когда пользователь интерактивно что-то изменяет в справочнике и нажимает кнопку записать, программа это видит и показывает сразу.
А когда программно что-то изменяется, программа это не видит.
Вот бы был какой-нибудь метод, чтобы оповестить программу об изменении этих объектов.
Конечно жаль, что ничего такого не придумали.
24. spacecraft 29.05.26 16:23 Сейчас в теме
в продолжении (2):
можно на клиенте, по окончании изменения всей номенклатуры в ТЧ, вызвать ОповеститьОбИзменении(Тип("СправочникСсылка.Номенклатура"));
25. Sashares 33 29.05.26 16:29 Сейчас в теме
(24) Даже параметр заполнил.
Ни шанса ТС не оставил.
29. spacecraft 29.05.26 17:36 Сейчас в теме
(25) ну почему же?
Есть еще первый вариант с ОповеститьОбИзменении, обходить таблицу на клиенте и для каждой номенклатуры вызывать оповещение )
27. RoyFincher 4 29.05.26 17:25 Сейчас в теме
(24) Работает, но в описании указано что - Уведомляет динамические списки на клиенте об изменении множества объектов или множества записей регистра. Почему сработало с табличной частью?
28. spacecraft 29.05.26 17:30 Сейчас в теме
(27) это не совсем ТЧ.
И далее в СП:
Также осуществляется очистка закэшированных данных на клиенте. В частности, очищается кэш представлений ссылок, кэш данных через точку, кэш данных быстрого выбора, кэш ограничений по типу, кэш форм выбора. Удаляется только та информация, которая стала недействительной.
RoyFincher; Sashares; +2 Ответить
32. Sashares 33 01.06.26 14:10 Сейчас в теме
(24) Видимо отвечать ТС бесполезно.
Писать он уже научился, а читать еще нет.
user_2202820; +1 Ответить
31. Serg-007 01.06.26 13:55 Сейчас в теме
похоже кокда записываю программно

Товар = СтрокаТЧ.Номенклатура;
мТовар = Товар.ПолучитьОбъект();
мТовар.АкционныйТовар = Истина;
мТовар.Записать();

как-то запись чтоль криво происходит, хотя карточку номенклатуры открываю галка есть.
Но стоит открыть номенклатуру и нажать записать, то и в доке нужная глака сразу появляется.
33. Bukaska 149 01.06.26 16:45 Сейчас в теме
(31) А если добавить типовую команду: Обновить?
На форме списка она точно работает, может и в ТЧ элемента сработает? Хотя не проверяла. там даже код не нужен, просто воткнуть команду на форму и все
34. RoyFincher 4 01.06.26 17:43 Сейчас в теме
(31) Тебе же в (24) написали решение.
35. Sashares 33 01.06.26 18:00 Сейчас в теме
(34) Решение буквально первым ответом в теме дано, будем честными.
36. RoyFincher 4 01.06.26 20:29 Сейчас в теме
(35) В первом ответе еще нужно думать.
37. Sashares 33 01.06.26 20:43 Сейчас в теме
38. RoyFincher 4 02.06.26 00:22 Сейчас в теме
(37)
(╯°□°)╯︵ ┻━┻

┬─┬ノ( º _ ºノ)
Sashares; +1 Ответить
Для отправки сообщения требуется регистрация/авторизация

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот