|   |   | 
| 
 | v7: Тз и НайтиЗначение | ☑ | ||
|---|---|---|---|---|
| 0
    
        FaustNz 06.05.15✎ 12:26 | 
        День добрый. 
 Не пойму почему ТзСклады.НайтиЗначение(Склад, , ) всегда возвращает 0 , даже если повторно выбрать склад, который уже есть в ТЗ код: ///+код Склад = СоздатьОбъект("Справочник.Склады"); Если (Склад.Выбрать("Укажите склад","ФормаСписка")=0) Тогда Возврат; КонецЕсли; Если ТзСклады.НайтиЗначение(Склад, , )=1 Тогда Возврат; КонецЕсли; ТзСклады.НоваяСтрока(); ТзСклады.Склад = Склад; ///-код В чем бяда? Спасиб | |||
| 1
    
        Spyke 06.05.15✎ 12:30 | 
        (0) ТзСклады.Склад какой тип?     | |||
| 2
    
        Cap_1977 06.05.15✎ 12:31 | 
        Если ТзСклады.НайтиЗначение(Склад, , )=1 Тогда
 замени на Если ТзСклады.НайтиЗначение(Склад.ТекущийЭлемент(), , )=1 Тогда | |||
| 3
    
        Эльниньо 06.05.15✎ 12:32 | 
        с = 0;
 с = ТзСклады.НайтиЗначение(Склад, с, "Склад"); Если с > 0 Тогда ВонОн = ТзСклады.ПолучитьЗначение(с, "Склад"); | |||
| 4
    
        FaustNz 06.05.15✎ 12:42 | 
        (1) произвольное
 (2) не помогло. Склад спозиционирован правильно(отладчиком проверил) (3) С указанием колонки не находит, в С строку не возвращает ///+код Процедура ПриОткрытии() ТзСклады.НоваяКолонка("Склад"); КонецПроцедуры Процедура ПоКнДобавитьСклад() Склад = СоздатьОбъект("Справочник.Склады"); Если (Склад.Выбрать("Укажите склад","ФормаСписка")=0) Тогда Возврат; КонецЕсли; Стр = 0; Если (ТзСклады.НайтиЗначение(Склад.ТекущийЭлемент(),Стр ,"Склад")=1) или (Стр>0) Тогда Возврат; КонецЕсли; ТзСклады.НоваяСтрока(); ТзСклады.Склад = Склад; Конецпроцедуры ///-код загадка какая-то ... | |||
| 5
    
        Cap_1977 06.05.15✎ 12:43 | 
        (Стр>0) это лишнее     | |||
| 6
    
        Cap_1977 06.05.15✎ 12:43 | 
        и .НайтиЗначение сравнивай с нулем )     | |||
| 7
    
        1Сергей 06.05.15✎ 12:46 | 
        ТзСклады.Склад = Склад.ТекущийЭлемент();     | |||
| 8
    
        FaustNz 06.05.15✎ 12:48 | 
        (5) Да эт я так, с избыточностью написал от отчаянья )
 (6) Почему? Мне наличие в Тз склада надо выловить (7) Помогло! Только пока не въехал почему. | |||
| 9
    
        Spyke 06.05.15✎ 12:48 | 
        (4) Если произвольное, значит строка, замени на
 ТзСклады.НайтиЗначение(СОКРЛП(Склад.ТекущийЭлемент().Наименование, ,) | |||
| 10
    
        FaustNz 06.05.15✎ 12:51 | 
        (9) В сторону типа тож копал, пробовал по наименованию, не помогало. В отладчике в Тз сидели именно элементы справочника     | |||
| 11
    
        DCKiller 06.05.15✎ 13:02 | 
        (7) Потому что когда ты устанавливаешь ТзСклады.Склад = Склад, ты устанавливаешь в ячейку ТЗ элемент-объект "Справочник.Склады", а ТекущийЭлемент() возвращает ссылку на элемент справочника.     | |||
| 12
    
        FaustNz 06.05.15✎ 13:04 | 
        (11) Спасиб, дошло. Объект и ссылка в 8-ке. Думал тут такого нет.     | |||
| 13
    
        1Сергей 06.05.15✎ 13:05 | 
        (9) меня всегда корёжит от вот такого написания:
 Склад.ТекущийЭлемент().Наименование | |||
| 14
    
        FaustNz 06.05.15✎ 13:13 | 
        (13) Почему?     | |||
| 15
    
        DCKiller 06.05.15✎ 13:15 | 
        (14) В данном случае достаточно просто Склад.Наименование     | |||
| 16
    
        Злопчинский 06.05.15✎ 14:59 | 
        (13) такое написание читает актуальные данные
 потому что Склад.Наименование <> Склад.ТекущийЭлемент().Наименование может быть ??? | |||
| 17
    
        Serginio1 06.05.15✎ 15:36 | 
        (4) Проще использовать глобальную функцию
 Функция глНайтиЗначениеВТз(Тз,Значение,ИмяКолонки) Экспорт стр=0; Если Тз.НайтиЗначение(Значение,стр,ИмяКолонки)=1 Тогда Тз.ПолучитьСтрокуПоНомеру(стр); Возврат 1; КонецЕсли; Возврат 0; КонецФункции // глНайтиЗначениеВТз | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |