Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
23 Авг 2019, 01:20
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: не удается найти строку в таблице значения 1с77 - выдает, что ничего не находит, хотя запись в ТЗ есть  (Прочитано 251 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн alpha78

  • *
  • Сообщений: 11
  • РЕПУТАЦИЯ: 1
  • КПД: 9%
  • Регистрация: 2015-06-27
  • Сайт: 
  • Профессия: Разработчик 1С
добрый день, не удается найти строку в таблице значения 1с77 - выдает, что ничего не находит, хотя запись в ТЗ есть
вот код, должно работать, ТЗ - таблица значения внешней обработки
ОС, Счет - строковые реквизиты формы

объявление таблицы значения - 3 колонки:
ТЗ.НоваяКолонка("КодОС","Строка",10);
ТЗ.НоваяКолонка("ОС","Строка",200);
ТЗ.НоваяКолонка("Сумма","Число",15,2);

а вот код поиска строки таблицы значения с нужными данными
Процедура ВыборкаИзТЗ()
С="";
Если ТЗ.НайтиЗначение(СокрЛП(Выбор.Наименование),С,"ОС")=1
Тогда
ТЗ.ПолучитьСтрокуПоНомеру(С);
ОС = ТЗ.ОС;
Счет = ТЗ.СчетДт;
Предупреждение ("Таблица есть, нужно выгрузить = "+ОС);
Иначе
Предупреждение ("Нет значения");   
КонецЕсли;   
КонецПроцедуры   


что не так, благодарю


Оффлайн alpha78

  • *
  • Сообщений: 11
  • РЕПУТАЦИЯ: 1
  • КПД: 9%
  • Регистрация: 2015-06-27
  • Сайт: 
  • Профессия: Разработчик 1С
ps. Выбор - реквизит типа справочник НеоборотныеАктивы
Добавлено: 29 Май 2019, 17:03

по поиску по строке получилось

Перем С;

// запись П2-П1
Если ТЗ.НайтиЗначение(Выбор.Наименование,С,"ОС")=1 Тогда

ТЗ.ПолучитьСтрокуПоНомеру(С);
ОС = ТЗ.ОС;
КодОС = ТЗ.КодОС;
Счет = ТЗ.СчетДт;
ДельтаП = ТЗ.Сумма;
Я объявил переменную С для получения номера найденной строки и все пошло

другая проблема в этой же таблице значений поиск нужен не по наименованию, а по коду, код числовое значение
вот новая структура таблицы значения :

ТЗ.НоваяКолонка("КодОС","Число");
ТЗ.НоваяКолонка("ОС","Строка");
ТЗ.НоваяКолонка("СчетДт","Число",10);
ТЗ.НоваяКолонка("СчетКт","Число",10);
ТЗ.НоваяКолонка("Сумма","Число",15,2);

пишу алгоритм поиска строки по коду (числовое значение)

Перем С;
Перем С2;

СпрОС = СоздатьОбъект("Справочник.НеоборотныеАктивы");

// запись П2-П1
//Сообщить (Выбор.Код);

Если ТЗ.НайтиЗначение(Выбор.Код,С,"КодОС")=1 Тогда


ТЗ.ПолучитьСтрокуПоНомеру(С);

ОС = ТЗ.ОС;
КодОС = ТЗ.КодОС;
Счет = ТЗ.СчетДт;
ДельтаП = ТЗ.Сумма;

Если СпрОС.НайтиПоКоду(ТЗ.КодОС,0)=1 Тогда

СпрОС.ПереоценкаПервСт = ТЗ.Сумма;
СпрОС.Записать();
Сообщить (ТЗ.ОС+" найдено "+" переоценка первоначальной стоимости записана"+Строка(ТЗ.Сумма));

Иначе Сообщить("Запись переоценки первоначалки не найдена");
КонецЕсли;
Иначе Сообщить("поиск по коду неудачен");
КонецЕсли;   

вообще не ищет - выдает как сказано в коде - поиск по коду неудачен, в чем дело, не подскажете, спасибо!

Последний раз редактировалось: alpha78; 29 Май 2019, 17:03. Причина: Объединение сообщений

Оффлайн prog1c7.7

  • *****
  • Сообщений: 788
  • РЕПУТАЦИЯ: 260
  • КПД: 33%
  • ну - да , ну - да...
  • Регистрация: 2010-10-20
  • Сайт: 
  • Профессия: Программист 1С
ну вообще не надо переменные объявлять.
Но перед найтизначение() обнулять надо :
С = 0;
Но вот вдруг у тебя несколько строк есть таких, а ты только первую цепляешь.
Да и элементов справочника с кодом может быть несколько , если не уникальны.
Вот например можно через  cpp:  (примерно накидал, но не проверял)

Сервис1С = СоздатьОбъект("MetaDataWork");
Запрос1С = СоздатьОбъект("ODBCRecordSet");
ТзИнд2 = СоздатьОбъект("ИндексированнаяТаблица");

ТзИнд2.Объединить(ТЗ);
ТзИнд2.ДобавитьИндекс("ИндКодОс","КодОС");
списиндекс = СоздатьОбъект("СписокЗначений");
списиндекс.ДобавитьЗначение(Выбор.Код,"КодОС");
ТзИнд2.Подмножество(списиндекс,1,"ИндКодОс");
ТзИнд1 = СоздатьОбъект("ТаблицаЗначений");
ТзИнд2.ВЫГРУЗИТЬ(ТзИнд1,"ИндКодОс");

Так получишь в ТзИнд1 все строки вхождения из первичной;
а дальше примерно так :
ТекстЗапроса1с = "
|SELECT     
|Спр.ID as [ТекЭл $Справочник.НеоборотныеАктивы]
|FROM
| $Справочник.НеоборотныеАктивы as Спр
|WHERE
| Спр.IsFolder = 2 AND
|   Спр.IsMark = 0 AND
| Спр.Code IN (SELECT Val FROM #ТзИнд1)
|";
ТЗ1с = Запрос1С.ВыполнитьИнструкцию(ТекстЗапроса1с);
   
в ТЗ1с все элементы справочника с этим кодом,
ну там я еще ограничил чтобы не группы, и не помеченные на удаление..
удачи в экспериментах


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
117 Сообщений
alexandr_ll
58 Сообщений
LexaK
47 Сообщений
alex0402 alex0402
45 Сообщений
DmitriyF DmitriyF
29 Сообщений
BuhRust
27 Сообщений
MuI_I_Ika MuI_I_Ika
27 Сообщений
Stanislav Gareev
19 Сообщений
Funt432286
18 Сообщений
Андрей_gen_D
16 Сообщений

* Кто онлайн

  • Точка Гостей: 168
  • Точка Скрытых: 0
  • Точка Пользователей: 0

Нет пользователей онлайн.

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal