Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / требуется Ведущий разработчик Cache (Москва) / 25 сообщений из 76, страница 1 из 4
25.06.2008, 20:41
    #35394814
hr_letograf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
требуется Ведущий разработчик Cache (Москва)
Компания ЛЕТОГРАФ (www.letograf.ru) в связи с расширением приглашает Ведущего разработчика приложений для СУБД Cache (3 вакансии).

Требования:
• опыт разработки программного обеспечения на Cache Object Script не менее 2-3 лет;
• технический английский язык;
• знание основ динамического HTML и JavaScript;
• знание основ XML/XSD/XSLT;
• владение объектно-ориентированной методологией разработки программного обеспечения;
• навыки документирования выполняемых работ.

Дополнительными преимуществами являются:

• опыт программирования на C/С++, Java;
• опыт разработки WEB-приложений;
• опыт разработки приложений для Microsoft на Visual Basic;
• знание основ реляционных баз данных и SQL;
• знание основ UML и опыт работы с Rational Rose;
• опыт работы со средствами сканирования и распознавания (ABBY FineReader, ABBY FormReader, ABBY RecognitionServer);
• знание базовых современных требований к системам электронного документооборота.

Основные обязанности:

• разработка программного кода (классы и программы Cache) на языке Cache Object Script, реализующего функциональность системы ЛЕТОГРАФ;
• разработка программного кода на JavaScript, реализующего различные динамические эффекты в просмотрищике;
• локализация и исправление обнаруженных ошибок в работе системы;
• написание технической документации - технические задания на новые составные части системы ЛЕТОГРАФ: функциональные модули, компоненты, типы данных, подсистемы;
• оперативное руководство небольшой группой разработчиков.


Условия:

Зарплата 60 000 - 90 000, белая, соцпакет.
Местоположение офиса - м. Красносельская.
Перспективы роста (компания динамично развивается).
Для иногородних: оказание помощи при переезде.
Отсутсвие российского гражданства соискателя (при наличии разрешения на работу) не является препятствием.
Вместе с резюме прошу присылать образцы Ваших кодов на Cache Object Script по адресу: hr@letograf.ru


Рассмотрим также кандидатов на роль рядового разработчика (опыт работы на Cache Object Script от 1 года).
...
Рейтинг: 0 / 0
25.06.2008, 21:38
    #35394900
С0ВЕСТЬ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
требуется Ведущий разработчик Cache (Москва)
млин и сюда уже лезут, имейте совесть!

... и все-таки я тебя загрызу... ©
...
Рейтинг: 0 / 0
26.06.2008, 09:29
    #35395312
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
требуется Ведущий разработчик Cache (Москва)
hr_letografЗарплата 60 000 - 90 000, белая, соцпакет.
Так вы готовы платить 90 т.р.? Или все как в прошлый раз?
...
Рейтинг: 0 / 0
26.06.2008, 15:13
    #35396772
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
требуется Ведущий разработчик Cache (Москва)
совестьмлин и сюда уже лезут, имейте совесть!По Cache не так уж много вакансий (мягко говоря), так что, думаю, завсегдатаи не в обиде :)
...
Рейтинг: 0 / 0
01.07.2008, 17:04
    #35404805
u78
u78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
требуется Ведущий разработчик Cache (Москва)
krvsaТак вы готовы платить 90 т.р.? Или все как в прошлый раз?
А что в прошлый раз?
...
Рейтинг: 0 / 0
02.07.2008, 08:18
    #35405537
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
требуется Ведущий разработчик Cache (Москва)
u78А что в прошлый раз?
Выяснилось что это только начисляемые суммы, т.е. на руки вы получите менее 80 т.р... Но и этого платить никто не собирается т.к. "у нас с таким желанием работают за 50 т.р."...
Потом скажут что их Каше (кунгфу) лучше твоего. И как ты с такими слабыми познаниями решил на такие суммы замахиваться...

Короче Масква-Динама.
...
Рейтинг: 0 / 0
02.07.2008, 11:26
    #35405969
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
требуется Ведущий разработчик Cache (Москва)
krvsaВыяснилось что это только начисляемые суммы, т.е. на руки вы получите менее 80 т.рДык в моду входят белые зарплаты, особливо в первопрестольной, и становится нормой указывать з/п gross (по-нашему - "грязными"). Пора привыкать :)
...
Рейтинг: 0 / 0
02.07.2008, 12:04
    #35406088
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
требуется Ведущий разработчик Cache (Москва)
Alexey MaslovПора привыкать :)
Устанеш привыкать ко всем маркетинговым ходам... Но суть у них одна - ввести в заблуждение.
...
Рейтинг: 0 / 0
03.07.2008, 13:03
    #35408632
hr_letograf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
требуется Ведущий разработчик Cache (Москва)
krvsa u78А что в прошлый раз?
Выяснилось что это только начисляемые суммы, т.е. на руки вы получите менее 80 т.р... Но и этого платить никто не собирается т.к. "у нас с таким желанием работают за 50 т.р."...
Потом скажут что их Каше (кунгфу) лучше твоего. И как ты с такими слабыми познаниями решил на такие суммы замахиваться...

Короче Масква-Динама.

Насколько я помню, Сергей, Ваши коды оказались настолько слабы, что Вы даже не были приглашены на собеседование. Фраза "у нас с таким желанием работают за 50 т.р." - переврана. на самом деле было сказано, что с таким качеством кодов мы готовы платить не выше 50 000 рублей.
...
Рейтинг: 0 / 0
03.07.2008, 13:08
    #35408654
hr_letograf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
требуется Ведущий разработчик Cache (Москва)
krvsa Alexey MaslovПора привыкать :)
Устанеш привыкать ко всем маркетинговым ходам... Но суть у них одна - ввести в заблуждение.
Что касается сути, то она такова: есть рынок труда. Есть работодатель, есть потребность в специалистах, есть субъективаня оценка работодателя - его мнение о том, сколько могут стоить конкретные навыки конкретного специалиста. По-моему, для взослого человека это должно быть очевидно.
...
Рейтинг: 0 / 0
03.07.2008, 14:56
    #35409056
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
требуется Ведущий разработчик Cache (Москва)
hr_letografВаши коды оказались настолько слабы
Вот, вот... Только как же я тогда (по вашим же словам) стал самым главным претендентом на вакансию?
Как это вы говорили по телефону?
- У вас приоритет даже не №1... А №0! Ваше резюме лежит прямо выше всех в папке...

Все "проблемы" как раз начались после того как я назвал сумму в 90 т.р. :-В

Ну да ладно... Не хотите и ненадо.
Хотя интересно былобы посмотреть на ваши "крутые" коды, увидев которые, вы сразу же готовы платить хотябы 80 т.р.
Это уже так... Чисто спортивное любопытство.
...
Рейтинг: 0 / 0
04.07.2008, 03:58
    #35410458
Socratdv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
требуется Ведущий разработчик Cache (Москва)
А что вообще означает "слабый" код? Как я понимаю может быть плохой стиль программирования, неправильная реализация или не выполнение тестового задания. Как по куску кода, выдернутого из контекста можно сказать, что он "слабый"???
А какой код тогда "сильный"? И как код может быть сильнее/слабее другого кода? Кто ставит этот диагноз?
...
Рейтинг: 0 / 0
04.07.2008, 05:58
    #35410479
=Dimon=
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
требуется Ведущий разработчик Cache (Москва)
2Socratdv
+1000
...
Рейтинг: 0 / 0
04.07.2008, 08:11
    #35410534
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
требуется Ведущий разработчик Cache (Москва)
SocratdvКто ставит этот диагноз?
Если я правильно понял, это делает один из начальников отделов.

Если кто не поленится и найдет их первое объявление - там они и других соискателей обвинили в "слобости" и "стяжательстве".
...
Рейтинг: 0 / 0
04.07.2008, 14:13
    #35411536
hr_letograf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
требуется Ведущий разработчик Cache (Москва)
Стыдно, Сергей. Облажались и врёте беззастенчиво, как маленький. Ваши зарплатные притязания я выяснила у Вас ДО того, как запросила образцы кодов, - во время первой же телефонной беседы. Ни про какую стопку резюме я никогда не говорила - стопки резюме на позицию "разработчик Cache" просто не бывает, слишком редки такие специалисты, которые к тому же ищут работу. Так что и приоритета у вас на тот момет быть не могло - если только не говорить о приоритете по сравнению с множеством меры ноль.

Давайте я выложу здесь те ваши коды, что вы присылали, а компетентные участики дискуссии посмотрят, что значит "слабые", и скажут, стОят ли они 90 тысяч рублей. В сочетании с Вашим резюме (без указания реального имени и места работы, чтобы ненароком не подставить перед работодателем). А то наговаривать-то из-под ника оно, конечно, весело. А за слова отвечать?
...
Рейтинг: 0 / 0
04.07.2008, 14:14
    #35411541
hr_letograf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
требуется Ведущий разработчик Cache (Москва)
krvsa SocratdvКто ставит этот диагноз?
Если я правильно понял, это делает один из начальников отделов.

Если кто не поленится и найдет их первое объявление - там они и других соискателей обвинили в "слобости" и "стяжательстве".
цитату в студию. не поленитесь уж, мистер Честность.
...
Рейтинг: 0 / 0
04.07.2008, 14:45
    #35411646
hr_letograf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
требуется Ведущий разработчик Cache (Москва)
SocratdvА что вообще означает "слабый" код? Как я понимаю может быть плохой стиль программирования, неправильная реализация или не выполнение тестового задания. Как по куску кода, выдернутого из контекста можно сказать, что он "слабый"???
А какой код тогда "сильный"? И как код может быть сильнее/слабее другого кода? Кто ставит этот диагноз?
Диагноз ставит руководитель проекта. Код может быть "слабый" и даже "беспомощный". Если Вы программист со стажем, сравните свои коды студенческих лет (когда Вы только начинали осваивать эту профессию) с тем, что пишете сейчас, и полУчите (скорее всео) как раз оценку: "слабый" код. Откуда вы знаете, что "кусок кода был выдернут из контекста"? Откуда Вы знаете, какой именно объем был прислан на оценку и сколько там было контекста? откуда Вы знаете, что не было тестового задания?
...
Рейтинг: 0 / 0
04.07.2008, 14:53
    #35411666
AlexKB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
требуется Ведущий разработчик Cache (Москва)
hr_letograf образцы кодов

Да не обидется автор.

Похоже у Вас на предприятии существует некий стандарт программирования на Cache, Ensemble.
И это очень хорошо, это правильно. Если это действительно так, то я Вам очень завидую.

Меня тоже давно интересует стандарт предприятия (СТП) по программированию на Cache.
Собрав опыт многих программистов, хочу узаконить СТП у себя, а я так понимаю тут есть Уважаемые люди с Богатым опытом.

Если есть добрые люди и готовы откликнуться по этому вопросу - буду благодарен. Только не в этой теме. Всяких "тащусиков" просьба не беспокоить. Вопрос конкретный.

Еще раз извиняюсь перед автором.
...
Рейтинг: 0 / 0
04.07.2008, 15:18
    #35411746
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
требуется Ведущий разработчик Cache (Москва)
hr_letografДавайте я выложу здесь те ваши коды
Выкладывайте конечно, никаких препятствия в этом я не вижу...
...
Рейтинг: 0 / 0
04.07.2008, 16:54
    #35412124
=Dimon=
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
требуется Ведущий разработчик Cache (Москва)
2hr_letograf
А можно выложить то, что Вы считаете "слабым" кодом, и "сильный" код(достойный 90 000). Чтоб соискатели сразу видели, на какой уровень ориентироваться.
...
Рейтинг: 0 / 0
06.07.2008, 15:36
    #35413499
Socratdv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
требуется Ведущий разработчик Cache (Москва)
hr_letograf SocratdvА что вообще означает "слабый" код? Как я понимаю может быть плохой стиль программирования, неправильная реализация или не выполнение тестового задания. Как по куску кода, выдернутого из контекста можно сказать, что он "слабый"???
А какой код тогда "сильный"? И как код может быть сильнее/слабее другого кода? Кто ставит этот диагноз?
Диагноз ставит руководитель проекта. Код может быть "слабый" и даже "беспомощный". Если Вы программист со стажем, сравните свои коды студенческих лет (когда Вы только начинали осваивать эту профессию) с тем, что пишете сейчас, и полУчите (скорее всео) как раз оценку: "слабый" код.
Опять же повторюсь - я не могу вообразить себе "слабый" код, т.к. эти два понятия у меня ни как не вяжутся в голове. Я понимаю, если определение "слабый" приписывается кодеру (программисту), исходя из его умственных и профессиональных качеств. Но сравнивая два абсолютно разных кода, если они всецело выполняют поставленную перед ними задачу, сказать, что один код "слабее" другого я не могу. Опять же - может быть плохой или не соответствующий Вашим стандартам стиль программирования, но выносить вердикт программисту из-за такой ерунды как минимум глупо. Так же может быть неправильная реализация, но тут нельзя однозначно судить по коду, не зная ситуации вцелом, т.к. эта вещь очень субъективная и по куску кода очень сложно определить уровнь профессионализма кодера. Как мне кажется, самый оптимальный способ выяснить на сколько хорош программист - это результат выполнения тестого задания, где можно довольно-таки хорошо проверить его умственный способности и выявить познания языка или каких-нибудь специфических вещей.
hr_letografОткуда вы знаете, что "кусок кода был выдернут из контекста"? Откуда Вы знаете, какой именно объем был прислан на оценку и сколько там было контекста? откуда Вы знаете, что не было тестового задания?
Заметьте - я ни где до этого не утверждал, что тестового задания не было, а про код я высказался исходя из Ваших же слов. До этого шла речь только о "слабости" кода, присланного тов. Сергеем.
Если Вы принимаете решение об уровне программиста только исходя из присланного им кода, то я бы не советовал соискателям с хорошим уровнем профессиональных качеств обращаться в Вашу компанию, т.к. это решение будет заведомо субъективно. Если же ситуация не такая, то проясните её, пожалуйста. Да и код, присланный Сергеем, было бы не плохо выложить чтобы не быть голословными.
...
Рейтинг: 0 / 0
07.07.2008, 08:46
    #35414039
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
требуется Ведущий разработчик Cache (Москва)
Не ручаюсь за точность... Т.к. компьютер был у меня заменен и истории переписки не осталось... Но посылал вроде это

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
411.
412.
413.
414.
415.
416.
417.
418.
419.
420.
421.
422.
423.
424.
425.
426.
427.
428.
429.
430.
431.
432.
433.
434.
435.
436.
437.
438.
439.
440.
441.
442.
443.
444.
445.
446.
447.
448.
449.
450.
451.
452.
453.
454.
455.
456.
457.
458.
459.
460.
461.
462.
463.
464.
465.
466.
467.
468.
469.
470.
471.
472.
473.
474.
475.
476.
477.
478.
479.
480.
481.
482.
483.
484.
485.
486.
487.
488.
489.
490.
491.
492.
493.
494.
495.
496.
497.
498.
499.
500.
501.
502.
503.
504.
505.
506.
507.
508.
509.
510.
511.
512.
513.
514.
515.
516.
517.
518.
519.
520.
521.
522.
523.
524.
525.
526.
527.
528.
529.
530.
531.
532.
533.
534.
535.
536.
537.
 // Диапазон страниц
#define pgline  3 
 
LIST(ClsName,GlbName,N) ; * Просмотр класса *
 ; ClsName - имя класса
 ; GlbName - имя глобала с данными
 ; N       - количество строк на странице
 n task,prop,page,index,typfnd,fndtyp,set,data,slvtyp,fldtyp
 s set=$$Set^sysNAME
 s:$g(ClsName)="" ClsName=@set@("Class")
 s:$g(GlbName)="" GlbName=$$Temp^sysNAME()
 s N=$g(N, 10 )
 s task=@set@("Task")
 s data=$na(@GlbName@("Data"))
 s page=$$Page
 s index=$g(%request.Data("Index", 1 ))
 s typfnd=$g(%request.Data("TypFindSet", 1 ), 0 )
 s slvtyp=$$SlvTyp
 s fldtyp=$$FldTyp
 s ocls=##class(%Dictionary.ClassDefinition).%OpenId(ClsName)
 d BEGHTML
 d NAMECLS
 &html<<input type='hidden' name='Page' value='#(page)#'>>
 s prop=$na(@GlbName@("Fld"))
 d INDLIST
 if '$g(@GlbName@("Start")) {
	 d SEARCH
 }
 d FINDLIST
 d FINDTYP
 d ocls.%Close()
 d LSTPG
 d BUTTON
 d TABLE
 d LSTPG
 d ENDHTML
 q
FldTyp() ; Это заполнение из справочника
 n val
 s val=$g(%request.Data("fldname",1))
 q:val="" 0
 q 1
SlvTyp() ; Это просмотр справочника
 n val
 s val=$g(%request.Data("clsname",1))
 q:val="" 0
 q 1
BUTTON
 &html<<table>>
 &html<<tr>>
 &html<<td><input type='button' value='Добавить запись' onclick='Add()'>>
 d EXIT
 &html<</table>>
 q
EXIT
 n gl,url
 s gl=$$Exit^sysNAME()
 s url=$g(@gl)
 q:url=""
 &html<<td><input type='button' value='Выход' onclick='Exit("#(url)#")'>>
 q
LSTPG ; Список страниц
 n max,p1,p2,i
 s max=$o(@data@(""),-1)
 s p1=page-$$$pgline
 s:p1<1 p1=1
 s p2=page+$$$pgline
 s:p2>max p2=max
 &html<<table cellpadding="2" cellspacing="0" border="0">>
 &html<<tr>>
 &html<<td><div class='tbl_st0'>Страницы:>
 d:p1>1 BEGPG
 d:page>1 LEFTPG
 for i=p1:1:p2 {
	 d NUMPAGE
 }
 d:page<max RIGHTPG
 d:p2<max ENDPG
 &html<</table>>
 q
RIGHTPG ; Следующая
 &html<<td><div class='tbl_st3'><a href='javascript:GoPg(#(page+ 1 )#)' class='link1' style='text-decoration:none;'><strong>След</strong></a></div>>
 q
LEFTPG ; Предыдущая страница
 &html<<td><div class='tbl_st3'><a href='javascript:GoPg(#(page- 1 )#)' class='link1' style='text-decoration:none;'><strong>Пред</strong></a></div>>
 q
BEGPG ; Первая страница
 &html<<td><div class='tbl_st1'><a href='javascript:GoPg( 1 )' class='link1'>1</a></div>>
 q
ENDPG ; Последняя страница
 &html<<td><div class='tbl_st1'><a href=# class='link1'>#(max)#</a></div>>
 q
NUMPAGE ; Очередной номер
 if i=page {
	 d SETPG
 } else {
	 d NMPG
 }
 q
NMPG ; Очередная страница
 &html<<td><div class='tbl_st1'><a href='javascript:GoPg(#(i)#)' class='link1'>#(i)#</a></div>>
 q
SETPG ; Текущая страница
 &html<<td><div class='tbl_st8'><strong>#(i)#</strong></div>>
 q
Page() ; Номер страницы
 n val
 s val=$g(%request.Data("Page",1))
 q:val="" 1
 q:'$d(@data@(val))  1 
 q val
FINDTYP ; Тип поиска
 &html<<table cellpadding="2" cellspacing="0" border="0">>
 &html<<tr>>
 &html<<td style='border:dotted;border-width:1px;border-left:none;border-right:none;border-color:#000;' colspan="3">>
 &html<<table cellpadding="2" cellspacing="0" border="0">>
 &html<<tr>>
 &html<<td>[Равно>
 &html<<td><input type='radio' name='TypFind' value='0'#($$Val( 0 ))#>]>
 if fndtyp= 1  {
	 d STRTYP
 } elseif fndtyp= 2  {
	 d NUMTYP 
 }
 &html<<td align="right"><a href='javascript:Find()' ><img src="/prt/img/search.gif" border="0"></a>>
 &html<<td align="right"><a href='javascript:Stop()' ><img src="/prt/img/stop.gif" border="0"></a>>
 &html<<td align="right"><a href='javascript:LoadPg()' ><img src="/prt/img/refresh.gif" border="0"></a>>
 &html<</table>>
 &html<</table>>
 &html<<input type='hidden' name='TypFindSet' value='#(typfnd)#'>>
 q
NUMTYP ; Поиск строки
 &html<<td>[Больше>
 &html<<td><input type='radio' name='TypFind' value='3'#($$Val( 3 ))#>]>
 &html<<td>[Меньше>
 &html<<td><input type='radio' name='TypFind' value='4'#($$Val( 4 ))#>]>
 q
STRTYP ; Поиск строки
 &html<<td>[Начинается>
 &html<<td><input type='radio' name='TypFind' value='1'#($$Val( 1 ))#>]>
 &html<<td>[Содержит>
 &html<<td><input type='radio' name='TypFind' value='2'#($$Val( 2 ))#>]>
 q
Val(Typ) ; Значение для типа
 q:Typ=typfnd " checked"
 q ""
NAMECLS
 &html<<table cellpadding="2" cellspacing="0" border="0" width="100%">>
 &html<<tr class="data">>
 &html<<td class='headerdata' width="%100"><strong>#(ocls.Description)#</strong>>
 &html<</table>>
 q
ENDHTML ; Окончательный текст html
 &html<<td width="3" background="/prt/img/framebar-right-middle.gif">>
 &html<<tr>>
 &html<<td width="3" height="6" background="/prt/img/framebar-left-bottom.gif">>
 &html<<td height="6" background="/prt/img/framebar-middle-bottom.gif">>
 &html<<td width="3" height="6" background="/prt/img/framebar-right-bottom.gif">>
 &html<</table>>
 q
BEGHTML ; Начальный текст html
 &html<<table width="100%"  border="0" cellspacing="0" cellpadding="0" align="center">>
 &html<<tr>>
 &html<<td width="3" height="6" background="/prt/img/framebar-left-top.gif">>
 &html<<td height="6" background="/prt/img/framebar-middle-top.gif">>
 &html<<td width="3" height="6" background="/prt/img/framebar-right-top.gif">>
 &html<<tr>>
 &html<<td width="3" background="/prt/img/framebar-left-middle.gif">>
 &html<<td valign="top" class="maintablebody">>
 q
SEARCH ; Выполнить поиск
 n sql,exe
 s sql=$$SqlStr
 s exe=$$Execute
 s @GlbName@("sql")=sql
 s @GlbName@("exe")=exe
 j FIND(sql,exe,GlbName,N)
 q
SqlStr()
 n sql,cls
 s cls=$$ClsSql^sysNAME(ClsName)
 s sql="Select * From "_cls
 d WHERE
 d ORDERBY
 q sql
WHERE
 n i,d,first,rlt
 s first= 1 
 s rlt=$$Rlt^sysNAME()
 s d=""
 s i=$o(@rlt@(""))
 while i'="" {
	 d RFLD
	 s i=$o(@rlt@(i))
 }
 s i=$o(@prop@(0,""))
 while i'="" {
	 d WFLD
	 s i=$o(@prop@( 0 ,i))
 }
 q
RFLD ; Очередное свойство в реляции
 n val
 d:first WFIRST
 s val=@rlt@(i)
 s sql=sql_d_i_"="_val
 s d=" and "
 q
WFLD ; Очередное свойство
 n opr,val,fld,cls
 s fld=@prop@( 0 ,i)
 s cls=$g(@prop@( 0 ,i,"Class"))
 s val=$$Value
 q:val=""
 d:first WFIRST
 s opr=$$Opr
 s sql=sql_d_fld_opr_"?"
 s d=" and "
 q
Opr() ; Вычислить операцию
 q:typfnd= 0  "="
 q:typfnd= 1  " like "
 q:typfnd= 2  " like "
 q:typfnd= 3  ">"
 q:typfnd= 3  "<"
 q ""
Value() ; Вычислить значение
 n val
 s val=$g(%request.Data(fld, 1 ))
 q:val="" ""
 q:cls="" val
 s val=$$Code^sysFNC(val,cls)
 q val
WFIRST ; Первое условие
 s sql=sql_" where "
 s first= 0 
 q
ORDERBY ; Сортировка
 n i,d
 s sql=sql_" order by "
 s d=""
 s i=$o(@prop@( 0 ,""))
 while i'="" {
	 d OFLD
	 s i=$o(@prop@(0,i))
 }
 q
OFLD ; Очередное свойство
 n val
 s val=@prop@(0,i)
 s sql=sql_d_val
 s d=","
 q
Execute() ; Execute с параметрами
 n str,d,j
 s str="s ok=o.Execute("
 s i=$o(@prop@(0,""))
 s d=""
 while i'="" {
	 d EFLD
	 s i=$o(@prop@( 0 ,i))
 }
 s str=str_")"
 q str
EFLD ; Очередное свойство
 n val,cls
 s val=@prop@( 0 ,i)
 s val=$g(%request.Data(val, 1 ))
 q:val=""
 s cls=$g(@prop@( 0 ,i,"Class"))
 s:cls'="" val=$$Code^sysFNC(val,cls)
 q:val=""
 s:typfnd=1 val=val_"%"
 s:typfnd=2 val="%"_val_"%"
 s @GlbName@(0,i)=val
 s val="@GlbName@(0,"_i_")"
 s str=str_d_val
 s d=","
 q
FIND(Sql,Execute,GlbName,N) ; Поиск значений
 n data,o,sql,ok,i,prop,brk,value
 s @GlbName@("Start")=1
 s data=$na(@GlbName@("Data"))
 k @data
 s prop=$na(@GlbName@("Fld"))
 s o=##class(%ResultSet).%New("%DynamicQuery:SQL")
 s ok=o.Prepare(Sql)
 x Execute
 s brk=0
 while o.Next()!brk {
	 d FLINE
 }
 d o.Close()
 s @GlbName@("Stop")=1
 q
FLINE ; Очередная сторока
 n pg,lin,val
 s i=$i(@data)
 s pg=(i\N)+1
 s lin=$i(@data@(pg))
 s val=o.Get("ID")
 s @data@(pg,lin,"ID")=val
 d FTYPE()
 d FTYPE(1)
 if $$Break {
	 k:'$g(@GlbName@("Start")) @GlbName
	 s brk= 1 
 }
 q
Break() ; Прервать поиск
 q:'$g(@GlbName@("Start")) 1
 q:$g(@GlbName@("Break")) 1
 q 0
FTYPE(Typ) ; Очередной тип полей
 n j
 s Typ=$g(Typ,0)
 s j=$o(@prop@(Typ,""))
 while j'="" {
	 d LFLD
	 s j=$o(@prop@(Typ,j))
 }
 q
LFLD ; Очередное свойство
 n fld,val,cls
 s fld=@prop@(Typ,j)
 s cls=$g(@prop@(Typ,j,"Class"))
 s val=o.Get(fld)
 s:cls'="" val=$$String^sysFNC(val,cls)
 s @data@(pg,lin,fld)=val
 q
TABLE ; Собствено таблица
 &html<<table cellspacing="0" cellpadding="0" border="0" class="tabledata">>
 d TITLE
 d DATA
 &html<</table>>
 q
DATA ; Вывод даных
 n i
 &html<<tbody>>
 s i=$o(@data@(page,""))
 while i'="" {
	 d LINE
	 s i=$o(@data@(page,i))
 }
 q
LINE ; Очередная строка
 n typ,id
 s typ="chet_row"
 s:i# 2  typ="nechet_row"
 &html<<tr class="#(typ)#">>
 d DATTYPE()
 d DATTYPE( 1 )
 s id=@data@(page,i,"ID")
 if fldtyp {
	 d SETFLD
 } else {
	 d BTN
 }
 q
SETFLD ; Для заполнения поля
 n val
 s val=@data@(page,i,"Name")
 &html<<td class='tbl_st6'><a href='javascript:SetFld("#(val)#")' title="Удалить запись"><img src="/prt/img/check.gif" border="0"></img></a>>
 q
BTN ; Стандартные кнопки управления
 &html<<td class='tbl_st6'><a href='javascript:Browse(#(id)#)' title="Удалить запись"><img src="/prt/img/check.gif" border="0"></img></a>>
 &html<<td class='tbl_st6'><a href='javascript:Edit(#(id)#)' title="Редактировать запись"><img src="/prt/img/edit_button.png" border="0"></img></a>>
 &html<<td class='tbl_st6'><a href='javascript:Del(#(id)#)' title="Удалить запись"><img src="/prt/img/delete_button.png" border="0"></img></a>>
 q
DATTYPE(Typ) ; Очередной тип полей
 n j
 s Typ=$g(Typ, 0 )
 s j=$o(@prop@(Typ,""))
 while j'="" {
	 d DFLD
	 s j=$o(@prop@(Typ,j))
 }
 q
DFLD ; Очередное поле
 n val,fld
 s fld=@prop@(Typ,j)
 s val=@data@(page,i,fld)
 s:val="" val="<br>"
 &html<<td class='tbl_st6'>#(val)#>
 q
TITLE ; Шапка таблицы
 n val
 &html<<thead>>
 &html<<tr>>
 d TITTYPE()
 d TITTYPE(1)
 s val="colspan='3'"
 s:fldtyp val=""
 &html<<th class='tbl_st6' #(val)#><strong>Служебная</strong>>
 q
TITTYPE(Typ) ; Очередной тип полей
 n i
 s Typ=$g(Typ,0)
 s i=$o(@prop@(Typ,""))
 while i'="" {
	 d TFLD
	 s i=$o(@prop@(Typ,i))
 }
 q
TFLD ; Очередной столбец
 n val
 s val=@prop@(Typ,i,"Tit")
 &html<<th class='tbl_st4'><strong>#(val)#</strong>>
 q
FINDLIST ; Список полей участвующих в поиске
 n i,val
 q:'$d(@prop)
 &html<<table>>
 &html<<tr>>
 s i=$o(@prop@(0,""))
 while i'="" {
	 d FNDFLD
	 s i=$o(@prop@( 0 ,i))
 }
 &html<</table>>
 q
FNDFLD ; Очередное поисковое поле
 n fld,val,cls
 s fld=@prop@( 0 ,i)
 &html<<td>#(@prop@( 0 ,i,"Tit"))#>
 s val=$g(%request.Data(fld, 1 ))
 s cls=$g(@prop@( 0 ,i,"Class"))
 if cls'="" {
	 d FLDCLS
	 q
 }
 &html<<td><input type='text' name='#(fld)#' value='#(val)#'>>
 q
FLDCLS
 &html<<td><input type='text' onchange='String(this,"#(cls)#")' name='#(fld)#' value='#(val)#'>>
 &html<<td><input type='button' onclick='Slv("#(fld)#","#(cls)#")' value='...' title='Выбрать значение из справочника'>>
 q
INDLIST ; Список индексов
 n i,n,insl,first
 s n=ocls.Indices.Count()
 q:n=0
 s first=1
 for i=1:1:n {
	 d IND
 }
 &html<</select>>
 &html<<td><a href='javascript:NewInd()' title="Выбрать индекс"><img src="/prt/img/browse.gif" border="0"></img></a>>
 &html<<td>>
 d INFO
 &html<</table>>
 &html<<input type='hidden' name='Index' value='#(index)#'>>
 q
INFO ; Информация о поиске
 n rec,pg,inf
 &html<<table cellspacing="0" cellpadding="0">>
 &html<<tr>>
 s rec=1
 s pg=1
 s inf=$$Inf
 s:inf'="" inf="<i> "_inf_"</i>"
 &html<<td><div class='results'>Записей: <strong>#(rec)#</strong>, страниц: <strong>#(pg)#</strong>.#(inf)#</div>>
 &html<</table>>
 q
Inf()
 q:$g(@GlbName@("Break")) "Поиск прпрерван..."
 q:'$g(@GlbName@("Stop")) "Поиск продолжается..."
 q ""
IND ; Очередной индекс
 n nam,val,typ
 s nam=ocls.Indices.GetAt(i).Name
 q:$l(nam,"Index")=2
 d:first FIRSTIN
 s val=ocls.Indices.GetAt(i).Description 
 s:val="" val="Нет названия ("_nam_")"
 s typ=""
 d:nam=index INDSLCT
 &html<<option value='#(nam)#'#(typ)#>#(val)#>
 q
INDSLCT ; Информация по выбраному индексу
 n fld,j
 s typ=" selected"
 s fld=ocls.Indices.GetAt(i).Properties 
 for j=1:1:$l(fld,",") {
	 d IFLD($p(fld,",",j),j)
 }
 d ADDFLD
 q
ADDFLD ; Добавочные поля
 n o,i
 s o=##class(%ResultSet).%New("sys.AddFld:ListFld")
 d o.Execute(task,ClsName,nam)
 while o.Next() {
	 d IFLD(o.Get("Name"),$i(i),1)
 }
 d o.Close()
 q
IFLD(Fld,Pos,Typ) ; Очередное свойство
 n o,id,val,i
 s Typ=$g(Typ,0)
 s @prop@(Typ,Pos)=Fld
 s id=ClsName_"||"_Fld
 s o=##class(%Dictionary.CompiledProperty).%OpenId(id)
 s val=o.Description
 s:val="" val=Fld
 s @prop@(Typ,Pos,"Tit")=val
 s val=o.Type
 s @prop@(Typ,Pos,"Typ")=val
 s val=##class(sys.FldCls).GetCls(task,ClsName,nam)
 s:val'="" @prop@(Typ,Pos,"Class")=val
 d o.%Close()
 q:Typ'=0 0
 q:Pos'= 1   0 
 d:slvtyp SLVTYP
 s fndtyp=$$FndTyp
 q
SLVTYP ; Для справочника
 n fld
 s fld="Name"
 s:Fld="Name" fld="Code"
 d IFLD(fld, 1 , 1 )
 q
FndTyp() ; Тип поиска
 n typ
 q:$d(@prop@(Typ,Pos,"Class"))  0 
 s typ=@prop@(Typ,Pos,"Typ")
 q:typ="%Library.Integer"  2 
 q:typ="%Library.Date"  2 
 q  1 
FIRSTIN ; Первый индекс
 &html<<table cellpadding="2" cellspacing="0" border="0" >>
 &html<<tr>>
 &html<<td>Индексы>
 &html<<td>>
 &html<<select name='AllInd'>>
 s first= 0 
 q:index'=""
 s index=nam
 q
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
07.07.2008, 08:48
    #35414045
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
требуется Ведущий разработчик Cache (Москва)
Решение тестового задания я так и не нашел... Но повторяю, все мои "трудности" начались именно после озвучивания моих "притязаний".
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
10.07.2008, 04:30
    #35421914
non-alexandro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
требуется Ведущий разработчик Cache (Москва)
Странно что вообще 50т.р. предложили....
...
Рейтинг: 0 / 0
10.07.2008, 05:43
    #35421932
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
требуется Ведущий разработчик Cache (Москва)
Код не нравится, как и 99% кода на каше, но в чем особый криминал, не вижу.

Тем более без постановки задачи вообще не могу оценить, наскольно он плох или хорош.
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / требуется Ведущий разработчик Cache (Москва) / 25 сообщений из 76, страница 1 из 4
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]