В док-те найти строку по значению

  1. 10 г. назад

    Как можно найти в таб. части док-та строку с заданным значением?
    Например: в док-те Реализация найти строку, в которой лежит партия с кодом 150.
    ТиС 932.

    Ответы: (1)
  2. (0) Наверное перебрать в цикле и искать Товар.Партия.Код=150. Или запрос. И вообще - фиг его знает, как база организована у тебя

    Ответы: (2)
  3. syktyk Или запрос.

    какой запрос? ТЧ может быть ещё не записана.

    Ответы: (3)
  4. andrewks какой запрос? ТЧ может быть ещё не записана.

    Ненаписанный тогда :) Это же для примера.

  5. Не-не, товарищи...
    Док-т уже есть (записан, проведен).
    То есть нечто НайтиПоЗначению - нету?

    Ответы: (5)
  6. Масянька То есть нечто НайтиПоЗначению - нету?

    есть. но тебе надо не по значению найти, а по атрибуту значения.

    если записано - можно запросом. или сначала найти саму партию, а потом уже искать в ТЧ по значению

    Ответы: (7)
  7. 23.09.2014 14:52:38 отредактировано КитайскийМуй
        |ТекущийДокумент = Документ.РасходнаяНакладная.ТекущийДокумент;
    	|Код = Документ.РасходнаяНакладная.Партия.Код;
    	|ТекущийЭлемент = Документ.РасходнаяНакладная.Партия.ТекущийЭлемент;
    	|НомерСтроки = Документ.РасходнаяНакладная.НомерСтроки;
    	|Группировка Документ;
    	|Группировка ТекущийЭлемент упорядочить по ТекущийЭлемент.Наименование;
    	|Группировка Код;
    	|Группировка НомерСтроки;
    	|Условие(Код = 150);
    Ответы: (7) (105)
  8. (6) Не хочу запросом.
    (5) Партия есть. Попробую...

  9. Фиг мне...
    ТекДок.НайтиЗначение(ТаблицаУдаленных.Партия); - Поле агрегатного объекта не обнаружено (НайтиЗначение)
    ТаблицаУдаленных.Партия - справочник

    Ответы: (9)
  10. (8) тебе СП продать? есть занедорого

    ВыгрузитьТабличнуюЧасть() а потом - делай с этой ТЗ что хошь

    Ответы: (10) (11) (15) (22)
  11. (9) Спасибо. У меня есть.
    Я и спрашиваю - Найти() по таб. части - нет такого?

    Ответы: (11)
  12. (10) не в доке енто значение искай, а егойной табличной части.
    (9) можно и через менеджера временных таблиц, тогда запросу и записанность не важна

    Ответы: (13)
  13. ВыбратьСтроки()
    ПолучитьСтроку()
    ПолучитьСтрокуПоНомеру(<?>)

    Ответы: (14)
  14. (11) Если Выгрузить... - мне нужно найденное поменять. Или оно поменяет? Сразу в таб. части? Или нужно будет потом обратно пихать?

  15. (12) Так я сделала. Думала можно - кошернее...

    Ответы: (15) (17)
  16. пиля, это ж опять семерка, вот я придууурок.
    (14) извините, заголовки не четаю. С (9) согласен. В табличке можно найти, можно и изменить, после ЗагрузитьТабличнуюЧасть()

    Ответы: (16)
  17. (15) Самокритика, однако [smile=:D]

  18. 23.09.2014 15:21:32 отредактировано КитайскийМуй

    (14) Запросом или через ТЗ - быстрее.

    Ответы: (18)
  19. (17) не факт

  20. Какие ваши доказательства? Я именно про ТЗ :)

  21. 	ТекДок = СоздатьОбъект("Документ.СлужебныйРеализация");
    	НужноЗаписать = 0;
    	Номер = 11981;
    	СпрПартии = СоздатьОбъект("Справочник.Партии");
    		
    	ТаблицаУдаленных.ВыбратьСтроки();
    
    	Пока ТаблицаУдаленных.ПолучитьСтроку() = 1 Цикл
    		ТекДок = ТаблицаУдаленных.Ссылка.ТекущийДокумент();
    		ТекДок.ВыбратьСтроки();
    
    		Пока ТекДок.ПолучитьСтроку() = 1 Цикл
    			Если ТекДок.Партия = ТаблицаУдаленных.Партия Тогда
    				СпрПартии.НайтиПоКоду(глДополнитьСтрокуЛ(Номер, "0", 8));
    				ТекДок.Партия = СпрПартии.ТекущийЭлемент();
    				НужноЗаписать = 1;
    				Номер = Номер + 1;
    			КонецЕсли;
    		КонецЦикла;
    
    		Если НужноЗаписать = 1 Тогда
    			ТекДок.Записать();
    		КонецЕсли;
    	КонецЦикла;
    

    Выдает - Не выбран документ!
    Где я его потеряла...

    Ответы: (21) (23)
  22. Масянька Где я его потеряла..

    вот здесь:
    ТекДок = ТаблицаУдаленных.Ссылка.ТекущийДокумент();

    Ответы: (31)
  23. (9) Ты его и не нахдила. ТаблицаУдаленных.Ссылка.ТекущийДокумент() - здесь непонял

  24. 23.09.2014 15:51:01 отредактировано КитайскийМуй

    Масянька ТекДок = ТаблицаУдаленных.Ссылка.(!!!)ТекущийДокумент();

    Это из восьмёрки :)

    Или просто: ТекДок = ТаблицаУдаленных.Ссылка; если Ссылка - это колонка ТЗ.

    Ответы: (24) (25) (30) (104)
  25. (23) А может у нее столбец такой есть

    Ответы: (26)
  26. (23) Блин... Сегодня я - натуральная блондинка... [smile=o_O]

    Ответы: (104)
  27. syktyk А может

    не может, а есть. иначе ошибка была бы другая

    Ответы: (28) (32)
  28. Стоп!
    Да - это столбец - ТаблицаУдаленных.НоваяКолонка("Ссылка",,,"Ссылка");

  29. (26) И что делать-то? [smile=;_;]

    Ответы: (30)
  30. Убери ТекущийДокумент()

    Ответы: (31) (39)
  31. (28) см. (23)

    Ответы: (33)
  32. (29) ответ неверный.

    ответ в (21)

    вот здесь:
    ТекДок =

    Ответы: (34) (35)
  33. (26) Я то знаю :) Это такой вид вопроса - подъэпический :)

    Ответы: (34) (35)
  34. (30) и твой совет ей тоже не поможет

    я не понял, шо, все клюшки забыли?

    Ответы: (36)
  35. (32) Я тебе припомню...
    (31) Не понял...

    Ответы: (43)
  36. (31) Чивойта неверный? В Ссылка у нее ссылка на документ. ТекДок будет ссылкой на документ

    (32) Так я не тебе, а Мую :)

  37. 23.09.2014 15:59:00 отредактировано КитайскийМуй

    (33) Забыли. :)

    НайтиДокумент() ?

    Ответы: (42) (47)
  38. В Ссылке сидит док-т. Именно док-т.
    Как его взять-то?

    Ответы: (38) (39) (51)
  39. (37) см (29)

    Ответы: (40) (41)
  40. док - Реализация (служебный) 0188 - 09/04/13, тип - Документ

    (39) Убрала. А он - все равно в душу плюет... [smile=;_;]

    	ТекДок = СоздатьОбъект("Документ.СлужебныйРеализация");
    	НужноЗаписать = 0;
    	Номер = 11981;
    	СпрПартии = СоздатьОбъект("Справочник.Партии");
    		
    	ТаблицаУдаленных.ВыбратьСтроки();
    
    	Пока ТаблицаУдаленных.ПолучитьСтроку() = 1 Цикл
    		ТекДок = ТаблицаУдаленных.Ссылка;//.ТекущийДокумент();
    		ТекДок.ВыбратьСтроки();
    
    		Пока ТекДок.ПолучитьСтроку() = 1 Цикл
    			Если ТекДок.Партия = ТаблицаУдаленных.Партия Тогда
    				СпрПартии.НайтиПоКоду(глДополнитьСтрокуЛ(Номер, "0", 8));
    				ТекДок.Партия = СпрПартии.ТекущийЭлемент();
    				НужноЗаписать = 1;
    				Номер = Номер + 1;
    			КонецЕсли;
    		КонецЦикла;
    
    		Если НужноЗаписать = 1 Тогда
    			ТекДок.Записать();
    		КонецЕсли;
    	КонецЦикла;
    
    Ответы: (42)
  41. (39) ТекущийДокумент() от ссылки будет так же ссылка, этот момент сработает (хотя, конечно, это лишнее).
    но проблема не в этом.

    думай, Чапай, думай!

    Ответы: (46)
  42. (40) см. (36)

  43. Масянька Не понял...

    давай начнём с азов:

    что за оператор такой "=", что он делает?

    Ответы: (56)
  44. Ну еще там надо Выбрать документы как-то

    Ответы: (45)
  45. (44) о, вижу проблески памяти. только не выбрать, а найти

  46. (41) Я пошла топиться... А море уже холодное...
    Никто меня не любит, никто не понимает (С)

    Ответы: (50)
  47. КитайскийМуй НайтиДокумент() ?

    бинго! и приз уходит пенсионеру из Уфы Китайскому Мую

    Ответы: (48) (49)
  48. (47) так не честно...Муй отредактировал пост после моего...и мне как честному пришлось свой просто удалить...)))

    Ответы: (53) (54)
  49. ТекДок = НайтиДокумент(ТаблицаУдаленных.Ссылка)

    (47) А вот не надо! Я первый намек дал :)

    Ответы: (58)
  50. (46) тебе нужен ДокументОбъект, а ты тягаешь ДокументСсылка, так мало того - перезаписываешь ДокументОбъект ДокументСсылкой.

    перезаписываешь вот здесь: ТекДок = ТаблицаУдаленных.Ссылка;

  51. (37) вместо
    ТекДок = ТаблицаУдаленных.Ссылка.ТекущийДокумент();

    лепишь чтото типа
    НужныйДок = ТекДок.НайтиДокумент(ТаблицаУдаленных.Ссылка);
    НужныйДок .ВыбратьСтроки();

    Для Ном=1 По НужныйДок.КоличествоСтрок() Цикл
    НужныйДок.ПолучитьСтрокуПоНомеру(Ном);
    Если НужныйДок .Партия = ТаблицаУдаленных.Партия Тогда
    Если СпрПартии.НайтиПоКоду(глДополнитьСтрокуЛ(Номер, "0", 8)) <>0 Тогда
    НужныйДок .Партия = СпрПартии.ТекущийЭлемент();
    НужноЗаписать = 1;
    Номер = Номер + 1;
    Иначе
    Сообщить("В партиях лажа!");
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    с учетом того, что НужныйДок, если проведен - нужно перед записью СделатьНеПроведенным(), и после зпапесе Провести()

    Ответы: (59) (74) (78) (96)
  52. Да Муй тут вообще со своей 8-кой всех запутал. Надо его оштрафовать еще!

  53. (48) Извини, друг, у меня нет что тебе подарить... возьми мой сахар пост № 36... :)

  54. (48) ну, да, малясь подмухлевал он. но - формально не придерёшься :)

  55. Никто меня любит, никто не понимает (С) (уже со злостью)
    ТекДок = НайтиДокумент(ТаблицаУдаленных.Ссылка);//.ТекущийДокумент();
    Функция не обнаружена (НайтиДокумент)

    Ответы: (56) (57) (59) (60)
  56. (55) та-а-а-а-ак... см. (43)

  57. 23.09.2014 16:08:30 отредактировано V777

    (55) Док = СоздатьОбъект()
    ТекДок = Док.НайтиДокумент()

  58. syktyk ТекДок = НайтиДокумент(ТаблицаУдаленных.Ссылка)

    и ты, Брут... ©

  59. 23.09.2014 16:09:07 отредактировано КитайскийМуй

    (55) Идун правильно написал - в (51)
    НайтиДокумент() можно использовать только для объектов, созданных функцией СоздатьОбъект.

    Ответы: (62)
  60. (55) ааа
    да
    ТекДок = СоздатьОбъект("Документ");

  61. блин, сегодня что - вторничный тупнячок, что-ли? я аж прямо расстроился

    Ответы: (63) (64) (66)
  62. (59) я бы не сказал

  63. (61) у мну каша с скд в голове...и 7.7 я плохо помню что-то...)

  64. или там не документ, но это уже на создание ТаблицыУдаленных надо смотреть
    (61) хренассе уже вторник? а понедельник когда был???

  65. Я (походу) совсем сошла с ума...

    	Документы = СоздатьОбъект("Документ.СлужебныйРеализация");
    	НужноЗаписать = 0;
    	Номер = 11981;
    	СпрПартии = СоздатьОбъект("Справочник.Партии");
    		
    	ТаблицаУдаленных.ВыбратьСтроки();
    
    	Пока ТаблицаУдаленных.ПолучитьСтроку() = 1 Цикл
    		ТекДок = Документы.НайтиДокумент(ТаблицаУдаленных.Ссылка);//.ТекущийДокумент();
    		ТекДок.ВыбратьСтроки();
    
    		Пока ТекДок.ПолучитьСтроку() = 1 Цикл
    			Если ТекДок.Партия = ТаблицаУдаленных.Партия Тогда
    				СпрПартии.НайтиПоКоду(глДополнитьСтрокуЛ(Номер, "0", 8));
    				ТекДок.Партия = СпрПартии.ТекущийЭлемент();
    				НужноЗаписать = 1;
    				Номер = Номер + 1;
    			КонецЕсли;
    		КонецЦикла;
    
    		Если НужноЗаписать = 1 Тогда
    			ТекДок.Записать();
    		КонецЕсли;
    	КонецЦикла;
    	
    

    Значение не представляет агрегатный объект (ВыбратьСтроки)

    Ответы: (67) (68)
  66. (61) А сегодня, что, вторник??? В Петропавловске-Камчатском - уже за полночь... )))

  67. (65) Сообщить(ТипЗначенияСтр(ТаблицаУдаленных.Ссылка));

  68. 23.09.2014 16:12:47 отредактировано andrewks

    (65) ладно, не буду мучить тебя

        Пока ТаблицаУдаленных.ПолучитьСтроку() = 1 Цикл
            ТекДок = СоздатьОбъект("Документ");
            Если ТекДок.НайтиДокумент(ТаблицаУдаленных.Ссылка)<>1 Тогда Продолжить; КонецЕсли;
            ТекДок.ВыбратьСтроки();
    
    
    Ответы: (74) (80)
  69. 	Пока ТаблицаУдаленных.ПолучитьСтроку() = 1 Цикл
    		ТекДок = Документы.НайтиДокумент(ТаблицаУдаленных.Ссылка);//.ТекущийДокумент();
    Сообщить("док - " + ТекДок + ", тип - " + ТипЗначенияСтр(ТекДок));
    Сообщить("табл - " + ТаблицаУдаленных.Ссылка + ", тип - " + ТипЗначенияСтр(ТаблицаУдаленных.Ссылка));
    		ТекДок.ВыбратьСтроки();
    

    док - 1, тип - Число
    табл - Реализация (служебный) 0188 - 09/04/13, тип - Документ
    ТекДок.ВыбратьСтроки();
    {D:\1CV7\ОБРАБОТКИ\ДЛЯ СПРАВОЧНИКОВ\ПОИСКССЫЛОКПАРТИИ.ERT(72)}: Значение не представляет агрегатный объект (ВыбратьСтроки)

  70. может там вообще представление, а не ссылка

    Ответы: (72) (73)
  71. а ещё лучше ТекДок = СоздатьОбъект("Документ"); из цикла вынести вверх, чтобы не создавать объект каждый раз

  72. (70) табл - Реализация (служебный) 0188 - 09/04/13, тип - Документ

  73. (70) у представления .ТекущийДокумент() выдало бы ошибку

  74. (68) ой ой, в цыкле объект создовать, халтурщек. А масяньке надоть очки покупать (а у меня есть) и исчо раз (51) рассмотреть, внимательна.

    Ответы: (75) (76) (78)
  75. (74) Не-а.

    	ТекДок = СоздатьОбъект("Документ.СлужебныйРеализация");
    	НужноЗаписать = 0;
    	Номер = 11981;
    	СпрПартии = СоздатьОбъект("Справочник.Партии");
    		
    	ТаблицаУдаленных.ВыбратьСтроки();
    
    	Пока ТаблицаУдаленных.ПолучитьСтроку() = 1 Цикл
    		ТекДок.НайтиДокумент(ТаблицаУдаленных.Ссылка);//.ТекущийДокумент();
    		ТекДок.ВыбратьСтроки();
    
    		Пока ТекДок.ПолучитьСтроку() = 1 Цикл
    			Если ТекДок.Партия = ТаблицаУдаленных.Партия Тогда
    				СпрПартии.НайтиПоКоду(глДополнитьСтрокуЛ(Номер, "0", 8));
    				ТекДок.Партия = СпрПартии.ТекущийЭлемент();
    				НужноЗаписать = 1;
    				Номер = Номер + 1;
    			КонецЕсли;
    		КонецЦикла;
    
    		Если НужноЗаписать = 1 Тогда
    			ТекДок.Записать();
    		КонецЕсли;
    	КонецЦикла;
    

    Масяньке сегодня нельзя за руль... Не мой день...

    Ответы: (77) (79) (80) (87) (89)
  76. Идун ой ой, в цыкле объект создовать, халтурщек.

    это я шоб её с толку не сбивать, а то с её объявлением
    ТекДок = СоздатьОбъект("Документ.СлужебныйРеализация");

    опять ошибка выйдет

  77. (75) слепая, ты ТекДок из документов в объект перепозиционируешь, на первой же интерации искать там нечего.

  78. Идун А масяньке надоть очки покупать (а у меня есть) и исчо раз (51) рассмотреть,

    да за

    НужныйДок = ТекДок.НайтиДокумент(ТаблицаУдаленных.Ссылка);
    НужныйДок .ВыбратьСтроки();
    

    нужно прямо в очки заехать

    Ответы: (82)
  79. 23.09.2014 16:23:04 отредактировано КитайскийМуй

    (75)

    ТекДок = СоздатьОбъект("Документ.СлужебныйРеализация");
        НужноЗаписать = 0;
        Номер = 11981;
        СпрПартии = СоздатьОбъект("Справочник.Партии");
            
        ТаблицаУдаленных.ВыбратьСтроки();
    
        Пока ТаблицаУдаленных.ПолучитьСтроку() = 1 Цикл
            ТекДок.НайтиДокумент(ТаблицаУдаленных.Ссылка);//.ТекущийДокумент();
            Пока ТекДок.ПолучитьСтроку() = 1 Цикл
                Если ТекДок.Партия = ТаблицаУдаленных.Партия Тогда
                    СпрПартии.НайтиПоКоду(глДополнитьСтрокуЛ(Номер, "0", 8));
                    ТекДок.Партия = СпрПартии.ТекущийЭлемент();
                    НужноЗаписать = 1;
                    Номер = Номер + 1;
                КонецЕсли;
            КонецЦикла;
    
            Если НужноЗаписать = 1 Тогда
                ТекДок.Записать();
            КонецЕсли;
        КонецЦикла;
    
    Ответы: (83)
  80. Масянька Не мой день...

    не грусти, см. (68)

  81. Док = СоздатьОбъект("Документ");

    Пока Док.ПолучитьДокумент()=1 Цикл
    ТекДок = Док.ТекущийДокумент();

    Ответы: (85)
  82. (78) скуяле? ты ссылку перезаписывать собрался? ню-ню

    Ответы: (84) (86)
  83. (79) да что же такое-то... снеговик съел ваш мозг?

    Ответы: (88)
  84. (82) а у числа давно появился метод .ВыбратьСтроки() ?

    Ответы: (97)
  85. (81) тоже неверно. ссылку она не запишет потом

  86. Идун ты ссылку перезаписывать собрался?

    где я её перезаписываю?

  87. Не ссорьтесь.
    Тем более - топиться уже холодно.
    Код из (75) работает.

    Ответы: (89) (96)
  88. 23.09.2014 16:24:15 отредактировано КитайскийМуй

    (83) Поправил.

    Таки да, съел... :)

    Ответы: (90)
  89. Масянька Код из (75) работает.

    не верю

    Ответы: (91)
  90. (88) не до конца. один момент забыл
    ТекДок = СоздатьОбъект("Документ.СлужебныйРеализация");

    Ответы: (94)
  91. (89) Работает, работает

  92. НайтиДокумент(<?>)
    Синтаксис:
    НайтиДокумент(<Документ>)
    Назначение:
    Найти документ по значению.
    Возвращает: 1 - если действие выполнено (документ найден);
    0 - если действие не выполнено.
    Параметры:
    <Документ> - выражение со значением типа 'Документ'.
    Замечание:
    Метод можно использовать только для объектов, созданных функцией СоздатьОбъект.

  93. Всем - спасибо.
    Выбирайте - кому что:
    Поцелуй3.jpg
    17.jpg
    images.jpg
    index.jpg
    index1.jpg

    Ответы: (95)
  94. (90) А 1-я строчка?

    Ответы: (98)
  95. (93) Выбираю - вторую... :)

  96. (87) а чем он от (51) отличается?
    обиделся.

    Ответы: (97) (99)
  97. Идун обиделся.

    ты сначала на (84) ответь )

  98. (94) да, что-то я в этом трэшаке уже заблудился. молодец! :)

  99. (96)
    НужныйДок = ТекДок.НайтиДокумент(ТаблицаУдаленных.Ссылка);
    Возвращает: 1 - если действие выполнено (документ найден);
    0 - если действие не выполнено.
    НужныйДок будет либо 1, либо 0

    Ответы: (100)
  100. Новее ›

или зарегистрируйтесь чтобы ответить!