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

Опубликовал Юрий Тимофеев (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) 3584 18.05.11 16:58 Сейчас в теме
Это не программа - это статья. И она не для руководства к действию ,
а как концетраптив
(средство для предотвращения нежелательной головной боли).
Как говорится - "Кто предупрежден - тот вооружен"

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

Пионерская Зорька в одном месте еще не отыграла? :D
И это хорошо! ;)
34. Сергей Рудаков (fishca) 1054 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) 3670 19.05.11 15:36 Сейчас в теме
А позоруху-то убери все-таки с главной страницы ;)

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

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

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


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

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

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

Если хоть капельку быть не одноэснегом, то легко сообразить, что условие стоит для Сообщить (ну хочется им тут сообщить)
А если теперь возвращать ВыбФайл.Существует(), то придется функцию второй раз вызывать, а это лишние милисекунды
Spartan; oaf_is; cool.vlad4; +3 Ответить 1
49. Ийон Тихий (cool.vlad4) 41 19.05.11 16:45 Сейчас в теме
(48) мне многие прогеры доказывали, что одинесник не программист...теперь и я начал сомневатся :D
50. Игорь Исхаков (Ish_2) 964 19.05.11 16:48 Сейчас в теме
После (45)- опешил. Артур опередил в (47).
51. Ийон Тихий (cool.vlad4) 41 19.05.11 16:53 Сейчас в теме
(50) а я задумался после всех этих булевых извращений про конечные автоматы на 1С
52. Сергей Леонов (welt_lss) 19.05.11 17:11 Сейчас в теме
А я когда увидел анонс статьи, думал увидеть тут обсуждение, что это за зверь такой "концетраптив"? Человек слова новые придумывает, а вы к кодам придираетесь.
А ведь <контрацептив> чем не угодил?
53. Аркадий Кучер (Abadonna) 3670 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) 1054 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) 1054 19.05.11 18:49 Сейчас в теме
(57)
"согласен в принципе со всеми, впредь обязуюсь выкладывать более полезные весчи"

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

Фигня. На этом сайте, сейчас, выше всего ценность обработочки, которая у обычных юзверей, сисадминов снимает головняки.
Став аутсорсером, очень частенько качаю, например, ВПФ, минимальная доточка и клиент счастлив уже через час!
А идей и у самого хватает. Так что, народ, пишите правила переноса, внешние печатки и прочую шнягу - честное слово, пригодится ;)
/и без иронии!/
61. Lara.Builova 19.05.11 19:26 Сейчас в теме
(60) "Став аутсорсером, очень частенько качаю, например, ВПФ, минимальная доточка и клиент счастлив уже через час!"
"Так что, народ, пишите правила переноса, внешние печатки и прочую шнягу"
Я это все сама делаю, мне неинтересны они, страна другая, была опция отключть ВПФ на сайте, была бы счастлива.
Нет ничего более унылого для многих эти ВПФ. Когда появляются разработки автора данноой статьи - как луч в темном царстве.
62. Аркадий Кучер (Abadonna) 3670 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) 964 19.05.11 19:44 Сейчас в теме
(54) Лаконичнее и понятнее :
ЗагруженоИзЭкселя = СтрокаДвижений.Регистратор.ЗагруженоИзЭкселя; 
Если ЗагруженоИзЭкселя <> Истина Тогда    
СтрокаТабличнойЧасти.ОтработаноДней = СтрокаДвижений.ОтработаноДней; 
СтрокаТабличнойЧасти.ОтработаноЧасов = СтрокаДвижений.ОтработаноЧасов; 
КонецЕсли;
...Показать Скрыть


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

Тут тебя случайно как-то Fr1eNd_Tver обогнал :o
67. Аркадий Кучер (Abadonna) 3670 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) 1054 19.05.11 21:05 Сейчас в теме
(69)
Необычные и веселые - ШУТКИ...Татитуту - это отдых и отвлечение от работы

Все правильно тебе нравятся шутки, другим само решение на 1С, еще кому-то хочется написать тоже самое но по другому, еще кому-то вообще перевернуть с ног на голову. Так что каждому свое. И самое главное не надо учить жить, сами мы с усами. Ценность выкладываемых здесь обработок как в идеях витающих в коллективном разуме, так и в самом коде обработок и программ, причем многие берут за основу чью либо обработку/идею и выводят ее на совершенно новый уровень и это правильно. У кого-то идей к примеру море, а реализовывать например нет никакого желания. А у кого-то и наоборот может быть.
71. Сергей Рудаков (fishca) 1054 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) 964 19.05.11 22:51 Сейчас в теме
(73) Лариса , конфигуратор под Рукой ? Не спорьте , а проверьте.
Ваш вариант при ЗагруженоИзЭкселя = НеОпределено вызовет ошибку :
Если НЕ ЗагруженоИзЭкселя Тогда
     Сообщить("Мы ничего не загрузили из Экселя");  
КонецЕсли;
Мой вариант при Любом типе значения (Например ЗагруженоИзЭкселя = 1) отработатет корректно ;
Если  ЗагруженоИзЭкселя <> Истина Тогда
     Сообщить("Мы ничего не загрузили из Экселя");  
КонецЕсли;
75. Аркадий Кучер (Abadonna) 3670 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) 3670 20.05.11 07:54 Сейчас в теме
у автора есть функции, дублирующие стандартные методы,

Это у какого автора?
78. Игорь Исхаков (Ish_2) 964 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) 964 20.05.11 08:14 Сейчас в теме
(75) Пример у тебя неудачный.
В постановке Ларисы задача выглядит следующим образом :
В переменную ЗагруженоИзЭкселя возвращется результат некоторой функции.
Тип переменнной ЗагруженоИзЭкселя может быть любого типа,
но нам для дальнейшей обработки важны два события :

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

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

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


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

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

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


А бывает и так как на рисунке, флажок имеет три состояния на форме ;) :
Прикрепленные файлы:
Spartan; Abadonna; +2 Ответить 3
87. Аркадий Кучер (Abadonna) 3670 20.05.11 08:46 Сейчас в теме
88. vip (vip) 20.05.11 08:48 Сейчас в теме
89. Сергей Рудаков (fishca) 1054 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) 3670 20.05.11 09:13 Сейчас в теме
уй.. достали... отпишусь от комментов
93. Lara.Builova 20.05.11 09:15 Сейчас в теме
(92) Текст запроса приложить?
94. Сергей Рудаков (fishca) 1054 20.05.11 09:16 Сейчас в теме
(91) каких только глюков не увидишь :)
95. Сергей Рудаков (fishca) 1054 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) 1054 20.05.11 09:28 Сейчас в теме
Оставьте свое сообщение