Как франчайзи 1С за 10 строчек кода просил 1 000 000 рублей с клиента

29.09.26

Сообщество - О жизни

История, которую в разных вариациях слышал каждый, кто хоть раз выставлял счёт клиенту. Приходит внедренец, ковыряется в базе, дописывает буквально десяток строк в модуль проведения — и присылает счёт с шестью нулями. Клиент открывает акт, считает строки, считает нули, и у него закономерно случается разрыв шаблона: «Вы за ЭТО просите миллион?! Тут же работы на десять минут!» Дальше сценарий ветвится. Кто-то платит и молча затаивает обиду. Кто-то пишет гневный пост «как меня развели 1С-ники». А кто-то — и таких, увы, немало — оказывается прав, потому что перед ним и правда сидел человек, который просто увидел богатого клиента и решил, что грех не воспользоваться. Давайте честно разберём обе стороны. Я сам франчайзи, так что бить буду по своим тоже — иначе неинтересно.

Старая байка про инженера

Есть древняя инженерная притча. На завод зовут дорогого специалиста починить огромный генератор, который встал. Тот ходит вокруг, слушает, потом достаёт мел, ставит крестик на одной из деталей и говорит: «Меняйте здесь». Генератор запускается. Специалист присылает счёт на 10 000 долларов. Возмущённое руководство требует детализацию: «Вы поставили одну меловую метку!» Он присылает новый акт: «Меловая метка — 1 доллар. Знание, где её поставить, — 9 999 долларов».

Притча старая, но именно она и есть корень всего спора про «десять строк за миллион». Клиент видит и оплачивает крестик. А платит он — или должен платить — за знание, где этот крестик ставить.

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

 

За что клиент платит, когда платит «за 10 строк»

Сами по себе десять строк не стоят ничего. Их и ИИ теперь напишет за секунду. Ценность — вокруг них.

Диагностика. Чтобы дописать эти строки, кто-то сначала неделю читал чужое легаси без документации, воспроизводил плавающий баг, который вылезает только при закрытии месяца и только у одного пользователя, и методом исключения дошёл до того самого места. Финальные десять строк — это верхушка айсберга, под которой часы, а иногда и дни раскопок.

Экспертиза. Знание, что нужны именно эти десять строк, а не переписывание половины подсистемы, — это спрессованные годы. Джун на этой же задаче честно проработает три дня, сломает два соседних механизма и всё равно не факт что починит. Сеньор ставит крестик за десять минут. Клиент платит не за десять минут, а за то, что этим минутам предшествовало пятнадцать лет.

Последствия. Что эти строки чинят или приносят? Если из-за бага у клиента не проводится отгрузка и встал склад — каждый день простоя стоит ему сотни тысяч. Если фикс разблокирует сделку или спасает годовую отчётность — цена привязана к масштабу проблемы, а не к количеству символов. Десять строк, которые снимают убыток в миллион в месяц, вполне могут стоить миллион. Это не наглость, это арифметика ценности.

Ответственность и гарантия. Франч отвечает за то, что фикс не развалит остальное, что через месяц он не отвалится, что будет кому позвонить. Это не разовая продажа кода, это продажа спокойствия.

И да — себестоимость. У франчайзи за спиной офис, менеджеры, лицензии, ИТС, налоги, гарантийные обязательства и «банда, которую надо кормить». Одиночка-фрилансер тут дешевле — это правда. Но и рисков клиент на себя берёт больше.

Если всё перечисленное реально есть — миллион за десять строк перестаёт быть анекдотом и становится нормальным ценообразованием по результату. Именно так, кстати, работает любой фикс-прайс: клиент платит за решённую проблему, а сколько там строк и часов ушло — это уже риск и забота исполнителя.

 

Пример из практики: десять строк, которые вернули складу отгрузки

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

Симптом. Клиент, оптовая торговля, самописная надстройка над УТ. Жалоба: «в конце месяца при массовом перепроведении база висит по несколько часов и валится по тайм-ауту, склад не может отгружать». Проведение одной реализации на 300+ строк — 3–4 минуты. На пике — коллапс.

Диагностика (тот самый айсберг). Неделя чужого легаси без документации, замер производительности, технологический журнал. И вот он, виновник — в модуле проведения контроль остатков сделан запросом в цикле: на каждую строку документа отдельный запрос к виртуальной таблице остатков. 300 строк × сотни документов на закрытии — десятки тысяч обращений к регистру.

Было:

Для Каждого СтрокаТовары Из Товары Цикл
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ОстаткиТоваров.КоличествоОстаток КАК Остаток
        |ИЗ
        |    РегистрНакопления.ТоварыНаСкладах.Остатки(&МоментВремени,
        |        Номенклатура = &Номенклатура
        |        И Склад = &Склад) КАК ОстаткиТоваров";
    Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
    Запрос.УстановитьПараметр("Номенклатура", СтрокаТовары.Номенклатура);
    Запрос.УстановитьПараметр("Склад", Склад);
    Выборка = Запрос.Выполнить().Выбрать();
    Остаток = ?(Выборка.Следующий(), Выборка.Остаток, 0);
    Если СтрокаТовары.Количество > Остаток Тогда
        Отказ = Истина;
        Сообщить("Недостаточно товара: " + СтрокаТовары.Номенклатура);
    КонецЕсли;
КонецЦикла;

Стало — один запрос на весь документ до цикла, дальше чтение из соответствия:

Запрос = Новый Запрос;
Запрос.Текст =
    "ВЫБРАТЬ
    |    ОстаткиТоваров.Номенклатура КАК Номенклатура,
    |    ОстаткиТоваров.КоличествоОстаток КАК Остаток
    |ИЗ
    |    РегистрНакопления.ТоварыНаСкладах.Остатки(&МоментВремени,
    |        Склад = &Склад
    |        И Номенклатура В (&МассивНоменклатуры)) КАК ОстаткиТоваров";
Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
Запрос.УстановитьПараметр("Склад", Склад);
Запрос.УстановитьПараметр("МассивНоменклатуры", Товары.ВыгрузитьКолонку("Номенклатура"));
ОстаткиПоНоменклатуре = Новый Соответствие;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    ОстаткиПоНоменклатуре.Вставить(Выборка.Номенклатура, Выборка.Остаток);
КонецЦикла;
Для Каждого СтрокаТовары Из Товары Цикл
    Остаток = ОстаткиПоНоменклатуре[СтрокаТовары.Номенклатура];
    Остаток = ?(Остаток = Неопределено, 0, Остаток);
    Если СтрокаТовары.Количество > Остаток Тогда
        Отказ = Истина;
        Сообщить("Недостаточно товара: " + СтрокаТовары.Номенклатура);
    КонецЕсли;
КонецЦикла;

Изменённой логики — буквально десяток строк: запрос вынесен из цикла, добавлено соответствие. Ни новой подсистемы, ни рефакторинга половины конфигурации.

Результат. Проведение реализации — с 3–4 минут до долей секунды. Массовое перепроведение на закрытии — с «нескольких часов и падений» до считаных минут. Склад перестал вставать, отгрузки пошли, тайм-ауты исчезли.

А теперь про счёт. В акте это выглядело как «оптимизация проведения реализации» — и да, по объёму правки там «десять строк». Но клиент платил не за строки. Он платил за неделю диагностики чужого кода, за знание, что виноват именно запрос в цикле, а не «слабый сервер» (на который уже собирались потратить бюджет вдвое больше), и за то, что склад в сезон снова отгружает. Вот тот самый крестик мелом: сама метка — ничто, знание, где её поставить, — всё.

 

А как это же чинил бы не-эксперт

Самое интересное — что было бы, попади эта задача не в те руки. И это не гипотеза: клиент туда уже почти пошёл.

Ход 1. «Виновато железо». Первая и самая частая версия — «база тормозит, значит слабый сервер». Клиенту уже насчитали апгрейд: новый сервер помощнее, лицензии, работы по переносу — порядка 400–600 тыс. руб. Проблема в том, что запрос в цикле не лечится процессором. Купили бы железо вдвое мощнее — получили бы те же зависания, только через полгода, когда объём документов подрастёт. Деньги в трубу, симптом вернулся.

Ход 2. «Переписать механизм». Второй типовой заход — не разбираться, где узкое место, а героически переписать всю подсистему проведения «по-нормальному». Это недели работы, регрессионное тестирование, риск сломать взаиморасчёты и партионный учёт, которые за этот же модуль цепляются. Бюджет — легко за миллион, сроки — месяц-полтора, и всё это на фоне живого продакшена.

Ход 3. «Ускорить любой ценой». Самый опасный. Не-эксперт, чтобы «просто заработало», может отключить контроль остатков в проведении — да, станет быстро. А потом склад уходит в минус, отгружают то, чего нет, и к тайм-аутам добавляется пересортица и разборки с клиентами. Лечили производительность — получили дыру в учёте.

Ход 4. Индексы и бубен. Навесить индексов наугад, покрутить настройки СУБД, посидеть в техжурнале без гипотезы. Дни оплачиваемого времени — и в лучшем случае небольшое улучшение, потому что корень (тысячи лишних запросов) никуда не делся.

А теперь сведём две сметы на одну и ту же проблему:

 

Путь эксперта

Путь «по симптому»

Что делаем

Диагностика → крестик мелом (10 строк)

Железо / переписывание / костыли

Срок

Неделя диагностики + правка

От месяца, часто с рецидивом

Прямые затраты

Счёт по ценности

400–600 тыс. на сервер и/или 1 млн+ на переписывание

Простой склада в сезон

Закрыт за дни

Тянется недели → потери в отгрузках

Риск

Минимальный, точечная правка

Сломать соседнее / уйти в минус по складу

Итог

Работает и не вернётся

Дорого, долго, симптом рецидивирует

Вот здесь и становится видно, что «миллион за десять строк» — это не переплата, а экономия. Клиент, который считает строки, сравнивает счёт с нулём («да там работы на десять минут!»). А сравнивать надо не с нулём, а с альтернативой — с теми самыми полумиллионом на сервер, месяцем переписывания и неделями стоящего в сезон склада. На этом фоне точный крестик за неделю раскопок — самое дешёвое, что могло случиться с этим клиентом.

Разница между экспертом и не-экспертом здесь даже не в скорости фикса. Она в том, что эксперт сначала находит настоящую причину, а уже потом чинит. Все четыре «неправильных» хода начинаются с того, что причину искать не стали — сразу побежали лечить симптом за большие деньги.

 

А теперь по своим: когда это всё-таки развод

Проблема в том, что тезис «вы платите за ценность, а не за строки» — идеальное прикрытие для тех, у кого никакой ценности за счётом нет. И вот тут я как франчайзи скажу прямо: наглости в нашей отрасли хватает.

Цена с потолка «потому что клиент не разбирается». Классика. Пришли к богатому заказчику, оценили не задачу, а его платёжеспособность. Тот самый случай, когда меловую метку продают за миллион не потому, что знали куда её ставить, а потому что клиент не знал, что это метка.

Нормо-часы из воздуха. «Задача — 40 нормо-часов». Почему 40, а не 8? А потому. Коэффициент сложности 2.5 — откуда? Из методики, которую никто не видел. Красивая упаковка для «мы посчитали, сколько хотим получить».

Продажа страха. «У вас тут всё на честном слове держится, если не переделать — рухнет вся база». Иногда правда. Часто — способ раздуть смету втрое.

Раздувание объёма. Когда фикс на десять строк оформляют как «комплексную доработку подсистемы взаиморасчётов» на три этапа, потому что так счёт солиднее.

Ноль прозрачности. Клиент в принципе не понимает, за что заплатил. А непонятная цена всегда воспринимается как несправедливая — даже когда она честная.

Водораздел простой: миллион за десять строк — это нормально, если клиент после этого зарабатывает или экономит кратно больше и понимает, за что платит. И это развод, если единственный актив в сделке — незнание клиента.

Разница не в сумме. Разница в том, есть ли за суммой ценность или только асимметрия информации.

 

Как не быть тем самым франчайзи (и как не быть тем самым клиентом)

Если вы продаёте. Говорите с клиентом на языке результата, а не строк и часов. Не «я дописал процедуру проведения», а «отгрузки снова проводятся, склад не стоит, вы не теряете N в день». Фиксируйте цену и объём до работ, а не после. Показывайте, за что деньги, — не обязательно построчно, но по смыслу. Прозрачная дорогая цена вызывает уважение, непрозрачная дешёвая — подозрение.

И держите планку сами: если за вашим счётом реально нет ценности — не подпирайте его красивыми словами про «экспертизу». Клиенты не дураки, а репутация в нашем узком мире дороже одного жирного акта.

Если вы покупаете. Не считайте строки — считайте эффект. Спросите прямо: «Что я получу и что потеряю, если не делать?» Просите зафиксировать цену заранее. Хотите проверить адекватность — возьмите второе мнение, это нормально. И помните: дёшево почасово на размытой задаче почти всегда выходит дороже, чем честный фикс-прайс на понятный результат. Экономия на экспертизе — самый дорогой вид экономии в 1С.

 

Вместо вывода

Так сколько же стоят десять строк кода? Правильный ответ: ноль. Или миллион. Зависит от того, что они меняют в жизни клиента и знает ли исполнитель, где ставить крестик.

Плохая новость для клиентов: отличить эксперта от наглеца по счёту невозможно — оба напишут «доработка, 1 000 000 руб.». Хорошая новость: это отлично видно по разговору. Эксперт объясняет ценность и берёт ответственность за результат. Наглец — давит на непонимание и прячется за «нормо-часами».

Вступайте в нашу телеграмм-группу Инфостарт

стоимость доработки 1С франчайзи 1С ценообразование 1С оценка трудозатрат ценообразование по ценности value-based pricing нормо-часы фикс-прайс ставка программиста 1С экспертиза 1С диагностика 1С запрос в цикле оптимизация запросов 1С производительность 1С легаси 1С внедрение 1С сопровождение 1С отношения с клиентом смета на доработку асимметрия информации

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

О жизни Бесплатно (free)

С 1998 года я писал код в 1С сам, руками, от первой строки до последней. В марте 2026 я рассказывал, как проект на пять месяцев ИИ воспроизвёл за час. Прошло полгода, и теперь я не пишу код совсем, я даже не проверяю его и при этом закрываю 30-40 задач в месяц. Это история о том, что осталось от программиста, когда из его работы ушёл код, почему у одних коллег этот переход получается за месяц, а у других не получается вообще и почему ИИ без опыта за плечами это умножение на ноль.

20.10.2026    5110    GarriSoft    377    

63

О жизни 1C:Бухгалтерия Бесплатно (free)

Как я считаю стоимость своего часа, почему не извиняюсь за цену и что отвечаю на «дорого». Без теории — только то, что работает в разговоре с заказчиком.

11.09.2026    4391    qwerty1414    73    

86

О жизни Россия Бесплатно (free)

Расскажу, как это было у меня. Собеседования я не умею проходить от слова совсем, особенно когда начинают задавать вопросы типа: • Что такое структура? • Что такое соответствие? • Чем соответствие отличается от структуры? • Как обратиться к общему модулю из формы документа? • Как надо обновлять доработанную конфигурацию?

28.07.2026    6083    chuevsf    168    

47

О жизни Россия Бесплатно (free)

Моё личное мнение о перспективах ИИ в среде 1С.

23.06.2026    5305    1c-intelligence    114    

42

О жизни Бесплатно (free)

30 лет в 1С, 51 год, жёсткие требования к формату работы. За 1.5 месяца нашёл работу, используя DeepSeek как персонального HR-ассистента. Один раз настроил, отправил три своих резюме - дальше просто скидывал вакансии в чат и наговаривал ощущения через микрофон. ИИ анализировал, отсеивал фейки, писал сопроводительные письма, готовил к собеседованиям и разбирал ошибки. Результат: 127 откликов, 2 оффера, выход на работу 1 июня с достойной зарплатой (гибрид, к сожалению, мы с ним не нашли)

20.05.2026    9240    GarriSoft    227    

70

О жизни Россия Бесплатно (free)

В далеком 2007 году я услышал впервые слово «Инфостарт» от своих коллег по работе и нашел этот сайт в Интернете, а 29.06.2007г. успешно зарегистрировался на нем. В течение долгих лет я был «молчуном»: не выкладывал никаких наработок и не писал статей. Просто читал, время от времени, и получал на сайте информацию.

14.05.2026    6058    chuevsf    207    

35

О жизни Россия Бесплатно (free)

Еще совсем недавно у программистов 1С было всё хорошо. Задачи на выполнение сыпались, как из рога изобилия. Счетчик времени зашкаливало от быстроты их выполнения. Чуть ли не каждый месяц был новый рекорд. Новые идеи генерировались бизнесом одна за другой. Но общее состояние экономики в России в 2026 году уже давали о себе знать, и группу компаний также стало лихорадить.

17.04.2026    12005    chuevsf    244    

190

О жизни Бесплатно (free)

Личные заметки о том, как 1С-разработка столкнулась с вызовом времени. От FoxPro до "гаражной инженерии" - тридцать лет по одним и тем же граблям.

02.04.2026    12936    GarriSoft    280    

48
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. пользователь 29.09.26 17:34
Сообщение было скрыто модератором.
...
2. qwerty1414 138 29.09.26 17:37 Сейчас в теме
Очень жизненная статья.
Многие наверняка узнают в описанных ситуациях свои проекты.
Часто кажется, что задача займёт «пять минут», но за этими пятью минутами скрывается анализ, тестирование, оценка рисков и ответственность за результат. Спасибо автору за честный и взвешенный разбор темы.
RocKeR_13; +1 – Ответить
3. Tarlich 89 29.09.26 17:54 Сейчас в теме
"Вторая подпись не предусмотрена" - (те кто помнит -)) ) - это были первые мои шальные копеечки -))
Чуть под другим углом взглядом клиента - на текущий момент Франч не равно качество и (или) быстро и (или) дешево - тут даже не то что два , тут часто ни одного нету ! Фришник на много больше дорожит каждым клиентом , готов удаленно хотя бы понять проблему, поставить в очередь .... так же у него расходная часть меньше - а значит и цена часа может быть меньще! - клиенту выгоднее ! (всем выгоднее). Один в поле не воин - да он не потянет проекты , но загрузить себя работой можно вполне , спасибо честному знаку и постоянно обновляющими релизам (платформам) 1С! Франч - это конвейер ! Классно когда Франч - команда!
7. Antilla 7 29.09.26 18:45 Сейчас в теме
(3) Согласен, франч для новичка — хорошая школа, если есть у кого учиться, а не сразу «вот база, вот клиент, разбирайся» 🙂 А с руководством — да, приходится учиться уже другой работе. Хороший специалист не обязательно хороший руководитель.
4. chuevsf 475 29.09.26 17:55 Сейчас в теме
Франчи это зло! )))
6. Tarlich 89 29.09.26 18:10 Сейчас в теме
(4) Ни в коем случаи!
Старая байка про инженера под другим "углом" - Хирург до тех пор хирург пока не стал руководителем клиники...
Только благодаря ИМ стартующие могут получить опыт и стаж! (а так же друзей, единомышленников , вторую половину).
Продажа коробок, ИТС, сервисов и т.д. - тут не буду .... по разным соображениям.
ну и конечно тут есть что добавить!
8. Antilla 7 29.09.26 18:46 Сейчас в теме
(6) Про новичков согласен, сам франч многое может дать, если есть нормальное наставничество. Но «только благодаря им» — всё-таки перебор 🙂 А руководитель, по мне, и не обязан быть лучшим программистом. Его задача — собрать команду, в которой и сотрудники растут, и клиент получает результат.
9. chuevsf 475 29.09.26 18:52 Сейчас в теме
(6) Когда муж и жена 1сники, это еще хуже, когда муж и жена - учителя.
5. пользователь 29.09.26 18:02
Сообщение было скрыто модератором.
...
10. gybson 15 29.09.26 21:28 Сейчас в теме
Эксперт сразу сделает замер производительности и увидит там строчку с возмутительным временем и количеством вызовов. Исправленный код тоже дикость. С таким не везде на работу возьмут.

Не надо тут массивов и соответствий, надо таблицу передать в запрос и там обогатить.

И вообще колонке "Остаток" задать сразу тип "Число", тогда не надо будет этого убогого обнуления.

И не сравнивать, опять же, в цикле, а в запросе отобрать.

Ужасный код. И это еще и исправленный экспертом. Мрак.
user1977150; bulpi; ixijixi; SerVer1C; apatyukov; +5 – Ответить
18. ActionBlog 30.09.26 12:49 Сейчас в теме
(10) "Ужасный код" это когда не работает, а в данном случае просто не оптимальный.
19. gybson 15 30.09.26 13:04 Сейчас в теме
(18) Кому и кобыла невеста :) Нерабочий код вообще не код, а набор символов.
Этот код ужасный в том смысле, что бессмысленный. Нет никакого смысла, в данном случае, делать что-то в цикле. За такое не то что миллион, вообще могут не заплатить, если есть грамотная приемка.
21. Antilla 7 30.09.26 15:22 Сейчас в теме
(18) Так не мы его писали, а описываем ситуацию которая досталась от "коллег", наша реализация ниже в комментах
22. Antilla 7 30.09.26 15:23 Сейчас в теме
(10) Так не мы его писали, а описываем ситуацию которая досталась от "коллег", наша реализация ниже в комментах
24. gybson 15 30.09.26 18:45 Сейчас в теме
(22) у вас какое-то особое понимание слова "стало"?
11. Dobrynya 30.09.26 00:12 Сейчас в теме
Удар молотком 1000 рублей,
Знал где ударить 999 000 рублей...
12. apatyukov 1139 30.09.26 04:54 Сейчас в теме
Статья однозначно показывает неквалифицированность франчайзи. Какая неделя на исследование. Копия базы, журнал регистрации, отладчик, 2 часа работы. Делал такие задачи неоднократно. Дайте мне мой миллион
13. siamagic 30.09.26 07:08 Сейчас в теме
Улыбнул запрос по складу - там всё решается одним запросом в котором проверяется количество без соответствия и лишнего перебора. Если уж выгружаете в таблицу есть ".Выгрузить()"
14. fan_club_chelsea 6 30.09.26 07:22 Сейчас в теме
(13) Ничего Вы не понимаете. Это база!
Пишешь код с циклами и принудительными задержками. Потом раз в месяц делаешь оптимизацию своего кода. И каждый раз за это берешь деньги. Ведь программа начинает быстрее работать.
15. Tarlich 89 30.09.26 08:28 Сейчас в теме
(14) (11) В продолжении еще "одно" на наш лад :
- Я сделал идеальный код , теперь его не надо каждый раз исправлять.
- Ну и дурак! он нас кормил годами .
fan_club_chelsea; +1 – Ответить
16. ActionBlog 30.09.26 12:46 Сейчас в теме
Идея статьи - ок. Но вот исправленный контроль остатков не выдерживает критики, к сожалению. Работать будет, но на документах с большим количеством строк будет масса ненужных итераций сравнения. Я бы отметил этот код, как неоптимальный. В таком случае рекомендуется в одном запросе соединить таблицу с номенклатурой и количеством из документа с остатками по регистру и выбрать только те строки, в которых количество в документе больше остатка. И уже полученные данные обходить и ругаться.
20. Antilla 7 30.09.26 15:21 Сейчас в теме
(16) Так не мы его писали, а описываем ситуацию которая досталась от "коллег" вот пример нашей реализации:
// Проверка остатков при проведении (модуль объекта документа)

ТаблицаТоваров = Товары.Выгрузить(, "Номенклатура, Количество");

Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ТоварыНаСкладах");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки.УстановитьЗначение("Склад", Склад);
ЭлементБлокировки.ИсточникДанных = ТаблицаТоваров;
ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
Блокировка.Заблокировать();

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

Запрос.УстановитьПараметр("ТаблицаТоваров", ТаблицаТоваров);
Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
Запрос.УстановитьПараметр("Склад", Склад);

Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
	Возврат;
КонецЕсли;

Нехватка = Результат.Выгрузить().ВыгрузитьКолонку("НоменклатураПредставление");
ТекстСообщения = "Недостаточно товара: " + СтрСоединить(Нехватка, ", ");

ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, ЭтотОбъект, , , Отказ);
Показать
25. gybson 15 30.09.26 18:54 Сейчас в теме
(20) И надо еще сгруппировать остаток по товару наверное, не? Какой-то очень нехитрый учет.
Такое сообщение пользователю просто неприемлемо.

И вообще при перепроведении в конце месяца не должно быть проверок это не имеет никакого смысла. Само перепроведение тоже крайне сомнительная практика, но чтобы в ходе него еще и ошибки были, это прям очень плохая практика. Чего с этими ошибками делать то?
26. fan_club_chelsea 6 01.10.26 07:04 Сейчас в теме
(20) Не критично, но напишу...
1. 1С не рекомендует соединять виртуальные таблицы. Нужно сначала получить данные, поместив во временную таблицу. А потом их соединять. Когда база большая, план запроса строится не оптимально.
2. Я бы не стал индексировать временную таблицу "ВТ_Потребность". Вряд ли в документе товаров более 1000 строк. По личному опыту, индексировать лучше большие таблицы +10 000 строк. На все что меньше уходит много времени на индексирование, что не всегда оправдано. Запрос без индексирования может выполниться быстрее при малых объемах данных.
17. YA_93013054 20 30.09.26 12:48 Сейчас в теме
1) Иллюзия справедливости примитивного фикса: Антипаттерн «запрос в цикле» — грубейшая хрестоматийная ошибка, описанная в стандартах разработки фирмы «1С» еще в начале 2000-х годов. Опытный специалист локализует ее через замер производительности за 15–30 минут без необходимости «недели раскопок». Обоснование ценника в 1 000 000 руб. за исправление элементарного дефекта вызывает у заказчика закономерный когнитивный диссонанс, воспринимаясь как спекуляция на критической ситуации.

2) Ловушка фикс-прайса в чужом легаси: Автор продвигает фиксированную цену за результат, однако в условиях недокументированного самописного кода («неделя чужого легаси») оценка рисков «на берегу» несет колоссальные финансовые риски для самого исполнителя: фикс может затянуться на месяцы непредвиденного рефакторинга.

3) Психологический барьер и репутационный шлейф: Даже при условии феноменальной экономической окупаемости клиент, обнаружив в акте 10 строк правок, испытывает скрытую обиду («переплатил за воздух»). Без грамотной визуализации проделанной исследовательской работы (отчеты профилировщика, логи техжурнала) модель провоцирует разрыв долгосрочных отношений.

4) Оправдание раздутых смет накладными расходами: Аргумент о «банде, которую надо кормить» (офис, менеджеры, лицензии) противоречит декларируемой концепции Value Pricing. Заказчик платит за решение своей проблемы, а покрытие операционной неэффективности крупного франчайзи не является ценностью для клиента.
23. Antilla 7 30.09.26 15:24 Сейчас в теме
Спасибо за развернутый комментарий, отвечу по пунктам.

1. Согласен, запрос в цикле — хрестоматия, и замер находит его за полчаса, если знаешь, куда смотреть. Но в этом и суть притчи про крестик: клиент платит за то, что у него это заняло 15 минут, а не неделю. А миллион, как и сказано в статье, оправдан только при кратном эффекте. Без эффекта это спекуляция.

2. Тут вы правы, фикс по незнакомой самописке — рулетка. Поэтому сначала платное обследование, потом фикс на результат.

3. Согласен, и это как раз про прозрачность. Замер «до/после» и выписка из ТЖ делаются за час и снимают вопрос «за что платил».

4. Справедливо, в тексте получилось противоречие. Накладные объясняют ставку франчайзи, но к ценности для клиента отношения не имеют.
27. Hitcher 184 01.10.26 14:26 Сейчас в теме
Неделю, чтобы найти запрос в цикле? Совсем не бережете себя, работая на износ :) напоминаете Орлиного Глаза из анекдота

Поймали белые трёх индейцев и посадили в сарай. Через три дня они сбежали.Их снова поймали и спросили, как им удалось сбежать.Вождь говорит:
-Ну, сидим первый день, сидим второй день, на третий день Зоркий Сокол заметил, что у сарая нет четвёртой стены...

А так классическая схема развода клиента.

1. Нанимают дешевого франчайзи, который силами студента делает такой "шедевр". Сдача происходит на пустой базе при внедрении.... Я как-то переписывал обработку для закупщиков. Попросили посмотреть, а то закупщики жалуются, что отчет хороший, но формируется несколько часов:) Так там для каждой строки номенклатуры для одной колонки был запрос по остаткам, для другой колонки был запрос по партиям, который выгружался в таблицу значений и методом перебора искал последнее по времени. Перебор был нужен, чтобы отсечь все ненужное . И по найденному контрагенту из поступления еще был запрос по взаиморасчетам. там, правда местные "специалисты" старались.
2. Через какое-то время начинаются тормоза... Ответ франчайзи. Внедрение завершено, оптимизация за ваш счет... И нужен новый сервер, о чем мы вам неоднократно говорили... Одному небольшому заводу в прошлом году выставили счет от 20 млн на новую сетку. В счете было половина списка минцифры на лицензии.. В результате купили новый сервер за 200 тыс.
3. Обращаются к другому франчайзи. Посмотрим, сделаем. Назначают опять студента, потому что не на внедрение же его ставить . Студент действительно неделю ищет..... и находит:) Повезет если при решении этого вопроса он не завесит пару других. Радостный прибегает и говорит, что было нереально трудно но он справился. В счете неделя работы студента по цене специалиста.. Все, кроме клиента, довольны

Проблема в том, что студент потом в резюме пишет "участвовал в проекте и в одиночку решил..." Смотришь, а у него за год 7 внедренных проектов. Скачал печатную форму... есть участие в проекте ERP А я один никак не могу осилить....Каждое утро приносят жизнеутверждающие решения, которые они вчера придумали на вечерней планерке :)
Для отправки сообщения требуется регистрация/авторизация