Имя: Пароль:
1C
1C 7.7
v7: как определить текущего пользователя
0 r_i_n_i_k
 
12.01.12
20:16
Подскажите аналог
ПараметрыСеанса.ТекущийПользователь

в 7.7?
109 Rie
 
12.01.12
22:23
(107) Если ТиС- взять из настроек пользователя.
110 IvanovIV
 
12.01.12
22:24
(106) А коды вообще делаются недоступными юзерам
В глобальнике назначаются необходимые переменные справочники
И там же в глобальнике в "ПриУдаленииЭлемента()"
запрещается удалять то что предопределено
111 Aleksey
 
12.01.12
22:25
(108) В каждом документе при создании нового
112 Aleksey
 
12.01.12
22:25
(109) проще просто код прописать, и голова не болит, что там у пользователя в настройках
113 AcaGost
 
12.01.12
22:28
(111) Если у всех пользователей и всех видах документов, в которых есть реквизит "Склад", то Константа
114 Aleksey
 
12.01.12
22:29
(113) Ага и еще закэшировать ее ...
115 Rie
 
12.01.12
22:29
(112) Не проще.
116 Aleksey
 
12.01.12
22:30
(115) Почему?
117 Rie
 
12.01.12
22:31
(116) Есть типовые механизмы конфигурации. А изобретение велосипедов - неблагодарное занятие.
118 AcaGost
 
12.01.12
22:31
(115) Не дошло до него! Диагноз!
119 Aleksey
 
12.01.12
22:33
(117) Ну да потом выясниться что кто-то поменял в настройках склад, потому что ему так удобно. А у тебя из-за этого неправильно доку формируются. Нафиг-нафиг эту универсализацию
120 Rie
 
12.01.12
22:33
(119) А для этого есть механизм прав.
121 AcaGost
 
12.01.12
22:34
(119) Доступ ВСЕМ на чтение, кроме себя дорогого
122 Aleksey
 
12.01.12
22:35
(120) Причем тут механизм прав? У пользователя стоит Розничный склад, а нам нужно чтобы поступления всегда делались на оптовый склад. И чем мне "типовой механизм" поможет
123 medved_kot
 
12.01.12
22:35
Т.е. боооольшая линейка для манагеров
124 AcaGost
 
12.01.12
22:36
(120) Был у меня один такой стюдент, борзый - до сих пор в падаванах
125 Rie
 
12.01.12
22:36
(122) Уж что-то одно - или крестик, или трусм.
См. (104).
126 Aleksey
 
12.01.12
22:36
другая ситуация. Пишу обработку для загрузки документов. Я с базой не работаю, у меня нет доступа к настройкам пользователя и я понятия не имею проставлено ли у них что-то или нет, но мне надо чтобы при загрузки попадала на определенный склад
127 Aleksey
 
12.01.12
22:37
(125) Ну так не надо кричать тогда, что за такой код линейкой по рукам. Ибо случае разные бывают
128 Rie
 
12.01.12
22:39
(127) Во-первых, надо читать внимательно. И не путать, кто что писал.
Во-вторых, если предполагается более чем однократное использование - то, разумеется, не линейкой по рукам. А, к примеру, штрафовать за выход на работу.

(126) Если предполагается более чем одноразовое использование - то придумать механизм хранения настроек.
129 Aleksey
 
12.01.12
22:41
(128) А чем этот механизм хранения настроек во внешнем хранилище будет отличаться от кода?
130 Rie
 
12.01.12
22:43
(129) Пользователь должен иметь возможность настраивать обработку, не правя её код. Тем более если разработчик "не работает с базой".
Какой механизм (внешнее хранилище, справочник или ещё что) будет выбран - это другой вопрос. Но сама возможность настройки у пользователя быть должна.
131 AcaGost
 
12.01.12
22:45
(126) Учу! Записывай.
На форме реквизит СКЛАД  Сам настроишь для всех доступ(0) и ЗначениеВФайл(<?>,,);
132 Aleksey
 
12.01.12
22:53
(130) Вот только у меня руководств считает, что все должно быть прозрачно для пользователя, он не должен думать ниокаких настройках

(131) Тот же код, вид сбоку
133 Aleksey
 
12.01.12
22:57
К тому же привязка к коду можно рассматривать как дополнительная защита от бесплатного тиражирования обработки. (мы же не на продажу пишем, нам универсальность некчему. Чем больше индивидуальности, тем больше шанс что тупо не смогут скопировать обработку)
134 AcaGost
 
12.01.12
22:57
(132) Под одним пользователем доступ(1) - у кого права на настройку
135 Rie
 
12.01.12
22:57
(132) А зачем пользователю думать о настройках? Настройки задаст тот, кому это положено (руководитель отдела или кто там у вас). Но настройки должны задаваться без модификации кода - об этом должен позаботиться разработчик.
136 Rie
 
12.01.12
22:57
(133) А вот это уже попросту маразм. Полнейший маразм.
137 AcaGost
 
12.01.12
22:58
(133) Я поменял код у склада - твои действия?
138 AcaGost
 
12.01.12
23:00
(136) Вроде и не 17 лет ему, и опыт есть?...
139 medved_kot
 
12.01.12
23:00
Все-таки на тему поста ответил правильно (100)
140 SnarkHunter
 
12.01.12
23:01
Алёшка забавный... Код после него наверняка доставляет...
141 SnarkHunter
 
12.01.12
23:02
(139)В частном случае да...
142 Rie
 
12.01.12
23:02
(139) См. (3) :-)))
143 Aleksey
 
12.01.12
23:03
(135) Настройки задаю я. И для меня нет разницы что это будетнайти по коду или восстановить из файла?
144 Rie
 
12.01.12
23:04
(143) Предприятиям, с которыми ты работаешь - мои соболезнования.
145 AcaGost
 
12.01.12
23:04
(143) А на (137)?
146 Aleksey
 
12.01.12
23:04
(137) Любое внешнее хранилище настроек не спасет от изменения. Так что нет разницы как хранить.
147 SnarkHunter
 
12.01.12
23:04
(143)На тебе свет клином не сошелся...
148 AcaGost
 
12.01.12
23:05
(144) +1000
149 medved_kot
 
12.01.12
23:05
(142) ну, да. просто после 99 ответов прочитать (100) было как-то неожиданно
150 Rie
 
12.01.12
23:05
(146) Правда?
151 Aleksey
 
12.01.12
23:05
(147) А больше я никому не доверяю.
152 SnarkHunter
 
12.01.12
23:05
(146)О как...
153 Aleksey
 
12.01.12
23:05
(150) Правда
154 SnarkHunter
 
12.01.12
23:06
(151)Что-то ЧСВ зашкаливает, не?
155 Aleksey
 
12.01.12
23:07
(152) Да, потому что нет контроля ссылочной целостности. Т.е. ницего не мешает удалить склад и завести новый, и тогда у него будет и новый код и новый ID, т.е. восстановление из хранилища даст. "Объект не найден"
156 SnarkHunter
 
12.01.12
23:07
(153)Поздравляю, гражданин, соврамши...
157 SnarkHunter
 
12.01.12
23:07
(155)Речь про изменение кода была, при чем удаление?
158 Aleksey
 
12.01.12
23:08
(154) Нет потому что съезды пользователей "Программа дала" и "Это не я, это программа сама" приводит к тому что лучше пользователю ничего не давать, тем более настройки
159 Aleksey
 
12.01.12
23:08
(157) При том же, что и изменение кода
160 Rie
 
12.01.12
23:09
(158) "Это Вы их просто готовить не умеете" (c) старый анекдот
161 IvanovIV
 
12.01.12
23:10
(157) при том, что если мона менять код .. мона и удалить?
162 Aleksey
 
12.01.12
23:10
(156) И по чем ты будешь хранить? Заюзаешь внутренний ID? И что даст твоя обработка в другой базе? А моя по коду будет работать, даже если удалить и завести с тем же кодам
163 Rie
 
12.01.12
23:10
О! Я понял в чём дело - это пятничная ветка!
164 SnarkHunter
 
12.01.12
23:12
Что-то я попал не туда... Тут говнокодом хвастаются, я вас покидаю...
165 Aleksey
 
12.01.12
23:12
(160) Ну да, когда приходит чудо и говорит, а вы можете посмотреть что я поменяла в документе, когда и ЗАЧЕМ я это сделала. Наверное не умею готовить, к сожалению отдел кадров мне не подчиняется
166 Rie
 
12.01.12
23:12
(161) Ну, во-первых, удалить _гораздо_ труднее (элемент использовался кучу раз - пока не будут убраны ссылки, не удалится).
167 Aleksey
 
12.01.12
23:13
(166) Если могут править все подряд, то удалять, и ссылки не помешают
168 Rie
 
12.01.12
23:13
(165) Отдел кадров тут ни при чём. Это ты расписался в своём неумении.
Всё, что ты делаешь говнокодом - можно оформить по-человечески. И права расставить так, чтобы чудо не могло сильно напортить.
169 medved_kot
 
12.01.12
23:14
(165) Вы не думали, что можно для этого чуда просто не показывать те настройки, которые она менять не должна?
170 Rie
 
12.01.12
23:14
(167) Ну а на фига ж ты даёшь править всем всё подряд?
171 IvanovIV
 
12.01.12
23:16
(166)  Зачем вообще права юзерам на редактирование кодов?
Редактирование кодов отключается
Приначале работы назначаются глобальные переменные
Удаление их запрещается
Что еще надо?
172 IvanovIV
 
12.01.12
23:17
(171) + дальше ищи по коду скока хочешь
173 Aleksey
 
12.01.12
23:17
(168) Я фикси, для чего мне попу рвать и писать простыни кода? Для того чтобы человек с мисты сказал, да так правильно?

Мы же сейчас не тиражный продукт обсуждаем, а конкретный код, который выполняется в конкретной конфе и для конкретной задачи.

Лично мне напрягает иметь 1000 констант на все случаи жизни. Мне проще прописать конкретный код, при условии что коды у меня закрыты от редактирования
174 AcaGost
 
12.01.12
23:18
(163) Пока еще четверг
175 Aleksey
 
12.01.12
23:19
Если кому то религия мешает использовать коды, ради бога заводи константу, документ, справочник ... (нужное подчеркнуть). Только не надо другим насаживать свою религию, и бегать с линейкой
176 Rie
 
12.01.12
23:21
(174) У кого как :-)
177 Rie
 
12.01.12
23:21
(173) Вот и выяснилось - ты просто лентяй. Которому влом писать нормальный код, тяп-ляп и так сойдёт, после нас - хоть потоп.
178 Rie
 
12.01.12
23:22
(175) Это не религия. Это элементарный профессионализм. Или ты себя совсем не уважаешь?
179 medved_kot
 
12.01.12
23:23
(175) Уважайте свой труд, за это Ваш труд будут уважать другие
180 AcaGost
 
12.01.12
23:27
(173) Исправлял я один раз за таким. Ну и цирк был в его базе, краше чем у Никулина.
181 Aleksey
 
12.01.12
23:29
(178) 1000 констант - это профессионализм?
182 Aleksey
 
12.01.12
23:33
в 7-ный типовых (ТиС, комплексная) есть такой код

Если ПустоеЗначение(ИмяПользователя()) = 1 Тогда
 Код          = "НеАвторизован";
 Наименование = "Не авторизован";
...
КонецЕсли;
   
Объект = СоздатьОбъект("Справочник.Пользователи");
   
Если Объект.НайтиПоКоду(Код) = 0  Тогда
 Объект.Новый();

Видно они писатели 1С не знают, что это плохой код
183 Aleksey
 
12.01.12
23:34
При загрузки валюты там тоже активно юзается Найти по коду. Вод ведь дураки, а вдруг кто-то коду у валюты поменяет.
184 Aleksey
 
12.01.12
23:36
А что делают с планом счетов в типовых. Вообще страшно смотреть. одни найти по коду
185 zak555
 
12.01.12
23:37
(182) твой вариант, как переписать
186 zak555
 
12.01.12
23:38
+ (185)
я бы скрыл поле код в справочнике пользователи
187 Aleksey
 
12.01.12
23:38
(185) А я разве доказываю что найти по коду это плохо и за такой код линейкой по рукам бить?
188 zak555
 
12.01.12
23:42
> Лично мне напрягает иметь 1000 констант на все случаи жизни. Мне проще прописать конкретный код, при условии что коды у меня закрыты от редактирования


о да, вот недавно видел отличную реализацию печати торг-12
привязка тупо к коду контрагенту, контрагент может находиться в группе
т.е. будут перечисляться все "вложенные" контры

вот спрашивает : накуя так писать, если можно было добавить реквизит префикс в группу/элемент и по нему искать наименование торг12_префикс в обработке ?
189 AcaGost
 
12.01.12
23:43
(183) А что значит код в справочнике валюты?
(184) :-))))))))))))))))))))))))))))
190 zak555
 
12.01.12
23:45
(183) кстати, код у рубля не переименововался, а всего навсего добавился новый
РУР == РУБ
191 AcaGost
 
12.01.12
23:45
(187) И не только линейкой по рукам, но и кнутом по заднице, чтобы контору не "разводил"
192 zak555
 
12.01.12
23:45
(184) ну так в 8ке идёт обращение почти по "коду"
193 Aleksey
 
12.01.12
23:47
(189) До некоторых пор и код в ОКСМ ничего не значил, а сейчас в связи с новыми счет-фактурами, он стал иметь большое значение
194 AcaGost
 
12.01.12
23:49
(190) Код у рубля - 810 по классификатору
195 Aleksey
 
12.01.12
23:49
(190) Это разве код? А не сокращенное наименование?
Код 810/643 у рубля всегда был
196 Aleksey
 
12.01.12
23:51
А нет, все таки код

Согласно международному стандарту по обозначению валют (ISO 4217) для современного российского рубля:

1) Трёхбуквенный код: RUB
2) Трёхзначный числовой код: 643

До деноминации российского рубля в 1998 году в том же стандарте для российского рубля использовались коды:

1) Трёхбуквенный код: RUR
2) Трёхзначный числовой код: 810
197 Lexxxxx
 
12.01.12
23:51
(169) Вы не думали что это может Склад и быть? :)
198 IvanovIV
 
13.01.12
00:01
) наверное надо в любой типовой запустить "поиск во всех текстах" "НайтиПоКоду("

а потом дрючить разработчиков
199 viktor_vv
 
13.01.12
01:07
Раз уж ветка плавно перетекла в пятничную. А то пристали к Aleksey .

Обратились как-то, потому как разработчик уехал далеко . Это кусочек процедуры строк на 2000 (две тысячи) в таком же роде.
Я конечно и сам не без греха, но это уже за гранью добра и зла, а Aleksey просто младенец.

   КА=1;
   К=СоздатьОбъект("Документ.Калькуляция");
   Т=СоздатьОбъект("Справочник.Номенклатура");
   К.Новый();
   К.ДатаДок=ДатаДок;    
   глЗаполнитьШапку(К);
   Если Проведен()=1 Тогда
   К.ДокументОснование=ТекущийДокумент();    
   КонецЕсли;        
   К.Склад=Константа.ОсновнойСклад;
   К.Продукция=Товар;
   К.КвоПродукции=Количество;
   К.ЕдПродукции=Единица;
   /////////////////////////////////////////////////////////////////////////////////////   ЖВ 1
   Если К.Продукция.ЖВ1=1 Тогда
       
       К.НоваяСтрока();      
       Т.НайтиПоКоду("02467");
       К.Предпочтение=ПустоеЗначение("Справочник.Контрагенты");
       К.Товар=Т.ТекущийЭлемент();
       глПриИзмененииТовара(К);    
       К.Количество=КвоЛамелей;//*КвоПрод;
       
       К.НоваяСтрока();      
       Т.НайтиПоКоду("02490");
       К.Предпочтение=ПустоеЗначение("Справочник.Контрагенты");
       К.Товар=Т.ТекущийЭлемент();
       глПриИзмененииТовара(К);    
       К.Количество=1*КвоПрод;
       
       К.НоваяСтрока();      
       Т.НайтиПоКоду("02471");
       К.Предпочтение=ПустоеЗначение("Справочник.Контрагенты");
       К.Товар=Т.ТекущийЭлемент();
       глПриИзмененииТовара(К);    
       К.Количество=КвоЛамелей;//*КвоПрод;
       
       К.НоваяСтрока();      
       Т.НайтиПоКоду("02472");
       К.Предпочтение=ПустоеЗначение("Справочник.Контрагенты");
       К.Товар=Т.ТекущийЭлемент();
       глПриИзмененииТовара(К);    
       К.Количество=1*КвоПрод;
       
       К.НоваяСтрока();      
       Т.НайтиПоКоду("02474");
       К.Предпочтение=ПустоеЗначение("Справочник.Контрагенты");
       К.Товар=Т.ТекущийЭлемент();
       глПриИзмененииТовара(К);    
       К.Количество=КвоЛамелей;//*КвоПрод;
       
       К.НоваяСтрока();      
       Т.НайтиПоКоду("02479");
       К.Предпочтение=ПустоеЗначение("Справочник.Контрагенты");
       К.Товар=Т.ТекущийЭлемент();
       глПриИзмененииТовара(К);    
       К.Количество=1*КвоПрод;
       
       К.НоваяСтрока();      
       Т.НайтиПоКоду("02465");
       К.Предпочтение=ПустоеЗначение("Справочник.Контрагенты");
       К.Товар=Т.ТекущийЭлемент();
       глПриИзмененииТовара(К);    
       К.Количество=Ширина*0.001*КвоПрод;
       
       К.НоваяСтрока();      
       Т.НайтиПоКоду("02484");
       К.Предпочтение=ПустоеЗначение("Справочник.Контрагенты");
       К.Товар=Т.ТекущийЭлемент();
       глПриИзмененииТовара(К);    
       //Если Ширина<2 Тогда
       //К.Количество=Окр(Ширина*0.002)*КвоПрод;    //              
       //ИначеЕсли Ширина<2.3 Тогда
       //К.Количество=Окр(Ширина*0.003)*КвоПрод;   //
       //Иначе                        
       //К.Количество=Окр(Ширина*0.004)*КвоПрод;  //
       //КонецЕсли;
       //
                   
           Если Ширина<1900 Тогда
               К.Количество=2*КвоПрод;
           ИначеЕсли Ширина<2300 Тогда
               К.Количество=3*КвоПрод;
           ИначеЕсли Ширина<2700 Тогда
               К.Количество=4*КвоПрод;    
           ИначеЕсли Ширина<3300 Тогда
               К.Количество=5*КвоПрод;    
           ИначеЕсли Ширина<3500 Тогда
               К.Количество=6*КвоПрод;    
           Иначе                        
               //К.Количество=Окр(Ширина*0.008)*КвоПрод;
           КонецЕсли;
       К.НоваяСтрока();      
       Т.НайтиПоКоду("02480");
       К.Предпочтение=ПустоеЗначение("Справочник.Контрагенты");
       К.Товар=Т.ТекущийЭлемент();
       глПриИзмененииТовара(К);    
       К.Количество=1*КвоПрод;
       
       
       ккк=Цел(Ширина/2000);
       Если ккк>0 Тогда
           К.НоваяСтрока();      
           Т.НайтиПоКоду("02485");
           К.Предпочтение=ПустоеЗначение("Справочник.Контрагенты");
           К.Товар=Т.ТекущийЭлемент();
           глПриИзмененииТовара(К);    
           К.Количество=ккк*КвоПрод;
       КонецЕсли;
       
       К.НоваяСтрока();      
       Т.НайтиПоКоду("02473");
       К.Предпочтение=ПустоеЗначение("Справочник.Контрагенты");
       К.Товар=Т.ТекущийЭлемент();
       глПриИзмененииТовара(К);    
       К.Количество=1*КвоПрод;
       
       // добавили 5 новые позиции
       
       К.НоваяСтрока();      
       Т.НайтиПоКоду("02493");
       К.Предпочтение=ПустоеЗначение("Справочник.Контрагенты");
       К.Товар=Т.ТекущийЭлемент();
       глПриИзмененииТовара(К);    
       К.Количество=1*КвоПрод;

Это, я так понял, что-то типа норм расхода материалов.
200 viktor_vv
 
13.01.12
01:11
(199)+ Обратились, так как добавилась новая номенклатура, а разработчика нету. Вот это я понимаю защита :).
201 zak555
 
13.01.12
01:18
(196) ы =)
202 zak555
 
13.01.12
01:19
(199) что это ?
203 abfm
 
13.01.12
01:36
Если так рассуждать, то любая программа не требует обновления вообще, надо поменять настройки.
Мировые бренды с этим не согласны. Бабло надо стричь регулярно, как овец.
204 viktor_vv
 
13.01.12
01:53
(202) Это к вопросу насчет НайтиПокоду(). Кусок реально работавшей конфы, не знаю ее судьбы сейчас. Надеюсь поверите, что не мое :).
205 zak555
 
13.01.12
02:27
(204) переписал бы
206 viktor_vv
 
13.01.12
02:57
(205) Ну я им предложил, даже накидал макет форм, как будет выглядеть. Их цена не устроила, или им сильно сложно показалось нормы набивать самим, попросили тупо добавить как уних есть для новой номенклатурыы. А сидеть копипастить че то мне влом было, короче не срослось.
207 Rie
 
13.01.12
07:08
(173) 1000 констант - тоже глупость.
(182) А ты посмотри, _что_ является кодом у справочника Пользователи. И в классификаторах -
там код определён "свыше".
Дело же не в самих словах "Код" или "НайтиПоКоду", а в том, как этот код используется.
208 zak555
 
13.01.12
09:24
(206) значит много заломил =)