Программирование на 1С
Помогите дорогие пикабушники!
Получить справку: вывести наименование всех товаров, у которых розничная цена меньше 1.5 от закупочной цены
У меня имеется родительский справочник товары, который содержит
• код товара; • наименование товара; • основная единица измерения (справочник «Единицы измерения»); • тип товара (перечисление «Тип товара»: весовой, невесовой); • табличная часть (список возможных единиц измерения каждого товара): – единица измерения (справочник «Единицы измерения») . 2. Подчиненный справочник — Цены товаров: • тип цены (перечисление: закупочная, оптовая, розничная); • цена.
Разбор загрузки из Excel для мидлов и сеньоров
Разобрал 1С код подписчика. Антон сделал обработку загрузки из экселя. Объяснил некоторые паттерны программирования на 1С. Показал как надо и не надо писать код на 1С. Заполняйте анкету на созвон со мной: https://forms.gle/ikPZcyKuU5NsmnL96 Обсудим, какие у вас есть сложности с кодом, что такое хороший код на 1С и тп. По итогам созвонов соберу материал и выпущу цикл полезных видео.
Разбор загрузки из Excel для джунов
Показал, на что начинающим 1С программистам обращать внимание при написании кода на 1С. Заявку на разбор кода оставляйте здесь: https://forms.gle/duwvQhoWNtbeZLBh9
600 миллионов за внедрение 1С в Пулково. Много или мало?
Привет! Меня зовут Александр Сидоров из Baso-IT и я занимаюсь внедрением BPMS/Service Desk систем на платформе BPMSoft.
Последние пару дней я вижу в ряде новостных источников разные удивленные комментарии по поводу цены размещенного аэропортом Пулково тендера на внедрение 1С вместо SAP. И мне стало интересно проанализировать документацию закупки и ТЗ на предмет того, на сколько такая цена в рынке.
Вся документация открыта на сайте zakupki.gov.ru и каждый может с ней ознакомится.
Мы сами не занимаемся 1С, но постоянно взаимодействуем с программистами 1с в наших проектах внедрений. Ну нет других альтернатив для российского рынка. Ни сейчас нет, ни раньше, по большому счету, не было. Тем не менее я хочу попробовать экстраполировать наш опыт оценки на этот проект и ответить на вопрос:
Откуда такая цена, Карл?
Статья получилась длинная и насыщенная скринами. Для тех кто хочет сразу узнать итог перемещайтесь в самый низ. Ну а мы начнем разбираться.
Что именно внедряют?
Во-первых, как была получена цифра в 600 000 000 в этой закупке? Пулково просто запросило 3-х поставщиков и взяло самую низкую цену.
Документ Обоснование НМЦ
То есть это минимальная цена, которую им предложили. Остальные — возле 1 млрд)
Здесь, пожалуй, можно было и остановиться, но давайте смотреть дальше. В самой новости на том же TAdviser был написано, что требуется только внедрение 1С ERP. Вместе с тем документация говорит чуть о другом.
То есть, если я верно понимаю, внедрятся будет семь конфигураций с сильной связанностью. А понял я верно, судя по количеству персонала. Но об этом далее. Как ни крути, это большой объем работы — вряд ли в Пулково можно просто сделать инсталляцию и сказать что всё готово)
Сроки проекта
На проект заложен срок выполнения с 10.10.2023 по 30.04.2025. Это 18 месяцев, 5 из которых отведены на опытно-промышленную эксплуатацию. Фактически за 13 месяцев всё должно быть готово. Не уверен, что этот срок реалистичен. Здесь профессионалам 1с будет виднее, я не верю что можно сделать такой объем за такой срок.
Требования к персоналу и опыту интегратора
Интересный раздел в котором формируются минимальные требования к сотрудникам интегратора и его проектному опыту. И это не особенность Пулково. В больших закупках всегда есть такие требования. Они могут быть более или менее жесткие, но будут. Как минимум чтобы отсечь маленьких или не имеющих нужных компетенции интеграторов.
Любой заказчик захочет работать и коммуницировать с одним большим исполнителем, нежели с толпой малых компаний. Его можно понять.
Итак, каковы же требования к команде? Я вытащил их из текстового файла и перебрал в таблицу для более простого восприятия:
Таким образом мы получаем минимальный размер команды в 61 человек. Хорошая команда для большого проекта. Здесь у меня возник вопрос — а кто будет писать ТЗ и описание процессов? Бизнес-аналитика в списке нет. Могу предположить, что в 1С экосистеме этим занимаются консультанты. Но тут поправьте, кто в теме.
В документации описаны и важные требования к компании-подрядчику в целом. А именно наличие в портфеле выполненных контрактов на сумму не менее чем 50% от суммы данной закупки. Значит интегратору нужно подтвердить контракт минимум на 300 млн. Я не думаю, что таких в стране больше 3-5 шт. А с учетом требований об, в основном, очном способе коммуникаций — расчет идет на компанию из Петербурга. Но то такое.
Функциональные процессы
Для тех кто не сталкивался: функциональные процессы — это список автоматизируемых процедур. И эти процессы часто состоят из более мелких, которые просто не указывают, чтобы не раздувать объем.
Была у меня мысль вставить весь список прямо сюда. Но реально процессов очень много. Просто поверьте на слово — пахать там как папе Карло.
Это примерно 8 страниц в разных предметных областях.
Процессы подлежащие автоматизации
И тут важно понимать, что в соответствие с документацией данные процессы необходимо:
Собрать
Отрисовать в BPMN 2.0 нотации
Сформировать в ТЗ
И только потом уже реализация, сдача, тестирование, ОПЭ, ПЭ…
Документация и обучение персонала
Проект должен быть полностью документирован. Как с точки зрения технической части, так и в разрезе пользовательской документации. Помимо этого для пользователей должно быть выполнено:
Очное обучение
Обучающий курс в LMS
Видеокурс
Практические задания
Интерактивные подсказки
В общем достаточно большой блок, который требует опыта и компетенций. Я выделил основные и интересные моменты ниже:
Обучение пользователей
Интеграции
Исходя из документации, в данном проекте очень большое количество интеграций между системами. Причем там присутствует и шина данных, и брокер очередей Kafka. Вот так выглядит список требуемых интеграций
Обратите внимание на выделанную область. Исполнителю необходимо будет выполнить интеграцию не только с внешними системами. Но и не забыть про обмен между всеми внедряемыми 1сками. И не надо питать иллюзий — 1с с 1с так же сложно интегрируется как и с другими системами.
Для тех кто участвовал во внедрениях с интеграцией даже одной системы 1с, знает сколько сил и времени это занимает. Конечно, если задача шире, чем контакты из одной системы в другую раз в день переливать)
В общем это большая задача и головная боль: как спроектировать, разработать, оттестировать и запустить.
Оплата контракта
Оплата по контракта сделано не совсем стандартно. По крайней мере я с таким форматом не сталкивался. Базово оплата дробится на этапы проекта. Каждый этап дробится на 3 платежа:
30% от этапа в течение 10 дней после начала работ
60% от этапа в течение 30 дней после сдачи этапа
10% от этапа после сдачи всех этапов и окончания гарантийного срока в 12 месяцев
Таким образом, в идеальной ситуации подрядчик получит полную сумму оплаты в середине 2026 года. Уже не так интересно, верно?)
Пруф:
Проект договора в закупке
Итоговый подсчет
На самом деле примерно посчитать можно было гораздо раньше. Я же хотел пройтись по особенностям закупки. Просто чтобы стало понятнее, что это не дождь из денег за просто так.
Итак, мы знаем минимальный размер команды — 61 человек
Знаем плановый срок проекта — 18 месяцев+ гарантийные обязательства в течение 12 месяцев после окончания.
Осталось только понять ставку 1 чел/часа и занятия нехитрой математикой. Эта стоимость отличается в зависимости от роли/должности сотрудника, его компетенции и так далее. Вместе с тем, можно взять усредненную ставку по
Я зашел на сайт Первый Бит, как подходящего по размеру подрядчика, и они публикуют стоимость 1 часа тех поддержки за 6 000 руб.
Обычно стоимость часа специалиста саппорта ниже, чем внедренцев. А по требованию ТЗ это должны быть сотрудники с определенными сертификатами+знание МСФО+сотрудник с сертификатом SAP еще и по разработке. А они стоят конских денег.
Поэтому давайте возьмем среднюю ставку 9000 руб/час
Так же существует такое понятие как коэффициент утилизации. Простым языком — это сколько времени из рабочего дня сотрудник тратит на свои непосредственные обязанности. Хорошим показателем для такой деятельности считается 0,6. Учтем его в расчете
Что получается: 61 человек * 160 раб часов в мес * 18 мес * 9000 руб за час * 0,6
948 672 000 руб
Общая стоимость проекта при грубой оценке
Обратите внимание, я даже не заложил сюда расходы на гарантийные обязательства.
Неожиданно, даже для меня, получается, что стоимость в 600 млн является скорее заниженной. Второй интегратор из первого скрина, видимо, считал похожим со мной образом и получил цифру 983 млн.
Мое личное ИМХО:
В таких проектах важна не только стоимость первичного внедрения, она может быть и на уровне минимальной рентабельности. Очень важна стоимость дальнейшей поддержки и развития. Просто потому что сменить подрядчика после внедрения будет очень сложно и дорого. Успешные же проекты развиваются всегда. Не получится запустить и забыть. И с учетом среднего цикла жизни продукта около 8 лет — это время постоянного и стабильного денежного потока от понятного проекта.
Ну а Пулково желаю успешного старта и завершения проекта в запланированный срок)
Если понравилась статья — добро пожаловать в мой телеграмм об IT и интеграторских историях.
Ну а нет - минусите)
Можно ли выучить 1С без особых денежных вложений?
Неделю назад решила учить 1С. Муж порекомендовал начать с Радченко "Типовое пособие разработчика. Примеры и типовые приемы", чтобы как минимум понять моё или не моё.
За прошлую неделю прочитала около 240 страниц. Порадовалась первому созданному регистру накоплений и простому отчету. Пока прям в кайф. Не знаю стану ли разработчиком, но уже предвкушаю, как всякие свои таблички перенесу из экселя в 1с))))
Для себя поставила план через 3 месяца получить сертификат "Профессионала".
Этап 1. Первая учебная неделя
Введение - резюме повторяется в каждом посте.
@Mira.1c это блог о том, как я меняю свою профессию из бухгалтера в программисты 1с.
В данный момент я работаю бухгалтером на расчету заработной платы в IT компании на декретной ставке, это значит что в начале 2024 года мне придется искать новую работу. Мой опыт работы в бухучете составляет 8 лет на всех участках учета.
Мне 34 года и почему я выбрала именно эту профессию? Мое первое образование - "Программное обеспечение вычислительной техники и автоматизированных систем", второе "Экономист", а также я сертифицированный главный бухгалтер от ИПБ России (сообщество бухгалтеров). Ответ прост - я решила объединить то, что у меня хорошо получается.
В каком формате я вижу процесс описания обучения?
Я сделала таблицу с названиями всех уроков и отмечаю в ней прогресс обучения.
Она в открытом доступе и ее всегда можно посмотреть и даже откомментировать (Например, какие уроки нужно проработать более углубленно).
Так как я выбрала метод параллельного обучения, для лучшего усвоения информации, то предполагаю, что за 21 день я точно не управлюсь, даже с таким плотным графиком.
Скриншот из Гугл-док. Процесс обучения на 10.09.2023 года
С чем я познакомилась:
1) Подсистемы (и их настройка) - это объект для формирования удобного интерфейса для пользователя.
Что меня поставило в тупик: Каждая подсистема имеет "картинку" и ее отображение тоже можно настроить, а вот нигде не сказано как убрать картинки у подсистем, чтобы они не мозолили глаза. То есть отображение можно отключить уже в самом клиенте (а вот чтобы их вообще не было в конфигурации - я такого не нашла).
Отмена картинок самим пользователем через настройку панели разделов.
2 вида отображения с картинками (слева от текста и под текстом)
2) Справочники - это тоже объекты конфигурации, которые хранят "однотипные объекты", то есть имеющие одинаковую структуру и носящий списочный характер.
Элементы справочника: это данные которые там нужны для формирования базы данных (Клиенты, Номенклатура, Договора и т.д.).
А вот по типу данных в 1С Предприятии: всего там 4 типа данных:
Строка, Число, Дата, Булево* (*Boolean меня немного покоробило, но потом я поняла что по другому это и не перевести на русский видимо).
Что еще запомнилось. ИНН контрагента советуют делать по типу Строка, а не Число.
3) Перечисления - это значения, которые пользователь не сможет изменить или поменять, а может только использовать. То есть их создает исключительно разработчик и только он на них может повлиять.
4) Документы - это отражение хозяйственных операций организации (то есть счета, акты, упд и так далее).
Показали Табличные части, которые предназначены для хранения наборов однородной информации, принадлежащих объекту (справочнику, документу, отчету или обработке).
И вот тут мне открылось что-то новое, оказывается когда ты делаешь конфигурацию с нуля и формируешь документ (например, заказ поставщику) то при выборе номенклатуры, ты вообще заполняешь все ручками. Чтобы программа посчитала сумму, или подтянула цену закупки надо написать программный код :)
И тут все дают как бы пощупать ручками:
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.Товары.ТекущиеДанные;
СтрокаТабличнойЧасти.ЦенаПоступления = ЦенаИзНоменклатурыНаСервере(СтрокаТабличнойЧасти.Номенклатура);
СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.ЦенаПоступления * СтрокаТабличнойЧасти.Количество;
КонецПроцедуры
&НаСервере
Функция ЦенаИзНоменклатурыНаСервере(Номенклатура)
Возврат Номенклатура.ЦенаЗакупки;
КонецФункции
И это выглядит примерно так. Код на русском, так что тот кто не знает английского тут не пропадет, а вот кто изучал другие языки - будет привыкать.
Что мы имеем на это этапе:
Научили обращаться к объектам конфигурации, то есть например к справочнику Номенклатура и вытаскивать из нее нужное значение.
Как это работает? Воспринялось это так:
Создали Процедуру "ТоварыНоменклатураПриИзменении", в которую передали Элемент (это как я поняла реквизит формы в которой будут изменения).
Ввели переменную СтрокаТабличнойЧасти и при помощи метода - ТекущиеДанные, записали в переменную всю строчку "Товары", при этом эти "Элементы" - это путь к данным Товары, а не реквизит.
Функция была вызвала на сервере, чтобы достать из объекта конфигурации Номенклатура - ЦенуЗакупки
И передать ее в ячейку ЦенаПоступления (на скриншоте Цена), чтобы при выборе номенклатуры подтягивалась данная стоимость.
Скриншот как встает цена в ячейку при выборе номенклатуры.
&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.Товары.ТекущиеДанные;
СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.ЦенаПоступления * СтрокаТабличнойЧасти.Количество;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЦенаПоступленияПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.Товары.ТекущиеДанные;
СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.ЦенаПоступления * СтрокаТабличнойЧасти.Количество;
КонецПроцедуры
Этот код нужен чтобы при изменении в клиенте Количества или Цены, считалась сумма товара.
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
СуммаДокумента = Товары.Итог("Сумма");
КонецПроцедуры
А вот чтобы посчитать сумму документа код писался уже в другом модуле, а именно в модуле объекта.
Итог.
В общем пока мне нравится. Сильных отличий между бесплатными, платными курсами пока не вижу, где-то дают больше информации и теории, где-то поменьше. На платных курсах проверяют работы, на бесплатных я все делаю сама и меня никто не контролирует, поэтому сейчас у меня 4 базы на которых я учусь.
Книга 10 ступеней читается легче и она не так оперирует терминологией и "водой". Там коротко и по делу. А вот книга Радченко это отдельный вид написания учебника)) Все как в универе - если можно так выразиться.
Что скажете о таком формате ведения блога? Пока у меня вопросов не возникло по тем модулям что есть, но уже есть вопросы на будущие.
Вопрос на будущие 1.
Есть раздел Общие модули, в котором можно прописать все эти манипуляции с расчетом сумм для всех документов и вызывать процедуру в той форме, где она нужна (прочла об этом в книге и интернете).
Процедура РассчетСуммы(СтрокаТабличнойЧасти) ЭкспортСтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Цена;
КонецПроцедуры
И вот вопрос как передавать разные значения в один параметр "Цена" (Если у меня разные значения для Цена закупки, цена реализации, скидки и так далее), чтобы правильно рассчитать итоговые суммы.
Передавать массивы? В каждом модуле вводить дополнительные переменные?
Ответ на этот вопрос я опубликую - когда его найду и реализую :)
Спасибо всем, кто меня поддерживает, кому просто интересно, тем кто просто задает вопросы и особенно тем, кто дает советы.
И да я понимаю, что это самые азы и дальше будет веселее :)