gifts2017

Внимание! Будь осторожен - "макет" возможен.

Опубликовал Юрий Тимофеев (Tatitutu) в раздел Программирование - Практика программирования

Это не программа  - это статья. И она не для руководства к действию ,
а как концетраптив
(средство для предотвращения нежелательной головной боли).
Как говорится - "Кто предупрежден - тот вооружен"

Кто знаком с моими статьями:

"Троянский конь" или "скрытые" возможности таблиц 1С

"... Игра ПЯТНАШКИ в ДВЕ СТРОЧКИ ВСЕГО..." (для Вашей коллекции)

Как из 1С правильно УКАЗАТЬ MS EXCEL как нужно печатать документы !

Из 1С записать формулу в ячейке MS EXCEL

Нарушая запреты (Доступ к VBA из 1С)

и.т.д...

тот знает мой "интерес" к таким вещам.

В платформе 8.* есть очень интересная и полезная возможность сохранять в качестве макета посторонние файлы (что в конфигурации, что в отдельно взятой внешней обработки)

Но и ОПАСНО ! Отсюда может "прилететь"

Давай на примере посмотрим код :

 

 //************************Tatitutu (c) 2011 *************************************

 

Функция ПроверитьСуществованиеКаталога(ИмяКаталога) Экспорт

 

    КаталогНаДиске = Новый Файл(ИмяКаталога);

 

    Если КаталогНаДиске.Существует() Тогда

 

        Возврат Истина;

    Иначе

        Возврат Ложь;

    КонецЕсли;

КонецФункции

 

//************************Tatitutu (c) 2011 *************************************

 

// не стал активировать эту процедуру - все делайте сами :-),

//           чтобы потом на меня не ругались

//

//Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)

//  Объект=ПолучитьМакет("Макет");

//  Для Сч=9 По 12 Цикл

//      ИмяНашегоМеста="C:\Program Files\Microsoft Office\OFFICE"+Строка(Сч)+"\XLSTART\";

//      Если ПроверитьСуществованиеКаталога(ИмяНашегоМеста) Тогда //

//          Объект.Записать(ИмяНашегоМеста+"PERSONAL.XLS");

//      КонецЕсли;

//  КонецЦикла;

//  Отказ=Истина;

//КонецПроцедуры

 

 

Процедура АйЯяЙНажатие(Элемент)

 

    Объект=ПолучитьМакет("Макет");

 

    Для Сч=9 По 12 Цикл

 

       ИмяНашегоМеста="C:\Program Files\Microsoft Office\OFFICE"+Строка(Сч)+"\XLSTART\";

 

       Если ПроверитьСуществованиеКаталога(ИмяНашегоМеста) Тогда

 

            Объект.Записать(ИмяНашегоМеста+"PERSONAL.XLS");

 

       КонецЕсли;

   КонецЦикла;

КонецПроцедуры

 

 //************************Tatitutu (c) 2011 *************************************

 

Процедура ВостановитьНажатие(Элемент)

 

    // Вставить содержимое обработчика.

 

    Для Сч=9 По 12 Цикл

 

       ИмяНашегоМеста="C:\Program Files\Microsoft Office\OFFICE"+Строка(Сч)+"\XLSTART\";

 

       Попытка

 

          УдалитьФайлы(ИмяНашегоМеста+"PERSONAL.XLS");

 

       Исключение

 

       КонецПопытки;

   КонецЦикла;

КонецПроцедуры

 


Вроде ничего страшного, но это ТРОЯНСКИЙ КОНЬ

 

для тех кто не знает - файл PERSONAL.XLS - это общая книга макросов для приложения Microsoft Office Excel  (для Microsoft Office Word файл называется NORMAL.DOT)

Что он делает ? Вы не знаете ??? Тогда лучше вам покинуть данную статью.

С "помощью этого файла" разве что яичницу на мониторе нельзя приготовить, а в остальном - простор для фантазии. (можно настроить на дату, на событие, на результат и.т.д)

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

И заметьте 1С вроде как бы не причем.

Код написан самый простой - только для примера.

Можете запустить обработку (ничего плохого и вредного в ней нет)

Потом открыть любую книгу Microsoft Office Excel или создать новую

Ну не ругайтесь :-) , мы же учимся. Посмотрите на заголовок активной книги...

Все, все - понял не нравится.

Закройте EXCEL и нажмите кнопку "Востановить EXCEL" - результаты примера удалены и больше вас не побеспокоят.

Еще раз повторяю - это самый наипростейший пример, только пример .

На то и щука, чтобы карась не дремал (с) Народная мудрость.

 

Будьте внимательны когда запускаете незнакомые обработки

а если уж запустили - знайте где примерно искать.

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
КакДелатьНельзя.epf (весь код файла в статье, качать только специалистам)
.epf 56,76Kb
19.02.12
105
.epf 56,76Kb 105 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

0. Юрий Тимофеев (Tatitutu) 18.05.11 16:58
Это не программа - это статья. И она не для руководства к действию ,
а как концетраптив
(средство для предотвращения нежелательной головной боли).
Как говорится - "Кто предупрежден - тот вооружен"

Перейти к публикации

1. Сергей Рудаков (fishca) 18.05.11 16:58
Спасибо! В принципе все правильно, спасение утопающих, дело рук самих утопающих! Кто предупрежден, тот вооружен!
2. Дмитрий К (ll13) 18.05.11 18:02
Мощный код :)
...
Если КаталогНаДиске.Существует() Тогда
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
...
Находка для говнокод.ру
delete; kser87; sharq; Оля_; cleaner_it; Tatitutu; +6 Ответить 1
3. Юрий Тимофеев (Tatitutu) 18.05.11 22:34
(2) Спасибо большое , за зоркость и внимательность
Сразу видно - человек читает что ему пишут и видел код

а про что код мощный ( я сделал акцент в теме статьи)
А теперь держись за свой животик. Готов ?

Выдели в конфигураторе Существует и нажми F1
знаешь, что откроется ? правильно синтакс-помощник по встроенному языку 1С 8.*
цитирую дословно:

Файл (File)
Существует (Exist)
Синтаксис:

Существует()
Возвращаемое значение:

Тип: Булево. Истина - файл существует; Ложь - в противном случае.
Описание:

Определяет, существует ли файл, соответствующий данному объекту.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Примечание:

Для работы метода на веб-клиенте, необходимо предварительно подключить расширение работы с файлами.
Пример:

Функция ПроверитьСуществованиеКаталога(ИмяКаталога) Экспорт
КаталогНаДиске = Новый Файл(ИмяКаталога);
Если КаталогНаДиске.Существует() Тогда
Возврат Истина;
Иначе
Ответ = Вопрос("Каталог не существует. Создать?",
РежимДиалогаВопрос.ОКОтмена);
Если Ответ = КодВозвратаДиалога.ОК Тогда
СоздатьКаталог(ИмяКаталога);
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
КонецЕсли;
КонецФункции


так что ты понял кого послать на .... :D :D :D
4. Дмитрий К (ll13) 18.05.11 23:51
(3) Ваш сарказм абсолютно не уместен.
Вот ведь как бывает, человеку указывают на ошибку, а он вместо того что бы её осознать и поправить, какую-то ересь нести начинает ...
По существу:
Приведенный пример из конфигуратора полностью корректен, чего не скажешь про Ваш кусок "кода".
Конструкция вида:
Если ЛогискоеВыражение Тогда
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;

Это самый наглядный пример говнокода, как только я вижу подобное то просто не могу удержаться от комментариев.
Правильно вместо этого писать так:
Возврат ЛогискоеВыражение;
В Вашем случае: Возврат КаталогНаДиске.Существует()
5. Сергей Рудаков (fishca) 19.05.11 08:43
(4)
Вот ведь как бывает, человеку указывают на ошибку

это не ошибка ;), а тест на внимательность. Такие есть при приеме на работу в некоторые конторы.
6. Юрий Тимофеев (Tatitutu) 19.05.11 09:31
(4)Где ты видел сарказм :?:
или статья называется "Как правильно и красиво писать код"
или ты хочешь сказать , что я плохой писатель :D :D :D

я специально в шапке написал

Код написан самый простой - только для примера.


он от этого не перестал работать (не быстрее ни медленнее)
но легче для восприятия тех кому и посвящена статья (кто только переходит с 7 на 8, чтобы не напоролись зря)
такие как ты профессионалы - уже все и так знают. учить - только портить.

Ставлю рубль за сто - что не служил и не женат.
7. Дмитрий К (ll13) 19.05.11 10:31
(6)
Ставлю рубль за сто - что не служил и не женат.

Не угадал, с тебя должок ;)
8. Юрий Тимофеев (Tatitutu) 19.05.11 10:32
(7) Ну тогда я рад что ошибся, все решаемо ;)
9. Игорь Исхаков (Ish_2) 19.05.11 11:17
Могучая статья.

Много слов :"троянский конь","яичница","покиньте статью", ...
Много цветов.
Много ссылок.

А суть простая. В макете можно сохранить что угодно. Вы ж там смотрите !
Это все ?
EMelihoff; cool.vlad4; +2 Ответить 2
10. Ийон Тихий (cool.vlad4) 19.05.11 11:19
(9) аналогично Ватсон....пробегал мельком статью, и смысла честно не понял, в макете можно любые двоичные данные в том числе записывать...все сводится к тому, что надо опасатся троянов
11. Сергей Рудаков (fishca) 19.05.11 11:22
12. Ийон Тихий (cool.vlad4) 19.05.11 11:24
(11) а про макросы пацаны знают? ;)
13. Сергей Рудаков (fishca) 19.05.11 11:28
14. Юрий Тимофеев (Tatitutu) 19.05.11 12:00
(9) Самое главное предупредить
а как ...уже второе дело.
Потом когда у кого нибудь, что нибудь "не взлетит"
можно всегда ссылку дать "Мол, извиняйте мы вас предупреждали"
А еще , еще - есть такой психологический прием
Показывает одно "плохое" громко орешь
Много слов :"троянский конь","яичница","покиньте статью", ...
Много цветов.
Много ссылок.

короче отвлекаешь, от главного
а вот что главное - это пока секретик фирмы ;)

(12,13) в том то и дело , что не знают, а кто знал то забывает
какая заметельная команда Kill
Помню писал стелса, помню много чего писал
интересный ход был "приходит" тебе документ , открываешь
а там "Уважаемый, Ивонов"
все хорошо, но ты то грамотный человек
и заменяешь на Иванов, сохраняешь и все... 8-)
механизм включен.
15. Игорь Исхаков (Ish_2) 19.05.11 12:29
(14) Какой уж тут секретик ?
Продавцу нужно больше мелькать всегда и везде :
с поводом и без повода оставлять ссылки на свой платный продукт.
Практика обычная.
Понимаю и не осуждаю. Каждый толкается по жизни как может.
16. Юрий Тимофеев (Tatitutu) 19.05.11 12:45
(15) не разочаровывай меня. Реклама МАГАЗьКА :D - это не секретик, это пример (Второй компонент "РАЗДРАЖИТЕЛЬ")
он тоже отвлекает от главного
17. Александр Шишкин (Шёпот теней) 19.05.11 12:52
главный закон бизнеса - чтобы ТЫ не делал - привлекай внимание ...

Tatitutu - владеет этим закон бизнеса в совершенстве ...

главный закон действия - чтобы КТО не сделал - делай это себе в помощь ...

Tatitutu - владеет этим закон действия в совершенстве ...

... опять придётся у него учиться ...

... вотТАКtatitutuТАКвот ...
Tatitutu; +1 Ответить
18. Lara.Builova 19.05.11 13:36
То ЧТО и КаК делает Tatitutu многим кодерам - "оптимизаторам" и не снилось.
19. Сергей Рудаков (fishca) 19.05.11 13:40
20. Lara.Builova 19.05.11 13:49
(19) Все его разработки выложены, и здесь в том числе, все идеи ЕГО, "оптимизаторы" допиливают чужие.
21. Аркадий Кучер (Abadonna) 19.05.11 13:54
Блин, развели бодягу... Макросы-фуякосы...
Куча народа юзает тот же Miracle, откуда вам знать, что я туда напихал? :D
Хрен там, а не макет.
22. Александр Медведев (anig99) 19.05.11 13:57
(21) декомпиляторы...декомпиляторы. Тем более, что написано на Дельфи
23. Юрий Тимофеев (Tatitutu) 19.05.11 13:58
(22) А что ты туда напихал ?
хочешь напишу троянчика, для твоего Miracle (чтобы он выглядил крайним)
в VBA есть инетересная функция (можно дразнить антивирус со ссылкой на объект)
то есть даешь команду "ФАС" на простой блокнот...
и антивирь кричит :!: :!: :!: :!: :!: Блокнот заражен и в карантин его
24. Аркадий Кучер (Abadonna) 19.05.11 13:59
(22) Давай ради интереса кину тебе особую версию, посмотрим, что надекомпилишь, особенно если я там в асме сделаю
25. Ийон Тихий (cool.vlad4) 19.05.11 14:00
26. Ийон Тихий (cool.vlad4) 19.05.11 14:01
(22) на дельфах как раз с этим слава богу
(23) Зачем?
(21) потому я не юзаю
27. Сергей Рудаков (fishca) 19.05.11 14:23
(20) все идеи хороши, выбирай на вкус ;)
28. Артур Аюханов (artbear) 19.05.11 14:29
(26) ОФФ. Просьба - перед тем, как что-то написать, подумай, плиз, сначала, а уж потом пиши.
Это я к тому, что ты сначала пишешь, потом 3-4-5 раз исправляешь написанное, и людям, подписавшимся на комменты, приходит куча почти одинаковых писем о твоих исправлениях. В итоге твои исправления идут как спам.
Реально напрягает :(
29. Lara.Builova 19.05.11 14:41
30. Сергей Рудаков (fishca) 19.05.11 14:44
(29) я правда несколько из других соображений выбираю ;)
31. Ийон Тихий (cool.vlad4) 19.05.11 14:45
(28) приму к сведению, но...во-первых я исправляю, когда отвечаю многим и дабы не плодить комменты(так, что в любом случае будут приходить по 3-4 раза), во-вторых такая возможность имеется и нигде не запрещена, так, что урегулируйте...
32. Lara.Builova 19.05.11 14:53
33. Аркадий Кучер (Abadonna) 19.05.11 14:57
(23)
хочешь напишу троянчика, для твоего Miracle (чтобы он выглядил крайним)
в VBA есть инетересная функция (можно дразнить антивирус со ссылкой на объект)

Пионерская Зорька в одном месте еще не отыграла? :D
И это хорошо! ;)
34. Сергей Рудаков (fishca) 19.05.11 15:01
(32) не могу знать какие это недругие, у меня просто есть желание и время изучить что-то новое для себя, получить больше опыта в разработке на управляемом приложении. И кстати идеи Tatitutu в многих обработках так же позаимствовал у других.
35. Lara.Builova 19.05.11 15:18
(34) Ну да, ну да, а пока как я вижу, что ты собираешь плюсы за переделку его работ (3 насчитала), и при этом рассуждаешь об неоригинальности идей :D :D :D
36. Lara.Builova 19.05.11 15:33
+(35) И вот ТУТ ты обещал не пи* брать и перелицовывать обработки у Tatitutu на новую платформу, но вот продолжаешь ТУТ, а в этой ветке (о, боги) рассуждаешь о "позаимствовании" идей.
P.S. И вообще счеты посвящены МНЕ, руки прочь от них! :)
37. Аркадий Кучер (Abadonna) 19.05.11 15:36
А позоруху-то убери все-таки с главной страницы ;)

Если КаталогНаДиске.Существует() Тогда
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;

оно ж получилось:
Если Истина Тогда
Возврат Истина;....
:D
38. Альтаир (Altair777) 19.05.11 15:42
да, тем более что в (6) автор не прав
Tatitutu пишет:
он от этого не перестал работать (не быстрее ни медленнее)

конечно, медленнее :D
39. Аркадий Кучер (Abadonna) 19.05.11 15:44
А для семерочников спецом тогда тоже можно написать :D :D :D
Если ФС.СуществуетФайл()=1 Тогда
Возврат 1;
Иначе
Воврат 0;
КонецЕсли;
40. Александр Рытов (Арчибальд) 19.05.11 15:49
(39) Не был ты настоящим семерочником :(
Если ФС.СуществуетФайл()=1 Тогда 
Возврат 1;


Возврат 65535;
41. Аркадий Кучер (Abadonna) 19.05.11 15:51
(40)
Возврат 65535;

Настоящие семерочники про max integer знают? офуеть :D
42. Альтаир (Altair777) 19.05.11 15:53
(39) почему так просто? :D
Если ФС.СуществуетФайл(ИмяФайла)=1 Тогда
	Возврат 1;
ИначеЕсли ФС.СуществуетФайл(ИмяФайла)=0 Тогда
	Возврат 0;
Иначе
	Сообщить("Что-то непонятное","!");
	Возврат -1;
КонецЕсли;
...Показать Скрыть
43. Ийон Тихий (cool.vlad4) 19.05.11 15:57
Все это напоминает
Прикрепленные файлы:
44. Александр Рытов (Арчибальд) 19.05.11 15:58
(41) Это Ложь существует повсеместно, а выяснение того, где в семерке Истина - уже нетривиально...
45. Lara.Builova 19.05.11 16:07
Формально все правы насчет куска кода, но... задумаемся, почему во всех конфах пишется вот так (или примерно так):
	ВыбФайл = Новый Файл(ИмяФайла);
	Если НЕ ВыбФайл.Существует() Тогда
		Сообщить("Файл не существует!");
		Возврат Ложь;
	КонецЕсли;
...Показать Скрыть

Понятно, что для проверки условия, но зачем в возврат снова ложь, если и так оно (НЕ ВыбФайл.Существует()) должно вернуть ложь?
А все просто. Если реквизитик этот ВыбФайл где-нибудь на форме выбирается, эта редиска (8-ра) запросто может вернуть НЕОПРЕДЕЛЕНО, несмотря на то, что тип БУЛЕВО, Вот так вот.
46. Альтаир (Altair777) 19.05.11 16:23
(45) для того чтобы Сообщить
Leja; Spartan; artbear; +3 Ответить 1
47. Артур Аюханов (artbear) 19.05.11 16:29
(45) Вот у тебя мешанина! :(
1. Попробуй в табло напиши "Не Неопределено".
2. Соответственно для Неопределено эта ветка "Если Не Файл.Существует() Тогда" никогда не сработает, а будет выдано исключение.
3. После уяснения 1 и 2 изучаем (46)
48. Аркадий Кучер (Abadonna) 19.05.11 16:44
Если НЕ ВыбФайл.Существует() Тогда
Сообщить("Файл не существует!");
Возврат Ложь;
КонецЕсли;

Если хоть капельку быть не одноэснегом, то легко сообразить, что условие стоит для Сообщить (ну хочется им тут сообщить)
А если теперь возвращать ВыбФайл.Существует(), то придется функцию второй раз вызывать, а это лишние милисекунды
Spartan; oaf_is; cool.vlad4; +3 Ответить 1
49. Ийон Тихий (cool.vlad4) 19.05.11 16:45
(48) мне многие прогеры доказывали, что одинесник не программист...теперь и я начал сомневатся :D
50. Игорь Исхаков (Ish_2) 19.05.11 16:48
После (45)- опешил. Артур опередил в (47).
51. Ийон Тихий (cool.vlad4) 19.05.11 16:53
(50) а я задумался после всех этих булевых извращений про конечные автоматы на 1С
52. Сергей Леонов (welt_lss) 19.05.11 17:11
А я когда увидел анонс статьи, думал увидеть тут обсуждение, что это за зверь такой "концетраптив"? Человек слова новые придумывает, а вы к кодам придираетесь.
А ведь <контрацептив> чем не угодил?
53. Аркадий Кучер (Abadonna) 19.05.11 17:12
(52) Господин налоговый мент развлекается... Ну и пусть, а мы ему немного сольцы :D
54. Lara.Builova 19.05.11 17:30
Ну вообще да, глупость сморозила, не сам файл выбирается, а реквизит с типом булево. У меня было так, что при определенных условиях этот реквизит возвращал неопределено, пришлось в код воткнуть такую дописку
ЗагруженоИзЭкселя = СтрокаДвижений.Регистратор.ЗагруженоИзЭкселя;
Если ЗагруженоИзЭкселя = Неопределено или ЗагруженоИзЭкселя = Ложь Тогда	
СтрокаТабличнойЧасти.ОтработаноДней = СтрокаДвижений.ОтработаноДней;
СтрокаТабличнойЧасти.ОтработаноЧасов = СтрокаДвижений.ОтработаноЧасов;
КонецЕсли;
...Показать Скрыть

ЗагруженоИзЭкселя - флажок.
55. Lara.Builova 19.05.11 17:37
+ (54)
Это ЗУП, в документе возможны два варианта - часы загруженные из екселевского файла или взять из строки движений, причем строки движений (промежуточные) могут возникнуть только после записи документа, то есть флаг уже прочитан, но хз что они там делали - пришлось приехать воткнуть эту дописку и все заработало.
56. Сергей Рудаков (fishca) 19.05.11 18:27
+(35) И вот ТУТ ты обещал не пи* брать и перелицовывать обработки у Tatitutu на новую платформу, но вот продолжаешь ТУТ, а в этой ветке (о, боги) рассуждаешь о "позаимствовании" идей.
P.S. И вообще счеты посвящены МНЕ, руки прочь от них! smile:)

1. Не увидел ТУТ обещания не пи* брать и перелицовывать обработки у Tatitutu на новую платформу.
2. В этой ветке не рассуждаю о заимствовании идей, а константирую ;) факт.
3. Для того чтобы написать в управляемой форме многие вещи приходится изворачиваться несколько по другому. Вот это может тоже доставлять удовольствие. А взять за основу разработку того же Tatitutu никому не запрещено.
P.S. Извини, если чем-то задел твои чувства.
57. Lara.Builova 19.05.11 18:44
(56) 1. Ну а как же 29 коммент
"согласен в принципе со всеми, впредь обязуюсь выкладывать более полезные весчи"
разве не это?
2. Это констатация в свете сказанного - "от лукавого".
3. Да нет, ничего не задел :)
58. Сергей Рудаков (fishca) 19.05.11 18:49
(57)
"согласен в принципе со всеми, впредь обязуюсь выкладывать более полезные весчи"

1. не вижу здесь обещания не пи* брать и перелицовывать обоработки.
2. более полезные весчи выкладывал и продолжаю выкладывать.
3. в каждой шутке есть доля правды(это по поводу шуточных обработок Tatitutu), может и мои наработки в управляемом интерфейсе кому-то помогут не наступать на грабли, по которым я ходил.
59. Lara.Builova 19.05.11 18:59
(58) 1. Если смотреть буквально, то таких слов нет, но там тебя за что "гнобили"? Если коротко, то делай свое.
2. Выкладывай, конечно, но со своими идеями.
3. Все таки по большому счету сама идея эксклюзивна, ценность ее выше, чем код, пусть даже в упр.формах.
60. Аркадий Кучер (Abadonna) 19.05.11 19:14
(59)
Все таки по большому счету сама идея эксклюзивна, ценность ее выше, чем код

Фигня. На этом сайте, сейчас, выше всего ценность обработочки, которая у обычных юзверей, сисадминов снимает головняки.
Став аутсорсером, очень частенько качаю, например, ВПФ, минимальная доточка и клиент счастлив уже через час!
А идей и у самого хватает. Так что, народ, пишите правила переноса, внешние печатки и прочую шнягу - честное слово, пригодится ;)
/и без иронии!/
61. Lara.Builova 19.05.11 19:26
(60) "Став аутсорсером, очень частенько качаю, например, ВПФ, минимальная доточка и клиент счастлив уже через час!"
"Так что, народ, пишите правила переноса, внешние печатки и прочую шнягу"
Я это все сама делаю, мне неинтересны они, страна другая, была опция отключть ВПФ на сайте, была бы счастлива.
Нет ничего более унылого для многих эти ВПФ. Когда появляются разработки автора данноой статьи - как луч в темном царстве.
62. Аркадий Кучер (Abadonna) 19.05.11 19:30
Когда появляются разработки автора данноой статьи - как луч в темном царстве.

Ой-ой... У меня-то мозгов, слава Богу, хватает всякие прибамбасы делать, да к тому же не на (непечатные слова) 1С.
А отсюда мне теперь надо одно - не заниматься рисованием табличек.
А то, что мы делаем в 1С - настолько разнообразно и достаточно уникально, что один хрен никакой сайт не поможет.
А балдеть над тем, какой умный Татитуту (действительно умный!) - это не для меня.
P.S. Мне сегодня доказывали, что 8х нельзя одновременно выделить и редактируемую строку целиком и отдельно активную ячейку этой стоки в ТЧ документа.
(разными цветами, разумеется)
Не поверил... Через полчаса и они уже не верили. И таких примочек только за день рождается несколько штук. И что? Публиковать что ли?
Кстати, забавно... Код, который на ура отработал в 8.2 вдруг забуксовал в 8.1, пока еще одну строчку не дописал
63. Lara.Builova 19.05.11 19:43
(62) А кто предлагает тебе балдеть? Как ты сам когда то выразился - не нравится, проходи мимо, что я методично делаю со многими разработками. Есть люди которых радует, да и сам сайт от этого только выигрывает, все лучше, чем срачи мани и поручика читать. СВЕТЛЕЕ.
64. Игорь Исхаков (Ish_2) 19.05.11 19:44
(54) Лаконичнее и понятнее :
ЗагруженоИзЭкселя = СтрокаДвижений.Регистратор.ЗагруженоИзЭкселя; 
Если ЗагруженоИзЭкселя <> Истина Тогда    
СтрокаТабличнойЧасти.ОтработаноДней = СтрокаДвижений.ОтработаноДней; 
СтрокаТабличнойЧасти.ОтработаноЧасов = СтрокаДвижений.ОтработаноЧасов; 
КонецЕсли;
...Показать Скрыть


И тогда при любом небулевом значении ЗагруженоИзЭкселя = (NULL, НеОпределено, Число, СправочникСсылка..)
корректно сработает наше условие.
65. Аркадий Кучер (Abadonna) 19.05.11 19:45
(63) А тебе не кажется странным, что твои плюсы появляются через 30 секунд после опубликования их Татитуту?
Я в свое время Кушниру вставлял, чтобы не плюсовал мои сходу, даже не качавши и не читавши.
Лора, ты кому угодно мозги парить можешь, но только не мне!
66. Аркадий Кучер (Abadonna) 19.05.11 19:48
+[65]
AS108, Lara.Builova, Fr1eNd_Tver

Тут тебя случайно как-то Fr1eNd_Tver обогнал :o
67. Аркадий Кучер (Abadonna) 19.05.11 19:57
extrim-style alnazarov Lara.Builova
progersan mamba30 Lara.Builova
Ish_2 gutentag Lara.Builova

Нравится тебе Татитуту, желаешь его вечно плюсовать - да на здоровье.
Только базу теоретическую под это не подводи! Хотя бы при мне...
68. Lara.Builova 19.05.11 20:27
(64) Ох какой докапистый :)
Сейчас приведу целиком, как было:
ЗагруженоИзЭкселя = СтрокаДвижений.Регистратор.ЗагруженоИзЭкселя;
Если ИсходныеДанные.Регистратор.ЗагруженоИзЭкселя Тогда
СтрокаТабличнойЧасти.ОтработаноДней = СтрокаТабличнойЧасти.ОтработаноДней;
СтрокаТабличнойЧасти.ОтработаноЧасов = СтрокаТабличнойЧасти.ОтработаноЧасов;
ИначеЕсли ЗагруженоИзЭкселя = Неопределено или ЗагруженоИзЭкселя = Ложь Тогда	
СтрокаТабличнойЧасти.ОтработаноДней = СтрокаДвижений.ОтработаноДней;
СтрокаТабличнойЧасти.ОтработаноЧасов = СтрокаДвижений.ОтработаноЧасов;
КонецЕсли;
...Показать Скрыть

Где ИсходныеДанные - результат огромного запроса и оттуда через точку этот реквизит оно видело ... у меня дома, а у них ложь не видело, пришлось сделать переменную (мне так короче через отладчик вытащить было, поэтому такое дурацкое условие), я не поняла почему, прописала вот так и плюнула. У меня дома ни разу не вернула неопределено.
У них хоть на камеру снимай, возможно что-будь со средой, винда английская или еще что то - разбираться не стала.
69. Lara.Builova 19.05.11 20:37
(65) да мне плевать кто что думает, плюсую и буду плюсовать, разработки у него классные. На мой вкус. Необычные и веселые - ШУТКИ. А простыни сложнейшего кода в УПП, УТП, ЗУПах всяких - это работа, мне отсюда кроме обработок по правам в RLS больше не особенно что то нужно. Татитуту - это отдых и отвлечение от работы, Подвигает думать искать что то новое, макросы ваши эти :)
70. Сергей Рудаков (fishca) 19.05.11 21:05
(69)
Необычные и веселые - ШУТКИ...Татитуту - это отдых и отвлечение от работы

Все правильно тебе нравятся шутки, другим само решение на 1С, еще кому-то хочется написать тоже самое но по другому, еще кому-то вообще перевернуть с ног на голову. Так что каждому свое. И самое главное не надо учить жить, сами мы с усами. Ценность выкладываемых здесь обработок как в идеях витающих в коллективном разуме, так и в самом коде обработок и программ, причем многие берут за основу чью либо обработку/идею и выводят ее на совершенно новый уровень и это правильно. У кого-то идей к примеру море, а реализовывать например нет никакого желания. А у кого-то и наоборот может быть.
71. Сергей Рудаков (fishca) 19.05.11 21:09
(59) Здесь, сам Татитуту:

http://forum.infostart.ru/forum24/topic39679/

"Ай молодца, опять вперед отца" (с) smile:D Как в старые добрые времена, эх...как всмомню
Ну если Лучший подарок для бухгалтера - счёты 8.2 (со звуком)
переведешь на управляемые формы. То потом от МАГАЗьКА уже не отвертишся (естественно все будет оценено по заслугам)


Если заметила управляемая форма появилась после этого ;)
72. Lara.Builova 19.05.11 21:25
(70) мне нравится эксклюзив :)
(71) заметила, конечно, я внимательная иногда ;)
73. Lara.Builova 19.05.11 22:20
(64) И, кстати в твоем варианте "Если ЗагруженоИзЭкселя <> Истина Тогда" я бы написала "Если Не ЗагруженоИзЭкселя Тогда"
74. Игорь Исхаков (Ish_2) 19.05.11 22:51
(73) Лариса , конфигуратор под Рукой ? Не спорьте , а проверьте.
Ваш вариант при ЗагруженоИзЭкселя = НеОпределено вызовет ошибку :
Если НЕ ЗагруженоИзЭкселя Тогда
     Сообщить("Мы ничего не загрузили из Экселя");  
КонецЕсли;
Мой вариант при Любом типе значения (Например ЗагруженоИзЭкселя = 1) отработатет корректно ;
Если  ЗагруженоИзЭкселя <> Истина Тогда
     Сообщить("Мы ничего не загрузили из Экселя");  
КонецЕсли;
75. Аркадий Кучер (Abadonna) 20.05.11 03:31
(74)Ish_2, ты серьезно? Обсуждать кусок за@@@ченного кода?
Да, воистину одноэснеги... :cry:
Нормальный проггер даже искать бы не стал чего оно там может возвратить, а написал бы
Загружено=@@йня;
Вызвали что-то, потом проверяем:
Если Загружено<>@@йня
(Если Загружено НЕ @@йня)
76. Lara.Builova 20.05.11 07:37
(74)(75)
Ситуация нештатная, почему программа не увидела флажок, записанный уже в форме через ИсходныеДанные.Регистратор.ЗагруженоИзЭкселя - то ли запрос огромный, а тут еще и реквизит "через точку" запрашивается, и времени не хватило, то ли платформа так отработала, я не знаю.
Обсуждать
Если  ЗагруженоИзЭкселя <> Истина Тогда
явно не вижу смысла.
У себя дома все было сделано нормально и правильно, у клиентов вот выдало неопределено, что там поставить в таком случае неважно, красивости кода пусть волнуют "оптимизаторов", когда они ходят по решенным до них проблемам и хихикают, не зная и не понимая исходной ситуации.
Поэтому всем ищущим "говнокод" и желающим поднять свою самооценку за счет этого хочется сказать - СМОТРИ В КОРЕНЬ, а не на красивости.
Вот меня лично передергивает от такого кода:
	If ДатаНачалаДействияДоговора >= ДатаОкончанияДействияДоговора Then
		sMsg = "Дата начала периода больше или равна даты окончания! Введите правильные даты периода дейсвия договора.";
		DoMessageBox(sMsg);
		Return;
	endIf;
...Показать Скрыть

И это сущая мелочь, у автора есть функции, дублирующие стандартные методы, а также есть места, где вместо использования готовой экспортной функции из общего модуля пишется новая в каждом документе. Смотрится весьма комично. :D
77. Аркадий Кучер (Abadonna) 20.05.11 07:54
у автора есть функции, дублирующие стандартные методы,

Это у какого автора?
78. Игорь Исхаков (Ish_2) 20.05.11 07:57
(76) Лариса , я Вам пишу про ошибку в простейшем примере (74) - предлагаю проверку.
А Вы пишете :
а)про "огромный" запрос
б)про то что у Вас дома(!) всё корректно работает
в) "обсуждать нету смысла".
79. Lara.Builova 20.05.11 07:58
(77) Автор дописок к конфе у моих клиентов, здесь не присутствет скорее всего.
80. Lara.Builova 20.05.11 08:02
(78) Мне твои детские споры неинтересны, меня ты этим не зацепишь, давно тебя знаю. Ищи другую жертву попроверяться ;)
81. Игорь Исхаков (Ish_2) 20.05.11 08:14
(75) Пример у тебя неудачный.
В постановке Ларисы задача выглядит следующим образом :
В переменную ЗагруженоИзЭкселя возвращется результат некоторой функции.
Тип переменнной ЗагруженоИзЭкселя может быть любого типа,
но нам для дальнейшей обработки важны два события :

1. ЗагруженоИзЭкселя = Истина - (загрузка состоялась)
2. ЗагруженоИзЭкселя = {НеОпределено,Число,Ложь и др.} - (загрузка не состоялась).

Отсюда совершенно логично вытекает код
ЗагруженоИзЭкселя = КакаятоФункция();
Если ЗагруженоИзЭкселя<> Истина Тогда
Сообщить("Загрузка не состоялась!")
Иначе
Сообщить("Загрузка состоялась!")
КонецЕсли;

Теперь что ты пишешь ?
Нормальный проггер даже искать бы не стал чего оно там может возвратить, а написал бы
Загружено=@@йня;
Вызвали что-то, потом проверяем:
Если Загружено<>@@йня
(Если Загружено НЕ @@йня)


Ты придумал какую-то свою постановку задачи ( .."для нормального прогера")?
Зачем в этой задаче нам предварительно присваивать ЗагруженоИзЭкселя = =@@йня ?
82. Аркадий Кучер (Abadonna) 20.05.11 08:16
(81) Игорь, блин, достал! Предмет для обсуждения отсутствует
83. Игорь Исхаков (Ish_2) 20.05.11 08:18
84. Lara.Builova 20.05.11 08:35
(81) "Тип переменнной ЗагруженоИзЭкселя может быть любого типа"
Ты ничего не понял. Тип у переменной должен быть Булево. И никакой другой, однако вернул неопределено, хотя не должен был. Речь именно об этом в данном обсуждении.
но нам для дальнейшей обработки важны два события : 
1. ЗагруженоИзЭкселя = Истина - (загрузка состоялась) 
2. ЗагруженоИзЭкселя = {НеОпределено,Число,Ложь и др.} - (загрузка не состоялась).

Нам совершенно не важны эти события, нам важно состояние самого флага - Истина или Ложь, лежащего на форме документа, вытащенные из Регистратора, который в свою очередь получен из
результата запроса
, собирающего данные из большого количества таблиц как виртуальных, так и физических.
Сразу скажу - база файловая.
И вообще, как сказал Арчибальд в (44)
а выяснение того, где в семерке Истина - уже нетривиально...

Я с ним согласна.
85. Игорь Исхаков (Ish_2) 20.05.11 08:39
86. Сергей Рудаков (fishca) 20.05.11 08:44
(84)
Тип у переменной должен быть Булево. И никакой другой, однако вернул неопределено, хотя не должен был.


А бывает и так как на рисунке, флажок имеет три состояния на форме ;) :
Прикрепленные файлы:
Spartan; Abadonna; +2 Ответить 3
87. Аркадий Кучер (Abadonna) 20.05.11 08:46
89. Сергей Рудаков (fishca) 20.05.11 08:49
(87) про это (три состояния в 1С) иногда забываешь при написании кода :)
90. Lara.Builova 20.05.11 08:49
(86)У искомого флажка тип Булево.
Прикрепленные файлы:
91. Lara.Builova 20.05.11 09:12
(89) А вот запрос
Возврат Запрос.Выполнить();

возвращающий в функцию выборку
ИсходныеДанные = ПроведениеРасчетовПолныеПрава.ПолучитьДанныеДляРасчета(ИмяРегистра, ВыборкаКатегорий.КатегорияРасчета, НеобходимыеДанные, Регистратор, ГоловнаяОрганизация, ОбособленноеПодразделение, УчетнаяПолитикаПоПерсоналу, ПериодРегистрации, , , Налогоплательщик, КомментироватьРасчет).Выбрать()

выгруженный в ТЗ в отладчике.
Напомню, в конструкции в (68) он возвращал ЗагруженоИзЭкселя неопеределено в условия использования только у клиентов.
Прикрепленные файлы:
92. Аркадий Кучер (Abadonna) 20.05.11 09:13
уй.. достали... отпишусь от комментов
93. Lara.Builova 20.05.11 09:15
(92) Текст запроса приложить?
94. Сергей Рудаков (fishca) 20.05.11 09:16
(91) каких только глюков не увидишь :)
95. Сергей Рудаков (fishca) 20.05.11 09:17
96. Lara.Builova 20.05.11 09:19
(89) Я ждала, что разговор перейдет в русло разименования полей, и даже наводила "Сразу скажу - база файловая" но это уже будет слишком долго и нудно.
Закончим на этом. :)
97. Lara.Builova 20.05.11 09:21
(95) У кого есть ЗУП, может и так посмотреть, в (91) во втором коде лежит путь.
98. Сергей Рудаков (fishca) 20.05.11 09:28
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа