Имя: Пароль:
1C
1C 7.7
v7: проблема с поиском в тз
0 LamerSql
 
14.07.11
10:13
ТаблицаНоменклатуры = СоздатьОбъект("ТаблицаЗначений");
       ВыгрузитьТабличнуюЧасть(ТаблицаНоменклатуры,"Номенклатура");
       //ТаблицаНоменклатуры.ВыбратьСтроку();
       
       Запрос = СоздатьОбъект("Запрос");
       
       ТекстЗапроса =
       "
       |Номенклатура = Документ.Реализация.Номенклатура;
       |Количество = Документ.Реализация.Количество;
       |ТекущийДокумент = Документ.Реализация.ТекущийДокумент;
       |Функция КоличествоСумма = Сумма(Количество);
       |Группировка Номенклатура  без групп;
       |Условие(ТекущийДокумент = ДокОснование);
       |";  
       
           // Если ошибка в запросе, то выход из процедуры
       тзОстатки = СоздатьОбъект("ТаблицаЗначений");
       Запрос.Выполнить(ТекстЗапроса);
       Запрос.Выгрузить(тзОстатки);
       тзОстатки.ВыбратьСтроку();
       
   
       
       
       
       ТекстЗапроса =
       "
       |ОбрабатыватьДокументы все;
       |Номенклатура = Документ.ВозвратОтПокупателя.Номенклатура;
       |Количество = Документ.ВозвратОтПокупателя.Количество;
       |ДокРеализации = Документ.ВозвратОтПокупателя.ТекущийДокумент.ДокОснование;
       |Функция КоличествоСумма = Сумма(Количество);
       |Группировка Номенклатура без групп;
       |Условие(ДокРеализации = ДокОснование);
       |";
       
       тзВозврат = СоздатьОбъект("ТаблицаЗначений");
       Запрос.Выполнить(ТекстЗапроса);
       Запрос.Выгрузить(тзВозврат);
       тзВозврат.ВыбратьСтроку();
       
   
       тзВозврат.ВыбратьСтроки();
       Пока тзВозврат.ПолучитьСтроку() = 1 Цикл
           Если тзОстатки.НайтиЗначение(тзВозврат.Номенклатура,НомерСтрокиТз,"Номенклатура") = 0 Тогда // значение не найдено
               Сообщить("Внимание товара: "+тзВозврат.Номенклатура+" нет в реализации: "+ ДокОснование);
           КонецЕсли;
       КонецЦикла;



Вот это всегда возврашает 0, хотя товар должен находиться, сильно не пинать с 7-кой незнаком почти.


   Пока тзВозврат.ПолучитьСтроку() = 1 Цикл
           Если тзОстатки.НайтиЗначение(тзВозврат.Номенклатура,НомерСтрокиТз,"Номенклатура") = 0 Тогда // значение не найдено
               Сообщить("Внимание товара: "+тзВозврат.Номенклатура+" нет в реализации: "+ ДокОснование);
           КонецЕсли;
       КонецЦикла;
1 andrewks
 
14.07.11
10:15
ока тзВозврат.ПолучитьСтроку() = 1 Цикл
НомерСтрокиТз=0;
           Если тзОстатки.НайтиЗначение(тзВозврат.Номенклатура,НомерСтрокиТз,"Номенклатура") = 0 Тогда // значение не найдено

               Сообщить("Внимание товара: "+тзВозврат.Номенклатура+" нет в реализации: "+ ДокОснование);
           КонецЕсли;
       КонецЦикла;
2 Vitello
 
14.07.11
10:15
НомерСтрокиТз - обнуляешь?
3 1Сергей
 
14.07.11
10:16
(2)+ перед каждым поиском
4 vde69
 
14.07.11
10:16
вот это не нужно совсем

       тзВозврат.ВыбратьСтроку();
       
   
       тзВозврат.ВыбратьСтроки();
       Пока тзВозврат.ПолучитьСтроку() = 1 Цикл
5 LamerSql
 
14.07.11
10:16
(2) блин по-моему понял где лошанулся.
6 Ёпрст
 
14.07.11
10:17
(0)
Пока тзВозврат.ПолучитьСтроку() = 1 Цикл
  НомерСтрокиТз="";
7 LamerSql
 
14.07.11
10:19
помнит народ семерку..... молодцы. 2 года не сталкивался, а тогда всего месяц учил. всем спасибо
8 Ёпрст
 
14.07.11
10:19
1 запрос не нужен, достаточно
ДокОснование.ВыгрузитьТабличнуюЧасть
+ без указания периода, он будет искать в дате = ДатеТА.. т.е может вообще ничего не найти,

во втором запросе - аналогично, без указания периода этот запрос коту под хвост.
Программист всегда исправляет последнюю ошибку.