Нанимаем программиста 1С – "прыжок веры" или грамотный набор

18.01.21

Функциональные - Управление персоналом (HRM)

Мы перестали смотреть резюме программистов 1С, описание их достижений, их сертификаты. Используем только цифры, накладывая результат теоретического собеседования на нашу шкалу квалификации программистов 1С. Благодаря этому, мы точно можем определить кто он: junior, middle или senior, – рассказывает генеральный директор ООО «КРОН» Ранис Усманов. На полях INFOSTART MEETUP Kazan он поделился секретами подбора 1С-программистов и примерами задач, которые упростят подбор сотрудников.

 

 

Я в сфере 1С более 10 лет. Работал в качестве разработчика, руководителя проекта. Также являюсь сертифицированным преподавателем и автором сертифицированного курса от фирмы 1С. Последние 4 года активно занимаюсь обучением и подбором персонала.

Сегодня я расскажу о подборе персонала, вариантах собеседования и классификации программистов 1С. Покажу таблицу квалификации 1С-разработчиков и приведу пару вариантов теоретического собеседования и задач на практику.

 

Технический долг

Перед тем, как начать, хотел бы акцентировать внимание на таком термине, как «технический долг».

Технический долг – метафора, которая служит единицей измерения. Технический долг измеряет стоимость дальнейшего сопровождения после внедрения или разработки. Мы пытаемся оценить, сколько будет стоить исправление ошибок после разработки.

Если говорить о термине технического долга, то это касается не только программистов, но и всей команды, участвующей в разработке или внедрении: руководителя проекта, консультантов, аналитиков, не стоит исключать и самих заказчиков. Но я акцентирую внимание только на программистах.

 

 

Вот несколько примеров, когда возникает технический долг, который может привести к потере нескольких миллионов и более.

  • Самый простой пример, который я встретил недавно: нашему клиенту нужно было внедрить отраслевое решение и разработать подсистему производственного учета. Клиент привлек консалтинговую компанию с очень хорошим опытом внедрения именно этого отраслевого решения и разработки производственного учета. У этой компании были успешные проекты, положительные отзывы, но после внедрения отраслевого решения и разработки подсистемы компании-клиенту пришлось использовать свой штат программистов и привлекать нас как ресурсный центр, чтобы исправить ошибки, допущенные при внедрении и разработке. Ошибки были допущены из-за того, что сама эта консалтинговая компания привлекала команду, состоящую из разработчиков уровня middle. Чуть позже я расскажу об этой классификации. Из-за такого уровня у разработчиков были пробелы в знаниях, они принимали неправильные решения, допускали ошибки в алгоритмах, оптимизации и в самой архитектуре. Нам понадобилось полгода, чтобы все это исправить. В итоге технический долг составил 50% от стоимости внедрения. Само внедрение стоило порядка 10-12 млн и около 5 млн компании потребовалось, чтобы все исправить.

  • Но технический долг возникает не только при внедрении, но и при сопровождении. У другого нашего клиента был штат программистов, состоящий из разработчиков уровней junior и senior. Junior – разработчики начинающие, из-за пробелов в знаниях они тоже совершают ошибки: в оптимизации, алгоритмах, изначально неправильно выстраивают архитектуру. Ошибки возникают, а бизнес все время развивается и ставит новые задачи, поэтому разработчики использовали метод «костыльного программирования». То есть быстренько вставляли какое-то исправление, но в дальнейшем этим «костылем» здесь правили, а в другом месте ломали. Все это набиралось, как снежный ком, технический долг рос, в итоге компания за три года привлекла дополнительно себе в штат еще три программиста. Им приходилось ежегодно принимать по одному программисту дополнительно, потому что штат не справлялся с техническим долгом, команда не успевала масштабировать программу и исправлять ошибки. ФОТ каждого разработчика в год составлял порядка 1 млн. В итоге за три года компания себе нагенерировала 3 млн убытков.

Чтобы исключить возникновение технического долга, в первую очередь стоит акцентировать внимание на подборе персонала. Именно в этот момент мы определяем, какой будет стоимость технического долга, каким будет ее процентное соотношение к полной стоимости разработки.

Сам технический долг, конечно, будет всегда. Всегда будут ошибки, которые нужно исправлять. Все, что мы можем сделать – привести технический долг к минимальному проценту, чтобы свести к минимуму необходимость исправления ошибки.

Итак, мы определились: для уменьшения технического долга нужно правильно, более качественно подбирать персонал. Давайте попробуем рассмотреть, какие у нас бывают варианты собеседования. Их много, но я выбрал порядка шести.

 

Первый вид собеседования – «Чем ты занимался на прошлой работе»

 

 

Мне такой вид собеседования, когда мы спрашиваем человека, чем он может гордиться, больше всего нравится. Здесь есть плюсы.

  • От кандидата мы можем получить информацию о том, чем он занимался, в каких проектах участвовал, какие механизмы знает, какие достижения у него есть.

  • Мы получаем картину о самом человеке.

На этом плюсы заканчиваются, и начинаются минусы.

  • Первый минус – все врут. Вам может попасться кандидат, который с три короба наврет о своих достижениях и знаниях. В принципе, он может даже присвоить себе достижения другого разработчика и исказить информацию о своих навыках.

  • Второй вариант – вы можете столкнуться с «партизаном». У человека при работе может быть хорошая коммуникация, он хороший разработчик, но на собеседовании он скукоживается и не может выдать информацию о своих навыках и достижениях. Частенько разработчики почему-то стесняются рассказать, какими знаниями обладают.

Все в целом приводит к тому, что мы не получаем подлинную и полную информацию о навыках разработчика.

 

Следующий вариант – закрытый тест

 

 

Закрытый тест включает в себя следующее: дается вопрос и несколько вариантов ответа. Разработчику нужно выбрать правильный вариант.

Этот вид мне тоже нравится, он дает хороший плюс для работодателя.

  • Он очень удобен: когда мы даем разработчику тест, мы не тратим время на собеседование. Время тратится только на то, чтобы проверить результаты. Тем более, если тест автоматизирован, мы можем в два клика посмотреть, что он знает, что не знает.

На этом плюсы заканчиваются. И есть минусы.

  • Этот тест удобен самому кандидату. Если он не знает ответа на вопрос, у него есть вариант воспользоваться методом «научного тыка». Вполне возможно, что он просто угадает правильный ответ. Тогда у нас тоже искажается информация.

  • Следующее: частенько видел такое, что когда задавали вопросы, в самом же вопросе был и ответ. Нужно очень грамотно подходить к составлению вопросов и ответов, потому что мы можем сами подсказать кандидату.

  • Также есть примеры, когда разработчик ошибся – перенервничал или засомневался. В случае закрытого теста мы не сможем задать ему дополнительные вопросы, чтобы удостовериться, знает ли он ответ.

  • Ни в коем случае не стоит использовать вопросы из экзамена на сертификат «1С:Профессионал». По той причине, что «1С:Профессионал» уже умудряются сдавать специалисты на уровне junior, которые прошли какой-то курс или прочли книжку Радченко для начинающих программистов. В дальнейшем они просто зазубривают вопросы экзамена и их ответы: все это есть в открытом доступе, даже на сайте самой фирмы «1С». Я сам сдал экзамен «1С:Профессионал» по платформе меньше чем за минуту со 100% правильными ответами, так что судите сами.

 

Следующий вариант – практическая задача

 

 

Вариант проверить разработчика на решении практической задачи мне очень нравится, я сам его использую.

  • Мы можем проверить разработчика по определенным навыкам программирования, может ли он выполнять подобные задачи. Например, если нас интересует, умеет ли программист выполнять алгоритм метода списания по ФИФО, мы можем в этом удостовериться.

  • Плюс ко всему мы можем посмотреть его синтаксис, насколько грамотно он пишет.

На этом плюсы заканчиваются и начинаются минусы.

  • Невозможно создать практическое задание, которое будет охватывать все возможности платформы 1С. То есть, создать можно, но тогда кандидату понадобится минимум 3-4 дня, чтобы решить все эти задачи. Ни один кандидат под этим не подпишется.

  • Второй момент – если разработчику дали на дом выполнение задачи, мы уже не можем гарантировать, что это сделал именно он, не используя дополнительные ресурсы. Частенько бывает, что когда я спрашиваю у кандидата: «А ты вообще как программируешь?», он отвечает: «Да я просто на Инфостарт лезу». Очень много примеров, готовых решений и так далее. Есть такие программисты, которые по четыре года могут программировать за счет Инфостарта и уже, наверное, должны процент откидывать.

Получается, что использовать в собеседовании практическую задачу мы можем только для того, чтобы закрепить свое решение. Но чтобы проверить знания по платформе, мы должны использовать больше теоретические вопросы, это происходит быстрее – больше вопросов можно задать.

 

Следующий вариант – показать пример программного кода

 

 

Когда мы просим разработчика показать пример программного кода, есть плюсы:

  • мы не заморачиваемся на вопросах, какое бы задание дать, и мы в принципе можем не уметь программировать, а отдать результат на проверку программисту;

  • мы можем посмотреть чистоту программного кода, качество написания, мышления, синтаксис.

На этом плюсы заканчиваются и начинаются минусы.

  • Есть так называемая «помощь зала». В моей практике было такое, что 3-4 разработчика чтобы пройти собеседование использовали мою обработку.

  • И не надо думать, что он потом, когда ему придется работать самому, как-то включит мозг. Программисту на самом деле глубоко плевать, его главная задача – устроиться к вам на работу. Слабые и средние специалисты, как правило, не идут в компанию, где будут единственными программистами: на этой позиции все сразу будет видно. Они идут к работодателям, у которых уже есть команда разработчиков, среди которых можно затеряться.

В целом, вариант «Показать программный код» – сомнительный вариант, не люблю его использовать, потому что мы не получим точной информации о навыках разработчика.

 

Открытый тест – задается вопрос, надо ответить «своими словами»

 

 

При собеседовании методом «Открытого теста» разработчику приходится отвечать в открытой форме: устно или письменно.

Плюсы этого варианта в том, что:

  • мы можем анализировать ответы кандидата, при необходимости уточнять какие-то задачи, дополнительно задавать вопросы – в принципе, 50-60 вопросов хватает, чтобы проверить программиста полностью, получить полную информацию;

  • когда у кандидата нет вариантов ответа, он не может угадать ответ, если не знает вопроса;

  • поэтому по сравнению с другими вариантами собеседования мы получаем подлинную информацию о знаниях и навыках кандидата именно по платформе 1С.

Минусы:

  • Чтобы составить вопросы, а тем более – проверять, необходимо самому иметь очень хорошие навыки программирования.

  • При таком собеседовании приходится затрачивать очень большое количество времени на каждого кандидата. До того, как я начал использовать собственный сервис, я тратил на каждого кандидата около часа. Но когда вам очень нужны разработчики, приходится собеседовать по 5-6 человек в день – на это уходит весь рабочий день.

 

Выявим самое полезное с возможностью проверки знаний

 

 

Итак, выведем основные методы проверки знаний из тех вариантов, которые я назвал.

  • Закрытый тест я выбираю в первую очередь за быстроту проверки – на него затрачивается минимальное количество времени, а для руководителя это очень важно.

  • Второе – практическая задача, потому что мы можем проверить синтаксис разработчика, грамотность программирования и качество программного кода.

  • Третье – открытый тест. Я его выбираю, потому что мы можем полностью проверить всю карту знаний разработчика, получить более полную информацию.

Лично у меня получилось совместить закрытый тест с открытым. Сначала я использую открытый тест – проверяю разработчика через теорию. Если здесь все хорошо, то следующей идет практическая задача, просто уже для закрепления и окончательного решения о том, что я беру специалиста на работу.

 

Квалификация программистов

Итак, мы рассмотрели варианты собеседования, и я употреблял такие термины как middle, senior. Это такие уровни квалификации программистов 1С, давайте немножко поговорим о них.

 

 

Такие понятия как junior, middle, senior в 1С особо не использовались, это обычное явление для программистов Java, C#, PHP, C++. В 1С это только начало входить в обиход, сам я такие понятия начал использовать года два назад. И у самой фирмы «1С» появился экзамен 1С:Junior.

Если говорить о классификации. Junior – начинающий программист, который максимум изучил какой-то курс или прочел книгу для начинающих. У него нет опыта программирования и 1С он в глаза пару раз видел, по сути. Программист такого уровня в принципе подойдет для обновления типовых конфигураций, несильно доработанных конфигураций, может вносить незначительные изменения в печатные формы, внешние обработки создавать. В принципе, может администрировать пользователей, права давать, но не более того.

Далее идет уровень junior-middle. Это уже разработчик получше, чем junior. Он обладает навыками в оперативном учете, умеет уже немного сам создавать отчеты, используя СКД – это будут самые простые отчеты – управляемые формы немножко знает и немного знаком с отладчиком, но на самом деле не умеет как следует им пользоваться, как показывает опыт. Тем не менее, он уже молодец.

Далее middle-разработчики, среднячки. Эти программисты уже точно знают, что такое отладчик, и умеют им пользоваться. Они уже умеют работать в оперативном учете, могут решать бухгалтерские задачи, умеют с обменами что-то делать, например, уже знают конфигурацию конвертации данных, но максимум могут 1 к 1 выгружать данные. Какие-то более сложные алгоритмы – например, из одного объекта выгрузить в другой – они уже не смогут осилить.

Middle-разработчиков на самом деле можно нанимать, нужно. Но нужно еще и качественно делать отбор, потому что у всех знания разнятся: кто-то силен в одном, кто-то – в другом. Надо очень много времени потратить, чтобы понять, подходит вам этот разработчик или нет. Даже если вы немножко ошибетесь, стоимость технического долга может составить все 100%, а то и более.

Большое количество разработчиков на рынке – уровня middle, около 40%. У них куча пробелов, это приводит к возникновению технического долга. Например, он изучил оперативные запросы: настолько, насколько столкнулся с этой задачей, настолько и изучил. Из-за этого скорость разработки у них то быстрее, то медленнее, ведь при решении задачи им приходится изучать сам механизм. Из-за сжатых сроков и необходимости изучать новые механизмы они не смотрят на качество кода, на оптимальность и не программируют по стилистике типовых конфигураций 1С.

Далее идет уровень middle-senior, это разработчик поинтереснее. Если такого разработчика увидите, я его рекомендую уже брать. Потому что они уже имеют хорошие навыки в оперативном учете, пишут хорошие запросы, отслеживают оптимальность программного кода, за качеством следят, стилистику типовых конфигураций повторяют, очень хорошо знают обмены, бухгалтерские, оперативные задачи могут решать хорошо. В целом они уже могут претендовать на должность ведущего разработчика, и их можно оставлять как полноценную единицу. Даешь ему задачу – он сам ее решит, не надо особо помогать и присматривать за ним.

Остаются senior’ы. Это уже ведущие разработчики, пробелов в знаниях у них уже практически нет. Единственное, там есть расчетные задачи и XDTO-пакеты – те объекты, которые очень редко используются. Даже если у вас есть, к примеру, «Зарплата», очень мала вероятность, что вы там будете регистры расчетов или планы видов расчета дорабатывать – обычно этим никто не занимается уже.

Если senior сталкивается с новым механизмом – он его быстро изучает, благодаря своим знаниям, навыкам, и опыту, на работе это не отражается. Им принципиально важно, чтобы их код был качественным, оптимальным, они программируют только по стилистике программного кода 1С. Какие у них минусы? На рынке их реально очень мало. Они стоят хороших денег: например, в Москве разработчик такого уровня зарабатывает от 200 тыс. рублей и более – это на руки. Главный «косяк» в том, что они знают: их мало, и они действительно дорого стоят. Пытаться сбивать ценник бесполезно, уйдут сразу.

 

Шкала квалификации кандидатов

Теперь давайте посмотрим саму таблицу квалификации. Статистику я собирал, собеседуя программистов 1С с января по февраль. Собеседовал где-то 1233 кандидата. Таблица разбита по квалификациям, категориям вопросов. У меня здесь есть цифры – средний балл от 1 до 10 по каждой категории вопросов и классификации программистов 1С, которых набирали. И еще здесь вот такая «детская раскраска».

 

 

Слева внизу указано общее количество разработчиков и процентное соотношение программистов на рынке. Junior’ов у нас 46,72%, junior-middle – 12,41%, middle – 23,36%, middle-senior – 13,87%, senior – всего 3,65%.

Чтобы не портить статистику и привлечь всех кандидатов, я не ограничиваю зарплаты, предлагаю сразу «максималку». Учитывайте период исследования – зиму – здесь немножко коэффициенты меняются. Зима – это мертвый период для набора программистов. Потому что те же самые senior’ы заняты на проектах и пока работу не ищут. Если осенью или весной их собирать, происходит целый парад резюме, и нужно только успеть забрать специалиста, прежде чем кто-то другой его наймет.

Осенняя статистика немного приятнее. Там middl’ы составляют действительно 40%, senior’ы – 5-6%, но это максимально то, что есть на рынке. Есть еще теория математики, которая подтверждает, что сильных специалистов на рынке всегда 5-6%. Название теории не помню, извините.

Теперь по шкале квалификации. Если мы посмотрим junior’ов, у них все «красное». Они только познакомились с механизмами, где-то что-то прочли, у них нет знаний, либо они поверхностные. Упаси Господь подключать их на какую-то сложную разработку. Когда я был на уровне junior, меня работодатель отправил доработать какую-то конфигурацию: три недели потом ходил исправлял.

Junior-middle – мы видим, что они поизучали книжки и четко знают, что такое функциональные опции. Они знают какие-то общие объекты, чуть-чуть умеют пользоваться запросами СКД, знакомы с управляемыми формами и набирают по этому показателю средний балл, знают сами оперативные учеты.

У уровня middl’ов уже все поинтереснее, баллов собирается побольше. Они уже знают бухгалтерские задачи, наконец-то понимают, что такое модуль менеджера. На самом деле, многие разработчики понятия не имеют, что это за модуль, и что в нем есть хорошего. Они знают уже о «Конвертации данных» и начинают решать самые простые задачи. Но, например, выгрузить регистр сведений, чтобы он загрузился как справочник, большинство из них уже не сможет.

Дальше идет middle-senior, здесь у него уже все прекрасно по оперативному учету, по общим объектам. Он уже хорошо разбирается в клиент-серверном взаимодействии, например, общие модули те же самые: многие разработчики не знают, зачем эти галочки нужны и как их правильно проставить. Это, конечно, громко сказано, но, тем не менее, это один из механизмов. Хорошо знают управляемые формы, уже работали с RLS’ом, в СКД’шке хорошо отчеты пишут – это значит, что более сложные отчеты уже могут делать.

И, наконец, senior’ы – практически все «зеленое». Единственные пробелы – планы обмена, расчетные задачи, XDTO-пакеты. Планы обмена и XDTO-пакеты действительно редко встречаются, и только 20% senior’ов имели очень хороший опыт разработки обмена между конфигурациями, используя планы обмена и понимали, как это работает. Большинство останавливается на том, что есть некая БСП’шка, которая в принципе помогает, а как именно это работает – они понятия не имеют. Если дать им задачу, например, обмена с сайтом, где БСП уже не помогает, нужно использовать планы обмена – они уже начинают проседать.

Тем не менее, программисты уровня senior все это быстро изучают. Например, те же самые XDTO-пакеты. Скажем так, если я знал «КД 2.0» и XDTO-пакеты, а мне дают задачу по «КД 3.0»: это совсем другая конфигурация, и там для того, чтобы делать обмены, нужно знать XDTO-пакеты. Мне понадобилось 2-3 часа, чтобы изучить и приступить к выполнению задачи. По срокам я уложился вовремя.

 

Примеры вопросов для собеседования программистов 1С

Как я и сказал, задаю 50-60 вопросов, у меня их несколько пакетов. Но выделю несколько вариантов.

 

 

Например, по регистрам расчетов – бухгалтерская задача.

Задача 1. Есть два счета, у обоих есть субконто: «Склад» и «Номенклатура». Но у одного субконто1 – это склад, а другого – «Номенклатура». Как сделать, чтобы при получении данных из виртуальной таблицы «Остатки» у нас субконто1 = склад, а субконто2 = номенклатура в независимости от счета.

Интересно, что многие даже на уровне senior не могут решить эту задачу. На самом деле, все просто. В виртуальной таблице есть параметр – «Вид субконто». Там передается массив или список значений, с типом плана значений передается план видов характеристик.

Задача 2. Мы обратились к физической таблице регистра накопления. У него есть регистратор, регистратор составного типа. Надо отобрать записи, у которых регистратор является документом «Поступление товаров», далее из отобранных записей необходимо из регистратора вытащить реквизит «Склад». Так, чтобы было оптимально. Как это сделать?

Большинство разработчиков говорят: «Слушай, а почему это не измерение? Это неоптимально, ты вообще неправильную задачу дал». Бывает такое. На самом деле, и тут все просто. В условие «Где» ставим конструкцию «Ссылка», «Поступление товаров и услуг». И второе, используем метод «Выразить», приводим к определенному типу «Поступление товаров» и потом вытаскиваем реквизит «Склад».

Частенько к этой задаче даю дополнительный вопрос. Если человек сказал, что использует метод «Выразить», я спрашиваю: «А почему?».

 

 

Следующее и последнее – практическая задача. Обожаю ее, потому что она быстренько выявляет, кто перед нами: middle или senior. Разработчики уровня middle эту задачу 100% решат. Но решат не с первого раза, и потратят на это от 40 до 60 минут.

Senior решит эту задачу за 5-15 минут максимум, с первого раза. Я даю эту задачу и прошу написать текст запроса, не используя отладчик. Проверяю, человек действительно писал хорошо запросы или нет. Формирует ли он в голове, что происходит с таблицей, когда мы группируем, связь делаем и так далее.

Суть задачи следующая: дается старая таблица и новая таблица значений.

 

 

Вариантов решения много: 3-4, и один из них наиболее оптимальный. Ни один middle не решил мне эту задачу за 10-15 минут.

На этом у меня все, всем огромное спасибо!

 

*************

Данная статья написана по итогам доклада (видео), прочитанного на INFOSTART MEETUP Kazan.

См. также

Типовые Управление персоналом (HRM) Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет Управленческий учет Платные (руб)

1С:Зарплата и управление персоналом 8 – программа для полной автоматизация учета и управления сотрудниками на предприятии. Базовая, КОРП и ПРОФ версии. Возвращаем до 15% бонусами! Заказывайте 1С:ЗУП в Инфостарте!

9100 руб.

17.02.2016    164069    531    6    

397

Управление персоналом (HRM) Бухгалтер Платформа 1С v8.3 1С:Зарплата и кадры бюджетного учреждения 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Набор актуальных на 2024 год форм бланков для ведения миграционного учёта по иностранным работникам в «1С:Зарплата и Управление Персоналом 8», «1С:Бухгалтерия 8», «1С:ERP 8», «1С:КА 8» и других конфигураций 1С.

116820 руб.

06.02.2012    126778    75    87    

140

Управление персоналом (HRM) Бухгалтер Пользователь Платформа 1С v8.3 Россия Бухгалтерский учет Управленческий учет Платные (руб)

1С-КАМИН: Зарплата. Решение предназначено для автоматизации расчета и начисления зарплаты, а также для ведения кадрового учета на предприятиях и в организациях любых форм собственности, кроме бюджетных учреждений. Продукт "1С-КАМИН: Зарплата для бюджетных учреждений. Версия 5.5" предназначен для автоматизации расчета и начисления заработной платы, а также для ведения кадрового учета в государственных и муниципальных организациях, в том числе в учреждениях образования, здравоохранения, а также в учреждениях, относящихся к вооруженным силам Российской Федерации, к органам МВД и МЧС.

4000 руб.

17.02.2016    40504    5    0    

5

Управление персоналом (HRM) Пользователь Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Абонемент ($m)

Отчет формирует актуальный список сотрудников на указанную дату и для каждого из сотрудников выводит указанный в параметрах отчета показатель.

1 стартмани

16.07.2024    438    1    svbel85    0    

0

Управление персоналом (HRM) Пользователь Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данной статье мы рассмотрим сроки по выполнению адаптации, опрос по адаптации и ответственных за адаптацию в программе 1С: Персонал.

12.07.2024    792    Koder_Line    0    

1

Управление персоналом (HRM) Пользователь Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Бесплатно (free)

В данной статье мы рассмотрим создание и оформление оргструктуры компании и штатное расписание в программе 1С: Персонал.

24.06.2024    986    Koder_Line    3    

0

Управление персоналом (HRM) Пользователь Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Бесплатно (free)

В данной статье будет описано то, как именно вести организационную структуру предприятия внутри подсистемы «1С: Предприятие Персонал». Будет рассказано о том, какие разделы важны и для чего используются при оформлении и контроле оргструктуры компании внутри системы 1С.

19.06.2024    931    Koder_Line    0    

1

Управление персоналом (HRM) Пользователь Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данной статье будет описано то, как внутри системы «1С:Предприятие Персонал» можно проводить анкетирование и опросы сотрудников. А именно, будут разобраны все этапы: как готовить вопросы к таким тестированиям, как создавать и редактировать сами анкеты и передавать их опрашиваемым, а также то, как происходит анализ результатов и само тестирование.

23.04.2024    1187    Koder_Line    0    

1
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. user1502754 19.01.21 09:39 Сейчас в теме
Т.е. автор вешал кандидатам лапшу на уши, что он работодатель, а сам исследования проводил
dsv_nsk; SergeyTerentyev; hmmalexis; pvlunegov; SoulPower; Andreeei; user1467586; wolfsoft; Sungang; d_bat; JohnConnor; NorraSaltolinen; +12 Ответить
82. teller 26.01.21 06:04 Сейчас в теме
(1) если это ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ "КРОН" инн 9729280673 с уставным 10 тыр среднесписочной за 2019г 6 чел и выручкой за 2019 г 24 млн.руб - то доклад выглядит внушительно , требования к соискателям обоснованы , хотя америки не открыто
hmmalexis; +1 Ответить
2. Sungang 60 19.01.21 12:36 Сейчас в теме
У меня такой запрос получился:
ВЫБРАТЬ
	Таб1.Накладная КАК Накладная,
	Таб1.Платежка КАК Платежка,
	Таб1.Сумма КАК Сумма
ПОМЕСТИТЬ ВТ1
ИЗ
	&Т1 КАК Таб1
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Таб2.Накладная КАК Накладная,
	Таб2.Платежка КАК Платежка,
	Таб2.Сумма КАК Сумма
ПОМЕСТИТЬ ВТ2
ИЗ
	&Т2 КАК Таб2
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ1.Накладная КАК Накладная,
	ВТ1.Платежка КАК Платежка,
	ВТ2.Сумма КАК Сумма
ПОМЕСТИТЬ ПлатежкиРавны
ИЗ
	ВТ1 КАК ВТ1
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ2 КАК ВТ2
		ПО ВТ1.Накладная = ВТ2.Накладная
			И ВТ1.Платежка = ВТ2.Платежка
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ1.Накладная КАК Накладная,
	ВТ1.Платежка КАК Платежка,
	ВТ1.Сумма КАК Сумма
ПОМЕСТИТЬ ПлатежкиНеРавны
ИЗ
	ВТ1 КАК ВТ1
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ2 КАК ВТ2
		ПО ВТ1.Накладная = ВТ2.Накладная
			И ВТ1.Платежка <> ВТ2.Платежка,
	ПлатежкиРавны КАК ПлатежкиРавны

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	ВТ2.Накладная,
	ВТ2.Платежка,
	ВТ2.Сумма
ИЗ
	ВТ2 КАК ВТ2
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ1 КАК ВТ1
		ПО ВТ2.Накладная = ВТ1.Накладная
			И ВТ2.Платежка <> ВТ1.Платежка
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ПлатежкиНеРавны.Накладная КАК Накладная,
	ПлатежкиНеРавны.Платежка КАК Платежка,
	ПлатежкиНеРавны.Сумма КАК Сумма
ПОМЕСТИТЬ ПлатежкиНеРавныИтог
ИЗ
	ПлатежкиНеРавны КАК ПлатежкиНеРавны
		ЛЕВОЕ СОЕДИНЕНИЕ ПлатежкиРавны КАК ПлатежкиРавны
		ПО ПлатежкиНеРавны.Накладная = ПлатежкиРавны.Накладная
			И ПлатежкиНеРавны.Платежка = ПлатежкиРавны.Платежка
ГДЕ
	ПлатежкиРавны.Накладная ЕСТЬ NULL

СГРУППИРОВАТЬ ПО
	ПлатежкиНеРавны.Накладная,
	ПлатежкиНеРавны.Платежка,
	ПлатежкиНеРавны.Сумма
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ПлатежкиНеРавныИтог.Накладная КАК Накладная,
	ПлатежкиНеРавныИтог.Платежка КАК Платежка,
	ПлатежкиНеРавныИтог.Сумма КАК Сумма
ИЗ
	ПлатежкиНеРавныИтог КАК ПлатежкиНеРавныИтог

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	ПлатежкиРавны.Накладная,
	ПлатежкиРавны.Платежка,
	ПлатежкиРавны.Сумма
ИЗ
	ПлатежкиРавны КАК ПлатежкиРавны
Показать


Файл для проверки прикрепил. Ищу работу)
Прикрепленные файлы:
ЗапросSenior.epf
16. FatPanzer 20.01.21 07:52 Сейчас в теме
(2) Нет индексов во временных таблицах у полей, по которым потом осуществляешь внутреннее соединение. Пролетаешь мимо работы.
Hobbit_Jedi; +1 Ответить
18. Sungang 60 20.01.21 09:37 Сейчас в теме
(16) Как тебя на работу взяли?) Построение индекса будет занимать больше времени, чем выгода от него в данном случае.
NeLenin; user1486915; Andreeei; FesenkoA; zqzq; ZLENKO; Ks_83; +7 Ответить
51. Ambakollajder 22.01.21 09:05 Сейчас в теме
(18) На основании чего сделано предположение что в построении индекса нет выгоды?
Hobbit_Jedi; +1 Ответить
77. sulfur17 66 25.01.21 09:30 Сейчас в теме
(18) на самом деле лучше всегда индексировать, т.к. на маленьких объемах лишнее построение индекса не будет заметно. Зато если объемы данных со временем вырастут то не придется искать тормозящие переписывать запросы.
ovasiliev; Hobbit_Jedi; +2 Ответить
102. pvlunegov 158 16.03.23 16:30 Сейчас в теме
(2) слишком много временных таблиц в пакетном запросе ты наделал.
зачем столько вычислений?
достаточно 1 запроса с внешним соединением 2 таблиц
в полях запроса делать вычисления значений.

У меня получилось 3 запроса в пакетном запросе.
в 1 и 2 запросе получаем данные из внешних таблиц
в 3 запросе соединяем (внешнее соединение) 2 таблицы по полю "Накладная"
в полях объявляем поле "сумма". Внутри поля делаем условия.
В Условии, если совпадают Платежки и Накладные, то берем сумму 2 таблицы, иначе первой.
Аналогичные поля "Платежка" и "Накладная". Внутри полей вычисление значений
3. Necessitudo 19.01.21 12:38 Сейчас в теме
Ох ну кем же нужно быть чтобы вешать вину в возникновении технического долга лишь на программиста.
rpgshnik; dsv_nsk; VladC#; pvlunegov; dsdred; Mizhgan42; Andreeei; sevushka; wolfsoft; A1WEB; jurix; Atticus2; zqzq; Поручик; FatPanzer; +15 Ответить
4. mysm 86 19.01.21 12:56 Сейчас в теме
Все подобные приемы подбора кандидатов совершают одну ошибку. Они проверяют имеющиеся знания/умения конкретных технологий. Но на практике программисту приходится не использовать технические знания, а искать решения среди, уже возможно, готовых вариантов. Главным становится умение добывать знание. А это не проверяет никто. Сам автор этой статьи на собеседовании с Чистовым продемонстрировал что знания, даже самые глубокие, вроде, как в таблицах СУБД хранятся константы, устаревают. И становятся ненужным мусором.
rpgshnik; Lolmes; VladC#; theelectric; SergeyTerentyev; ONLYTILT; pvlunegov; dsdred; QuirkyKot; Prad2002; Mizhgan42; Bunny; user645913_pkropp; user1486915; Hobbit_Jedi; jefjef; Andreeei; ТвояСовесть; TerveRus; Hatson; elephant_x; DEG156; Olenevod; Award; NoRazum; Inziya; botokash; wolfsoft; user1058740; Dmitryiv; Богатырев Артур; retr0; Kovekh; Nubsdale; jurix; wazup666; Atticus2; Aleks_Antonuk; d.zhukov; Поручик; GATTUSO; mostostroy-11; cosmo2004; FatPanzer; Darax; Legachi; Serg O.; +47 Ответить
57. Богатырев Артур 127 22.01.21 11:41 Сейчас в теме
(4)
Но на практике программисту приходится не использовать технические знания, а искать решения среди, уже возможно, готовых вариантов. Главным становится умение добывать знание. А это не проверяет никто. Сам автор этой статьи на собеседовании с Чистовым продемонстрировал что знания, даже самые глубокие, вроде, как в таблицах СУБД хранятся константы, устаревают. И становятся ненужным мусором.

Именно, плюсую! В реальности сегодня некоторые "супер-зубры" которые когда то изучили что нибуть на 1С 7.7. - с теми своими знаниями просто не нужны, и останутся зубрами, только если смогут изучить новое, или смогут найти среди готового.
Проверять программиста, может ли он с нуля создать внешнюю печатную форму конечно нужно, но с учетом, что умный возьмет существующую, или переделает сущетствующую.
theelectric; pvlunegov; Andreeei; DEG156; +4 Ответить
5. user1503726 19.01.21 13:18 Сейчас в теме
Рефакторинг не предлагать..
6. dimank 19.01.21 13:53 Сейчас в теме
Проходил данный тест. могу отметить как плюсы так и минусы.
Из плюсов - некоторые вопросы заставляют "встряхнуть" мозги т.к. вроде бы не очевидны, но проверяют понимание работы платформы.
Так же это довольно интересный контроль твоих Hard skills (но есть нюанс, о нем в минусах), ответы на многие вопросы довольно просты и решаются "галочками", хотя первоначально в голову взбредают идеи чуть ли не коддинга. Тест довольно не тривиальный, но некоторые вопросы вполне стандарты для собеседований (вирт таблицы остатков, как строятся и т.д.).
Из минусов - тест проверяет только твои знания "здесь и сейчас", впрочем как и любой тест, конечно, чем большими навыками, изначально, ты обладаешь, тем выше шанс вспомнить, но здесь срабатывает момент, что тест ограничен по времени (причем на каждый вопрос). Поэтому если вы, к примеру, год назад делали любые вещи как бог в СКД, а потом год варились на проекте, где вы больше архитектор, либо, в СКД, максимум программно выполняли запросы, в результате, после теста, у вас будет состояние "ааа блин точно", т.к. хватает вопросов на знание, как сделать что-то не прибегая к коддингу (особенно в СКД, поставить галочку или где то что-то поменять). Ну и само собой, тест никак не проверяет любые другие навыки - знание БСП, умение писать по стандартам, навыки в архитектуре, значение/умение в тех. экспертизе и оптимизации, и т.д. и т.п..
dsv_nsk; Mizhgan42; AlbinaAAA; user645913_pkropp; user1486915; Hobbit_Jedi; Award; Inziya; Cujoko; Kovekh; FatPanzer; BackinSoda; +12 Ответить
7. user1503726 19.01.21 14:01 Сейчас в теме
То есть изначально задача hr это передавать сотрудников из рук в руки как "горячую картошку".
Пока знания не закристаллизовались.
Единственное что мне не понятно, это откуда берутся junior, из дворников что ли? В школе, а тем более в вузе программирование вроде как есть.. какое-то.
55. Daynestro07 22.01.21 11:21 Сейчас в теме
(7) Я как человек, который сравнительно недавно закончил колледж (6 лет назад), могу сказать, что нихрена не учат. В колледже была довольно-таки неплохая практика по ООП (писали на С#) и web (PHP) и был один или два семестра, на которых было программирование на 1с (уф). И вот что я скажу - мы программировали, абсолютно не зная что и как работает. Наш преподаватель, кстати опытный программист (не в 1с), давала задачу и сразу код решения и мы его перепечатывали. И у половины людей он не работал.
shard; starik-2005; +2 Ответить
61. starik-2005 3089 22.01.21 17:36 Сейчас в теме
(55) да, в школе вообще сейчас на информатике как такового программирования нет - это алгебра больше. В колледже Вас хоть знакомили с кодом.
70. user681671_blesgron 23.01.21 23:04 Сейчас в теме
(55)Открою секрет учебников. Больше половины примеров и решений в этих задачах не работают!!! Они в себе изначально содержат ошибку. Но благодаря этим ошибкам, если в тебе есть зерно программиста/копателя. То ты найдешь самостоятельно ошибку, исправишь ее, прочитаешь дополнительную литературу. Получишь удовлетворение уровня создатель. Ты самостоятельно решил задачу и нашел ошибку у гуру преподавателя. Это классическая пасхалка от программистов программистам.
Hobbit_Jedi; +1 Ответить
8. BigClock 19.01.21 14:57 Сейчас в теме
Предложу свой вариант запроса по последней задаче

ВЫБРАТЬ
	Таблица.Накладная КАК Накладная,
	Таблица.Платежка КАК Платежка,
	Таблица.Сумма КАК Сумма
ПОМЕСТИТЬ ВТ_СтараяТаблица
ИЗ
	&СтараяТаблица КАК Таблица
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Таблица.Накладная КАК Накладная,
	Таблица.Платежка КАК Платежка,
	Таблица.Сумма КАК Сумма
ПОМЕСТИТЬ ВТ_НоваяТаблица
ИЗ
	&НоваяТаблица КАК Таблица
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Таблица.Накладная КАК Накладная,
	Таблица.Платежка КАК Платежка,
	Таблица.Сумма КАК Сумма,
	ЛОЖЬ КАК НоваяТаблица
ПОМЕСТИТЬ ВТ_ВсеСуммы
ИЗ
	ВТ_СтараяТаблица КАК Таблица

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	Таблица.Накладная,
	Таблица.Платежка,
	Таблица.Сумма,
	ИСТИНА
ИЗ
	ВТ_НоваяТаблица КАК Таблица
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
	ВТ_НоваяТаблица.Накладная КАК Накладная
ПОМЕСТИТЬ ВТ_Накладные
ИЗ
	ВТ_НоваяТаблица КАК ВТ_НоваяТаблица
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_СтараяТаблица КАК ВТ_СтараяТаблица
		ПО ВТ_НоваяТаблица.Накладная = ВТ_СтараяТаблица.Накладная
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_ВсеСуммы.Накладная КАК Накладная,
	ВТ_ВсеСуммы.Платежка КАК Платежка,
	ВТ_ВсеСуммы.Сумма КАК Сумма,
	ВТ_ВсеСуммы.НоваяТаблица КАК НоваяТаблица
ПОМЕСТИТЬ ВТ_СуммыПоНакладным
ИЗ
	ВТ_ВсеСуммы КАК ВТ_ВсеСуммы
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Накладные КАК ВТ_Накладные
		ПО ВТ_ВсеСуммы.Накладная = ВТ_Накладные.Накладная
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_СуммыПоНакладным.Накладная КАК Накладная,
	ВТ_СуммыПоНакладным.Платежка КАК Платежка,
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_СуммыПоНакладным.НоваяТаблица) КАК НоваяТаблица
ПОМЕСТИТЬ ВТ_НакладныеПлатежки
ИЗ
	ВТ_СуммыПоНакладным КАК ВТ_СуммыПоНакладным

СГРУППИРОВАТЬ ПО
	ВТ_СуммыПоНакладным.Накладная,
	ВТ_СуммыПоНакладным.Платежка

ИМЕЮЩИЕ
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_СуммыПоНакладным.НоваяТаблица) > 1
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_СуммыПоНакладным.Накладная КАК Накладная,
	ВТ_СуммыПоНакладным.Платежка КАК Платежка,
	ВТ_СуммыПоНакладным.Сумма КАК Сумма
ИЗ
	ВТ_СуммыПоНакладным КАК ВТ_СуммыПоНакладным
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_НакладныеПлатежки КАК ВТ_НакладныеПлатежки
		ПО ВТ_СуммыПоНакладным.Накладная = ВТ_НакладныеПлатежки.Накладная
			И ВТ_СуммыПоНакладным.Платежка = ВТ_НакладныеПлатежки.Платежка
			И (ВТ_СуммыПоНакладным.НоваяТаблица)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	ВТ_СуммыПоНакладным.Накладная,
	ВТ_СуммыПоНакладным.Платежка,
	ВТ_СуммыПоНакладным.Сумма
ИЗ
	ВТ_СуммыПоНакладным КАК ВТ_СуммыПоНакладным
		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_НакладныеПлатежки КАК ВТ_НакладныеПлатежки
		ПО ВТ_СуммыПоНакладным.Накладная = ВТ_НакладныеПлатежки.Накладная
			И ВТ_СуммыПоНакладным.Платежка = ВТ_НакладныеПлатежки.Платежка
ГДЕ
	ВТ_НакладныеПлатежки.Накладная ЕСТЬ NULL
Показать
9. bugagashenka 203 19.01.21 15:18 Сейчас в теме
(8)в условии без конструктора, как я понял
10. s_captain 19.01.21 18:26 Сейчас в теме
А как вам такой запрос к...

Выбор
старая.накладная как накладная,
старая.платежка как платежка,
старая.сумма как сумма
Поместить вт_старая
Из &старая_таблица как старая;

Выбор
новая.накладная как накладная,
новая.платежка как платежка,
новая.сумма как сумма
Поместить вт_новая
Из &новая_таблица как новая;

Выбор
ЕстьNULL(старая.накладная, новая.накладная) как накладная,
ЕстьNULL(старая.платежка, новая.платежка) как платежка,
ЕстьNULL(новая.сумма, старая.сумма) как сумма
Из вт_старая как старая
Полное соединение вт_новая как новая
По старая.накладная=новая.накладная
И старая.платежка=новая.платежка
Где
старая.накладная в (Выбор новая.накладная Из вт_новая как новая)
И новая.накладная в (Выбор старая.накладная Из вт_старая как старая)
2PRV; pvlunegov; tulakin_s; Sergant; Sungang; +5 Ответить
11. Sungang 60 19.01.21 20:45 Сейчас в теме
(10) Да, это гениально) работает. В условии Где "И" на "ИЛИ" только поменять.
sulfur17; +1 Ответить
12. s_captain 19.01.21 20:58 Сейчас в теме
(11) Согласен, конечно, "ИЛИ". Писал на телефоне...
20. dimank 20.01.21 09:50 Сейчас в теме
(11) а еще лучше заменить "или" на "объединить все" :)
Hobbit_Jedi; +1 Ответить
81. swimdog 773 26.01.21 01:30 Сейчас в теме
(10) Для тех, кто сомневается в результате. Мне это решение показалось самым красивым.
ВЫБРАТЬ
	"Накладная 1" КАК Накладная,
	"Платежка 1" КАК Платежка,
	500 КАК Сумма
ПОМЕСТИТЬ ВТ_Старая

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Накладная 2",
	"Платежка 2",
	300

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Накладная 3",
	"Платежка 3",
	400

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Накладная 1",
	"Платежка 4",
	1000

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Накладная 1",
	"Платежка 5",
	800

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Накладная 7",
	"Платежка 5",
	950
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	"Накладная 1" КАК Накладная,
	"Платежка 1" КАК Платежка,
	750 КАК Сумма
ПОМЕСТИТЬ ВТ_Новая

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Накладная 2",
	"Платежка 1",
	300

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Накладная 3",
	"Платежка 3",
	350

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Накладная 5",
	"Платежка 5",
	1500

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Накладная 3",
	"Платежка 5",
	1500

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Накладная 1",
	"Платежка 5",
	100
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ЕСТЬNULL(Старая.Накладная, Новая.Накладная) КАК накладная,
	ЕСТЬNULL(Старая.Платежка, Новая.Платежка) КАК платежка,
	ЕСТЬNULL(Новая.Сумма, Старая.Сумма) КАК сумма
ИЗ
	ВТ_Старая КАК Старая
		ПОЛНОЕ СОЕДИНЕНИЕ ВТ_Новая КАК Новая
		ПО (Старая.Накладная = Новая.Накладная)
			И (Старая.Платежка = Новая.Платежка)
ГДЕ
	(Старая.Накладная В
				(ВЫБРАТЬ
					новая.Накладная
				ИЗ
					вт_новая КАК новая)
			ИЛИ Новая.Накладная В
				(ВЫБРАТЬ
					старая.Накладная
				ИЗ
					вт_старая КАК старая))
Показать
2PRV; s_captain; +2 Ответить
103. pvlunegov 158 16.03.23 16:41 Сейчас в теме
(10) у меня такой же запрос получился.

Простой, понятный и быстрый.
Почему-то многие накидали пакетные запросы с огромным количеством шагов.
Видимо не понимают, что есть внешнее соединение таблиц, не умеют применять.

НЕ согласен с авторской классификацией программистов. Я по некоторым пунктам попадаю в senior. По некторым в middle/
Удивлен, что многие старшие программисты не умеют простых вещей, которые знают миддлы.

Сама классификация, предложенная в статье, в реальной жизни не работает.
В реальной жизни встречал программистов среднего уровня, которые знали узкие области работы на уровне МАСТЕРОВ.
К примеру, обмены со внешними системами, со знанием нескольких языков, типа Php, Java и др.
При этом в смежных узких областях знаний в 1с у них были навыки ниже среднего

У меня вопрос к автору.
Вот есть, к примеру, коллега. У него гигантский опыт в разных конфигурациях. Но с БП и ЗУП он работал много лет назад. Области знаний из этих конфигураций специфические и при отсутствии практики быстро выветриваются из головы. Молодой коллега спрашивает его по вопросу из ЗУП и БП. Он не отвечает. Коллега пфыкает и махает рукой на него - молодой, ничего не знает. И таких сцен я встречал много.
Оценивают коллег по определенным специфическим узким знаниям, которые быстро устаревают и становятся неактуальными.
К примеру, в БП надо постоянно быть в курсе новых законов по бухгалтерии. В ЗУП надо знать о новых нормах учета рабочего времени.
Раз полученные навыки по этим конфигурациям ничего не значат через 5-6 лет.

P.S. Совет программистам среднего уровня - проходите курсы по сдаче на специалистов.
Это поможет вам в реальной жизни, когда к вам пристают с идиотскими вопросами на знание простых задач, которые вы мало применяли.
13. jONES1979 19.01.21 21:56 Сейчас в теме
Ох ну кем же нужно быть чтобы даже презентации верстать с грамматическими ошибками.
14. LazzzyCat 20.01.21 01:30 Сейчас в теме
Как вариант решения, на народный суд :-)

ВЫБРАТЬ
	СтараяТаблица.Накладная КАК Накладная,
	СтараяТаблица.Платежка КАК Платежка,
	СтараяТаблица.Сумма КАК Сумма
ПОМЕСТИТЬ ВТ_СтараяТаблица
ИЗ
	&СтараяТаблица КАК СтараяТаблица
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	НоваяТаблица.Накладная КАК Накладная,
	НоваяТаблица.Платежка КАК Платежка,
	НоваяТаблица.Сумма КАК Сумма
ПОМЕСТИТЬ ВТ_НоваяТаблица
ИЗ
	&НоваяТаблица КАК НоваяТаблица
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_НоваяТаблица.Накладная КАК Накладная
ПОМЕСТИТЬ ВТ_Накладные
ИЗ
	ВТ_НоваяТаблица КАК ВТ_НоваяТаблица
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_СтараяТаблица КАК ВТ_СтараяТаблица
		ПО ВТ_НоваяТаблица.Накладная = ВТ_СтараяТаблица.Накладная

СГРУППИРОВАТЬ ПО
	ВТ_НоваяТаблица.Накладная
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_СтараяТаблица.Накладная КАК Накладная,
	ВТ_СтараяТаблица.Платежка КАК Платежка,
	ИСТИНА КАК СтараяПлатежка,
	ВТ_СтараяТаблица.Сумма КАК СтараяСумма,
	ЛОЖЬ КАК НоваяПлатежка,
	0 КАК НоваяСумма
ПОМЕСТИТЬ ВТ_ДетальныеЗаписи
ИЗ
	ВТ_СтараяТаблица КАК ВТ_СтараяТаблица

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	ВТ_НоваяТаблица.Накладная,
	ВТ_НоваяТаблица.Платежка,
	ЛОЖЬ,
	0,
	ИСТИНА,
	ВТ_НоваяТаблица.Сумма
ИЗ
	ВТ_НоваяТаблица КАК ВТ_НоваяТаблица
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_ДетальныеЗаписи.Накладная КАК Накладная,
	ВТ_ДетальныеЗаписи.Платежка КАК Платежка,
	МАКСИМУМ(ВТ_ДетальныеЗаписи.СтараяПлатежка) КАК СтараяПлатежка,
	СУММА(ВТ_ДетальныеЗаписи.СтараяСумма) КАК СтараяСумма,
	МАКСИМУМ(ВТ_ДетальныеЗаписи.НоваяПлатежка) КАК НоваяПлатежка,
	СУММА(ВТ_ДетальныеЗаписи.НоваяСумма) КАК НоваяСумма
ПОМЕСТИТЬ ВТ_СгруппированныеЗаписи
ИЗ
	ВТ_ДетальныеЗаписи КАК ВТ_ДетальныеЗаписи

СГРУППИРОВАТЬ ПО
	ВТ_ДетальныеЗаписи.Накладная,
	ВТ_ДетальныеЗаписи.Платежка
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_СгруппированныеЗаписи.Накладная КАК Накладная,
	ВТ_СгруппированныеЗаписи.Платежка КАК Платежка,
	ВЫБОР
		КОГДА ВТ_СгруппированныеЗаписи.НоваяПлатежка
				И ВТ_СгруппированныеЗаписи.СтараяПлатежка
			ТОГДА ВТ_СгруппированныеЗаписи.НоваяСумма
		ИНАЧЕ ВТ_СгруппированныеЗаписи.СтараяСумма + ВТ_СгруппированныеЗаписи.НоваяСумма
	КОНЕЦ КАК Сумма
ИЗ
	ВТ_СгруппированныеЗаписи КАК ВТ_СгруппированныеЗаписи
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Накладные КАК ВТ_Накладные
		ПО ВТ_СгруппированныеЗаписи.Накладная = ВТ_Накладные.Накладная
Показать
15. BackinSoda 20.01.21 02:02 Сейчас в теме
Прошёл тест для себя. Хорошие вопросы, но не всегда объективно получается так оценить. Поддержу комментарий N 6, особенно интересно как по ответам узнать про "разбор чужого кода" / БСП / умение писать по стандартам и прочее.
То чувство, когда оцениваешь себя около-сеньором, а тест говорит "чуть выше джуна" :)
84. bugagashenka 203 26.01.21 08:33 Сейчас в теме
(15) Я так и не нашел бесплатного пробника. Ну чисто так, интереса ради
90. BackinSoda 26.01.21 11:38 Сейчас в теме
(84) Я тоже, пришлось купить ))
17. AlexeyIsip 26 20.01.21 08:47 Сейчас в теме
У меня вот такой запрос получился
ВЫБРАТЬ
	ЕСТЬNULL(НоваяТаблица.Накладная, СтараяТаблица.Накладная) КАК Накладная,
	ЕСТЬNULL(НоваяТаблица.Платежка, СтараяТаблица.Платежка) КАК Платежка,
 	ЕСТЬNULL(НоваяТаблица.Сумма, СтараяТаблица.Сумма) КАК Сумма
ИЗ
	РегистрСведений.СтараяТаблица КАК СтараяТаблица
		ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.НоваяТаблица КАК НоваяТаблица
		ПО (НоваяТаблица.Накладная = СтараяТаблица.Накладная)
			И (НоваяТаблица.Платежка = СтараяТаблица.Платежка)
ГДЕ
	ЕСТЬNULL(НоваяТаблица.Накладная, СтараяТаблица.Накладная) В
			(ВЫБРАТЬ
				НоваяТаблица.Накладная
			ИЗ
				РегистрСведений.СтараяТаблица КАК СтараяТаблица
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НоваяТаблица КАК НоваяТаблица
					ПО
						НоваяТаблица.Накладная = СтараяТаблица.Накладная)
Показать
97. user1374561 10.09.21 09:56 Сейчас в теме
мне кажется условие где лишнее, отсекаются нужные записи, у меня с Вашим запросом получилось корректно без условия ГДЕ
19. Поручик 4692 20.01.21 09:41 Сейчас в теме
Я тоже очень часто просто на Инфостарт или в гугл лезу. И чо теперь?
Rollam; NeLenin; elephant_x; DEG156; Азверин; d.zhukov; +6 Ответить
30. Ks_83 259 20.01.21 21:45 Сейчас в теме
(19) Теперь в крон на целых 120 тыщ в месяц тебя не возьмут. Обтекай.
kuzyara; Vova_Di; Rollam; NeLenin; elga2012; elephant_x; d_bat; +7 Ответить
21. user1312237 20.01.21 11:05 Сейчас в теме
ВЫБРАТЬ  // Получаем старую таблицу
	             	пСтараяТаблица.Накладная КАК Накладная,
	             	пСтараяТаблица.Платежка КАК Платежка,
	             	пСтараяТаблица.Сумма КАК Сумма
	             ПОМЕСТИТЬ СтараяТаблица
	             ИЗ
	             	&СтараяТаблица КАК пСтараяТаблица
	             ;
	             
	             ////////////////////////////////////////////////////////////­////////////////////
	             ВЫБРАТЬ  // Получаем новую таблицу
	             	пНоваяТаблица.Накладная КАК Накладная,
	             	пНоваяТаблица.Платежка КАК Платежка,
	             	пНоваяТаблица.Сумма КАК Сумма
	             ПОМЕСТИТЬ НоваяТаблица
	             ИЗ
	             	&НоваяТаблица КАК пНоваяТаблица
	             ;
	             
	             ////////////////////////////////////////////////////////////­////////////////////
	             ВЫБРАТЬ // Отбираем общие накладные, строки только с такими накладными нам нужны в результат
	             	НоваяТаблица.Накладная КАК Накладная
	             ПОМЕСТИТЬ СовместныеНакладные
	             ИЗ
	             	НоваяТаблица КАК НоваяТаблица
	             		ВНУТРЕННЕЕ СОЕДИНЕНИЕ СтараяТаблица КАК СтараяТаблица
	             		ПО (СтараяТаблица.Накладная = НоваяТаблица.Накладная)
	             
	             СГРУППИРОВАТЬ ПО
	             	НоваяТаблица.Накладная
	             ;
	             
	             ////////////////////////////////////////////////////////////­////////////////////
	             ВЫБРАТЬ // Сразу получаем строки, которые пересекаются - когда из 2х таблиц мы выбираем одну из двух строк
	             	НоваяТаблица.Накладная КАК Накладная,
	             	НоваяТаблица.Платежка КАК Платежка,
	             	НоваяТаблица.Сумма КАК Сумма
	             ПОМЕСТИТЬ РезультатВарианта_2_1
	             ИЗ
	             	СтараяТаблица КАК СтараяТаблица
	             		ВНУТРЕННЕЕ СОЕДИНЕНИЕ НоваяТаблица КАК НоваяТаблица
	             		ПО СтараяТаблица.Накладная = НоваяТаблица.Накладная
	             			И СтараяТаблица.Платежка = НоваяТаблица.Платежка
	             ;
	             
	             ////////////////////////////////////////////////////////////­////////////////////
	             ВЫБРАТЬ  // Берем строки из новой таблицы с общими измерениями Номенклатура\Платежка в результат
	             	"Вариант 2.1" КАК ВидРезультата,
	             	РезультатВарианта_2_1.Накладная КАК Накладная,
	             	РезультатВарианта_2_1.Платежка КАК Платежка,
	             	РезультатВарианта_2_1.Сумма КАК Сумма
	             ИЗ
	             	РезультатВарианта_2_1 КАК РезультатВарианта_2_1
	             
	             ОБЪЕДИНИТЬ ВСЕ
	             
	             ВЫБРАТЬ // Из старой таблицы выбираем строки с общими накладными, кроме строк уже выбранных ранее, и добавляем их в результат
	             	"Вариант 2.2 СТАРАЯ",
	             	СтараяТаблица.Накладная,
	             	СтараяТаблица.Платежка,
	             	СтараяТаблица.Сумма
	             ИЗ
	             	СтараяТаблица КАК СтараяТаблица
	             ГДЕ
	             	СтараяТаблица.Накладная В
	             			(ВЫБРАТЬ
	             				СовместныеНакладные.Накладная
	             			ИЗ
	             				СовместныеНакладные)
	             	И НЕ (СтараяТаблица.Накладная, СтараяТаблица.Платежка) В
	             				(ВЫБРАТЬ
	             					РезультатВарианта_2_1.Накладная,
	             					РезультатВарианта_2_1.Платежка
	             				ИЗ
	             					РезультатВарианта_2_1)
	             
	             ОБЪЕДИНИТЬ ВСЕ
	             
	             ВЫБРАТЬ // Из новой таблицы выбираем строки с общими накладными, кроме строк уже выбранных ранее, и добавляем их в результат
	             	"Вариант 2.2 НОВАЯ",
	             	НоваяТаблица.Накладная,
	             	НоваяТаблица.Платежка,
	             	НоваяТаблица.Сумма
	             ИЗ
	             	НоваяТаблица КАК НоваяТаблица
	             ГДЕ
	             	НоваяТаблица.Накладная В
	             			(ВЫБРАТЬ
	             				СовместныеНакладные.Накладная
	             			ИЗ
	             				СовместныеНакладные)
	             	И НЕ (НоваяТаблица.Накладная, НоваяТаблица.Платежка) В
	             				(ВЫБРАТЬ
	             					РезультатВарианта_2_1.Накладная,
	             					РезультатВарианта_2_1.Платежка
	             				ИЗ
	             					РезультатВарианта_2_1)

Показать
Прикрепленные файлы:
22. Diplomat000 20.01.21 12:41 Сейчас в теме
На оценку)

Выбрать РАЗЛИЧНЫЕ
 СтараяТаблица.Накладная,
 СтараяТаблица.Платежка,
 ВЫБОР КОГДА СтараяТаблица.Платежка = НоваяТаблица.Платежка ТОГДА НоваяТаблица.Сумма ИНАЧЕ СтараяТаблица.Сумма КОНЕЦ
ИЗ 
 СтараяТаблица КАК СтараяТаблица
 ВНУТРЕННЕЕ СОЕДИНЕНИЕ НоваяТаблица КАК НоваяТаблица
  ПО НоваяТаблица.Накладная = СтараяТаблица.Накладная

Объединить все

Выбрать РАЗЛИЧНЫЕ
 НоваяТаблица.Накладная,
 НоваяТаблица.Платежка,
 НоваяТаблица.Сумма
ИЗ НоваяТаблица КАК НоваяТаблица
 ВНУТРЕННЕЕ СОЕДИНЕНИЕ СтараяТаблица КАК СтараяТаблица 
 ПО НоваяТаблица.Накладная = СтараяТаблица.Накладная
  И НоваяТаблица.Платежка <> СтараяТаблица.Платежка
Показать
23. Diplomat000 20.01.21 12:59 Сейчас в теме
(22)
Не там, косяк.
Будут дублироваться записи из первой таблицы...
s_captain; +1 Ответить
24. user1312237 20.01.21 13:03 Сейчас в теме
(22) Внутреннее соединение - опасная вещь, оно склонно к размножению строк ) Тут даже первый подзапрос дает неверный результат.
25. Diplomat000 20.01.21 13:16 Сейчас в теме
(24)
Так можно про все соединения сказать)
26. Diplomat000 20.01.21 13:19 Сейчас в теме
(22)
Выбрать РАЗЛИЧНЫЕ
 СтараяТаблица.Накладная,
 СтараяТаблица.Платежка,
 СУММА(ВЫБОР КОГДА СтараяТаблица.Платежка = НоваяТаблица.Платежка ТОГДА НоваяТаблица.Сумма ИНАЧЕ 0 КОНЕЦ)
 + 
 ВЫБОР 
  КОГДА СУММА(ВЫБОР КОГДА СтараяТаблица.Платежка = НоваяТаблица.Платежка ТОГДА НоваяТаблица.Сумма ИНАЧЕ 0 КОНЕЦ) = 0 
   ТОГДА СтараяТаблица.Сумма 
  ИНАЧЕ 0 
 КОНЕЦ
ИЗ 
 СтараяТаблица КАК СтараяТаблица
 ВНУТРЕННЕЕ СОЕДИНЕНИЕ НоваяТаблица КАК НоваяТаблица
  ПО НоваяТаблица.Накладная = СтараяТаблица.Накладная

СГРУППИРОВАТЬ ПО
СтараяТаблица.Накладная,
СтараяТаблица.Платежка,
СтараяТаблица.Сумма

Объединить все

Выбрать РАЗЛИЧНЫЕ
 НоваяТаблица.Накладная,
 НоваяТаблица.Платежка,
 НоваяТаблица.Сумма
ИЗ НоваяТаблица КАК НоваяТаблица
 ВНУТРЕННЕЕ СОЕДИНЕНИЕ СтараяТаблица КАК СтараяТаблица 
 ПО НоваяТаблица.Накладная = СтараяТаблица.Накладная
  И НоваяТаблица.Платежка <> СтараяТаблица.Платежка
Показать
27. akimych 227 20.01.21 13:27 Сейчас в теме
Статья конечно структурированная и за это плюс.

Первое: автор имеет однобокое видение, которое подходит для его аутсориснговой компании.
По факту он хочет найти спеца, которые будет во всех областях на уровне 8-10 баллов, ему нужен и швец и жнец и в дуду игрец. А такого в жизни не бывает, иначе бы не было в IT столько специальностей. От того, что я очень редко сталкиваюсь с RLS, с СКД и вообще с доброй третью из детской раскраски, это не значит, что я middle.

Можно быть классным спецом в двух-трех областях, но не более. Десятки сертификатов у человека, это все от лукавого.

Второе: технический долг всегда был и будет в компаниях заказчика, сколько бы там программистов не работало и какого бы уровня они не были.
Потому что заказчик берет программистов в штат под конкретные задачи, которых все больше, чем возможности самих программистов. ОООчень редко у штатного программиста заложено в его рабочее время работа с техническим долгом.

Ну и третье, в статье все про отбор да отбор. А резюме то какое?
Надо брать не junior, middle или senior, а специалиста, который может эффективно решать задачи.
VladC#; theelectric; Rollam; Mizhgan42; user1486915; DEG156; ccserg; d.zhukov; Daynestro07; zqzq; chg; pavlov_dv; DmitryKSL; Aleks_Antonuk; +14 Ответить
28. Aleks_Antonuk 3 20.01.21 15:18 Сейчас в теме
(27) Согласен. Senior - это не только знание объектов метаданных и умение с ними работать в высоком темпе. Senior - это опыт, который в общем случае, позволяет решать задачи быстрее других.
Искать надо специалиста под планируемые задачи, а не "универсального солдата".
Hobbit_Jedi; +1 Ответить
29. Lion heart 6 20.01.21 18:43 Сейчас в теме
Смотрел взаимные собеседования Раниса Усманова и Павла Чистова. Было интересно. Старался отвечать раньше интервьюируемого. Правильно ответил почти на все вопросы.
31. Red1 26 20.01.21 23:50 Сейчас в теме
Хорошая стать, и хорошее дело... дать спецам из регионов нормальный (выше их региона) доход.
32. RustIG 1749 21.01.21 06:07 Сейчас в теме
Коллеги, что толку от этих делений - сеньор, юниор, мидл?

У компаний и подразделений есть определенные цели и под них определенные задачи, которые надо решать специалисту.

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

Если руководитель не справляется, то конечно можно свалить на то , что "у меня в команде 60% юниоров, 30% мидл, 10% сеньоров".
Hobbit_Jedi; Obertone; DEG156; +3 Ответить
88. A1WEB 59 26.01.21 09:56 Сейчас в теме
В жадных франчах руководитель дальше собственного сиеминутного тощенького конверта смотреть не хочет, да и не может, т.к. иначе сам ничего не заработает. Тут уж не до командной работы...
33. DmitryKSL 156 21.01.21 08:00 Сейчас в теме
ФОТ каждого разработчика в год составлял порядка 1 млн

Они что за 50 тысяч работали?
NeLenin; ТвояСовесть; IssakN; +3 Ответить
34. IssakN 45 21.01.21 09:22 Сейчас в теме
(33)1млн/12 = 83 в месяц. В регионах это очень хорошая ЗП, часто даже ниже. Не говоря о том что в целом по региону ЗП средняя 30к.
35. DmitryKSL 156 21.01.21 09:34 Сейчас в теме
(34) А теперь налоги посчитайте, или у вас ФОТ без налогов?
37. IssakN 45 21.01.21 10:02 Сейчас в теме
(35)Так я и считал без вычета налогов. 83 - 13%НДФЛ(10.8) = 72к. И по прежнему хорошая ЗП для регионов на руки)
38. vkar 21.01.21 10:06 Сейчас в теме
(37) Там еще и взносы всякие есть страховые...
40. IssakN 45 21.01.21 10:36 Сейчас в теме
(38)Значит мое понимание ФОТ не совсем верно. Я полагал что страховые в данном случае уже туда не входят.
58. Богатырев Артур 127 22.01.21 11:44 Сейчас в теме
(38)
ам еще и взносы всякие есть страховые...

расстрою вас, страховые платит работодатель не из вашей зарплаты.
В ФОТ в традиционном понимании они не входят, они идут по графе "налоги предприятия".
68. DmitryKSL 156 23.01.21 14:57 Сейчас в теме
(58) В контексте статьи входят, не передергиваете. Читаем.
за три года привлекла дополнительно себе в штат еще три программиста

и
ФОТ каждого разработчика в год составлял порядка 1 млн. В итоге за три года компания себе нагенерировала 3 млн убытков

Из этого логически следует что миллион на одного программиста это все его зарплатные расходы, включая налоги. Ну или тогда не 3 млн "убытков", а сильно больше. Так?
75. Богатырев Артур 127 25.01.21 08:34 Сейчас в теме
(68) я вам записал что такое ФОТ в обычном понимании. Каждый решает в свою меру.
"Убытков" конечно еще более.
Но найм программистов не убытки
Вообще там уже отмечали в комментариях, что не совсем точно считать техническим долгом - найм в штат товых специалистов после внедрения системы
39. DmitryKSL 156 21.01.21 10:20 Сейчас в теме
(37) Вообще-то налогов больше 40%.
41. IssakN 45 21.01.21 10:41 Сейчас в теме
(35)Тогда получается
взносы для Пенсионного фонда страхования – 22%;
для Фонда социального страхования – 2,9%;
для отчислений в Фонд медицинского страхования – 5,1%
НДФЛ 13%
83к - 43%(35.7) = 47.3.
Теперь картина иная. Но все равно выше средней ЗП) А значит первоначальное высказывание автора логично если наняли разработчиков из регионов.
69. DmitryKSL 156 23.01.21 15:19 Сейчас в теме
(41) Выше средней это очень сомнительный аргумент. В декабре ездил к родителям. На моем бывшем предприятии видел вакансию программиста 1С на местном сайте. Обещали з/п 50т.р грязными, в требованиях опыт успешного внедрения ERP и куча других плюшек. Скажите зачем такому спецу сидеть в жопе мира, даже за зарплату выше среднего уровня (около 30), если можно сесть на самолет до Москвы и просить 200? Разница в 150 прекрасно решает проблему с жильем и прочими радостями жизни.
Разработчиков в регионах можно найти и за 50, только я не верю что от них много толку будет, что собственно и подтверждается статьей.
71. krash13 24.01.21 22:47 Сейчас в теме
(69) Было бы так всё однозначно - не понравилась з/п, взял и уехал туда, где понравилась - hh и прочие не ломились бы от вакансий в мск и спб (собственно текущее предложение в количестве вакансий по этим двум примерно равно остальному предложению по стране)
76. IssakN 45 25.01.21 08:37 Сейчас в теме
(71)Ну и скажем честно московские фирмы нанимают на работы региональных разработчиков, потому что это выгодно и тем и тем.
79. krash13 25.01.21 21:45 Сейчас в теме
(76) Скажем так - за последний год это стало происходить АКТИВНЕЕ, чем раньше. Всё-таки понимание, что сотрудник может приносить пользу, не приезжая в офис, у значительной доли работодателей отсутствовало напрочь. Теперь это многим пришлось испробовать. Как вывод - ожидаем некоторое сглаживание московских з/п и региональных в перспективе.
85. bugagashenka 203 26.01.21 08:38 Сейчас в теме
(41)47 это не средняя даже в регионе. 47 получает разработчик на фикси, чуть круче стажера. И за 47 в Сибири(не в тайге) крепкий средняк даже отклика не оставит, особенно, если есть потребность в них же за 80-100.
86. IssakN 45 26.01.21 08:42 Сейчас в теме
(85)Интересно у Вас в Сибири. Ну я в своих сообщениях имел ввиду среднюю в целом по городу(30к). А 1с средняя у нас в вакансиях как раз 50к. Опять же "крепкий средняк" - что Вы вкладываете в этот термин (просто интересно Ваше мнение)?
87. bugagashenka 203 26.01.21 08:57 Сейчас в теме
(86)Средняя по городу абсолютно никак не коррелирует со значениями зарплат разработчиков 1С. Именно разработчиков, а не мальчиков на побегушках на обновлениях.
Крепкий средняк тот, который в целом сможет закодировать и даже поучаствовать в разработке новых бизнес-процессов или доработать существующий. Без изысков и понимания, как устроено на уровне СУБД. Но при этом может запилить достаточно сложный отчет, логику документов и движений, и даже какие то обмены. В целом все то, что требуют на сертификате 1С:Специалист и, в принципе, если человек сам сдал его, то он уже точно не джун.
91. IssakN 45 26.01.21 11:47 Сейчас в теме
(87)Спасибо. Интересно узнать ситуацию по стране в нашей сфере.
36. user1528035 21.01.21 09:46 Сейчас в теме
AlexeyIsip - единственный кто написал вменяемый код, остальные "лепят горбатого", накручивая никому не нужные выкрутасы
42. mixsture 21.01.21 12:07 Сейчас в теме
То есть быстренько вставляли какое-то исправление, но в дальнейшем этим «костылем» здесь правили, а в другом месте ломали. Все это набиралось, как снежный ком, технический долг рос, в итоге компания за три года привлекла дополнительно себе в штат еще три программиста. Им приходилось ежегодно принимать по одному программисту дополнительно, потому что штат не справлялся с техническим долгом, команда не успевала масштабировать программу и исправлять ошибки. ФОТ каждого разработчика в год составлял порядка 1 млн. В итоге за три года компания себе нагенерировала 3 млн убытков.

Тут очень странное понимание убытка. С чего автор взял, что тут справился бы 1 человек вместо 4х? Само возникновение техдолга говорит о том, что времени на решение задачи сильно меньше необходимого. И какое решение автор предлагает? Взять спеца выше грейдом? Ну так он и стоить будет дороже и сравнивая его с эталонным фот 1 существующего программиста ниже грейдом - тоже будет убыток.
43. nicxxx 255 21.01.21 12:40 Сейчас в теме
А что время никто не пишет? У меня 20 минут

ВЫБРАТЬ "н1" КАК Накладная,"п1" КАК Платежка,"500" КАК Сумма ПОМЕСТИТЬ ВТСтарая 
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ "н2","п2","300"
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ "н3","п3","400"
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ "н1","п4","1000"
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ "н1","п5","800"
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ "н7","п5","950"
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ "н1" КАК Накладная,"п1" КАК Платежка,"750" КАК Сумма
ПОМЕСТИТЬ ВТНовая
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ "н2","п1","300"
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ "н3","п3","350"
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ "н5","п5","1500"
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ "н3","п5","1500"
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ "н1","п5","100"
;

// оставим только те строки, где накладные из таблиц пересекаются
////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТСтарая.Накладная КАК накладная,
	ВТСтарая.Платежка КАК платежка,
	ВТСтарая.Сумма КАК сумма
ПОМЕСТИТЬ ВТСтарая_
ИЗ
	ВТСтарая КАК ВТСтарая
ГДЕ
	ВТСтарая.Накладная В
			(ВЫБРАТЬ РАЗЛИЧНЫЕ
				ВТНовая.Накладная
			ИЗ
				ВТНовая)
;

// оставим только те строки, где накладные из таблиц пересекаются
////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТНовая.Накладная КАК накладная,
	ВТНовая.Платежка КАК платежка,
	ВТНовая.Сумма КАК сумма
ПОМЕСТИТЬ ВТНовая_
ИЗ
	ВТНовая КАК ВТНовая
ГДЕ
	ВТНовая.Накладная В
			(ВЫБРАТЬ РАЗЛИЧНЫЕ
				ВТСтарая.Накладная
			ИЗ
				ВТСтарая)
;

// выберем строки из обеих таблиц, где платежки равны и возьмем сумму из новой таблицы
////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТСтарая_.накладная КАК накладная,
	ВТСтарая_.платежка КАК платежка,
	ВТНовая_.сумма КАК сумма
ПОМЕСТИТЬ ВТПлатежкиРавны
ИЗ
	ВТСтарая_ КАК ВТСтарая_
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТНовая_ КАК ВТНовая_
		ПО (ВТНовая_.накладная = ВТСтарая_.накладная)
			И (ВТНовая_.платежка = ВТСтарая_.платежка)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТПлатежкиРавны.накладная КАК накладная,
	ВТПлатежкиРавны.платежка КАК платежка,
	ВТПлатежкиРавны.сумма КАК сумма
ИЗ
	ВТПлатежкиРавны КАК ВТПлатежкиРавны

ОБЪЕДИНИТЬ ВСЕ

// выберем строки из старой таблицы, где платежки не равны новой таблице
ВЫБРАТЬ
	ВТСтарая_.накладная,
	ВТСтарая_.платежка,
	ВТСтарая_.сумма
ИЗ
	ВТСтарая_ КАК ВТСтарая_
		ЛЕВОЕ СОЕДИНЕНИЕ ВТПлатежкиРавны КАК ВТПлатежкиРавны
		ПО (ВТПлатежкиРавны.накладная = ВТСтарая_.накладная)
			И (ВТПлатежкиРавны.платежка = ВТСтарая_.платежка)
ГДЕ
	ВТПлатежкиРавны.накладная ЕСТЬ NULL

ОБЪЕДИНИТЬ ВСЕ

// выберем строки из новой таблицы, где платежки не равны старой таблице
ВЫБРАТЬ
	ВТНовая_.накладная,
	ВТНовая_.платежка,
	ВТНовая_.сумма
ИЗ
	ВТНовая_ КАК ВТНовая_
		ЛЕВОЕ СОЕДИНЕНИЕ ВТПлатежкиРавны КАК ВТПлатежкиРавны
		ПО (ВТПлатежкиРавны.накладная = ВТНовая_.накладная)
			И (ВТПлатежкиРавны.платежка = ВТНовая_.платежка)
ГДЕ
	ВТПлатежкиРавны.накладная ЕСТЬ NULL
Показать
44. nicxxx 255 21.01.21 12:42 Сейчас в теме
В (17) конечно круто получилось, но давай по-честному, код должен быть поддерживаемым, чтобы его было легко прочитать и понять.
45. Kovekh 21.01.21 17:09 Сейчас в теме
(44) Легко прочитать и понять? Давненько запросы-то в ЗУП разбирали?) Там всегда из кучи ВТ, которые формируются зачастую через 5 ступеней и чтобы выйти на начальные таблицы, уже уйдёт полчаса-час времени.
46. oleg-m 21.01.21 17:36 Сейчас в теме
ВЫБРАТЬ
	ВнутреннийЗапрос.Накладная,
	ВнутреннийЗапрос.Платежка,
	ВЫБОР
		КОГДА МАКСИМУМ(ВнутреннийЗапрос.СуммаНовая) = 0
			ТОГДА МАКСИМУМ(ВнутреннийЗапрос.СуммаСтарая)
		ИНАЧЕ МАКСИМУМ(ВнутреннийЗапрос.СуммаНовая)
	КОНЕЦ КАК Сумма
ИЗ
	(ВЫБРАТЬ
		СтараяТаблица.Накладная КАК Накладная,
		СтараяТаблица.Платежка КАК Платежка,
		СтараяТаблица.Сумма КАК СуммаСтарая,
		0 КАК СуммаНовая
	ИЗ
		СтараяТаблица КАК СтараяТаблица
			ВНУТРЕННЕЕ СОЕДИНЕНИЕ НоваяТаблица КАК НоваяТаблица
			ПО (НоваяТаблица.Накладная = СтараяТаблица.Накладная)
	
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		НоваяТаблица.Накладная,
		НоваяТаблица.Платежка,
		0,
		НоваяТаблица.Сумма
	ИЗ
		НоваяТаблица КАК НоваяТаблица
			ВНУТРЕННЕЕ СОЕДИНЕНИЕ СтараяТаблица КАК СтараяТаблица
			ПО НоваяТаблица.Накладная = СтараяТаблица.Накладная) КАК ВнутреннийЗапрос

СГРУППИРОВАТЬ ПО
	ВнутреннийЗапрос.Накладная,
	ВнутреннийЗапрос.Платежка
Показать
47. muskul 22.01.21 06:36 Сейчас в теме
В 2021 никогда рядом не будет стоять удобочитаемость и "исправляемоесть" с типовыми (да и не только) решениями.
захочешь добавить в сче-фактуру что то идокумента, легче еще раз обратиться к документу чем среди той горы кода найти где там инициализируются переменные документа.
зы. сайт походу за ддсосили
48. RustIG 1749 22.01.21 06:58 Сейчас в теме
Коллеги, решая задачи, вы проверяете свой индивидуальный уровень айкью в 1С, а в команде коллективная среда - кто-то подскажет, кто-то проверит-перепроверит, третий, решая свою задачу, обратит внимание на ваш код и предложит оптимальный подход. В команде "варево" - все учатся друг у друга. Зачем эти горы собственных решений?! Результат должна достигать команда , а не конкретно вы или Вася Пупкин.
На входе проверяют умение решать узкую задачу - и если не справился, вешают ярлык "не подходит", а в реале картина другая в коллективе - не знаешь как решить, так тебе ТЗ подскажут, да еще базу знаний дадут.
В общем, если вам отказывают в предложении сотрудничества, не комплексуйте! Еще не известно кому повезло больше - им , что вас не взяли, или вам, что не попали в такую отсталую среду команды!
И зря вы время тратите , решая тут задачи и споря друг с другом. Уважайте себя и цените свое время!
sergei_tekh; Mizhgan42; Obertone; titanium2008; bugagashenka; Award; iqrex22; check2; Cujoko; ccserg; A1WEB; +11 Ответить
65. check2 282 23.01.21 13:06 Сейчас в теме
(48)
И зря вы время тратите , решая тут задачи и споря друг с другом. Уважайте себя и цените свое время!

Способность перестать доказывать свою правоту приходит с возрастом. >40 ;)
Поручик; +1 Ответить
49. yyv-911 22.01.21 08:03 Сейчас в теме
то чувство когда ты вообще оказывается не разработчик.

интересный взгляд на вещи.
хотелось бы отдельно про технический долг.
применительно он может быть к задаче. И тут оказывается все мы друг другу должны, т.к. выступаем друг у друга заказчиками - консультант у программиста и т.д. Все врут и косячат. И даже сами себе врём и не хотим видеть правду.

На практике получается что технический долг на большую часть зависит от правильной постановки задачи, системного методического сопровождения (что бы разработчика вовремя поправить в нужное русло). Все.
Чем лучше проработка задачи и надсмотрщик карабас-барабас тем меньше технический долг.
50. yyv-911 22.01.21 08:26 Сейчас в теме
главное отличие разработчика хорошего уровня от меньшего заключается в 2 вещах
1. Умение быстро разобраться в проблеме или изучить не известную область. Умение искать ответы на вопросы.
2. Умение задать уточняющие вопросы. Не забывать про них.
Rollam; Поручик; Mizhgan42; starik-2005; Daynestro07; zqzq; muskul; +7 Ответить
52. muskul 22.01.21 09:20 Сейчас в теме
(50)А еще знание предметной области и зачем это вообще нужно
53. retr0 22.01.21 10:05 Сейчас в теме
Почитав описания рангов, у меня также как с гороскопом то есть, мои навыки это среднее значение из каждого ранга. Из-за этого, если брать только конкретное описание я не попадаю не под одно из них. Тогда хто я?
54. Ambakollajder 22.01.21 10:28 Сейчас в теме
Первый вариант делал через соединения таблиц, уложился в минут 20, второй вариант с объединением нравится гораздо больше и на идею несколько секунд
ВЫБРАТЬ
	"Накладная 1" КАК Накладная,
	"Платежка 1" КАК Платежка,
	500 КАК Сумма
ПОМЕСТИТЬ ВТ_Старая

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Накладная 2",
	"Платежка 2",
	300

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Накладная 3",
	"Платежка 3",
	400

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Накладная 1",
	"Платежка 4",
	1000

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Накладная 1",
	"Платежка 5",
	800

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Накладная 7",
	"Платежка 5",
	950
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	"Накладная 1" КАК Накладная,
	"Платежка 1" КАК Платежка,
	750 КАК Сумма
ПОМЕСТИТЬ ВТ_Новая

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Накладная 2",
	"Платежка 1",
	300

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Накладная 3",
	"Платежка 3",
	350

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Накладная 5",
	"Платежка 5",
	1500

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Накладная 3",
	"Платежка 5",
	1500

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	"Накладная 1",
	"Платежка 5",
	100
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
	ВТ_Новая.Накладная КАК Накладная
ПОМЕСТИТЬ ВТ_Накладные
ИЗ
	ВТ_Старая КАК ВТ_Старая
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Новая КАК ВТ_Новая
		ПО ВТ_Старая.Накладная = ВТ_Новая.Накладная

ИНДЕКСИРОВАТЬ ПО
	Накладная
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_Старая.Накладная,
	ВТ_Старая.Платежка,
	ВТ_Старая.Сумма,
	0 КАК СуммаНовая
ПОМЕСТИТЬ ВТ_Итоги
ИЗ
	ВТ_Старая КАК ВТ_Старая
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Накладные КАК ВТ_Накладные
		ПО ВТ_Старая.Накладная = ВТ_Накладные.Накладная

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	ВТ_Новая.Накладная,
	ВТ_Новая.Платежка,
	0,
	ВТ_Новая.Сумма
ИЗ
	ВТ_Новая КАК ВТ_Новая
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Накладные КАК ВТ_Накладные
		ПО ВТ_Новая.Накладная = ВТ_Накладные.Накладная
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_Итоги.Накладная,
	ВТ_Итоги.Платежка,
	ВЫБОР
		КОГДА СУММА(ВТ_Итоги.СуммаНовая) <> 0
			ТОГДА СУММА(ВТ_Итоги.СуммаНовая)
		ИНАЧЕ СУММА(ВТ_Итоги.Сумма)
	КОНЕЦ КАК Сумма
ИЗ
	ВТ_Итоги КАК ВТ_Итоги

СГРУППИРОВАТЬ ПО
	ВТ_Итоги.Накладная,
	ВТ_Итоги.Платежка
Показать
56. Daynestro07 22.01.21 11:25 Сейчас в теме
О, вот разбиение по джуниору и т.д. конечно интересное - наконец-то я понимаю, кто я есть.
А почему кодить в стилистике типовых конфигураций считается лучшим вариантом? Или от случая к случаю?
59. starik-2005 3089 22.01.21 14:44 Сейчас в теме
"Хотел, было, поругаться" (с), но статья на удивление хорошая.

Кстати, можно без "выразить" и без "где", ибо в SQL это все-равно превратится в соединение, поэтому лучше сразу внутреннее соединение: регистратор в регистре - это индекс, в документе - тем более, соединение по двум индексам - это один проход, т.е. O(N), а не O(Log2N * M) при использовании "ГДЕ". В принципе "выразить" - то же самое, но мне, лично, не нравится ибо в SQL этого нет...
sevushka; +1 Ответить
83. mevgenym 87 26.01.21 08:24 Сейчас в теме
(59) Думаю, если соискатель покажется слишком умным, вряд ли его возьмут, тем более в команду. Тут от целей конечно, можно ходить на собесы просто поиздеваться.
ovasiliev; Поручик; +2 Ответить
60. ogre2007 302 22.01.21 16:50 Сейчас в теме
"Принимают на работу по профессиональным навыкам, а увольняют за отношение к работе. Обычно." Тема прокрастинации и очковтирательства не раскрыта. А программировать ради программирования, на этом держится 80% рынка автоматизации. Мне кажется ваши системы держаться на личном диктате, а не на этих оловянных солдатиках.
ovasiliev; Поручик; check2; +3 Ответить
67. check2 282 23.01.21 13:27 Сейчас в теме
(60)
Тема прокрастинации и очковтирательства не раскрыта
Это уже после приёма. Как можно на собеседовании это выяснить? Я бы тоже очень хотел знать это сразу, впору хоть на полиграфе проверяй. На собеседовании понимаешь что человек реально много умеет, но когда он приходит в проект он начинает тянуть резину. У него ж на лбу не написано что он хитрожопый жук, и устраиваясь на оклад он тем самым себе гарантирует зарплату на поддержку штанов. а реальные деньги он будет зарабатывать калымом на стороне. В условиях удалёнки сейчас вообще трудно контролировать стало.
Таким образом уровень прокрастинации растёт с уровнем сложности задач. Оценить трудоёмкость сложных задач (типа поди туда не знаю куда, принеси то, не знаю что) могут не многие, а те кто могут очень часто заняты, чтобы сделать это. Таким образом разработчик сам себе хозяин и может компостировать моск очень долго, ссылаясь на неопределённость задачи. Когда же начинаешь его припирать к стенке, спрашивая: "А что ты сегодня сделал для продвижения к цели?", - как правило, слышишь очень уклончивые ответы типа у меня EDT упал - полдня восстанавливал, интернет тупил - архив 2 часа качал...
Поручик; TerveRus; slauter77; +3 1 Ответить
89. starik-2005 3089 26.01.21 11:03 Сейчас в теме
(67)
EDT упал - полдня восстанавливал, интернет тупил - архив 2 часа качал...
Странно что кто-то минус влепил - вполне нормальное мнение. Решается центром удаленной разработки с внетренним девопсом - тут разработчику уже вряд ли удастся такие вот отмазки лепить, а если интернету не было - это его личные проблемы. В итоге понятно, сколько времени человек находится в сеансе на сервере, сколько кнопок за это время нажал, сколько кода написал.

Но вообще, есть же Х-сотрудники, У-сотрудники и Z-мегадемоны из преисподней (я как-то писал об этом). И если первых надо пинать, а вторым создавать условия и наделять полномочиями, то третьи сами с тебя спросят, какого хрена ты тут нихрена не делаешь, тормозя с раздачей указаний.

Ну и такая штука, как спринт, помогает сфокусироваться на пуле задач и не превратить разработку в вялотекущую рутину.
92. check2 282 27.01.21 16:34 Сейчас в теме
(89)
Странно что кто-то минус влепил - вполне нормальное мнение.

Походу он прочитал :D Не иначе
(89)
Ну и такая штука, как спринт, помогает сфокусироваться на пуле задач и не превратить разработку в вялотекущую рутину.

А вот это почему то у меня за последние 5 лет ни разу не работало. Я имею в виду именно меня. Потому как на меня, обычно планировали одни задачи, а приходилось по факту раздавать пинки сотрудникам X, создавать условия для Y и смотреть чтобы мичуринской работой не простаивали Z.
93. starik-2005 3089 27.01.21 17:29 Сейчас в теме
(92) спринты могут не работать тогда, когда много замещающих задач, поэтому тут подходит инцидентная схема, когда техподдержка производит роутинг задачи, определяя для нее тип реакции, SLA и т.п. В итоге есть пул задач, есть ресурс, есть красные/желтые/зеленые задачи и реакция на них в соответствии с приоритетами, оговоренным SLA для каждого класса задач и принадлежности их к тому или иному контуру (элементу зоопарка систем или конкретному узлу их взаимодействия). Это называется поддержкой продукта. Разрабатывать и поддерживать продукты лучше в своих схемах: разработка через спринты и релизы по завершению, деплоящие принятые группой тестирования и заказчиком изменения в продукт, а поддержка через инцидентную схему с уровнем обслуживания через SLA для соответствующих групп. И в продукте должно быть предусмотрено движение от третьей линии к первой, чтобы у техподдержки было достаточно документации, чтобы решить проблему без разработчика.

Пример: был сервис печати, работающий через запуск клиента 1С и вываливания печатных форм на принтер. Он постоянно сломался: 1С отваливалась, лицухи кончались, ... Ну и тупо скорости не хватало для формирования всех документов. Переработали, убрали клиентскую часть - сервер сохранял PDF на шары Linux-машин, которые отправляли php-скриптом документы на печать, формировался отчет по ненапечатанным на время Х отчетам и пользователям, который автоматом отправлялся в инцидентную систему, где техподдержка приходя на работу получала список того, что не отпечатано. В итоге или пользователь заболел, или забыли поменять у клиента ответственного бухгалтера - техподдержка связывалась с бухгалтерией и выясняла, в чем проблема. А с железягами проблем не стало.
62. ccserg 64 22.01.21 18:10 Сейчас в теме
Добавьте вариант :
даете комп , задачу , даете время ограниченное или день ,и пусть пользуется всем и решит задачу
потом проверите ...
и не надо пудрить мозги кто чего умеет, и писать заумные статьи , все сразу видно будет , все просто как 2+2
а на серьезное место с большой ЗП можно и день потратить
Поручик; +1 Ответить
63. Lancelot-2M 115 23.01.21 09:16 Сейчас в теме
Такого варианта еще не было

ВЫБРАТЬ
	ВЫРАЗИТЬ(Таб1.Накладная КАК СТРОКА(100)) КАК Накладная,
	ВЫРАЗИТЬ(Таб1.Платежка КАК СТРОКА(100)) КАК Платежка,
	Таб1.Сумма КАК Сумма
ПОМЕСТИТЬ ВТ1
ИЗ
	&Т1 КАК Таб1

ИНДЕКСИРОВАТЬ ПО
	Накладная,
	Платежка
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВЫРАЗИТЬ(Таб2.Накладная КАК СТРОКА(100)) КАК Накладная,
	ВЫРАЗИТЬ(Таб2.Платежка КАК СТРОКА(100)) КАК Платежка,
	Таб2.Сумма КАК Сумма
ПОМЕСТИТЬ ВТ2
ИЗ
	&Т2 КАК Таб2

ИНДЕКСИРОВАТЬ ПО
	Накладная,
	Платежка
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ1.Накладная КАК Накладная
ПОМЕСТИТЬ СписокНакладных
ИЗ
	ВТ1 КАК ВТ1
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ2 КАК ВТ2
		ПО ВТ1.Накладная = ВТ2.Накладная

СГРУППИРОВАТЬ ПО
	ВТ1.Накладная

ИНДЕКСИРОВАТЬ ПО
	Накладная
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ1.Накладная КАК Накладная,
	ВТ1.Платежка КАК Платежка,
	ВТ1.Сумма КАК Сумма
ПОМЕСТИТЬ ВТ11
ИЗ
	ВТ1 КАК ВТ1
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ СписокНакладных КАК СписокНакладных
		ПО ВТ1.Накладная = СписокНакладных.Накладная

ИНДЕКСИРОВАТЬ ПО
	Накладная,
	Платежка
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ2.Накладная КАК Накладная,
	ВТ2.Платежка КАК Платежка,
	ВТ2.Сумма КАК Сумма
ПОМЕСТИТЬ ВТ22
ИЗ
	ВТ2 КАК ВТ2
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ СписокНакладных КАК СписокНакладных
		ПО ВТ2.Накладная = СписокНакладных.Накладная

ИНДЕКСИРОВАТЬ ПО
	Накладная,
	Платежка
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ11.Накладная КАК Накладная,
	ВТ11.Платежка КАК Платежка,
	ЕСТЬNULL(ВТ22.Сумма, ВТ11.Сумма) КАК Сумма
ИЗ
	ВТ11 КАК ВТ11
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ22 КАК ВТ22
		ПО ВТ11.Накладная = ВТ22.Накладная
			И ВТ11.Платежка = ВТ22.Платежка

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	ВТ11.Накладная,
	ВТ11.Платежка,
	ВТ11.Сумма
ИЗ
	ВТ11 КАК ВТ11
		ЛЕВОЕ СОЕДИНЕНИЕ ВТ22 КАК ВТ22
		ПО ВТ11.Накладная = ВТ22.Накладная
			И ВТ11.Платежка = ВТ22.Платежка
ГДЕ
	ВТ22.Накладная ЕСТЬ NULL

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	ВТ22.Накладная,
	ВТ22.Платежка,
	ВТ22.Сумма
ИЗ
	ВТ22 КАК ВТ22
		ЛЕВОЕ СОЕДИНЕНИЕ ВТ11 КАК ВТ11
		ПО ВТ22.Накладная = ВТ11.Накладная
			И ВТ22.Платежка = ВТ11.Платежка
ГДЕ
	ВТ11.Накладная ЕСТЬ NULL
Показать