7.7 Метод ВыбратьСтроку

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем nastya-b06, 10 июн 2011.

  1. TopicStarter Overlay
    nastya-b06
    Offline

    nastya-b06

    Регистрация:
    10 июн 2011
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Добрый день!

    Делаю форму списания материалов. В документе на списание при заполнении табличной части при выборе списываемого ТМЦ по методы ВыбратьСтроку открывается окно, где производится выбор ТМЦ из заранее сформированной таблицы значений (выбраны остатки из регистра остатков). Однако при выборе пользователем ТМЦ данное значение не помещается в таблицу, при этом остальные графы заполняются.
    Код:
    Стр = 0;
    Если ТЗОстатков.ВыбратьСтроку(Стр, "Выберите ТМЦ для списания") = 1 Тогда 
    ТМЦ = ТЗОстатков.ПолучитьЗначение(Стр,"ТМЦ");
    СпрТовары = создатьОбъект("Справочник.ТМЦ");
    СпрТовары.НайтиЭлемент(ТМЦ);
    УчЦена = СпрТовары.УчЦена;
    ЕдИзм = СпрТовары.ЕдИзм;
    КодПоОКЕИ = СпрТовары.КодПоОКЕИ;   
    Код = СпрТовары.Код; 
    
    Сообщить (ТМЦ);
    КонецЕсли;
    
    
    [​IMG]

    Как мне вставить название выбранного ТМЦ в таблицу?
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Неизвестно как вы заполнили ТЗ и того ли она типа
    Попробуте так:
    Код:
    ТМЦ = ТЗОстатков.ПолучитьЗначение(Стр,"ТМЦ").ТекущийЭлемент()
    
    
    
    
  3. TopicStarter Overlay
    nastya-b06
    Offline

    nastya-b06

    Регистрация:
    10 июн 2011
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Думаю, что ТЗ заполнила правильно, так как в переменную ТМЦ значение падает правильное, только оно почему-то не хочет в таблицу вставать.

    Если это поможет, то код заполнения ТЗ:
    Код:
    
    ТЗОстатков = СоздатьОбъект("ТаблицаЗначений");
    ТЗОстатков.НоваяКолонка("ТМЦ", "Справочник.ТМЦ",100,,"ТМЦ",50);
    ТЗОстатков.НоваяКолонка("УчЦена", "Число",15,2, "Уч. цена");
    ТЗОстатков.НоваяКолонка("Количество", "Число", 15, 2);
    ТЗОстатков.НоваяКолонка("ЕдИзм", "Перечисление.ЕдИзм",,,"Ед. изм",7);
    
    СпрТовары = создатьОбъект("Справочник.ТМЦ");
    
    
    Рег = СоздатьОбъект("Регистр.Остатки");
    Рег.ВыбратьИтоги();
    Пока Рег.ПолучитьИтог()=1 Цикл  
    ТМЦОстатки = Рег.ТМЦ; 
    Количество = Рег.Количество;
    СпрТовары.НайтиЭлемент(ТМЦОстатки);
    УчЦена = СпрТовары.УчЦена;
    ЕдИзм = СпрТовары.ЕдИзм;
    ТЗОстатков.НоваяСтрока();
    ТЗОстатков.ТМЦ = ТМЦОстатки;
    ТЗОстатков.Количество = Количество;
    ТЗОстатков.УчЦена = УчЦена;
    ТЗОстатков.ЕдИзм = ЕдИзм;
    КонецЦикла;     
    
    
    
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Подозреваю что у вас в табличной части документа не тот вид справочника. Проверьте в конфигураторе
  5. TopicStarter Overlay
    nastya-b06
    Offline

    nastya-b06

    Регистрация:
    10 июн 2011
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    В табличной части для переменной ТМЦ указан тип строка. Если указывать на справочник, то при добавлении строки в табличной части, будет производится выбор из справочника, а потом уже появляется окно выбора по методу ВыбратьСтроку.
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Есть процедура ПриНачелеВыбораЗначения. Она вам поможет
  7. TopicStarter Overlay
    nastya-b06
    Offline

    nastya-b06

    Регистрация:
    10 июн 2011
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Спасибо, процедура действительно полезная. Однако не совсем помогла. Добавила следующий код:
    Код:
    Процедура ПриНачалеВыбораЗначения (Элемент, Флаг)
    
    Если Элемент = "ТМЦ" Тогда
    Флаг = 0;    
    //ОткрытьПодбор("Обработка.ОстТМЦ","Выбор ТМЦ для списания",,0);
    
    Если ТЗОстатков.ВыбратьСтроку(Стр, "Выберите ТМЦ для списания") = 1 Тогда 
    ТМЦ = ТЗОстатков.ПолучитьЗначение(Стр,"ТМЦ").ТекущийЭлемент(); 
    Сообщить (ТМЦ);
    КонецЕсли;
    КонецЕсли;
    КонецПроцедуры    
    
    В табличную часть значение ТМЦ все равно не передается.

    Пробовала использовать метод ОткрытьПодбор (открывается Обработка.ОстТМЦ). Там прописано:
    Код:
    Процедура ПриДвойномЩелчкеНаТаблице()
    Если Таб.ТекущаяСтрока()>0 <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/тогда')">Тогда	</span> 
    ТМЦ = Таб.ПолучитьЗначение(Таб.ТекущаяСтрока(), "ТМЦ");
    Форма.ВыполнитьВыбор(ТМЦ);
    Форма.Закрыть();
    КонецЕсли;	
    КонецПроцедуры
    
    В данном случае в табличную часть ТМЦ передается и встает на свое место. Получается все отлично. Подскажите, пожалуйста, как мне дальше можно обработать значение ТМЦ (мне нужно по ТМЦ найти значение в стправочнике)? Я имею ввиду куда вставить код обработки (поиска в справочнике), так как при использовании ОткрытьПодбор сначала процедура ПриНачалеВыбораЗначения до конца выполняется, а потом передается управление в Обработка.ОстТМЦ.
    Прововала использовать ОбработкаВыбораЗначения, но в этом случае у меня снова ТМЦ в табличную часть не встает :(
  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    1) У вас случайно не определена локальная переменная ТМЦ?
    2) Все же давайте проверим виды
    Код:
    Сообщить("Это из таблицы "+ТЗОстатков.ПолучитьЗначение(Стр,"ТМЦ").Вид());
    Сообщить("Это реквизит "+ТМЦ.Вид());
    
    
    3) В формуле реквизита табличной части ТМЦ ничкакого вызова процедуры не прописано?
  9. TopicStarter Overlay
    nastya-b06
    Offline

    nastya-b06

    Регистрация:
    10 июн 2011
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    1) Да, переменная определена. Убрала и все получилось

    2) Выдало следующее:
    Это из таблицы ТМЦ
    Это реквизит ТМЦ

    3) В формуле реквизита табличной части ТМЦ вызова процедуры не прописано

    Блин... неужели все дело было в объявленной переменной.....
  10. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Да.... Вы присваивали локальной переменной, а не реквизиту
  11. TopicStarter Overlay
    nastya-b06
    Offline

    nastya-b06

    Регистрация:
    10 июн 2011
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Спасибо Вам большое!
  12. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Истина всегда где-то рядом.... Обращайтесь

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