8.х Как обратиться программно к списку открытой номенклатуры из документа?

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем Sunbear, 13 ноя 2010.

  1. TopicStarter Overlay
    Sunbear
    Offline

    Sunbear Опытный в 1С

    Регистрация:
    11 фев 2010
    Сообщения:
    112
    Симпатии:
    0
    Баллы:
    26
    Хочу при записи документа обновить остатки в открытой ранее номенклатуре.
    "Управление торговлей", редакция 10.3 (10.3.6.8)
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Не очень понятно, что Вы хотите...
  3. TopicStarter Overlay
    Sunbear
    Offline

    Sunbear Опытный в 1С

    Регистрация:
    11 фев 2010
    Сообщения:
    112
    Симпатии:
    0
    Баллы:
    26
    Если одновременно открыт документ, например, перемещение товаров и номенклатура. В номенклатуре выбрана позиция номенклатуры. В документе перемещение у той же позиции номенклатуры меняется количество перемещаемых товаров. И ТабличноеПолеОстаткиТоваров не изменяется хотя документ провелся. чтобы увидеть изменение в ТабличноеПолеОстаткиТоваров нужно выбрать другую позицию номенклатуры а затем снова выбрать ту же позицию, тогда ТабличноеПолеОстаткиТоваров обновиться. А как его программно обновить чтобы не нужно было переставлять на другую позицию и обратно?
  4. Tanush
    Offline

    Tanush Опытный в 1С

    Регистрация:
    24 апр 2008
    Сообщения:
    96
    Симпатии:
    0
    Баллы:
    26
    я так поняла, что у вас открыта форма списка спр. "Номенклатура"? Тогда попробуйте обновить.
    Что-то вроде:
    Код:
    ВашаФормаСписка.Обновить();
    
    
  5. TopicStarter Overlay
    Sunbear
    Offline

    Sunbear Опытный в 1С

    Регистрация:
    11 фев 2010
    Сообщения:
    112
    Симпатии:
    0
    Баллы:
    26
    да у меня открыта форма списка спр. "Номенклатура".
    но как к ней обратиться из документа?
    пробовал

    Данные = Справочники.Номенклатура.ПолучитьФормуСписка();
    Данные.Обновить();

    но обновления не происходит.
  6. Tanush
    Offline

    Tanush Опытный в 1С

    Регистрация:
    24 апр 2008
    Сообщения:
    96
    Симпатии:
    0
    Баллы:
    26
    В какойТабличноеПолеОстаткиТоваров -
  7. Tanush
    Offline

    Tanush Опытный в 1С

    Регистрация:
    24 апр 2008
    Сообщения:
    96
    Симпатии:
    0
    Баллы:
    26
    В какой момент заполняете ТабличноеПолеОстаткиТовара? При активизации строки, открытии формы?
  8. TopicStarter Overlay
    Sunbear
    Offline

    Sunbear Опытный в 1С

    Регистрация:
    11 фев 2010
    Сообщения:
    112
    Симпатии:
    0
    Баллы:
    26
    Она сама заполняется. Есть две процедуры.

    // Процедура - обработчик события Выбор элемента управления ТабличноеПолеОстаткиТоваров.
    //
    Процедура ТабличноеПолеОстаткиТоваровВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)

    Если ЭлементыФормы.Список.ТекущиеДанные <> Неопределено
    И НЕ ЭлементыФормы.Список.ТекущиеДанные.ЭтоГруппа Тогда
    РаботаСДиалогами.ОбработатьВыборТаблицаОстатков(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка, ЭлементыФормы.Список.ТекущиеДанные.Ссылка);
    КонецЕсли;

    КонецПроцедуры


    // Процедура - обработчик события ПриВыводеСтроки элемента управления ТабличноеПолеОстаткиТоваров.
    //
    Процедура ТабличноеПолеОстаткиТоваровПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

    РаботаСДиалогами.ПриВыводеСтрокиБезЦены(Элемент, ОформлениеСтроки, ДанныеСтроки, Истина, ЭлементыФормы.Список.ТекущиеДанные);
    РаботаСДиалогами.ПриВыводеСуммОстатковНоменклатуры(ОформлениеСтроки, ДанныеСтроки, мСписокПрефиксовЦен, ВВалютеЦены);

    КонецПроцедуры
  9. Tanush
    Offline

    Tanush Опытный в 1С

    Регистрация:
    24 апр 2008
    Сообщения:
    96
    Симпатии:
    0
    Баллы:
    26
    Как вариант:
    Из процедуры ТабличноеПолеОстаткиТоваровПриВыводеСтроки перенесите это:
    Код:
    РаботаСДиалогами.ПриВыводеСтрокиБезЦены(Элемент, ОформлениеСтроки, ДанныеСтроки, Истина, ЭлементыФормы.Список.ТекущиеДанные);
    РаботаСДиалогами.ПриВыводеСуммОстатковНоменклатуры(ОформлениеСтроки, ДанныеСтроки, мСписокПрефиксовЦен, ВВалютеЦены);
    
    
    в модуль объекта в процедуру (Например "ПолучениеОстатков()", как хотите назовите) с ключевым словом экспорт.
    Потом можете ее вызывать как из этого обработчика, так и из того места в документе, где записываете/проводите
  10. TopicStarter Overlay
    Sunbear
    Offline

    Sunbear Опытный в 1С

    Регистрация:
    11 фев 2010
    Сообщения:
    112
    Симпатии:
    0
    Баллы:
    26
    в модуль объекта попытался вставить процедуру с ключевым словом экспорт, но во первых у нее много обязательных параметров, а во-вторых она не открывается из документа. когда делаешь
    Код:
    данные.
    
    ее просто нет в списке. и при выполнении говорит ошибку.
    Я нашел способ сделать по другому. сейчас все работает как мне и было нужно.

    Код:
       ТекущиеДанные = ЭлементыФормы.Товары.ТекущиеДанные;
    ТекущиеДанные = справочники.Номенклатура.НайтиПоКоду("003598");
    Данные = Справочники.Номенклатура.ПолучитьФормуСписка();
    tempПТС= Данные.ЭтаФорма.ПараметрТекущаяСтрока;
    Данные.ЭтаФорма.ПараметрТекущаяСтрока=ТекущиеДанные;
    Данные.Открыть();
    Данные.ЭтаФорма.ПараметрТекущаяСтрока =tempПТС;
    Данные.Открыть();
    
    

Поделиться этой страницей