Имя: Пароль:
1C
1C 7.7
v7: Была ли привязана строка?
0 Zhuravlik
 
10.08.12
15:01
Здравствуйте. Есть такой метод в модуле проведения документа, как "ПривязыватьСтроку()", а можно как-нибудь узнать использовался этот метод или нет?
1 andrewks
 
10.08.12
15:04
посмотреть на заполненность данного реквизит в движении регистра?
2 aka AMIGO
 
10.08.12
15:06
включи в конфигураторе поиск по тексту ПривязыватьСтроку()
все модули документов покажутся
3 aka AMIGO
 
10.08.12
15:10
+2 правильней поиск такой ПривязыватьСтроку без скобок
4 Zhuravlik
 
10.08.12
15:12
(1) А если он делает только проводки бух. итогов? Но в отдельных случаях устанавливает значение периодического реквизита справочника... А еще у него огромная таб. часть (более 8000 строк), но хочется при открытии из истории
сразу активизировать строчку с элементом, а искать его в табличной части - долго. Вот и хочется в качестве параметра сразу передавать номер строки документа, по которой было движение.

(2) Да нет, я  не о том. Скажем есть такая конструкция

Док = СоздатьОбъект("Документ.Накладная");
Док.ВыбратьДокументы(дтНач, дтКон);
Пока Док.ПолучитьДокумент() = 1 Цикл

//А использовался ли здесь метод "ПривязыватьСтроку()"?

КонецЦикла;
5 aka AMIGO
 
10.08.12
15:15
(4)выведи НомерСтроки при выборе движений регистра
6 aka AMIGO
 
10.08.12
15:15
+5 если =0 - нет привязки
7 aka AMIGO
 
10.08.12
15:17
из самого документа сведений по привязке не получить..
8 Zhuravlik
 
10.08.12
15:56
Начал решать одно, решил немного другое, но меня устраивает)))

   // В колонке "Документ" отрабатывает открытие документа.
   Если Значения.ТекущаяКолонка() = "_3" Тогда
       ЗначениеДокумент = Значения.ПолучитьЗначение(Значения.ТекущаяСтрока(), 1);

       Если ПустоеЗначение(ЗначениеДокумент) = 0 Тогда
           флНомерСтроки = 1;
           Для сч=1 По Метаданные.Документ(ЗначениеДокумент.Вид()).РеквизитТабличнойЧасти() Цикл
               //Найду идентификатор объекта в табличной части документа (если он есть в таб. части, а не в шапке)
               ТО_Вид = Метаданные.Документ(ЗначениеДокумент.Вид()).РеквизитТабличнойЧасти(сч).Вид;
               ТО_ИД = Метаданные.Документ(ЗначениеДокумент.Вид()).РеквизитТабличнойЧасти(сч).Идентификатор;
               Если ТО_Вид = ТекущийОбъект.Вид() Тогда
                   //Нашел. Теперь проверю движения регистров
                   Для сч=1 По Метаданные.Регистр() Цикл
                       ИД_Регистра = Метаданные.Регистр(сч).Идентификатор;
                       Рег = СоздатьОбъект("Регистр." + ИД_Регистра);
                       Если Рег.ВыбратьДвиженияДокумента(ЗначениеДокумент) = 1 Тогда
                           Для сч=1 По Метаданные.Регистр(ИД_Регистра).Измерение() Цикл
                               ИЗМ_Вид = Метаданные.Регистр(ИД_Регистра).Измерение(сч).Вид;
                               ИЗМ_ИД = Метаданные.Регистр(ИД_Регистра).Измерение(сч).Идентификатор;
                               Если ИЗМ_Вид = ТО_Вид Тогда
                                   Рег.УстановитьЗначениеФильтра(ИЗМ_ИД, ТекущийОбъект.ТекущийЭлемент(), 1);
                                   поз = СформироватьПозициюДокумента(ЗначениеДокумент);
                                   Рег.ВыбратьДвижения(поз,поз);
                                   Пока Рег.ПолучитьДвижение() = 1 Цикл
                                       Сообщить(Рег.НомерСтроки());
                                       флНомерСтроки = Рег.НомерСтроки();
                                       Перейти ~М1;
                                   КонецЦикла;
                               КонецЕсли;
                           КонецЦикла;
                       КонецЕсли;
                   КонецЦикла;
               КонецЕсли;
           КонецЦикла;
                       
~М1:        ОткрытьФорму(ЗначениеДокумент, флНомерСтроки);
           
           Возврат;
       КонецЕсли;
   КонецЕсли;


При открытии документа прописал, что если Форма.Параметр - это число, то
АтивизироватьСтроку(Форма.Параметр);
Получилось сделать универсально)))
9 Zhuravlik
 
10.08.12
15:57
+Обработка.ЗначенияПериодическихРеквизитов
10 1Сергей
 
10.08.12
15:57
>>Перейти ~М1;

расстрел на месте без права переписки
11 Zhuravlik
 
10.08.12
16:03
(10) Вот здесь Теорема Бома — Якопини реалистична? или снова про goto многие положительно отзывались о метках, как о средстве для выхода из кучи вложенных циклов. Вот я и вспомнил)) А что? Чем писать пять проверок, проще набрать одну строчку кода.
12 1Сергей
 
10.08.12
16:06
(11) ага, особенно результат голосовалки показателен
13 Zhuravlik
 
10.08.12
16:09
(12) Голосовали я так понимаю за принципы, а не частности.
=)
А не подскажите, можно ли открыть документ с позиционированием на строке, но без передачи контекста? Т.е. без использования "АктивизироватьСтроку()" в модуле формы, а у объекта спозиционировать и открыть?
14 1Сергей
 
10.08.12
16:10
(13) нельзя
15 КонецЦикла
 
10.08.12
16:12
(8) Ниасилел
Зачем столько кода?
Если хотя бы одна строка привязана, то и остальные также (если конфигурацию писал не турок)
А открывать документ, активизируя строку... столько кода не нужно
16 qw12er
 
10.08.12
16:15
(10) 15 лет назад у нас в университете точно за такое расстреливали.

Усыхает земля. (С) Анекдот.
17 Zhuravlik
 
10.08.12
16:17
(15) Если заранее знать что за документ, и по какому регистру было движение - то да. А я хочу позиционироваться на строку при открытии ЛЮБОГО дока из типовой обработки ЗначенияПериодическихРеквизитов. Но пока если у дока не было движений по регистрам, оон не откроется, буду копать в строну периодики...
(16) Слава богу, что это было 15 лет назад( Почему нельзя в данном конкретном случае? Сейчас 20 эл. прощелкал разных, нигде ничего не глючнуло, не вылетело не сбойнуло, везде строчку поймал, как надо.
18 Zhuravlik
 
10.08.12
16:27
Загнался... можно было проще в 10 раз...

   // В колонке "Документ" отрабатывает открытие документа.
   Если Значения.ТекущаяКолонка() = "_3" Тогда
       ЗначениеДокумент = Значения.ПолучитьЗначение(Значения.ТекущаяСтрока(), 1);

       Если ПустоеЗначение(ЗначениеДокумент) = 0 Тогда
           флНомерСтроки = 1;
           Для сч=1 По Метаданные.Документ(ЗначениеДокумент.Вид()).РеквизитТабличнойЧасти() Цикл
               //Найду идентификатор объекта в табличной части документа (если он есть в таб. части, а не в шапке)
               ТО_Вид = Метаданные.Документ(ЗначениеДокумент.Вид()).РеквизитТабличнойЧасти(сч).Вид;
               ТО_ИД = Метаданные.Документ(ЗначениеДокумент.Вид()).РеквизитТабличнойЧасти(сч).Идентификатор;
               Если ТО_Вид = ТекущийОбъект.Вид() Тогда
                   //Нашел. Теперь проверю движения регистров
                   
                   Периодический = СоздатьОбъект("Периодический");
                   Периодический.ВыбратьПоДокументу(ЗначениеДокумент);
                   Пока Периодический.ПолучитьЗначение() = 1 Цикл
                       Если Периодический.ТекущийОбъект() = ТекущийОбъект Тогда
                           флНомерСтроки = Периодический.НомерСтроки();
                           Перейти ~М1;
                       КонецЕсли;
                   КонецЦикла;
                   
               КонецЕсли;
           КонецЦикла;

~М1:        ОткрытьФорму(ЗначениеДокумент, флНомерСтроки);
           
           Возврат;
       КонецЕсли;
   КонецЕсли;
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.