Собеседование на программиста 1С. Задача 1. Распределение в таблице значений.

Собеседование на программиста 1С.
Задача 1. Распределение в таблице значений.
Полный курс доступен по ссылке
domrachev.ru/interview/
Телеграм канал
t.me/domrachev_consulting
1С - продажа, внедрение, обслуживание: domrachev.ru/
Бухгалтерское обслуживание: 1cbo.domrachev.ru/
#обучение #уроки #1С #1C #Домрачев #Домрачевконсалтинг
#обучение1С #уроки1С #собеседование #задача #программирование

Пікірлер: 47

  • @sergio_khb
    @sergio_khb7 ай бұрын

    Спасибо, можно ещё примеры для собеседований

  • @saddyleb
    @saddyleb3 ай бұрын

    Обычно делаю вот так (вроде понятнее): КоэффициентРаспределения = РаспределяемаяСумма/Таб.Итог("Количество"); Для Каждого Стр Из Таб Цикл Если Таб.Индекс(Стр)=Таб.Количество()-1 Тогда СуммаКРаспределению = РаспределяемаяСумма; Иначе СуммаКРаспределению = Окр(Таб.Количество()*КоэффициентРаспределения,2); КонецЕсли; РаспределяемаяСумма = РаспределяемаяСумма - СуммаКРаспределению; Таб.Сумма = Таб.Сумма + СуммаКРаспределению; КонецЦикла;

  • @user-wp8cv1vm7k
    @user-wp8cv1vm7k2 ай бұрын

    На какую позицию был собес с данной задачей? Заранее благодарен

  • @nanami265
    @nanami2653 ай бұрын

    Я накидал в Excel таблицу с вашим алгоритмом и "классическим" из начала видео, ваш показал себя более точным, так что возьму его на вооружение, спасибо. НО! Если ввести сумму распределения с копейками, то он распределяет большего нужного в последней строке, поэтому я бы для проверки ввёл новую переменную: СуммаИзменения = Мин(СуммаКРаспределению, РаспределяемаяСумма); И уже значение этой переменной использовать для сложения с Стр.Сумма и вычитания в РаспределяемаяСумма Надеюсь понятно описал

  • @nanami265

    @nanami265

    3 ай бұрын

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

  • @domrachevconsulting
    @domrachevconsulting10 ай бұрын

    Друзья. Скажите, пожалуйста, нужно выкладывать данные обработки куда-нибудь?

  • @user-jh1yd1et3s

    @user-jh1yd1et3s

    6 ай бұрын

    Выкладывайте😉😉

  • @user-st2hi4ov7e
    @user-st2hi4ov7e5 ай бұрын

    А что за такая запись таб.колонки.добавить()- выглядит как будто два вызова методов?

  • @domrachevconsulting

    @domrachevconsulting

    4 ай бұрын

    Привет. Здесь крупный объект встроенного языка 1с (ил можно назвать коллекция) "таб", у него есть объекты ".колонки", а метод последний ".добавить()".

  • @olegshpilevoy
    @olegshpilevoy5 ай бұрын

    А просто РаспределяемуюСумму нельзя разделить на Итог Количество и получить сумму на единицу количества? Зачем этот коэффициент?

  • @domrachevconsulting

    @domrachevconsulting

    5 ай бұрын

    Добрый день. Спасибо за вопрос. Здесь без переменной не обойтись, т.к. мы в последней строке в теле цикла вычитаем уже распределенную сумму. т.е. нам где то нужно хранить остаток для распределения, поэтому только переменная. Примечание: если бы не было такой операции, все равно в цикле лучше присвоить вызов функции переменной (в нашем случае .Итог()), т.к. каждый шаг цикла будет выполняться вызов функции и вычисляться по новой. Это опять же время и совсем не красиво. Вызов и выполнение функции всегда дольше по времени чем обращение к (получение значения) переменной. Качественный код начинается с таких мелочей. Удачи.)

  • @olegshpilevoy

    @olegshpilevoy

    5 ай бұрын

    @@domrachevconsulting &НаСервереБезКонтекста Функция РаспределитьНаСервере(ЗНАЧ СуммаКРаспределению) ТЗ = Новый ТаблицаЗначений; ТЗ.Колонки.Добавить("Товар",Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(100))); ТЗ.Колонки.Добавить("Количество",Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10,3))); ТЗ.Колонки.Добавить("Сумма",Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15,2))); МассивСумм = СтрРазделить("0,100,130,150",","); ТекстСообщения = "Исходные данные таблицы:" + Символы.ПС; Для ш = 1 по 3 Цикл нс = ТЗ.Добавить(); нс.Товар = "Номенклатура" + ш; нс.Количество = ш; нс.Сумма = МассивСумм[ш]; КонецЦикла; ДополнитьТекстСообщенияСтрокойСообщения (ТекстСообщения, ТЗ); ТекстСообщения = ТекстСообщения + "Измененные данные таблицы:" + Символы.ПС; СуммаНаЕдиницуКоличества = СуммаКРаспределению / ТЗ.Итог("Количество"); СуммаСРаспределениемИтоговая = ТЗ.Итог("Сумма") + СуммаКРаспределению; Для Каждого стр из ТЗ Цикл стр.Сумма = стр.Сумма + Окр(стр.Количество * СуммаНаЕдиницуКоличества,0); КонецЦикла; стр.Сумма = стр.Сумма + СуммаСРаспределениемИтоговая - ТЗ.Итог("Сумма") ; ДополнитьТекстСообщенияСтрокойСообщения (ТекстСообщения, ТЗ); Сообщить(ТекстСообщения); КонецФункции &НаСервереБезКонтекста Процедура ДополнитьТекстСообщенияСтрокойСообщения(ТекстСообщения, ТЗ) Для Каждого стр из ТЗ Цикл ТекстСообщения = ТекстСообщения + СтрШаблон("%1 %2 %3",стр.Товар, стр.Количество, стр.Сумма) + Символы.ПС; КонецЦикла; КонецПроцедуры //Как то так я имел в виду

  • @domrachevconsulting

    @domrachevconsulting

    5 ай бұрын

    @@olegshpilevoy Можно - это первое что в голову приходит. В вашем решении возможны отклонения из-за округлений и распределиться может не та сумма которая по условию.

  • @romamyasnikov9760
    @romamyasnikov97602 ай бұрын

    2 вопроса к видео, 1) как писсали выше - 100 длинна количества и суммы вроде как не ровны 10 (если это опись, а не задумывалось как дезинформация, то все ок, все мы люди) 2) а зачем пускать 3 раза цикл ради сообщить, можно же одним же обходом сначала сообщить исходное писать, ниже сразу пересчитанное в этом же цикле, если хочется выделить отдельно то что дано, то также минус цикл (последний цикл лишний, все можно в пересчете). Чем меньше циклов, тем быстрее работает код, ну да и люди смотрят разные, те кто начинает (а значит будут также повторять циклы пускать лишние, там где они и не нужны были по факту). Ну и есть минивопрос: если итоги делаются по тз и перед ним шел цикл по тз, а не проще ли было прогоняя сообщение, сразу собирать итог по количеству?

  • @user-cy1zb5hc6j

    @user-cy1zb5hc6j

    17 күн бұрын

    Сообщения - способ показать работу алгоритма, чтобы отделить логику алгоритма распределения от вывода и проверки результата ,ясное дело в реальной задаче будет 1 цикл с обработкой ТЧ документа.

  • @Nice_One_Me
    @Nice_One_Me6 ай бұрын

    А как округлиться 0,5 и что с этим делать?

  • @domrachevconsulting

    @domrachevconsulting

    6 ай бұрын

    В какой момент? - не понял.

  • @domrachevconsulting

    @domrachevconsulting

    5 ай бұрын

    Добрый день. Спасибо за вопрос. Здесь в функции округления Окр() второй параметр 0, т.е. округление будет происходить до целого числа (согласно условию задачи). Коэффициент по мере выполнения цикла будет стремиться к 1, т.е. на последнем шаге будет равен 1. Если я не понял вопроса, то расскажите что вы хотели спросить.)

  • @Nice_One_Me

    @Nice_One_Me

    5 ай бұрын

    @@domrachevconsulting 14:01 РаспределяемаяСумма = 63, количество в 3 строке сделать единицу. Там округление идет от 0,5 - 2 раза должно в большую сторону округлить, не будет ли превышение суммы. Вот в чем вопрос.

  • @user-ur6cy4ff2d
    @user-ur6cy4ff2d5 ай бұрын

    Подскажите по Коэффициентам это алгебра 6 класс или пораньше? просто интересно стало. Спасибо за пример!

  • @domrachevconsulting

    @domrachevconsulting

    4 ай бұрын

    Добрый день. Я не помню - давно закончил и наверно все поменялось в программе.

  • @F114able
    @F114able4 ай бұрын

    Я не понимаю. Говорит, сделаем точность числа = 10 и пишет 100. Как можно быть невнимательным в программировании?

  • @domrachevconsulting

    @domrachevconsulting

    4 ай бұрын

    Добрый день. Это было специально сделано - вы первый кто за полгода это увидели (или по крайней мере прокомментировали). Вас ждет приз. Да в программировании может быть много ошибок - не ошибается только тот кто ничего не делает.

  • @F114able

    @F114able

    4 ай бұрын

    @@domrachevconsulting Доброе утро! У меня был реальный кейс с ошибочной точностью числа, которая привела к "округлению" одной из величин ВГХ товара до нуля и при расчете объема тоже получилось якобы 0, что не позволило назначить рейсу транспорт. Поэтому теперь я очень внимательно за этим слежу :)

  • @mnnovikov845

    @mnnovikov845

    3 ай бұрын

    Я тоже не понимаю, как в слове длина можно услышать "точность числа". - "Тщательней надо, ребята."

  • @domrachevconsulting

    @domrachevconsulting

    3 ай бұрын

    @@mnnovikov845 Спасибо за комментарий. Не помню в каком контексте сказал. Но "точность числа" распространённый оборот (можете в Google набрать). И в целом примечание: "Неидеальное действие лучше идеального бездействия."

  • @domrachevconsulting

    @domrachevconsulting

    3 ай бұрын

    Добрый день. У вас личные сообщения отключены. Можете написать на почту admin@domrachev.ru или +7(916)509-65-16 watsap. Нужно имя и адрес для отправки. Андрей Домрачев.

  • @AlexandrPuzakov
    @AlexandrPuzakov6 ай бұрын

    Как всё запущено) В библиотеке стандартных подсистем есть готовая функция ОбщегоНазначения.РаспределитьСуммуПропорциональноКоэффициентам()

  • @domrachevconsulting

    @domrachevconsulting

    6 ай бұрын

    Спасибо за комментарий. Запущено не запущено - это решение задачки на собеседовании - а если будет пустая база (создаешь ее сам - там этой БСП не будет). Даже если через БСП напишешь - то уже провалил собеседование. Советую уточнить на собеседовании а можно так или нельзя. Удачи)

  • @user-ur6cy4ff2d

    @user-ur6cy4ff2d

    5 ай бұрын

    Катати там на вход подается КоэффициентыРаспределения , а тут показано как расчитать его. Задача простая , но интересно.

  • @Anastasiya-tm3rd

    @Anastasiya-tm3rd

    3 ай бұрын

    ​@@domrachevconsultingвпустую базу можно подключит бсп. Для чего эта база будет создаваться-то?

  • @domrachevconsulting

    @domrachevconsulting

    3 ай бұрын

    @@Anastasiya-tm3rd Добрый день. Я привел задачи для тестирования на испытательном. Дают вам ноут. там пустая база. говорят сделать то-то. БСП установить можно - но откуда вы ее возьмете на собеседовании - будете на ИТС заходить вводить пароли (а если интернета нет или доступа к ИТС) или с флешки (а если прав администраторских нет на установку - так и потерял 10 минут на все - при чем собеседующий может все это видеть - а поставит вопрос о профессионализме.)

  • @mariashapovalova9810

    @mariashapovalova9810

    2 ай бұрын

    Да, очень важно уточнить вводные: я бы это решение оценила как ‘спасибо за креатив, вы знаете алгоритмы, но мне нужно ещё и знание БСП чтобы не тратить время на изобретение велосипеда’

  • @evgenievgeni2016
    @evgenievgeni20163 ай бұрын

    А этот пример хороший. Со срезом последних вообще никуда не годилось. Видео про срез последних и предпоследних лучше удалить, чтобы дерзкие молодые головы не ссылались на него как на эталон.

  • @domrachevconsulting

    @domrachevconsulting

    3 ай бұрын

    Cпасибо за добрые слова.

  • @user-co2dx6dm1y
    @user-co2dx6dm1y5 ай бұрын

    Это точно задача с собес по 1с? Скорее собеседование по экселю

  • @domrachevconsulting

    @domrachevconsulting

    4 ай бұрын

    Привет. Да. Иногда полезно владеть Excel - при миграции данных, меппинге данных. Аналогов еще нет.

  • @user-bp1fm9vl7m
    @user-bp1fm9vl7m5 ай бұрын

    Абсолютно бесполезная задача, на собесе давать ее смысла никакого. На собесе спрашивают знание типовых.

  • @user-bp1fm9vl7m

    @user-bp1fm9vl7m

    5 ай бұрын

    @@user-ur6cy4ff2d а ты по всей видимости вообще не работал

  • @domrachevconsulting

    @domrachevconsulting

    4 ай бұрын

    Привет. Бывают разные собеседования. Знание типовых тоже хорошо. Но в 1с сейчас деление идет специалистов на программистов и на консультантов-аналитиков. Последние как раз и работают с бизнесом (пользователями) и должны переложить бизнес-процессы на типовую. чего не хватает дописывает программист.

  • @Anastasiya-tm3rd

    @Anastasiya-tm3rd

    3 ай бұрын

    ​@@domrachevconsulting на фикси далеко не всегда есть и аналитик и программист, обычно в одном лице все

  • @domrachevconsulting

    @domrachevconsulting

    3 ай бұрын

    @@Anastasiya-tm3rd Да такое возможно - у меня был период в жизни где я делал "все абсолютно" в компании (сеть, сервера, компы, кассы, возил технику в сервис, закупал, админил, прокладывал новую сеть, менял картриджи, возил бухгалтера в налоговую). Мое мнение делать карьеру в известных компаниях, на проектах, где есть разделение обязанностей - собственно и зарплаты большие. Занимаюсь подбором программистов и консов - довольно часто вижу: "Хочу 300 000 рублей" - смотришь 10 лет на одном месте сидел (что там делать?)- внедрение из коробки - компания "Без имени", в команде не работал, управление проектами не знает - но гонору и амбиций до кучи.

  • @Anastasiya-tm3rd

    @Anastasiya-tm3rd

    3 ай бұрын

    @@domrachevconsulting я не про делал все, а про обязанности специалиста 1с, обычно это не просто кодер, чистый кодер никому не нужен. Замена картриджей очевидно не обязанность специалиста 1с

  • @AllaGoriannikova
    @AllaGoriannikova4 ай бұрын

    какая чепуха

  • @domrachevconsulting

    @domrachevconsulting

    4 ай бұрын

    Алла, добрый день. Критика должна быть обоснована! Думал может на вашем канале можно поучиться делать не чепуху. Ничего не нашел. Удачи. Самоутверждайтесь в другом месте.

Келесі