Имя: Пароль:
1C
 
Порча контекста дока при Таб.Показать(,,-1)
0 andrewks
 
09.07.11
13:51
Суть в следующем:

есть Док1, в ТЧ которого есть документы вида Заявка.
есть внеш.печ.форма у Док1, куда передаётся контекст этого дока
в ней идёт цикл по ТЧ, в котором у каждого дока Заявка ищется подчинённый док Накладная, и если он найден, то вызывается внеш.печ.форма уже у дока Накладная.
там идёт печать на принтер с предпросмотром и показом диалога печати, т.е. так:

ИсхТабл.Показать(глНазваниеДокументаВжурнале(Докум),"",1);
ИсхТабл.Напечатать(1);
ИсхТабл.Показать(,,-1);


так вот, после выполнения третьей строчки инициированная в цикле выборка ТЧ контекста Док1 сбивается, т.е. после 2-й строки может несколько раз повториться опять 2-я строка, потом может на 1-ю перейти, потом опять на 2-ю и так до бесконечности

при отсутствии этой строчки всё ок. если выборку ТЧ делаем не у контекста Док1, а у объекта типа Документ, то с этой строчкой работает нормально.

сам контекст вроде явно не портится, но вот выборка сбивается.

никто не сталкивался с таким?
1 1Сергей
 
09.07.11
14:06
может там в таблице чего-то заумное?
2 andrewks
 
09.07.11
14:10
(1) например? никаких картинок и прочих объектов. да и выскакивает только при закрытии таблицы. если оставлять - всё ок.
только мусор этот потом не нужен.
пока решил ч/з замену обработки контекста на объект Документ
3 Сияющий Асинхраль
 
09.07.11
14:26
(2) Это старая фича семерки, просто лучше одновременно из разных объектов не печатать
4 andrewks
 
09.07.11
14:32
(3) не сталкивался.
во внеш.печ.форме Док1 я ничего не печатаю, это я её просто обозвал так, это просто обычная обработка, а вот из неё я уже дёргаю внеш печ формы
5 Злопчинский
 
09.07.11
14:35
смотри аккуратно работу с контекстами
6 1Сергей
 
09.07.11
14:35
(4) а во вторую печатную форму (которая действительно печатная) передаётся контекст Док1 или просто Заявка?
7 andrewks
 
09.07.11
14:36
(6) туда перадаётся не Док1 и не Заявка, а другой док, в виде ссылки на объект Документ
8 1Сергей
 
09.07.11
14:39
(7) т.е. ты в своей обработке перебираешь строки Док1, потом для каждой заявки ищешь подчиненные накладные и их печатаешь через внеш.печ.обработку. я правильно понял?
9 Злопчинский
 
09.07.11
14:40
кидай обработки на e.meil@mail.ru - посмотрим.
10 andrewks
 
09.07.11
14:41
(9) щас не могу, да и некогда - надо быстрей закончить и свалить.
вечером дома красиво всё оформлю и выложу.
не переключайтесь :)
11 andrewks
 
09.07.11
14:42
(8) да
12 Злопчинский
 
09.07.11
14:42
...хочется что-то глобальнее автоматизировать, корме супермаркетов
13 Злопчинский
 
09.07.11
14:43
(10) где вечер, а где я....
14 1Сергей
 
09.07.11
14:44
(11) мало кота
15 andrewks
 
09.07.11
17:56
вот, оформил.
всё даже проще получилось, прямо в контексте Док1 то же самое получается.

http://zalil.ru/31399932

самое интересное - смещение позиции в выборке иногда происходит даже в одном такте цикла (!!!)
16 TeddySlaf
 
09.07.11
19:56
(15) чёто не повторяются у меня твои баги - все работает нормально, всё по порядку.

Тока по-ходу несколько вопросов - упрёков :)
1). зачем ищещь только первую попавшую накладную в ПодчиненныхДокументах?
А если таких накладных будет больше? Это ж возможно.
Я б так и шёл циклом по всем найденным накладным, ссылающимся на нужную заявку. Хотя...
2). На всякий случай заполнение всех передаваемых в обработку параметров полностью переместил бы непосредственно к перед вызовом обработки.
Т.к. переменная Параметры - она же не только для входных, в нее могут передать и выходные значения.


Процедура ПоКнопкеПечать()
   ДокНакл=СоздатьОбъект("Документ");
   ВыбратьСтроки();
   Пока ПолучитьСтроку()=1 Цикл
       Если Заявка.Выбран() = 0 Тогда Продолжить КонецЕсли;
       Сообщить("Строка № "+НомерСтроки+", заявка: "+Заявка);
       Накл="";
       ДокНакл.ВыбратьПодчиненныеДокументы(,,Заявка);
       Пока ДокНакл.ПолучитьДокумент()=1 Цикл
           Если ДокНакл.ПометкаУдаления() = 1 Тогда Продолжить КонецЕсли;
           Если ДокНакл.Вид() <>"Накладная" Тогда Продолжить КонецЕсли;
           
           Накл=ДокНакл.ТекущийДокумент();
           Сообщить("Строка № "+НомерСтроки+", накл: "+Накл);
           Параметры = СоздатьОбъект("СписокЗначений");
           Параметры.Установить("Устройство", 1);
           Параметры.Установить("КоличествоКопий", 2);
           Параметры.Установить("Контекст",Накл);
           ОткрытьФорму("Отчет", Параметры, КаталогИБ()+"\ExtForms\nakl_print.ert");
       КонецЦикла;
   КонецЦикла;
КонецПроцедуры
17 andrewks
 
09.07.11
20:02
(16) ты на код особо не зри в плане эффективности и прочего, это я на коленке написал для демонстрации эффекта.

насчёт "чёто не повторяются у меня твои баги - все работает нормально, всё по порядку. "  -  шозанах?
какой релиз? какая ось?

проверял на разных компах, релиз 27, системы хрюша и вынь2к3, везде проявляется.

ты точно в коде ничего не менял перед запуском? запости, что в окне сообщений выводится
18 Cthulhu
 
09.07.11
20:59
ВК?
19 andrewks
 
09.07.11
21:09
(18) без никаких ВК
20 TeddySlaf
 
09.07.11
21:15
(17) ничего не менял.

Строка № 1, заявка: Заявка 1
Строка № 1, накл: Накладная 1
Строка № 2, заявка: Заявка 2
Строка № 2, накл: Накладная 2
Строка № 3, заявка: Заявка 3
Строка № 3, накл: Накладная 3
Строка № 4, заявка: Заявка 4
Строка № 4, накл: Накладная 4
Строка № 5, заявка: Заявка 5
Строка № 5, накл: Накладная 5

потом сделал как в (16), добавил еще накладную, сслылающуюся на Заявку1, тоже сделал Печать:

Строка № 1, заявка: Заявка 1
Строка № 1, накл: Накладная 1
Строка № 1, накл: Накладная 6
Строка № 2, заявка: Заявка 2
Строка № 2, накл: Накладная 2
Строка № 3, заявка: Заявка 3
Строка № 3, накл: Накладная 3
Строка № 4, заявка: Заявка 4
Строка № 4, накл: Накладная 4
Строка № 5, заявка: Заявка 5
Строка № 5, накл: Накладная 5

В каждой печатной форме по 5 товаров опо порядку с 1 по 5.

XP SP3 (zver), 7.7.025 (1cv7s.exe крякнутая), DBF - :)
21 andrewks
 
09.07.11
21:24
(20) 27 релиза нет?
22 TeddySlaf
 
09.07.11
21:54
(21) ща поставлю.
Дописал ert для обработки документа "Свод" (на основе процедуры Печать из Свода), все-равно всё нормуль.
23 Злопчинский
 
09.07.11
21:55
Строка № 1, заявка: Заявка 1
Строка № 1, накл: Накладная 1
Строка № 2, заявка: Заявка 2
Строка № 2, накл: Накладная 2
Строка № 3, заявка: Заявка 3
Строка № 3, накл: Накладная 3
Строка № 4, заявка: Заявка 4
Строка № 4, накл: Накладная 4
Строка № 5, заявка: Заявка 5
Строка № 5, накл: Накладная 5
24 TeddySlaf
 
09.07.11
21:56
[Code]
Пробую теги форума.
а как вставить текст, чтобы он был свернутым, а не портянкой на всю страницу форума?
вот через Code в квадратных скобках, может быть?
[/Code]
25 Злопчинский
 
09.07.11
21:57
(15) вот мой результат в (23)
26 TeddySlaf
 
09.07.11
22:00
(21) релиз 27. эффект тотже - нормуль! я лишь сообщений добавил, да и процедуру печати из (16) взял

Строка № 1, заявка: Заявка 1
Строка № 1, накл: Накладная 1
-печ Накладная 1.НомерСтроки= 1.
-печ Накладная 1.НомерСтроки= 2.
-печ Накладная 1.НомерСтроки= 3.
-печ Накладная 1.НомерСтроки= 4.
-печ Накладная 1.НомерСтроки= 5.
Строка № 1, накл: Накладная 6
-печ Накладная 6.НомерСтроки= 1.
-печ Накладная 6.НомерСтроки= 2.
-печ Накладная 6.НомерСтроки= 3.
-печ Накладная 6.НомерСтроки= 4.
-печ Накладная 6.НомерСтроки= 5.
Строка № 2, заявка: Заявка 2
Строка № 2, накл: Накладная 2
-печ Накладная 2.НомерСтроки= 1.
-печ Накладная 2.НомерСтроки= 2.
-печ Накладная 2.НомерСтроки= 3.
-печ Накладная 2.НомерСтроки= 4.
-печ Накладная 2.НомерСтроки= 5.
Строка № 3, заявка: Заявка 3
Строка № 3, накл: Накладная 3
-печ Накладная 3.НомерСтроки= 1.
-печ Накладная 3.НомерСтроки= 2.
-печ Накладная 3.НомерСтроки= 3.
-печ Накладная 3.НомерСтроки= 4.
-печ Накладная 3.НомерСтроки= 5.
Строка № 4, заявка: Заявка 4
Строка № 4, накл: Накладная 4
-печ Накладная 4.НомерСтроки= 1.
-печ Накладная 4.НомерСтроки= 2.
-печ Накладная 4.НомерСтроки= 3.
-печ Накладная 4.НомерСтроки= 4.
-печ Накладная 4.НомерСтроки= 5.
Строка № 5, заявка: Заявка 5
Строка № 5, накл: Накладная 5
-печ Накладная 5.НомерСтроки= 1.
-печ Накладная 5.НомерСтроки= 2.
-печ Накладная 5.НомерСтроки= 3.
-печ Накладная 5.НомерСтроки= 4.
-печ Накладная 5.НомерСтроки= 5.
27 Злопчинский
 
09.07.11
22:04
где именно в этом коде сбивается У ТЕБЯ выборка?
.
   ДокНакл=СоздатьОбъект("Документ");
   
   ВыбратьСтроки();
   Пока ПолучитьСтроку()=1 Цикл
       Сообщить("Строка № "+НомерСтроки+", заявка: "+Заявка);
       Если Заявка.Выбран()=0
       Тогда
           Продолжить;
       КонецЕсли;    
       
       Накл="";
       ДокНакл.ВыбратьПодчиненныеДокументы(,,Заявка);
       
       Пока ДокНакл.ПолучитьДокумент()=1
       Цикл
           Если (ДокНакл.Вид()="Накладная") И (ДокНакл.ПометкаУдаления()=0)
           Тогда
               Накл=ДокНакл.ТекущийДокумент();
               Прервать;
           КонецЕсли;
       КонецЦикла;
       
       Если ПустоеЗначение(Накл)=0
       Тогда
           Сообщить("Строка № "+НомерСтроки+", накл: "+Накл);
           Параметры.Установить("Контекст",Накл);
           ОткрытьФорму("Отчет", Параметры, КаталогИБ()+"\ExtForms\nakl_print.ert");
       КонецЕсли;
       
       
   КонецЦикла;
28 Злопчинский
 
09.07.11
22:07
в (0) написано:
.
есть Док1, в ТЧ которого есть документы вида Заявка.
есть внеш.печ.форма у Док1, куда передаётся контекст этого дока
.
ну вообщем-то тотально неверно написано в (0) и в том коде, который представлен.
.
в внешнюю печформу не передается ни контекст Док1, ни контекст заявок из ТЧ док1, в впф передается документы-детя Заявок, мало того, передается НЕ КОНТЕКСТ, а ссылка на подчиненный док.
29 Злопчинский
 
09.07.11
22:11
переформулируй (0) нормальным языком, а то от обилимя Док ТЧ - крышу сносит...
.
а приведенный в примере код - отрабатывает нормально и будет нормально, потоому как DGA а примере с контекстом документа СВОД никаким образом не связана
30 TeddySlaf
 
09.07.11
22:17
(29) дык вот щас попробовал передать из Печати свода не конкретно найденную накладную, а прямо:

Параметры.Установить("Контекст", Контекст);

а в ert, переместил его поиск накладных этого свода.

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

результат опять нормальный.
31 TeddySlaf
 
09.07.11
22:19
(30) +

Это ГрупповойКонтекст.
свод Строка № 1, заявка: Заявка 1
свод Строка № 1, накл: Накладная 1
-печ Накладная 1.НомерСтроки= 1.
-печ Накладная 1.НомерСтроки= 2.
-печ Накладная 1.НомерСтроки= 3.
-печ Накладная 1.НомерСтроки= 4.
-печ Накладная 1.НомерСтроки= 5.
свод Строка № 1, накл: Накладная 6
-печ Накладная 6.НомерСтроки= 1.
-печ Накладная 6.НомерСтроки= 2.
-печ Накладная 6.НомерСтроки= 3.
-печ Накладная 6.НомерСтроки= 4.
-печ Накладная 6.НомерСтроки= 5.
свод Строка № 2, заявка: Заявка 2
свод Строка № 2, накл: Накладная 2
-печ Накладная 2.НомерСтроки= 1.
-печ Накладная 2.НомерСтроки= 2.
-печ Накладная 2.НомерСтроки= 3.
-печ Накладная 2.НомерСтроки= 4.
-печ Накладная 2.НомерСтроки= 5.
свод Строка № 3, заявка: Заявка 3
свод Строка № 3, накл: Накладная 3
-печ Накладная 3.НомерСтроки= 1.
-печ Накладная 3.НомерСтроки= 2.
-печ Накладная 3.НомерСтроки= 3.
-печ Накладная 3.НомерСтроки= 4.
-печ Накладная 3.НомерСтроки= 5.
свод Строка № 4, заявка: Заявка 4
свод Строка № 4, накл: Накладная 4
-печ Накладная 4.НомерСтроки= 1.
-печ Накладная 4.НомерСтроки= 2.
-печ Накладная 4.НомерСтроки= 3.
-печ Накладная 4.НомерСтроки= 4.
-печ Накладная 4.НомерСтроки= 5.
свод Строка № 5, заявка: Заявка 5
свод Строка № 5, накл: Накладная 5
-печ Накладная 5.НомерСтроки= 1.
-печ Накладная 5.НомерСтроки= 2.
-печ Накладная 5.НомерСтроки= 3.
-печ Накладная 5.НомерСтроки= 4.
-печ Накладная 5.НомерСтроки= 5.
32 Злопчинский
 
09.07.11
22:23
Выборка строк документа СВОД сбиваться не будет, потому как печатная форма, вызываемая в тестовом коде никак с контекстом документа Свод не связана.
.
а в (0) надо искать на форме функцию, которая считает какие-то итоги и осуществляет перебор строк документа, при этом инициализация выборки строк документа в прототипе тестового кода - как -то разнесена от выборки строк..
33 TeddySlaf
 
09.07.11
22:24
(0) а вообще по работе с ТабличнойЧастью Контекста помню что-то обсуждалось на Мисте.
Тоже бывали какие-то траблы. Вроде советовали делать через Выгрузить/ЗагрузитьТабличнуюЧасть() в таблицуЗначений. И работать уже с таблицей Значений.
34 TeddySlaf
 
09.07.11
22:27
(32) кстати да, вполне возможно, что там на форме наворочено нечто гремучее.
Отсюда выход: не передавать контекст, а передавать документ - делов-то: написать не Контекс, а ТекущийДокумент().
35 andrewks
 
09.07.11
22:34
блин, да ничего не наворочано.
могу дать посмотреть ч/з ammyy admin
36 andrewks
 
09.07.11
22:50
записал скринплэй  http://zalil.ru/31400993
упорно не могу понять, почему проблема выскакивает только у меня
37 Злопчинский
 
09.07.11
22:51
(34) в этом случае будут проблемы при модификации документа...
38 andrewks
 
09.07.11
22:52
(32) ну как же, код начинает выполняться именно в контексте дока Свод.

насчёт наворочанных форм и прочих функций на форме - у меня глючит даже пустая конфа из (15)
39 Злопчинский
 
09.07.11
22:55
давай тимвьювер ид/пароль на e.meil@mail.ru
40 andrewks
 
09.07.11
22:59
(39) замылил
41 Злопчинский
 
09.07.11
23:01
пока вставь параллельно этот код
Процедура ПоКнопкеПечать()

   ДокНакл=СоздатьОбъект("Документ");
   ВыбратьСтроки();
   Пока ПолучитьСтроку()=1
   Цикл
       
       Сообщить("Строка № "+НомерСтроки+", заявка: "+Заявка);
       Если Заявка.Выбран()=0
       Тогда
           Продолжить;
       КонецЕсли;    
       
       Накл="";
       ДокНакл.ВыбратьПодчиненныеДокументы(Заявка,,Заявка);
       Пока ДокНакл.ПолучитьДокумент()=1
       Цикл
           Если (ДокНакл.Вид()="Накладная") И (ДокНакл.ПометкаУдаления()=0)
           Тогда
               Накл=ДокНакл.ТекущийДокумент();
               Сообщить("Строка № "+НомерСтроки+", накл: "+Накл);
               Прервать;
           КонецЕсли;
       КонецЦикла;
       
   КонецЦикла;
   
КонецПроцедуры
42 Злопчинский
 
10.07.11
00:05
оборжака!!!!
43 Злопчинский
 
10.07.11
00:06
подкючился тимом
я запускаю - у меня все ок
он запускает - плохо...
не любит его.. ;-)
.
путем тыканья выяснили как воспроизвести ошибку и впрочих условиях - у меня дома удалось воспроизвести
44 andrewks
 
10.07.11
00:06
важное дополнение:

глюк воспроизводится только при полнооконном режиме работы внутренних 1совских окошек
45 Злопчинский
 
10.07.11
00:07
на кнопку печать в приведенном выше контрольном примере надо жмакать - ПРЕДВАРИТЕЛЬНО РАЗВЕРНУВ ФОРМУ ДОКУМЕНТА В ПОЛНОЭКРАННЫЙ РЕЖИМ
46 Злопчинский
 
10.07.11
00:08
мое неграмотное имховое мнение - это связано как-то с фокусом (по разному он себя ведет в разных режимах окон)
.
для усиления эффекта можно написать
ОткрытьФормуМодально - тогда зациклит на второй строке
47 andrewks
 
10.07.11
00:09
уточняю, глюк воспроизводится именно при одновременном выполнении четырёх условий:
1. выборка именно ТЧ контекста, а не ТЧ объекта Документ
2. закрытие таблицы ч/з Показать(,,-1)
3. вызов внешней обработки ч/з ОткрытьФорму или  
ОткрытьФормуМодально (неважно)
4. полнооконный режим работы
48 Злопчинский
 
10.07.11
00:09
при перефокусировании окон - текущая строка ТЧ выборки открытой на ЭКРАНЕ формы - остается неизменной... отсюда и идет повторное позиционирование - от текущей строки (которяа не меняется)
49 andrewks
 
10.07.11
00:10
большое спасибо Злопчинский за участие в мозговом штурме
50 Злопчинский
 
10.07.11
00:12
(47) неверные пункты!
51 Злопчинский
 
10.07.11
00:15
главный пункт, который тут вредит
.
       ИсхТабл.Показать(Строка(Докум),"",1);
       ИсхТабл.Напечатать(1);
       ИсхТабл.Показать(,,-1);
.
заключается в строке
.
       ИсхТабл.Показать(Строка(Докум),"",1);
.
если ее заремить - все работает ок...
а показ печатнйо формы почему-то именно в полноэкранном режиме уводит фокус из выполняемой формы документа на показ печатной формы; текущая строка ТЧ дока остается "незафиксированной" - и абзац...
.
пипл, которому еще не сожрал мозг снеговик, и которые лучше меня знают внутренности - может более внятно прокомментируют
52 Злопчинский
 
10.07.11
00:21
сия траблофича однозначно связана с позиционированием текущей строки на форме документа..
53 andrewks
 
10.07.11
00:21
(51) если убрать ИсхТабл.Показать(,,-1); - тоже всё работает :)

и вообще, при исключении любого из условий в (47) - работает
54 Злопчинский
 
10.07.11
00:30
О!!
проблема в следующем (возможно мы тут херню несли)
ДокНакл.ВыбратьПодчиненныеДокументы(,,Заявка); - при исполнении этого оператора сбивается содержимое "НомерСтроки"
55 Злопчинский
 
10.07.11
00:31
(53) Показать(,,-1) - это следствие, прична в  ИсхТабл.Показать(Строка(Докум),"",1); ;-)
56 Злопчинский
 
10.07.11
00:32
ага!!!!!!!!!
57 Злопчинский
 
10.07.11
00:32
документ Свод является подчиненным документу Заявка, поэтому такая трабла и происходит...
58 Злопчинский
 
10.07.11
00:41
Итак...
59 Злопчинский
 
10.07.11
00:42
при коде
.
Процедура ПоКнопкеПечать()
   ОчиститьокноСообщений();
   
   Параметры = СоздатьОбъект("СписокЗначений");
   Параметры.ДобавитьЗначение("", "Контекст");
   Параметры.ДобавитьЗначение(1, "Устройство");
   Параметры.ДобавитьЗначение(2, "КоличествоКопий");
   
   ДокНакл=СоздатьОбъект("Документ");
   
   ВыбратьСтроки();
   Пока ПолучитьСтроку()=1 Цикл
       
       Сообщить("Строка № "+НомерСтроки+", заявка: "+Заявка);
       Если Заявка.Выбран()=1 Тогда
           Накл="";
           ДокНакл.ВыбратьПодчиненныеДокументы(,,Заявка);
           
           Пока ДокНакл.ПолучитьДокумент()=1 Цикл
               Если (ДокНакл.Вид()="Накладная") И (ДокНакл.ПометкаУдаления()=0) Тогда
                   Накл=ДокНакл.ТекущийДокумент();
                   Прервать;
               КонецЕсли;
           КонецЦикла;
           
           Если ПустоеЗначение(Накл)=0 Тогда
               Сообщить("Строка № "+НомерСтроки+", накл: "+Накл);
               Параметры.Установить("Контекст",Накл);
               ОткрытьФормуМодально("Отчет", Параметры, КаталогИБ()+"\ExtForms\nakl_print.ert");
           КонецЕсли;
           
       КонецЕсли;
       
   КонецЦикла;
.
проблема "усилена" модальным открытием - при полноэкранном режиме открытия документа - траблафича проявляется во все й красе...
60 Злопчинский
 
10.07.11
00:44
после оператора открытьформумодально() - выборка строк ТЧ сбивается в начало...
61 Злопчинский
 
10.07.11
00:49
что блин странно больше всего - что при использовании  ОткрытьФорму() - оператор  ДокНакл.ВыбратьПодчиненныеДокументы(,,Заявка); - на третьем шаге сбивает НомерСтроки в 1...
.
а при использовании ОткрытьФормуМодально() - все ок...
62 Злопчинский
 
10.07.11
01:05
в принципе как должен выглядеть беспроблемный код в этой ситуевине - уже ясно - надо "включить" ЯВНОЕ указание обрабатываемой строки - это можно делать разными вариантами - и выгрузкой в ТЗ и прочими...
63 Злопчинский
 
10.07.11
01:13
http://dump.ru/file/5305457
- по ссылке лежит модифицированный тест, демонстрирующий разнотипные бяки обсуждаемого вопроса.

тесты 1,2 - в принципе навернео одинаковые - потыкайтесь в них побольше и понажимайте эскейпы массово...
.
тест 4 - самый "правильный", но и его при массовом эскейпе можно "загнать в угол"
.
тест 3 (и при масовом эскейпе тест 4) - в данном конкретном случае - даёт правильные результаты, но косячит в выводимых данных в части номера строки табличной части формы документа.
.
кому интересно - пусть потыкает в тесты и прокомментирует, особенно тест №1
64 Злопчинский
 
10.07.11
01:18
рекомендации:
.
работая с выборкой по ТЧ дока в контексте формы дока - не использовать последовательную выборку строк;
.
осторожно работать с визуальными окнами, которые уводят фокус с окна формы дока;
.
избегать полноэкарнного режима (тут ваще непонятно почему именно это так обостряет проблему);
.
при необходимости осуществить выборку ТЧ - работать с принудительным указанием текущей строки:
КС = КоличествоСтрок();
Для ы=1 по КС Цикл
 ПолучитьСтрокуПоНомеру(ы);
 ...
КонецЦикла;
.
НЕ ИСПОЛЬЗОВАТЬ НомерСтроки в качестве исходных данных!!! Пользоваться для этого НЕЗАВИСМЫМ счетчиков (например, как выше: ы)
65 Злопчинский
 
10.07.11
01:19
вот такое большое тупое резюме.
я все сказал.
Цезарь умыл руки..
66 Злопчинский
 
10.07.11
01:21
вот интересно, как анлогичный тест себя в снеговике поведет..?
67 TeddySlaf
 
10.07.11
05:37
(65) о как! о_О
Казалось бы причем тут Лужков?
В посте-воспоминании (33) примерно это и вспоминалось.
68 TeddySlaf
 
10.07.11
05:41
(65) "я старый солдат, я не знаю слов любви..."
Спасибо.
Интересно было поучаствовать, понаблюдать в столь продуктивной дискуссии. :)
69 DJ Anthon
 
10.07.11
08:16
у меня была похожая проблема, решилась кратковременным переводом дока в полноэкранный режим (при необходимости). глазу даже незаметно.
70 andrewks
 
10.07.11
09:23
(67) в (33) упоминается совершенно другая багофича, просто способ обхода пересекается. а так - ничего общего
(69) прикольно. т.е. наоборот у тебя глючило только в не полнооконном режиме?
71 DJ Anthon
 
10.07.11
10:10
нет, не в полноэкранном, а после процедуры смена режима контекст становился доступным на микросекунду, которой хватало на выполнение кода (как ни странно, 3-й год этот код работает и не багит). даже не возвращая обратно в другой режим через секунду можно было убедиться, что контекст запорчен.
и с таблицей значений / многострочной частью обход траблы решился тем же способом. не делился решением на мисте только потому, что тут мои решения считаются наиглупейшими, иногда это оказывалось правдой...
72 DJ Anthon
 
10.07.11
10:17
(70) кстати, интуитивно я чувствовал, что есть обход проблемы (хотя ее можно было вообще не решать, это чисто для себя) и никак не мог его найти, но рыл, рыл, рыл и, в итоге, случайно нашел решение, был сильно удивлен, насколько случайно его удалось обнаружить, интуиция меня не подводит, в этом я уже 100% убедился.
73 Злопчинский
 
10.07.11
14:16
я когда-то давно тоже наступал на аналогичные грабли какие-то с обходом ТЧ в форме дока, помню что заборол, но что уже было - не помню.. с  тех пор просто аккуратно стараюсь писать такие вещи...