![]() |
![]() |
sdaf 21.09.2004 - 15:50 | или его в нет в принципе? |
AlexMan 1 - 21.09.2004 - 15:52 | Метаданные. |
sdaf 2 - 21.09.2004 - 15:57 | типа того Если ПустоеЗначение(Метаданные.Справочник(ТаблицаПрибылей.Объект.Вид()).Реквизит("ОдноЮрЛицо"))=0 тогда ? |
Diter 3 - 21.09.2004 - 15:58 | (2) Эта конструкция вызовет ошибку программы. Лучше перебором реквизитов через метаданные и сравнением названий реквизитов с нужным |
Рупор абсурда 4 - 21.09.2004 - 15:58 | Метаданные.Справочник(ТаблицаПрибылей.Объект.Вид()).Реквизит("ОдноЮрЛицо").Выбран() |
AlexMan 5 - 21.09.2004 - 15:59 |
типа того : Если Метаданные.Документ(Конт.Вид()).РеквизитТабличнойЧасти("СтавкаНДС").Выбран() = 1 Тогда |
AlexMan 6 - 21.09.2004 - 16:01 | (4) и от куда такие умные берутся? |
sdaf 7 - 21.09.2004 - 16:01 | Пасиб! |
Рупор абсурда 8 - 21.09.2004 - 16:02 |
(3) Чёй-то она вызовет ошибку? Какую, интересно? (6) 1:1 :)) |
Maniac 9 - 21.09.2004 - 16:06 |
Функция ЕстьРекв(Объект,Реквизит) Экспорт Попытка Значение = Объект.ПолучитьАтрибут(Реквизит); Возврат 1; Исключение Возврат 0; КонецПопытки ; КонецФункции // проверяет фсЁ де угодно. |
Вонрат 10 - 21.09.2004 - 16:09 |
Для а=1 по Метаданные.Справочник(ТаблицаПрибылей.Объект.Вид()).Реквизит() Цикл Если Метаданные.Справочник(ТаблицаПрибылей.Объект.Вид()).Реквизит(а).Идентификатор="ОдноЮрЛицо" Тогда //все зашибись Прервать; КонецЕсли; КонецЦикла; |
Вонрат 11 - 21.09.2004 - 16:11 | to(9) У тебя попытка. А если нужно эту фигню написать внутри транзакции, то исключение при попытке лишает возможности зафиксировать транзакцию. |
Рупор абсурда 12 - 21.09.2004 - 16:15 | (10) Дональд Кнут Вам кем-то приходится? |
Вонрат 13 - 21.09.2004 - 16:18 |
Внучатым племянником. :) Я его переводил на русский, иврит, вайнакхский и пару забыл |
Maniac 14 - 21.09.2004 - 16:19 | (11) не гони. работает пять лет без единого промаха. |
niko 15 - 21.09.2004 - 16:21 |
Функция ЕстьРеквСпр(спр,рекв) // "спр" и "рекв" строки вроде "контрагенты" и "ОсновнойДоговор" // вылетит, если справочника "спр" в конфе нет Возврат Метаданные.Справочник(спр).реквизит(рекв).выбран(); КонецФункции |
Diter 16 - 21.09.2004 - 16:22 |
(8) Как всегда прав :(( А я перестраховался. |
sdaf 17 - 21.09.2004 - 16:22 | (10) это, согласитесь не очень красиво... в (4) и (5) гораздо удобней |
Anomaly 18 - 21.09.2004 - 16:24 |
Функция ЕстьРеквСпр(спр,рекв) // "спр" и "рекв" строки вроде "контрагенты" и "ОсновнойДоговор" Если Метаданные.Справочник(Спр).Выбран()=0 Тогда Возврат 0; КонецЕсли; Возврат Метаданные.Справочник(спр).реквизит(рекв).выбран(); // не вылетит, даже если справочника "спр" в конфе нет КонецФункции |
Вонрат 19 - 21.09.2004 - 16:30 |
to(Maniac) Внутри транзакции работать не должно to(18) хорошо |
Рупор абсурда 20 - 21.09.2004 - 16:31 | Мама дорогая ..., сколько "монстров" собралось ... |
Maniac 21 - 21.09.2004 - 16:32 | (19) еще раз говорю (14) и (9). |
Anomaly 22 - 21.09.2004 - 16:33 | (21) а может быть ты все пять лет транзакции не использовал? ))) |
Вонрат 23 - 21.09.2004 - 16:34 | (21) Но ты не разу не сказал насчет внутри транзакции. |
Maniac 24 - 21.09.2004 - 16:36 | хех я не тошо внутри делал, но еще и транзакции сами в попытках не раз воял. |
Вонрат 25 - 21.09.2004 - 16:36 | А транзакцию внутри экзекуции не пробовал? :) |
Maniac 26 - 21.09.2004 - 16:38 | Объсните мне (приведите документацию) где попытка имеет отношение к выполнению транзакции. |
Вонрат 27 - 21.09.2004 - 16:39 |
У меня случалась ситуация, когда внутри транзакции отрабатывало исключение попытки, то на команду ЗафиксироватьТранзакцию() вылетала с ошибкой типа невозможно зафиксировать транзакцию. Причем ситуация была вполне стабильна. (за исключением того, что винду не пробовал переставлять) |
Anomaly 28 - 21.09.2004 - 16:39 | (26) это недокументированная аномалия ))) |
Maniac 29 - 21.09.2004 - 16:41 | хех у меня ЕстьРекв() используется практически во всех модулях проведения и вообще встречается в конфе 172 раза. В тех обработках которую используют транзакции никакх глюков и ошибок никогда не вылазило. |
Вонрат 30 - 21.09.2004 - 16:42 | Если 28 говорит про аномалии, то этому можно верить! Ж) |
Anomaly 31 - 21.09.2004 - 16:43 | (29) значит, нигде не отрабатывало "исключение" |
Вонрат 32 - 21.09.2004 - 16:44 | А это работает(попытка внутри транакции) на каких релизах exe-шника? |
Maniac 33 - 21.09.2004 - 16:44 | (31) да ну. У меня в одном из общих модулей проведения для всех документов проверяется есть ли валюта у документа. |
Anomaly 34 - 21.09.2004 - 16:45 | (30) чем оправдано столь безграничное доверие? ))) Я ведь и обмануть могу - ну просто запросто))) |
EVS 35 - 21.09.2004 - 16:46 | монстры, а почему когда, через транзакцию из 1С с помощью ОЛЕ на sql-сервере формируются данные, даже если не фиксировать транзакцию, данные на сервере остаются? |
Maniac 36 - 21.09.2004 - 16:47 | (32) работало на 15,17,19,21,23 |
Вонрат 37 - 21.09.2004 - 16:47 | А у нас принято верить людям |
EVS 38 - 21.09.2004 - 16:48 | монстры, а почему когда, через транзакцию из 1С с помощью ОЛЕ на sql-сервере формируются данные, даже если не фиксировать транзакцию, данные на сервере остаются? |
Муму после всплытия 39 - 21.09.2004 - 16:48 |
(35) вы по ОЛЕ транзакцию делаете?? мама дорогая.................. |
Anomaly 40 - 21.09.2004 - 16:52 |
(37) "а мне пофиг ваши неувязочки" (с) ))) - это будет если всем верить. (36) возможно, если попытка-исключение "запрятано" в глобальную функцию, то транзакция и не реагирует ненормально...надо проверить бы... Если просто использовать в транзакции, то ничего хорошего не получается... |
EVS 41 - 21.09.2004 - 16:52 |
(39) А что ? :) ПС: Блин,*******************, что за ТАЙМ-АУТ, на форуме, ни одного сообщения отправить толком не могу... |
Maniac 42 - 21.09.2004 - 16:53 | (41) транзакция 8)))) |
Anomaly 43 - 21.09.2004 - 16:55 | (38) "Русский человек славится умением находить выход из любой сложной ситуации. Но еще больше он славится умением находить туда вход" (с) |
Рупор абсурда 44 - 21.09.2004 - 16:59 | А почему молчит про исключения в транзакциях уважаемая мною Муму П.В.? ... |
Рупор абсурда 45 - 21.09.2004 - 17:02 | (44)+ Неужели мы отдадим Мньяка на поругание "монстрам" ... |
Maniac 46 - 21.09.2004 - 17:02 |
а может это из за того что у меня Возврат 0 стоит в исключении ? Тоесть функция завершается не завершившись на операторе. |
Муму после всплытия 47 - 21.09.2004 - 17:04 |
(44) перефразируя.............. "чужих маньяков нам не надо, но и свого не отдадим??") а что про исключения?? тут уже все сказали............... не зафиксируется транзакция при оном................ |
Maniac 48 - 21.09.2004 - 17:05 | а может просто из за того что это отдельная функция. |
Anomaly 49 - 21.09.2004 - 17:05 |
(45) "поругание, поругание..." да никто его не ругает...Разве отшлепают чуть-чуть ))) P.s. Надеюсь, меня к монстрам не причисляют...))) |
Вонрат 50 - 21.09.2004 - 17:07 |
45 Какое растерзание?! Идет полезный обмен опытом 38 У меня здесь (в этом здании) каждый день несколько человек выполняют обработку, которая по ОЛЕ открывает соседскую базу, забирает из неё документы, в некоторых случаях в процессе загрузки пользователь может прервать выполнение положительным ответом на вопрос типа "Такой документ уже есть. Прервать обработку?". В этом случае срабатывает "Отменить транзакцию()" и нифига не появляется из того, что было в начале транзакции |
Maniac 51 - 21.09.2004 - 17:07 | короче фиг с ним...работает же. |
Рупор абсурда 52 - 21.09.2004 - 17:08 |
(46) Не из-за этого ... Просто нет такого глюка ..., и не было никогда! ... А Вонрат и Anomaly, просто про это не знают ... |
EVS 53 - 21.09.2004 - 17:09 |
Спр = СоздатьОбъект("Справочник.Объекты1С"); а = 1; НачатьТранзакцию(); а = 100; попытка Спр.Код = 1; исключение Сообщить(а); конецпопытки; ЗафиксироватьТранзакцию(); Сообщить(а); 100 100 |
Вонрат 54 - 21.09.2004 - 17:09 |
Попробуй, докажи теорему типа "Этого нет и никогда не было" А я вот могу привести контрпример - и все в шоколаде |
Anomaly 55 - 21.09.2004 - 17:09 | (52) неужели???? А как же тогда быть с невозможностью зафиксировать транзакцию? |
Maniac 56 - 21.09.2004 - 17:10 | (52) хех, Муму тоже с ними 8) |
EVS 57 - 21.09.2004 - 17:11 |
Перем а; Спр = СоздатьОбъект("Справочник.Объекты1С"); а = 1; НачатьТранзакцию(); а = 100; попытка НачатьТранзакцию(); а = 5; Спр.Код = 1; ЗафиксироватьТранзакцию(); исключение Сообщить(а); конецпопытки; ЗафиксироватьТранзакцию(); Сообщить(а); 5 5 |
Рупор абсурда 58 - 21.09.2004 - 17:11 |
(54) Спр=СоздатьОбъект("Справочник.Номенклатура"); НачатьТранзакцию(); Попытка Х=1/0 Исключение Сообщить(":((") КонецПопытки; Спр.Новый(); Спр.Наименование="ФЕЙХУА"; Спр.Записать(); ЗафиксироватьТранзакцию(); |
Вонрат 59 - 21.09.2004 - 17:14 |
54 -> 52 to(53) Транзакция нужна для цельного проведения update-а в таблицах БД, а не временных переменных. Поэтому А=100. Вот если бы: Спр = СоздатьОбъект("Справочник.Объекты1С"); Спр2 = СоздатьОбъект("Справочник.Объекты2С"); а = 1; НачатьТранзакцию(); Спр2.Новый(); Спр2.Наименование="Ну ни *** себе!"; Спр2.Записать(); попытка Спр.Код = 1; исключение Сообщить(Строка(Спр2)); конецпопытки; ЗафиксироватьТранзакцию(); Сообщить("00"+Строка(Спр2)); ---- то было бы Ну ни *** себе! 00 |
Anomaly 60 - 21.09.2004 - 17:14 | (58) может быть все дело в этом экзотическом фрукте, из которого в студенчестве варили такое...вкусное варенье... ))) Сейчас попробую контрпример соорудить...какие-то грабли все-таки есть. |
Вонрат 61 - 21.09.2004 - 17:17 | Да точно есть грабли. Я ж не во сне видел сообщение об ошибке: "Невозможно зафиксировать транзакцию"!(или что-то в этом роде) |
EVS 62 - 21.09.2004 - 17:27 |
(59) А ты пробовал свой код? у меня он другое показал...а именно Ну ни *** себе! 00Ну ни *** себе! |
Рупор абсурда 63 - 21.09.2004 - 17:34 |
(56) Фигня ... Пусть пока поживёт ... Потом, когда мы её поймаем ..., она уже больше не всплывёт ... |