Собеседование на программиста 1С. Задача 1. Распределение в таблице значений.
Собеседование на программиста 1С.
Задача 1. Распределение в таблице значений.
Полный курс доступен по ссылке
domrachev.ru/interview/
Телеграм канал
t.me/domrachev_consulting
1С - продажа, внедрение, обслуживание: domrachev.ru/
Бухгалтерское обслуживание: 1cbo.domrachev.ru/
#обучение #уроки #1С #1C #Домрачев #Домрачевконсалтинг
#обучение1С #уроки1С #собеседование #задача #программирование
Пікірлер: 47
Спасибо, можно ещё примеры для собеседований
Обычно делаю вот так (вроде понятнее): КоэффициентРаспределения = РаспределяемаяСумма/Таб.Итог("Количество"); Для Каждого Стр Из Таб Цикл Если Таб.Индекс(Стр)=Таб.Количество()-1 Тогда СуммаКРаспределению = РаспределяемаяСумма; Иначе СуммаКРаспределению = Окр(Таб.Количество()*КоэффициентРаспределения,2); КонецЕсли; РаспределяемаяСумма = РаспределяемаяСумма - СуммаКРаспределению; Таб.Сумма = Таб.Сумма + СуммаКРаспределению; КонецЦикла;
На какую позицию был собес с данной задачей? Заранее благодарен
Я накидал в Excel таблицу с вашим алгоритмом и "классическим" из начала видео, ваш показал себя более точным, так что возьму его на вооружение, спасибо. НО! Если ввести сумму распределения с копейками, то он распределяет большего нужного в последней строке, поэтому я бы для проверки ввёл новую переменную: СуммаИзменения = Мин(СуммаКРаспределению, РаспределяемаяСумма); И уже значение этой переменной использовать для сложения с Стр.Сумма и вычитания в РаспределяемаяСумма Надеюсь понятно описал
@nanami265
3 ай бұрын
Поправка, я накосячил)) нельзя использовать метод "Мин", т.к. округления может быть в меньшую сторону. Нужно для последней строки распределять всю сумму остатка, тут в комментариях как раз есть такой пример
Друзья. Скажите, пожалуйста, нужно выкладывать данные обработки куда-нибудь?
@user-jh1yd1et3s
6 ай бұрын
Выкладывайте😉😉
А что за такая запись таб.колонки.добавить()- выглядит как будто два вызова методов?
@domrachevconsulting
4 ай бұрын
Привет. Здесь крупный объект встроенного языка 1с (ил можно назвать коллекция) "таб", у него есть объекты ".колонки", а метод последний ".добавить()".
А просто РаспределяемуюСумму нельзя разделить на Итог Количество и получить сумму на единицу количества? Зачем этот коэффициент?
@domrachevconsulting
5 ай бұрын
Добрый день. Спасибо за вопрос. Здесь без переменной не обойтись, т.к. мы в последней строке в теле цикла вычитаем уже распределенную сумму. т.е. нам где то нужно хранить остаток для распределения, поэтому только переменная. Примечание: если бы не было такой операции, все равно в цикле лучше присвоить вызов функции переменной (в нашем случае .Итог()), т.к. каждый шаг цикла будет выполняться вызов функции и вычисляться по новой. Это опять же время и совсем не красиво. Вызов и выполнение функции всегда дольше по времени чем обращение к (получение значения) переменной. Качественный код начинается с таких мелочей. Удачи.)
@olegshpilevoy
5 ай бұрын
@@domrachevconsulting &НаСервереБезКонтекста Функция РаспределитьНаСервере(ЗНАЧ СуммаКРаспределению) ТЗ = Новый ТаблицаЗначений; ТЗ.Колонки.Добавить("Товар",Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(100))); ТЗ.Колонки.Добавить("Количество",Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10,3))); ТЗ.Колонки.Добавить("Сумма",Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15,2))); МассивСумм = СтрРазделить("0,100,130,150",","); ТекстСообщения = "Исходные данные таблицы:" + Символы.ПС; Для ш = 1 по 3 Цикл нс = ТЗ.Добавить(); нс.Товар = "Номенклатура" + ш; нс.Количество = ш; нс.Сумма = МассивСумм[ш]; КонецЦикла; ДополнитьТекстСообщенияСтрокойСообщения (ТекстСообщения, ТЗ); ТекстСообщения = ТекстСообщения + "Измененные данные таблицы:" + Символы.ПС; СуммаНаЕдиницуКоличества = СуммаКРаспределению / ТЗ.Итог("Количество"); СуммаСРаспределениемИтоговая = ТЗ.Итог("Сумма") + СуммаКРаспределению; Для Каждого стр из ТЗ Цикл стр.Сумма = стр.Сумма + Окр(стр.Количество * СуммаНаЕдиницуКоличества,0); КонецЦикла; стр.Сумма = стр.Сумма + СуммаСРаспределениемИтоговая - ТЗ.Итог("Сумма") ; ДополнитьТекстСообщенияСтрокойСообщения (ТекстСообщения, ТЗ); Сообщить(ТекстСообщения); КонецФункции &НаСервереБезКонтекста Процедура ДополнитьТекстСообщенияСтрокойСообщения(ТекстСообщения, ТЗ) Для Каждого стр из ТЗ Цикл ТекстСообщения = ТекстСообщения + СтрШаблон("%1 %2 %3",стр.Товар, стр.Количество, стр.Сумма) + Символы.ПС; КонецЦикла; КонецПроцедуры //Как то так я имел в виду
@domrachevconsulting
5 ай бұрын
@@olegshpilevoy Можно - это первое что в голову приходит. В вашем решении возможны отклонения из-за округлений и распределиться может не та сумма которая по условию.
2 вопроса к видео, 1) как писсали выше - 100 длинна количества и суммы вроде как не ровны 10 (если это опись, а не задумывалось как дезинформация, то все ок, все мы люди) 2) а зачем пускать 3 раза цикл ради сообщить, можно же одним же обходом сначала сообщить исходное писать, ниже сразу пересчитанное в этом же цикле, если хочется выделить отдельно то что дано, то также минус цикл (последний цикл лишний, все можно в пересчете). Чем меньше циклов, тем быстрее работает код, ну да и люди смотрят разные, те кто начинает (а значит будут также повторять циклы пускать лишние, там где они и не нужны были по факту). Ну и есть минивопрос: если итоги делаются по тз и перед ним шел цикл по тз, а не проще ли было прогоняя сообщение, сразу собирать итог по количеству?
@user-cy1zb5hc6j
17 күн бұрын
Сообщения - способ показать работу алгоритма, чтобы отделить логику алгоритма распределения от вывода и проверки результата ,ясное дело в реальной задаче будет 1 цикл с обработкой ТЧ документа.
А как округлиться 0,5 и что с этим делать?
@domrachevconsulting
6 ай бұрын
В какой момент? - не понял.
@domrachevconsulting
5 ай бұрын
Добрый день. Спасибо за вопрос. Здесь в функции округления Окр() второй параметр 0, т.е. округление будет происходить до целого числа (согласно условию задачи). Коэффициент по мере выполнения цикла будет стремиться к 1, т.е. на последнем шаге будет равен 1. Если я не понял вопроса, то расскажите что вы хотели спросить.)
@Nice_One_Me
5 ай бұрын
@@domrachevconsulting 14:01 РаспределяемаяСумма = 63, количество в 3 строке сделать единицу. Там округление идет от 0,5 - 2 раза должно в большую сторону округлить, не будет ли превышение суммы. Вот в чем вопрос.
Подскажите по Коэффициентам это алгебра 6 класс или пораньше? просто интересно стало. Спасибо за пример!
@domrachevconsulting
4 ай бұрын
Добрый день. Я не помню - давно закончил и наверно все поменялось в программе.
Я не понимаю. Говорит, сделаем точность числа = 10 и пишет 100. Как можно быть невнимательным в программировании?
@domrachevconsulting
4 ай бұрын
Добрый день. Это было специально сделано - вы первый кто за полгода это увидели (или по крайней мере прокомментировали). Вас ждет приз. Да в программировании может быть много ошибок - не ошибается только тот кто ничего не делает.
@F114able
4 ай бұрын
@@domrachevconsulting Доброе утро! У меня был реальный кейс с ошибочной точностью числа, которая привела к "округлению" одной из величин ВГХ товара до нуля и при расчете объема тоже получилось якобы 0, что не позволило назначить рейсу транспорт. Поэтому теперь я очень внимательно за этим слежу :)
@mnnovikov845
3 ай бұрын
Я тоже не понимаю, как в слове длина можно услышать "точность числа". - "Тщательней надо, ребята."
@domrachevconsulting
3 ай бұрын
@@mnnovikov845 Спасибо за комментарий. Не помню в каком контексте сказал. Но "точность числа" распространённый оборот (можете в Google набрать). И в целом примечание: "Неидеальное действие лучше идеального бездействия."
@domrachevconsulting
3 ай бұрын
Добрый день. У вас личные сообщения отключены. Можете написать на почту admin@domrachev.ru или +7(916)509-65-16 watsap. Нужно имя и адрес для отправки. Андрей Домрачев.
Как всё запущено) В библиотеке стандартных подсистем есть готовая функция ОбщегоНазначения.РаспределитьСуммуПропорциональноКоэффициентам()
@domrachevconsulting
6 ай бұрын
Спасибо за комментарий. Запущено не запущено - это решение задачки на собеседовании - а если будет пустая база (создаешь ее сам - там этой БСП не будет). Даже если через БСП напишешь - то уже провалил собеседование. Советую уточнить на собеседовании а можно так или нельзя. Удачи)
@user-ur6cy4ff2d
5 ай бұрын
Катати там на вход подается КоэффициентыРаспределения , а тут показано как расчитать его. Задача простая , но интересно.
@Anastasiya-tm3rd
3 ай бұрын
@@domrachevconsultingвпустую базу можно подключит бсп. Для чего эта база будет создаваться-то?
@domrachevconsulting
3 ай бұрын
@@Anastasiya-tm3rd Добрый день. Я привел задачи для тестирования на испытательном. Дают вам ноут. там пустая база. говорят сделать то-то. БСП установить можно - но откуда вы ее возьмете на собеседовании - будете на ИТС заходить вводить пароли (а если интернета нет или доступа к ИТС) или с флешки (а если прав администраторских нет на установку - так и потерял 10 минут на все - при чем собеседующий может все это видеть - а поставит вопрос о профессионализме.)
@mariashapovalova9810
2 ай бұрын
Да, очень важно уточнить вводные: я бы это решение оценила как ‘спасибо за креатив, вы знаете алгоритмы, но мне нужно ещё и знание БСП чтобы не тратить время на изобретение велосипеда’
А этот пример хороший. Со срезом последних вообще никуда не годилось. Видео про срез последних и предпоследних лучше удалить, чтобы дерзкие молодые головы не ссылались на него как на эталон.
@domrachevconsulting
3 ай бұрын
Cпасибо за добрые слова.
Это точно задача с собес по 1с? Скорее собеседование по экселю
@domrachevconsulting
4 ай бұрын
Привет. Да. Иногда полезно владеть Excel - при миграции данных, меппинге данных. Аналогов еще нет.
Абсолютно бесполезная задача, на собесе давать ее смысла никакого. На собесе спрашивают знание типовых.
@user-bp1fm9vl7m
5 ай бұрын
@@user-ur6cy4ff2d а ты по всей видимости вообще не работал
@domrachevconsulting
4 ай бұрын
Привет. Бывают разные собеседования. Знание типовых тоже хорошо. Но в 1с сейчас деление идет специалистов на программистов и на консультантов-аналитиков. Последние как раз и работают с бизнесом (пользователями) и должны переложить бизнес-процессы на типовую. чего не хватает дописывает программист.
@Anastasiya-tm3rd
3 ай бұрын
@@domrachevconsulting на фикси далеко не всегда есть и аналитик и программист, обычно в одном лице все
@domrachevconsulting
3 ай бұрын
@@Anastasiya-tm3rd Да такое возможно - у меня был период в жизни где я делал "все абсолютно" в компании (сеть, сервера, компы, кассы, возил технику в сервис, закупал, админил, прокладывал новую сеть, менял картриджи, возил бухгалтера в налоговую). Мое мнение делать карьеру в известных компаниях, на проектах, где есть разделение обязанностей - собственно и зарплаты большие. Занимаюсь подбором программистов и консов - довольно часто вижу: "Хочу 300 000 рублей" - смотришь 10 лет на одном месте сидел (что там делать?)- внедрение из коробки - компания "Без имени", в команде не работал, управление проектами не знает - но гонору и амбиций до кучи.
@Anastasiya-tm3rd
3 ай бұрын
@@domrachevconsulting я не про делал все, а про обязанности специалиста 1с, обычно это не просто кодер, чистый кодер никому не нужен. Замена картриджей очевидно не обязанность специалиста 1с
какая чепуха
@domrachevconsulting
4 ай бұрын
Алла, добрый день. Критика должна быть обоснована! Думал может на вашем канале можно поучиться делать не чепуху. Ничего не нашел. Удачи. Самоутверждайтесь в другом месте.