Имя: Пароль:
1C
1C 7.7
v7: Я даже не представляю как это назвать...
, ,
0 bse
 
22.10.12
09:00
Рядом сидит "программер", дали ему задание сделать отчет по старой БД: сделать 5 форм по данным с начала года. Все данные получаются 1-м запросом. Так мало того что он сделал 5 разных отчетов, так он накодил это:

Процедура ВыделитьФамилию(печСотрудник,Фамилия,ИО);
   Если Сред(печСотрудник,3,1)=" " Тогда
       Фамилия=Лев(печСотрудник,2);
       ИО=Сред(печСотрудник,4);
   ИначеЕсли Сред(печСотрудник,4,1)=" " Тогда
       Фамилия=Лев(печСотрудник,3);
       ИО=Сред(печСотрудник,5);
   ИначеЕсли Сред(печСотрудник,5,1)=" " Тогда
       Фамилия=Лев(печСотрудник,4);
       ИО=Сред(печСотрудник,6);
   ИначеЕсли Сред(печСотрудник,6,1)=" " Тогда
       Фамилия=Лев(печСотрудник,5);
       ИО=Сред(печСотрудник,7);
   ИначеЕсли Сред(печСотрудник,7,1)=" " Тогда
       Фамилия=Лев(печСотрудник,6);
       ИО=Сред(печСотрудник,8);
   ИначеЕсли Сред(печСотрудник,8,1)=" " Тогда
       Фамилия=Лев(печСотрудник,7);
       ИО=Сред(печСотрудник,9);
   ИначеЕсли Сред(печСотрудник,9,1)=" " Тогда
       Фамилия=Лев(печСотрудник,8);
       ИО=Сред(печСотрудник,10);
   ИначеЕсли Сред(печСотрудник,10,1)=" " Тогда
       Фамилия=Лев(печСотрудник,9);
       ИО=Сред(печСотрудник,11);
   ИначеЕсли Сред(печСотрудник,11,1)=" " Тогда
       Фамилия=Лев(печСотрудник,10);
       ИО=Сред(печСотрудник,12);
   ИначеЕсли Сред(печСотрудник,12,1)=" " Тогда
       Фамилия=Лев(печСотрудник,11);
       ИО=Сред(печСотрудник,13);
   ИначеЕсли Сред(печСотрудник,13,1)=" " Тогда
       Фамилия=Лев(печСотрудник,12);
       ИО=Сред(печСотрудник,14);
   ИначеЕсли Сред(печСотрудник,14,1)=" " Тогда
       Фамилия=Лев(печСотрудник,13);
       ИО=Сред(печСотрудник,15);
   ИначеЕсли Сред(печСотрудник,15,1)=" " Тогда
       Фамилия=Лев(печСотрудник,14);
       ИО=Сред(печСотрудник,16);
   ИначеЕсли Сред(печСотрудник,16,1)=" " Тогда
       Фамилия=Лев(печСотрудник,15);
       ИО=Сред(печСотрудник,17);
   ИначеЕсли Сред(печСотрудник,17,1)=" " Тогда
       Фамилия=Лев(печСотрудник,16);
       ИО=Сред(печСотрудник,18);
   ИначеЕсли Сред(печСотрудник,18,1)=" " Тогда
       Фамилия=Лев(печСотрудник,17);
       ИО=Сред(печСотрудник,19);
   ИначеЕсли Сред(печСотрудник,19,1)=" " Тогда
       Фамилия=Лев(печСотрудник,18);
       ИО=Сред(печСотрудник,20);
   ИначеЕсли Сред(печСотрудник,20,1)=" " Тогда
       Фамилия=Лев(печСотрудник,19);
       ИО=Сред(печСотрудник,21);
   ИначеЕсли Сред(печСотрудник,21,1)=" " Тогда
       Фамилия=Лев(печСотрудник,20);
       ИО=Сред(печСотрудник,22);
   КонецЕсли;
КонецПроцедуры

и *** его не увольняют нифига...
154 chief accountant
 
22.10.12
10:58
(145) чукча писатель? Я хотел сказать, что (109) лажа и автор поста ламер
155 0xFFFFFF
 
22.10.12
11:00
(153) Процедура есть. глФамилияИмяОтчествоНазывается.
А вот отдельных полей нема...
Такие они, клюшечные конфы.
156 Йюхйюх
 
22.10.12
11:00
(154) зря ты так сказал. Только себя опустил.
157 Salimbek
 
22.10.12
11:01
(122) Поддерживаю. На прежней работе - данные по материальной ответственности собирали по бух счету, одновременно занося циферки в таблицу групп, при этом где-то косячили и сумма по этим группам не сходилась с суммой по счету, немного, рублей на 100.
Выкинул этот код нафиг, закинул выборку в Индексированную таблицу, добавил нужные поля, свернул с группировкой, конечный, нормальный, результат выдал бухам. У тех началась истерика, "Как у товарища ХХХ сумма мат. ответственности поменялась?". Я им в ответ выдал распечатку бух счета по данному товарищу, где суммы сходились "копейка в копейку". А вот на вопрос бухов, как же мы ему теперь объясним, что сумма изменилась, у меня не было ответа.
158 Андрей_Андреич
 
naïve
22.10.12
11:01
(152) Есть люди, паталогически не способные к программированию. Изменить их невозможно. Выход:
1. Уволить
2. Уволиться самому
3. Забить
159 Йюхйюх
 
22.10.12
11:02
(155) значит, наверно, там фамилия, имя, отчество хранится в одном строковом поле, где составляющие разделены разделителями, а глФамилияИмяОтчество их извлекает.
160 КонецЦикла
 
22.10.12
11:04
(144) Как знать... как знать... может он глубоко захватывает у ИТ-Директора?
А тебя, после отсылки этой ветки на работу, возможно и попросят :)
161 bse
 
22.10.12
11:04
(159) так значит или наверное? Будь точнее, а если не знаешь - не лезь...
162 chief accountant
 
22.10.12
11:06
(159) открой любую типовую и посмотри ФИО=Наименование. Смешно читать абсолютную некомпетентность, хотя теперь понятно почему ты на ТС наезжал
163 Йюхйюх
 
22.10.12
11:07
(161) ты не пытайся оправдаться, когда сам лажанулся и при этом еще и настучал на товарища.

На месте руководства, я бы уволил тебя, как человека, обладающего необоснованными амбициями и оставил товарища, на которого ты настучал, как старательного и исполнительного сотрудника.
164 Sserj
 
22.10.12
11:09
(162) Вообщето ФИО=Наименование в типовых заполняется автоматом из большого поля Фамилия, Имя, Отчество. Так что ты тоже не особо прав
165 bse
 
22.10.12
11:09
(163) бгг
166 0xFFFFFF
 
22.10.12
11:09
(163) вряд ли ты бы оставил этого "исполнительного сотрудника", будь он у тебя в прямом подчинении...
167 forforumandspam
 
22.10.12
11:10
(0) "И И Иванович" - вот такую строку криво обработает.
"Виноградов-Волжинский Иван Иванович" - тоже
168 chief accountant
 
22.10.12
11:10
(164) в какой конфе?
169 Йюхйюх
 
22.10.12
11:11
(162) Ты читать умеешь?
Открыл типовую БП 2.0. В справочнике ФизЛиц есть поля Фамилия, Имя, Отчество.
Хранятся они отдельно от Наименования РегистрыСведений.ФИОФизЛиц
Наименование можно указать произвольно.

Что сказать-то хотел?
170 Sserj
 
22.10.12
11:11
(168) Ну у меня под рукой только ТиС есть, там ФИО, оно же Наименование заполняется из поля ПолнНаименование.
171 chief accountant
 
22.10.12
11:12
(170) тык к чему тогда (164)?
172 chief accountant
 
22.10.12
11:13
(169) то что ты снеговичок, это понятно было. Ветка по клюшкам, свою БП засунь себе а одно место
173 Йюхйюх
 
22.10.12
11:14
(171) К тому, ламерок, что в поле ПолнНаименование хранится Фамилия, Имя, Отчество с разделителями. А процедура глФамилияИмяОтчество извлекает их.
174 Йюхйюх
 
22.10.12
11:15
+(173) Хоть я клюшки давно не видел, но до сих пор помню
175 chief accountant
 
22.10.12
11:16
(174) ты клюшки вообще не видел
176 rutony
 
22.10.12
11:17
(0) А че мне нравиться, главное же результат=))
177 chief accountant
 
22.10.12
11:18
(173) никакой разницы ФИО=Наименование или ФИО=ПолнНаименование нет
178 Йюхйюх
 
22.10.12
11:20
(177) да ты что?
Идиоты из фирмы 1С, которые в разы глупее тебя, зачем тогда создали два поля Наименование и ПолнНаименование?
179 Winston
 
22.10.12
11:21
(1) Ну, что такого. Очень трудолюбивый человек. Мне было бы лень стока буковок писать.
180 Sserj
 
22.10.12
11:21
(177) Ты пи..шь :)
Наимнование  = глФамилияИмяОтчество(ПолнНаименование);

Берется фамилия полностью, из имени и отчетсва первые буквы в верхнем регистре.
181 akaBrr
 
22.10.12
11:22
(173)извлеки фамилию Дашинимбай Гарма Цирен Доржиев
182 Smallrat
 
22.10.12
11:22
(0) Ну это нормально... я тут недавно переписывал отчет за таким спецом - так этого спеца к УПП допустили на годик, он там такого наваял - капец... шерсть дыбом, хвост трубой.
183 Йюхйюх
 
22.10.12
11:23
(181) кодом ТС и кодом товарища, на которого он настучал, это не извлечь.
184 Скользящий
 
22.10.12
11:25
Самое печальное, что часто некогда такие отчеты с нуля переписывать, и приходится дописывать гамнокод, чтобы работало. Я обычно так и пишу потом в коментах типа
//дописываю гамнокод за предыдущим, переделать нах когда нибудь когда время будет.
Типа отмазка перед потомками. )
185 be-may
 
22.10.12
11:25
удивлена количеством комментариев "работает - и так сойдет"..
186 akaBrr
 
22.10.12
11:28
(183) типовым кодом извлечь?
187 al_zzz
 
22.10.12
11:29
У меня в прежней организации девочка работала. Мы разными подсистемами одной конфигурации занимались(насколько в 7-ке это можно назвать подсистемами), но когда она уходила в отпуск, у меня от её кода добавлялись целые пучки седых волос.
188 akaBrr
 
22.10.12
11:29
(184) такая же фигня, а времени на рефакторинг нет, рук-во постоянно подкидывает задачи
189 chief accountant
 
22.10.12
11:29
(180) весь сыр-бор из-за тупого наезда на ТС в (99)(109) так что (180) не принципиально
190 Йюхйюх
 
22.10.12
11:30
(177)
Что ты мне чухаешь? Ф.И.О. в клюшечной бухгалтерии хранится с разделителями.

//******************************************************************************
//    глФамилияИмяОтчество(Объект,Фамилия,Имя,Отчество)
//
//    Параметры:
//        Объект     - элемент справочника Сотрудники или Строка
//        Фамилия     - в этот параметр будет записана фамилия сотрудника
//        Имя         - в этот параметр будет записано имя сотрудника
//        Отчество - в этот параметр будет записано отчество сотрудника
//
//    Возвращаемое значение:
//        фамилия и инициалы сотрудника
//
//    Описание:
//        разбирает "наименование" сотрудника по Фамилия, Имя, Отчество
//        и возвращает фамилию и инициалы сотрудника
//
Функция глФамилияИмяОтчество(Объект,Фамилия="",Имя="",Отчество="") Экспорт
   
   Если ТипЗначения(Объект)=2 Тогда
       Список = глРазложить(СтрЗаменить(Объект, ".",". "), " ");
   Иначе
       Список = глРазложить(СтрЗаменить(Объект.Наименование, ".", ". ")," ");        
   КонецЕсли;
   
   Фамилия  = ?(0 < Список.РазмерСписка(), Список.ПолучитьЗначение(1), "");
   Имя         = ?(1 < Список.РазмерСписка(), Список.ПолучитьЗначение(2), "");

   Если Список.РазмерСписка() > 2 Тогда
       // а вот отчество бывает и не из одного слова                
       Для Сч = 3 По Список.РазмерСписка() Цикл
           Отчество = Отчество + Список.ПолучитьЗначение(Сч) + " ";
       КонецЦикла;

       Если ПустоеЗНачение(Отчество) = 0 Тогда
           Отчество = Лев(Отчество,СтрДлина(Отчество)-1);
       КонецЕсли;
   КонецЕсли;

   Возврат Фамилия+?(ПустоеЗначение(Имя)=0," "+Лев(Имя,1)+"."+?(ПустоеЗначение(Отчество)=0,Лев(Отчество,1)+".",""),"")

КонецФункции    // глФамилияИмяОтчество

Функция глРазложить(Знач Стр, Разделитель = ",") Экспорт
   
   Список = СоздатьОбъект("СписокЗначений");
   Длина  = СтрДлина(Разделитель);
   
   Стр = СокрЛП(Стр);
   Поз = Найти(Стр, Разделитель);
   
   Пока 0 < Поз Цикл
       Список.ДобавитьЗначение(СокрП(Лев(Стр, Поз-1)));
       
       Стр = СокрЛ(Сред(Стр, Поз+Длина));
       Поз = Найти(Стр, Разделитель);
   КонецЦикла;

   Список.ДобавитьЗначение(Стр);
   
   Возврат Список;
   
КонецФункции // глРазложить()
191 Lenka_Boo
 
22.10.12
11:31
(181) У меня как-то был сотрудник то ли кореец, то ли помесь корейца с киргизом. ФИО из 5 слов 1 через черточку. :)
192 chief accountant
 
22.10.12
11:33
(190) как пользук забил так и хранится, что-то непонятно? Ты мне ещё весь глобальник выложи, а то я его не видел
193 Lenka_Boo
 
22.10.12
11:34
+(191) Не помню, чтоб у меня были с ним проблемы, когда пришлось писать выгрузку в банк.
194 Йюхйюх
 
22.10.12
11:36
(192) короче, ТС тоже однозначно овнокодер и не знает конфигурацию, с которой работает.
195 hohol
 
22.10.12
11:36
Очень хороший опытный сотрудник, который знает что за свою зарплату он должен предприятию вредить. Ну и дело в перди какой нить наверное происходит, там это в порядке вещей.
196 Йюхйюх
 
22.10.12
11:37
(192) не оправдывайся, это твоя задача следить за тем, чтобы пользователи правильно заносили информацию.

А не писать овнокод в зависимости от того, как пользователи забили инфу.
197 chief accountant
 
22.10.12
11:38
(194) слив не засчитан
198 Buster007
 
22.10.12
11:38
Йюхйюх свой код приведи, чтобы извлечь фамилию из Дашинимбай Гарма Цирен Доржиев, когда это ФИО записано в одно поле.
199 VladZ
 
22.10.12
11:38
(194) Хе-хе... Пацан к успеху шел... А вы так его слили...
200 Buster007
 
22.10.12
11:38
(194) ты юный подаван. тебе ещё учиться и учиться.
201 chief accountant
 
22.10.12
11:39
(196) итак ещё раз: перечитай свои посты (99)(109) признай, что был неправ и вали с клюшечной ветки
202 КуплюКровать
 
22.10.12
11:40
че ТС уже лохонулся?
203 akaBrr
 
22.10.12
11:42
ветка-детектор прям
204 mishaPH
 
22.10.12
11:48
(0) работает? какие претензии ;)
205 bse
 
22.10.12
11:49
(204) букв много
206 Sserj
 
22.10.12
11:50
(198) Нету такого кода, ибо не соблюдены региональные стандарты, а вот чтобы их соблюсти должны инструкции быть.
207 Buster007
 
22.10.12
11:52
(206) это у тебя нет, а у него, наверное, есть.
Он же заявляет тут.
208 akaBrr
 
22.10.12
11:52
(204) криво написано, что будет если фамилия длиннее 20 символов? что будет если в начале ПечСотрудник будут 3 пробела?
209 akaBrr
 
22.10.12
11:55
+(208) куча затраченного времени на написание кода, время которое оплачивает работодатель, за такой код увольнять надо
210 Йюхйюх
 
22.10.12
11:56
(198) признаю, что в БП 7.7 не разложить.

Но что мешало ТС написать так:
   Фамилия = "";
   Имя = "";
   Отчество = "";
   
   глФамилияИмяОтчество(Объект,Фамилия,Имя,Отчество);

Вместо того, чтобы стучать на товарища и выдавать себя за Д'артаньяна?
211 Йюхйюх
 
22.10.12
11:56
(205) смотри (210)
212 akaBrr
 
22.10.12
11:58
(210) фамилия ТС-ом озвучена не была, руководству, как я понял ,он ничего не сообщил, так что стук вам померещился
213 Йюхйюх
 
22.10.12
11:59
(212) > и *** его не увольняют нифига...

Это говорит о том, что он уже реально на него стучал.
214 akaBrr
 
22.10.12
12:01
(213) не говорит, это ваши домыслы
215 Бледно Золотистый
 
22.10.12
12:02
(204)Это тоже работает:

Пока Истина Цикл
   Если Час(ТекущаяДата()) = 12 Тогда
       Сообщить("Пора на обед");
       Прервать;
   КонецЕсли;
КонецЦикла;
216 Йюхйюх
 
22.10.12
12:02
(214) Исходя из того, что руководство никогда не вникает в код программиста и не видит, что написано внутри, то фраза "и *** его не увольняют нифига... " очень четко говорит о том, что ТС уже пытался донести до руководства свои мысли.
217 Йюхйюх
 
22.10.12
12:03
+(216) При том, что сам является прогом-полуфабрикатом.
218 akaBrr
 
22.10.12
12:03
(216) домыслы
219 Йюхйюх
 
22.10.12
12:04
(218) не скажи
220 Скользящий
 
22.10.12
12:05
Задумался, кстати, как можно такого уволить... Руководство не оценивает код, его может оценить только специалист. Доказать что такого человека нужно уволить можно только методом экспертных оценок. Обосновать можно тем, что такой код трудно модифицируем и в дальнейшем убыточен для работодателя.
221 bse
 
22.10.12
12:05
(213) это чистые домыслы, знали бы ты сколько задач он загубил на корню... например слабо данные собирать в табличную часть документа а итоговые данные кидать в текстовый файл и все это сохранять?.. как вам?
222 Андрей_Андреич
 
naïve
22.10.12
12:06
А теперь представим, что напарник ТС быдлокодит так уже не первый год, а оно, зараза, работает себе и работает. И что теперь - увольнять человека только за оскорбление религиозно-эстетических чувств ТС?
223 Йюхйюх
 
22.10.12
12:07
(221) чем ты отличаешься от него?
И ты и он оба не знаете, что есть функция глФамилияИмяОтчество(Объект,Фамилия,Имя,Отчество).
224 Йюхйюх
 
22.10.12
12:07
(221) А чем ты отличаешься от него?
И ты и он оба не знаете, что есть функция глФамилияИмяОтчество(Объект,Фамилия,Имя,Отчество).
225 bse
 
22.10.12
12:08
Скользящий его ники Configurator и Configurator_ в танчиках... это у него получается больше всего...
226 Андрей_Андреич
 
naïve
22.10.12
12:09
(225) А вот после этого ветку можно закрывать
227 Скользящий
 
22.10.12
12:10
(225) Хорошая стата. В тысяче лучших по победам. )
228 Скользящий
 
22.10.12
12:11
Попробую догадаться, на работе шпилит. )
229 Йюхйюх
 
22.10.12
12:17
+(224) Хочется посоветовать ТС, что предже чем стучать на товарища и выдавать себя за Д'Артаньяна, стоит критически посмотреть на свои знания и возможности и помочь товарищу и поделиться с ним опытом, а не подсиживать его, при том, что ты сам полноценный полуфабрикат, не сильно выгодно отличающийся от него.
230 akaBrr
 
22.10.12
12:23
(229) вангую, ТС вас пошлет
231 Андрей_Андреич
 
naïve
22.10.12
12:25
(230) И ванговать не надо - на форуме танчиков такие же даратаньяны донесли напарнику ТС, что его здеь лажают и у них идет махач
232 akaBrr
 
22.10.12
12:27
(231) о, много наших полегло? :)
233 chief accountant
 
22.10.12
12:28
(231) видео есть?
234 Sserj
 
22.10.12
12:35
(232) А кто именно из них "наш"?
:)
235 SachoZ
 
22.10.12
12:37
Функция глФИО(Сотрудник, ВидФИО=0) Экспорт
     
     Перем ПолноеИмя, Фамилия, ИмяОтчество, Имя, Отчество;
     Перем ПозицияПервогоПробела, ПозицияВторогоПробела;
     ПолноеИмя = СокрЛП(Сотрудник);
     Если ПустоеЗначение(ПолноеИмя)=0 Тогда
           
           ПозицияПервогоПробела = Найти(ПолноеИмя, " ");
           Если ПозицияПервогоПробела = 0 Тогда
                 Возврат ПолноеИмя;
           Иначе
                 Фамилия = Лев(ПолноеИмя, ПозицияПервогоПробела);
                 ИмяОтчество = Сред(ПолноеИмя, ПозицияПервогоПробела+1);
                 ИмяОтчество = СокрЛ(ИмяОтчество);
                 Имя = Лев(ИмяОтчество, 1)+".";
     
                 ПозицияВторогоПробела = Найти(ИмяОтчество, " ");
                 Если ПозицияВторогоПробела = 0 Тогда
                       Если ВидФИО=0 Тогда
                             Возврат Фамилия+Имя;
                       Иначе
                             Возврат Имя+" "+Фамилия;
                       КонецЕсли;
                 Иначе
                       Отчество = Сред(ИмяОтчество, ПозицияВторогоПробела+1);
                       Отчество = СокрЛ(Отчество);
                       Отчество = Лев(Отчество, 1)+".";
                       Если ВидФИО=0 Тогда
                             Возврат Фамилия+Имя+Отчество;
                       Иначе
                             Возврат Имя+Отчество+" "+Фамилия ;
                       КонецЕсли;
                 КонецЕсли;
           КонецЕсли;  
     Иначе
           Возврат "";
     КонецЕсли;
КонецФункции
236 bse
 
22.10.12
12:38
(229) если не читать через коммент то увидишь что попытки были...
237 chief accountant
 
22.10.12
12:42
(235) что это?
238 Йюхйюх
 
22.10.12
12:43
(236) расслабься, ты тоже далеко не @Гений1С :)
239 zak555
 
22.10.12
12:44
(237) gthtltkfyysq ,.l;tn &
240 zak555
 
22.10.12
12:44
*переделанный бюджет
241 bse
 
22.10.12
12:45
(236) "...копирование произведения или его части без разрешения автора..." нарушаем?
242 chief accountant
 
22.10.12
12:45
(240) я уж хотел написать: сам дурак :)
243 bse
 
22.10.12
12:45
(241) к (235)
244 bse
 
22.10.12
12:47
Йюхйюх иди на Йюхйюх, ты нуб и опозорился...
245 chief accountant
 
22.10.12
12:49
(244) +1
246 Скользящий
 
22.10.12
12:51
Йюхйюх просто пытается неумело троллить, но поскольку сам днище, у него это получается преотвратно. )
247 Йюхйюх
 
22.10.12
12:51
(244)(245) танкисты, идите на хутор бабочек ловить
248 chief accountant
 
22.10.12
12:52
(247) децкий сад
249 Йюхйюх
 
22.10.12
12:52
+(247) весь мозг в танчиках просидели, а на работе сиками меряетесь и стучите друг на друга при нулевых знаниях.
250 Джон Вэйн
 
22.10.12
13:01
(0) какая гнилая тема.. Надо бы ее ухнуть, автора жалко, не понимает, что садомазохизЬма и эксгибиционизЬма не так хороши как кажутся кому-то
251 ptrtss
 
22.10.12
13:09
Как всегда, темы о том как лучше сделать простейший как три копейки фрагментик собирают толпы желающих поучаствовать))
252 Ахиллес
 
22.10.12
14:05
(251) Пора заводить тему об удалении строк из таблицы ;-)
На колу висит мочало, начинаем всё с начала.
253 Ахиллес
 
22.10.12
14:08
Очень правильная мысль в статье: Так вот, я не видел ни одной компьютерной системы, которая бы правильно обрабатывала имена, и я сомневаюсь, что такая система вообще существует хоть где-нибудь. http://habrahabr.ru/post/146901/
Делить ФИО на Ф И О вообще не нужно. Нужно всё писать в одну строку. Жаль что такая простая мысль ещё долго будет пробивать себе дорогу в стандарты.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn