Переделка обработчика проведения для документа с табличной частью. Возможные ошибки в документе. Читайте статьи по 1С на нашем сайте: programmist1s.r...
Лично меня уже радует то, что я увидел ошибки, допущенные Ильей еще до момента их выявления компилятором. А я начал учить курс 1С только пока по данным видео. Отсюда логичный вывод - что видео дают положительный эффект. Спасибо, Илья!
Начинают появляться особые комментаторы! Я теперь понимаю почему трудно учить людей! А ответ сложен! Из: Они просто не практикуются! Они не повторяют пройденный материал! Они не имеют паралельной задачи! Они не преподают здесь материал примерами! Они зляться когда у них после этого всего что то не получается и валят все проблемы на преподавателя, которому просто интересно учить тех, кто прощает ошибки и помогает ему учить себя! Илья такой же как и каждый из нас! Но много ли из нас таких же как Илья?
Ну вот бред же написал, и наверное сам порадовался. Учить людей сложно совсем по другим причинам: 1. У тебя может быть отличная версия на 1С и нет возможности накатить такую же, 2. В самой программе существует бардак между работой на толстом и тонком клиенте, 3. Мозги у людей разные, кто то запоминает и понимает всё с первого раза, кто то со второго, кто то с третьего, а кому то такие объяснения не подходят, чисто по восприятию, 4. Повторение пройденного материала - необязательный аспект (представь себе, что есть люди, кто параллельно занимается еще и изучением какого нить другого языка программирования), 5. Учитель - на то и учитель, в первую очередь его задача это научить людей и донести что всё не так сложно, что любую ошибку можно либо решить, либо забить на нее и решить позже. 6. Ну а по поводу того что Илья такой же как и каждый из вас, ну хз, не видел чтоб он в комментариях кого то байтил
На самом деле, надо больше "защите от дураков" внимания уделить. К примеру, логичнее проверять уже при выборе сотрудника, был ли он уже оформлен на работу ранее, а не при проведении. Если да, то вообще не давать его вводить. Лично я так сделал. И кроме того, отслеживать ситуацию, когда в списке выбрали несколько раз (>1) одного и того же сотрудника. Такие вещи надо отсекать сразу, на моменте ввода, а не потом, когда операция проведения будет орать и ругаться на что-то.
Илья Привет! С гипер ссылками я разобрался самостоятельно))) , еще момент при попытке создать документ в списке, система начинает Ругаться и выдает ошибки в модуле который мы создавали для табличной формы.
На 4:51 запускаю приложение и вываливается куча ошибок....Переменная Сотрудник не определена....Ковырял, ковырял, не нашел причину...включил предыдущее видео конец...и увидел, что проморгал , что Илья закоментировал код печатной формы в документе "Прием сотрудников списком". Так что, кто наступил на те же грабли - закоментите код печатной формы.
После создании Документа приема на работу и внесение сотрудника на работу, нажимаю ОК. Открываю заново приказ, а внутри нет записей о новых сотрудниках. Где косяк может быть?
Ругается на этапе проведения, пишет "Преобразование значения к типу Булево не может быть выполнено". Отправляет в строки: Если СотрудникПринятНаРаботу(Строка.Сотрудник) Тогда
Сообщить("Документ не проведен! Ссотрудник "+ Строка.Сотрудник.Наименование + " принят на работу другим документов!"); Отказ = Истина; Возврат; ____ Несколько раз посмотрел на экран, код идентичный, но пришлось гуглить, в чём проблема, оказалось, что условный оператор как-то неправильно читается, пришлось самому методом тыка как-то решать проблема. Ввёл "= Истина" в первой строке и получилось: Если СотрудникПринятНаРаботу(Строка.Сотрудник) = Истина Тогда ___ Ошибка перестала вылетать, новый сотрудник стал проводиться, но что-то всё равно не так
Переделка обработчика проведения для документа с табличной частью. Возможные ошибки в документе. Услуги 1С программиста в Москве: 1cproger.ru/ Читайте статьи по 1С на нашем сайте: programmist1s.ru/materialyi-po-1s/
Скорее всего данный документ не установлен как регистратор для регистра сведений "Кадровые движения". Вы наверное создавали прием на работу списком с нуля, а не как автор - копировали обычный прием на работу и его редактировали.
чудеса какие-то, в коде уже ошибок нет, за кадром его изменил, а показать не судьба было? всплывает ошибка "Переменная не определена (Сотрудник)" ибо в первой части видео этот и другие реквизиты были удалены и взамен создавались реквизиты табличной части, и как в коде сослаться на эти реквизиты? ничего не объяснил, не показал исправленный код, а показал уже работу исправленного кода.
иван иванов, вы разобрались с ошибкой ?у меня аналогичная ошибка сотрудник не определен и она именно в макетовой части. сотрудник мол не определен. непонятно как ссылаться в макетовой части на табличные данные
курс леонтьева сделан на отъебись что называется, я уже не помню что там с этой ошибкой, лучше не трать время на дальнейшее прохождение этого курса, изучай курс Чистова, можно еще Камкова.
@@lankaster4769,я вот хочу изучать эту отрасль. к какому каналу обратиться лучше не подскажешь?где информативнее будет и тд. а про отьебись да я замечал немного ...
@Jerry Ferry выше уже указал какие курсы лучше, Павла Чистова, можно еще Камкова но с его курсом там тоже могут быть трудности, на каком то этапе нужны будут конфигурации которых в сети никто найти не может, они есть у тех кто оффлайн курс проходил, но в принципе можно и без них обойтись, чисто просмотр видео, вполне доступно объясняет. Но в приоритете курсы Чистова.
Вообще - то он его закоментировал!!! И сказал потом разберёмся. Так же если ты внимательно смотрел эти 2 урока ты легко переделаешь этот обработчик сам.
Только вот систему я все-таки сломала, круто. Теперь у меня оригинал опустел, а в новом все полное. И еще ограничение прилетело, как же я его ждала. Чтож, на этом, походу, практика заканчивается, пора кормиться теорией.
@@spectraleon9013 уже разобралась. У меня оно сработало, когда я пыталась написать код очистки регистра сведений. Я потом его удалила и ограничение ушло. Либо оно сработало из-за специфичного содержания кода, либо из-за количества уже имеющихся кодов, не знаю, но суть в том, что программа не дает делать то, что можно делать в лицензионке.
Если ТабРезультат.Найти(строка.Сотрудник, "Сотрудник") Неопределено Тогда Сообщить("Документ не проведен! " + строка.Сотрудник + " уже принят на работу другим документом."); Отказ = Истина; КонецЕсли;
КонецЦикла;
Если Отказ = Истина Тогда Возврат; КонецЕсли; // регистр КадровыеПеремещения Движения.КадровыеПеремещения.Записывать = Истина; Движения.КадровыеПеремещения.Очистить();
Добрый день! Решил воспользоваться Вашим кодом, чтобы более глубоко разобраться в теме. Но не смог понять смысл вложенного запроса, установки параметра "Ссылка". Я закомментировал часть Вашего кода в запросе, как понимаю логику работы. И вроде бы всё хорошо выполняется. Но не могли бы Вы пояснить для чего вложенный запрос? Вот то, что работает у меня: Функция ПринятЛиСотрудникНаРаботу()
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | КадровыеПеремещения.Сотрудник |ИЗ | РегистрСведений.КадровыеПеремещения КАК КадровыеПеремещения |ГДЕ //| КадровыеПеремещения.Сотрудник В //| (ВЫБРАТЬ //| ПриемНаРаботуСпискомРаботники.Сотрудник //| ИЗ //| Документ.ПриемНаРаботуСписком.Работники КАК ПриемНаРаботуСпискомРаботники //| ГДЕ //| ПриемНаРаботуСпискомРаботники.Ссылка = &Ссылка) | КадровыеПеремещения.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояний.ПриемНаРаботу)";
//Запрос.УстановитьПараметр("Ссылка", Ссылка); //ссылка - это ссылка этогоже документа ПриемНаРаботуСписком,, в модуле которого находимся.
Если ТабРезультат.Найти(строка.Сотрудник, "Сотрудник") Неопределено Тогда Сообщить("Документ не проведен! " + строка.Сотрудник + " уже принят на работу другим документом."); Отказ = Истина; КонецЕсли;
КонецЦикла;
Если Отказ = Истина Тогда Возврат; КонецЕсли; // регистр КадровыеПеремещения Движения.КадровыеПеремещения.Записывать = Истина; Движения.КадровыеПеремещения.Очистить();
Лично меня уже радует то, что я увидел ошибки, допущенные Ильей еще до момента их выявления компилятором. А я начал учить курс 1С только пока по данным видео. Отсюда логичный вывод - что видео дают положительный эффект. Спасибо, Илья!
Начинают появляться особые комментаторы! Я теперь понимаю почему трудно учить людей! А ответ сложен!
Из: Они просто не практикуются! Они не повторяют пройденный материал! Они не имеют паралельной задачи! Они не преподают здесь материал примерами! Они зляться когда у них после этого всего что то не получается и валят все проблемы на преподавателя, которому просто интересно учить тех, кто прощает ошибки и помогает ему учить себя!
Илья такой же как и каждый из нас! Но много ли из нас таких же как Илья?
Ну вот бред же написал, и наверное сам порадовался. Учить людей сложно совсем по другим причинам:
1. У тебя может быть отличная версия на 1С и нет возможности накатить такую же,
2. В самой программе существует бардак между работой на толстом и тонком клиенте,
3. Мозги у людей разные, кто то запоминает и понимает всё с первого раза, кто то со второго, кто то с третьего, а кому то такие объяснения не подходят, чисто по восприятию,
4. Повторение пройденного материала - необязательный аспект (представь себе, что есть люди, кто параллельно занимается еще и изучением какого нить другого языка программирования),
5. Учитель - на то и учитель, в первую очередь его задача это научить людей и донести что всё не так сложно, что любую ошибку можно либо решить, либо забить на нее и решить позже.
6. Ну а по поводу того что Илья такой же как и каждый из вас, ну хз, не видел чтоб он в комментариях кого то байтил
На самом деле, надо больше "защите от дураков" внимания уделить. К примеру, логичнее проверять уже при выборе сотрудника, был ли он уже оформлен на работу ранее, а не при проведении. Если да, то вообще не давать его вводить. Лично я так сделал. И кроме того, отслеживать ситуацию, когда в списке выбрали несколько раз (>1) одного и того же сотрудника. Такие вещи надо отсекать сразу, на моменте ввода, а не потом, когда операция проведения будет орать и ругаться на что-то.
Илья Привет! С гипер ссылками я разобрался самостоятельно))) , еще момент при попытке создать документ в списке, система начинает Ругаться и выдает ошибки в модуле который мы создавали для табличной формы.
На 4:51 запускаю приложение и вываливается куча ошибок....Переменная Сотрудник не определена....Ковырял, ковырял, не нашел причину...включил предыдущее видео конец...и увидел, что проморгал , что Илья закоментировал код печатной формы в документе "Прием сотрудников списком". Так что, кто наступил на те же грабли - закоментите код печатной формы.
тоже кумекал над этим и додумал, что если ввести в табличную часть нескольких сотрудников, то программа не сможет понять даже кому печатать договор.
После создании Документа приема на работу и внесение сотрудника на работу, нажимаю ОК. Открываю заново приказ, а внутри нет записей о новых сотрудниках. Где косяк может быть?
Ругается на этапе проведения, пишет "Преобразование значения к типу Булево не может быть выполнено". Отправляет в строки:
Если СотрудникПринятНаРаботу(Строка.Сотрудник) Тогда
Сообщить("Документ не проведен! Ссотрудник "+ Строка.Сотрудник.Наименование + " принят на работу другим документов!");
Отказ = Истина;
Возврат;
____
Несколько раз посмотрел на экран, код идентичный, но пришлось гуглить, в чём проблема, оказалось, что условный оператор как-то неправильно читается, пришлось самому методом тыка как-то решать проблема.
Ввёл "= Истина" в первой строке и получилось:
Если СотрудникПринятНаРаботу(Строка.Сотрудник) = Истина Тогда
___
Ошибка перестала вылетать, новый сотрудник стал проводиться, но что-то всё равно не так
Спасибо друг!
Можешь показать, как программно заполнять табличную часть документа из другого обработчика???
Почему было просто не обратиться к Выборке? Как раз не было бы циклического обращения к запросу....
Переделка обработчика проведения для документа с табличной частью. Возможные ошибки в документе.
Услуги 1С программиста в Москве:
1cproger.ru/
Читайте статьи по 1С на нашем сайте:
programmist1s.ru/materialyi-po-1s/
Илья, Вы получаете миллион?
все сделала 1 в 1, при проведении документа "Прием на работу (списком)" пишет Поле объекта не обнаружено (КадровыеПеремещения)
Скорее всего данный документ не установлен как регистратор для регистра сведений "Кадровые движения". Вы наверное создавали прием на работу списком с нуля, а не как автор - копировали обычный прием на работу и его редактировали.
спасибо!
чудеса какие-то, в коде уже ошибок нет, за кадром его изменил, а показать не судьба было?
всплывает ошибка "Переменная не определена (Сотрудник)"
ибо в первой части видео этот и другие реквизиты были удалены и взамен создавались реквизиты табличной части, и как в коде сослаться на эти реквизиты? ничего не объяснил, не показал исправленный код, а показал уже работу исправленного кода.
иван иванов, вы разобрались с ошибкой ?у меня аналогичная ошибка сотрудник не определен и она
именно в макетовой части. сотрудник мол не определен. непонятно как ссылаться в макетовой части на
табличные данные
курс леонтьева сделан на отъебись что называется, я уже не помню что там с этой ошибкой, лучше не трать время на дальнейшее прохождение этого курса, изучай курс Чистова, можно еще Камкова.
@@lankaster4769,я вот хочу изучать эту отрасль. к какому каналу обратиться лучше не подскажешь?где информативнее будет и тд. а про отьебись да я замечал немного ...
@Jerry Ferry выше уже указал какие курсы лучше, Павла Чистова, можно еще Камкова но с его курсом там тоже могут быть трудности, на каком то этапе нужны будут конфигурации которых в сети никто найти не может, они есть у тех кто оффлайн курс проходил, но в принципе можно и без них обойтись, чисто просмотр видео, вполне доступно объясняет. Но в приоритете курсы Чистова.
Вообще - то он его закоментировал!!! И сказал потом разберёмся. Так же если ты внимательно смотрел эти 2 урока ты легко переделаешь этот обработчик сам.
Почему вместо "Такой Сотрудник " мы пишем : Строка.Сотрудник.Наиминование.? А в движении Строка.Сотрудник. это не одно и тоже?
Получается что немного разное...
Откуда столько несправедливости: себе миллион, а Чингачкуку 50 тысяч только??????
А где табличная часть документа (часть 3) ?
Чингачгук порадовал
Себе - 1 000 000
Чингачкуку - 50 000
Чингачкук тоже будет нормально получать ...
Чингачкук moment 0.0
тоже обратил внимание🤣
Когда код закончила верно на 15 секунд раньше: Превозмогла учителя!
Только вот систему я все-таки сломала, круто. Теперь у меня оригинал опустел, а в новом все полное. И еще ограничение прилетело, как же я его ждала.
Чтож, на этом, походу, практика заканчивается, пора кормиться теорией.
@@gottastoppo Сообщить("Извините, какое ограничение?")
@@spectraleon9013 уже разобралась. У меня оно сработало, когда я пыталась написать код очистки регистра сведений.
Я потом его удалила и ограничение ушло. Либо оно сработало из-за специфичного содержания кода, либо из-за количества уже имеющихся кодов, не знаю, но суть в том, что программа не дает делать то, что можно делать в лицензионке.
Я тут услышал, что запросы в цикле не есть = хорошо. Подумал как сделать, о чудо, я сделал это!
Функция ПринятЛиСотрудникНаРаботу()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КадровыеПеремещения.Сотрудник
|ИЗ
| РегистрСведений.КадровыеПеремещения КАК КадровыеПеремещения
|ГДЕ
| КадровыеПеремещения.Сотрудник В
| (ВЫБРАТЬ
| ПриемНаРаботуСпискомРаботники.Сотрудник
| ИЗ
| Документ.ПриемНаРаботуСписком.Работники КАК ПриемНаРаботуСпискомРаботники
| ГДЕ
| ПриемНаРаботуСпискомРаботники.Ссылка = &Ссылка)
| И КадровыеПеремещения.ПричинаИзменениеСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.ПриемНаРаботу)";
Запрос.УстановитьПараметр("Ссылка", Ссылка); //ссылка - это ссылка этогоже документа ПриемНаРаботуСписком,, в модуле которого находимся.
РезультатЗапроса = Запрос.Выполнить();
ТабРезультата = РезультатЗапроса.Выгрузить();
Возврат ТабРезультата;
КонецФункции // ПринятЛиСотрудникНаРаботу()
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
ТабРезультат = ПринятЛиСотрудникНаРаботу();
Для каждого строка Из Работники Цикл
Если ТабРезультат.Найти(строка.Сотрудник, "Сотрудник") Неопределено Тогда
Сообщить("Документ не проведен! " + строка.Сотрудник + " уже принят на работу другим документом.");
Отказ = Истина;
КонецЕсли;
КонецЦикла;
Если Отказ = Истина Тогда
Возврат;
КонецЕсли;
// регистр КадровыеПеремещения
Движения.КадровыеПеремещения.Записывать = Истина;
Движения.КадровыеПеремещения.Очистить();
Для каждого строка Из Работники Цикл
Движение = Движения.КадровыеПеремещения.Добавить();
Движение.Период = Дата;
Движение.Сотрудник = строка.Сотрудник;
Движение.Должность = строка.Должность;
Движение.Подразделение = строка.Подразделение;
Движение.Оклад = строка.Оклад;
Движение.ПричинаИзменениеСостояния = Перечисления.ПричиныИзмененияСостояния.ПриемНаРаботу;
КонецЦикла;
КонецПроцедуры
Добрый день!
Решил воспользоваться Вашим кодом, чтобы более глубоко разобраться в теме. Но не смог понять смысл вложенного запроса, установки параметра "Ссылка". Я закомментировал часть Вашего кода в запросе, как понимаю логику работы. И вроде бы всё хорошо выполняется. Но не могли бы Вы пояснить для чего вложенный запрос?
Вот то, что работает у меня:
Функция ПринятЛиСотрудникНаРаботу()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КадровыеПеремещения.Сотрудник
|ИЗ
| РегистрСведений.КадровыеПеремещения КАК КадровыеПеремещения
|ГДЕ
//| КадровыеПеремещения.Сотрудник В
//| (ВЫБРАТЬ
//| ПриемНаРаботуСпискомРаботники.Сотрудник
//| ИЗ
//| Документ.ПриемНаРаботуСписком.Работники КАК ПриемНаРаботуСпискомРаботники
//| ГДЕ
//| ПриемНаРаботуСпискомРаботники.Ссылка = &Ссылка)
| КадровыеПеремещения.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояний.ПриемНаРаботу)";
//Запрос.УстановитьПараметр("Ссылка", Ссылка); //ссылка - это ссылка этогоже документа ПриемНаРаботуСписком,, в модуле которого находимся.
РезультатЗапроса = Запрос.Выполнить();
ТабРезультата = РезультатЗапроса.Выгрузить();
Возврат ТабРезультата;
КонецФункции // ПринятЛиСотрудникНаРаботу()
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
ТабРезультат = ПринятЛиСотрудникНаРаботу();
Для каждого строка Из Работники Цикл
Если ТабРезультат.Найти(строка.Сотрудник, "Сотрудник") Неопределено Тогда
Сообщить("Документ не проведен! " + строка.Сотрудник + " уже принят на работу другим документом.");
Отказ = Истина;
КонецЕсли;
КонецЦикла;
Если Отказ = Истина Тогда
Возврат;
КонецЕсли;
// регистр КадровыеПеремещения
Движения.КадровыеПеремещения.Записывать = Истина;
Движения.КадровыеПеремещения.Очистить();
Для каждого строка Из Работники Цикл
Движение = Движения.КадровыеПеремещения.Добавить();
Движение.Период = Дата;
Движение.Сотрудник = строка.Сотрудник;
Движение.Должность = строка.Должность;
Движение.Подразделение = строка.Подразделение;
Движение.Оклад = строка.Оклад;
Движение.ПричинаИзменениеСостояния = Перечисления.ПричиныИзмененияСостояния.ПриемНаРаботу;
КонецЦикла;
КонецПроцедуры
ладно по ковыряю отладчиком