powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / требуется Ведущий разработчик Cache (Москва)
25 сообщений из 76, страница 1 из 4
требуется Ведущий разработчик Cache (Москва)
    #35394814
hr_letograf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Компания ЛЕТОГРАФ (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
требуется Ведущий разработчик Cache (Москва)
    #35394900
Фотография С0ВЕСТЬ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
млин и сюда уже лезут, имейте совесть!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Код: 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
требуется Ведущий разработчик Cache (Москва)
    #35414045
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решение тестового задания я так и не нашел... Но повторяю, все мои "трудности" начались именно после озвучивания моих "притязаний".
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
требуется Ведущий разработчик Cache (Москва)
    #35421914
non-alexandro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Странно что вообще 50т.р. предложили....
...
Рейтинг: 0 / 0
требуется Ведущий разработчик Cache (Москва)
    #35421932
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код не нравится, как и 99% кода на каше, но в чем особый криминал, не вижу.

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


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