Наши курсы: ⚡ Курс 1С программирования для начинающих - stepik.org/a/185939 ⚡ Курс по СКД - stepik.org/a/187221 Промокод для подписчиков канала - ВАСИЛИЙПРО15
Класс. Всё доступно и понятно. Без всякой воды. Чётко по делу. Круто. Даже на скорости 1,5 всё понятно и доходчиво. Спасибо за видео 👍👍👍 Как раз задача такая привалила. Надо разные сущности создавать, от номенклатуры, до документов и всё на основании одного файла.
Сам пользуюсь таким способом. Только 1 недочет - загрузка файла на сервере. Если база клиент-серверная, то такой подход приведет к тому, что искаться файл будет на сервере. Давать пользователю доступ к серверным папкам - плохой тон. Я обычно делаю чтение файла на клиенте во временное хранилище, затем размещение его в ТМП папке сервера, а дальше уже загружаю в табличный документ.
Здравствуйте! Большое спасибо за уроки. Благодаря вам стал лучше понимать 1С. Но у меня есть вопрос. Как реализовать выборочную загрузку из файла? Хотелось бы определенные строки загружать из Excel. Не смог найти информацию в Интернете, а код хочется понимать. Буду благодарен советам.
При загрузке из ексел, если потом нужно сравнивать эти данные сталкивался с таким: пробелы в начале или в конце слова, и в строку числа писались с пробелом Вынес в общ модуль форматирование строки, получилось так стрЗаменить(СокрЛП(Значение), символы.НПП, "") так внутри слова пробелы не ело, зато из чисел их поубирало
Привет! Интересная тема, только вот в практике не так много дорабатывал типовых отчетов, в основном пишу с 0 внешний и подключаю. Если у тебя была практика то расскажи, с каким отчетом и какие манипуляции приходилось делать, может и освещу эту тему:)
Василий, не подскажете, как табличному реквизиту указать ссылку на элемент другого справочника? Например, загружаю контрагентов, в нем есть поле "Гражданство" - это поле выбора из справочника "Страны". Спасибо.
В свойствах реквизита нужно выбрать нужны тип. Потом соответственно заполнить это реквизит используя один из методов по поиску элемента справочника, например НайтиПоНаименованию()
@@VasiliiPro1C Написал: СтрокаДанных.IdentityDocumentType = Справочники.Countries.НайтиПоНаименованию(ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0") + "C" + 9).ТекущаяОбласть.Текст); в Типе реквизита указал на справочник Countries, но при нажатии на Загрузить данные, колонка IdentityDocumentType пустая, но зато дает выбрать данные из справочника 😆
Попробуйте такой метод, очень быстро работает чем построчный режим чтения. Только минусы в файле экзел названия колонки не должен начинатся с пробел и цифры, потому что названия колонки из экзел будет добавляется как колонки ТЗ &НаКлиенте Процедура КомандаПрочитать(Команда)
ИмяФайла = "D:\Товары.xlsx" ЗагрузкаНоменклатуры_ПрочитатьФайл(ИмяФайла); КонецПроцедуры &НаСервере Функция ЗагрузкаНоменклатуры_ПрочитатьФайл(ИмяФайла)
ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.Прочитать(ИмяФайла);
ВсегоСтрок = ТабДокумент.ВысотаТаблицы; ВсегоКолонок = ТабДокумент.ШиринаТаблицы; Область = ТабДокумент.Область(1,1,ВсегоСтрок,ВсегоКолонок); ИсточникДанных = Новый ОписаниеИсточникаДанных(Область); ПостроительОтчета = Новый ПостроительОтчета; ПостроительОтчета.ИсточникДанных = ИсточникДанных; ПостроительОтчета.Выполнить();
Здравствуйте, при загрузке данных из таблицы эксель в справочник, данные не загружаются. Но при этом, визуально они загружаются ( часть видео с 14:10). В чем может быть проблема? Никаких ошибок не выводит.
У меня тоже не автоматически, я нажимаю кнопку F5 на клавиатуре (обновляет форму в 1С (кстати не только в 1С)) вообщем попробуй нажать и у тебя тоже всё обновился, не надо будет закрывать и открывать заново)
А может кто-нибудь подсказать? Пишу аналогичную обработку, при чтении табличного документа у меня высота таблицы получается 269, хотя фактически заполнено около 25 строк, но в начале таблицы есть лого организации, некое подобие шапки документа, таблица начинается с 19 строки.
Добрый день! Вы можете показать как загрузить из Excel таблицу с иерархией на форму в Дерево Значений в документе (и чтобы данные документа сохранялись)? Таблица в файле содержит колонки: [Номер строки], [Номер строки родителя], [Наименование], [Количество]?
@@VasiliiPro1C Эта в части кода, которая внутри процедуры создания номенклатуры (в вашем видео, контрагентов), я же их никуда не передаю и не принимаю ни откуда? Сообщение.Текст = СтрШаблон("Номенклатура &1 с Кодом &2 уже есть в информационной базе.",Товар.НаименованиеХарактеристика, Товар.НоменклатурныйНомер);
Не совсем та, смотри внимательнее на символы, я взял пример этой функции из синтаксис помощника: СтрШаблон("Ошибка в данных в строке %1 (требуется тип %2)", 2, "Дата") У тебя &, а надо %
Полезное видео! А как быть если нужно загрузить данные с двух листов эксель документа в одну таблицу значений? Причем нужно сделать соответствие по листам, т.к. в одной строке таблицы должны быть данные и с первой и со второй страницы вместе
@@VasiliiPro1C а цикл остается прежним? мы в цикле НайтиПоНаименовнию используем или все-все меняется? Как выглядит пример? Если что, не кидайтесь тапками, только изучаю(
И ещё, когда нажимаю на кнопку Выбрать (чтобы открыть файл), появляется Выбор файла, нажимаю на нужный файл и потом выскакивает: Введите строку для поиска Что не так?
Зачем так сложно обращаться к значениям ячеек, через склейку строк RC, лучше по индексу. Зачем использовать "ПолучитьОбласть", вообще не нужно. Вот код для примера Для НомСтр = 2 По ТабДок.ВысотаТаблицы Цикл Поле1 = Табдок.Область(НомСтр, 1,НомСтр, 1).Текст; Поле2 = ТабДок.Область(НомСтр, 2,НомСтр, 2).Текст; КонецЦикла;
И зачем вообще такое снимать где путь к файлу хардкодится? Как это в практической задаче применить? Неужели трудно было показать через ДиалогВыбораФайла ил ДиалогПомещенияФайла?
Наши курсы:
⚡ Курс 1С программирования для начинающих - stepik.org/a/185939
⚡ Курс по СКД - stepik.org/a/187221
Промокод для подписчиков канала - ВАСИЛИЙПРО15
Василий, ты молодец! Хорошая подача материала, - без воды и с объяснением кода. Лайк и подписка.
доступное объяснение. хороший пример с табличкой.
Класс. Всё доступно и понятно. Без всякой воды. Чётко по делу. Круто. Даже на скорости 1,5 всё понятно и доходчиво. Спасибо за видео 👍👍👍 Как раз задача такая привалила. Надо разные сущности создавать, от номенклатуры, до документов и всё на основании одного файла.
Спасибо за обратную связь)
Спасибо, хороший ролик. Делаю обработку создания документов из отчета xml, помог немного разобраться.
Спасибо, что делитесь. Очень нравится ваш канал😊
Василий, у меня есть предложение для нового видео: Печать комплектов печатных форм.
А это видео - Бомба!
Сам пользуюсь таким способом. Только 1 недочет - загрузка файла на сервере. Если база клиент-серверная, то такой подход приведет к тому, что искаться файл будет на сервере. Давать пользователю доступ к серверным папкам - плохой тон. Я обычно делаю чтение файла на клиенте во временное хранилище, затем размещение его в ТМП папке сервера, а дальше уже загружаю в табличный документ.
Здравствуйте! Большое спасибо за уроки. Благодаря вам стал лучше понимать 1С. Но у меня есть вопрос. Как реализовать выборочную загрузку из файла? Хотелось бы определенные строки загружать из Excel. Не смог найти информацию в Интернете, а код хочется понимать. Буду благодарен советам.
Если клиент и сервер разные машины, то такая реализация не взлетит. Нужно передавать файл на сервер через временное хранилище.
При загрузке из ексел, если потом нужно сравнивать эти данные сталкивался с таким: пробелы в начале или в конце слова, и в строку числа писались с пробелом
Вынес в общ модуль форматирование строки,
получилось так
стрЗаменить(СокрЛП(Значение), символы.НПП, "")
так внутри слова пробелы не ело, зато из чисел их поубирало
Спасибо! )
Супер! Хотелось бы увидеть про доработку типовых отчетов что то
Привет! Интересная тема, только вот в практике не так много дорабатывал типовых отчетов, в основном пишу с 0 внешний и подключаю. Если у тебя была практика то расскажи, с каким отчетом и какие манипуляции приходилось делать, может и освещу эту тему:)
Василий, не подскажете, как табличному реквизиту указать ссылку на элемент другого справочника? Например, загружаю контрагентов, в нем есть поле "Гражданство" - это поле выбора из справочника "Страны". Спасибо.
В свойствах реквизита нужно выбрать нужны тип. Потом соответственно заполнить это реквизит используя один из методов по поиску элемента справочника, например НайтиПоНаименованию()
@@VasiliiPro1C Написал: СтрокаДанных.IdentityDocumentType = Справочники.Countries.НайтиПоНаименованию(ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0") + "C" + 9).ТекущаяОбласть.Текст); в Типе реквизита указал на справочник Countries, но при нажатии на Загрузить данные, колонка IdentityDocumentType пустая, но зато дает выбрать данные из справочника 😆
Видеоурок +++++ ! Лайк и подписка. А почему так мало видео?
Попробуйте такой метод, очень быстро работает чем построчный режим чтения. Только минусы в файле экзел названия колонки не должен начинатся с пробел и цифры, потому что названия колонки из экзел будет добавляется как колонки ТЗ
&НаКлиенте
Процедура КомандаПрочитать(Команда)
ИмяФайла = "D:\Товары.xlsx"
ЗагрузкаНоменклатуры_ПрочитатьФайл(ИмяФайла);
КонецПроцедуры
&НаСервере
Функция ЗагрузкаНоменклатуры_ПрочитатьФайл(ИмяФайла)
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.Прочитать(ИмяФайла);
ВсегоСтрок = ТабДокумент.ВысотаТаблицы;
ВсегоКолонок = ТабДокумент.ШиринаТаблицы;
Область = ТабДокумент.Область(1,1,ВсегоСтрок,ВсегоКолонок);
ИсточникДанных = Новый ОписаниеИсточникаДанных(Область);
ПостроительОтчета = Новый ПостроительОтчета;
ПостроительОтчета.ИсточникДанных = ИсточникДанных;
ПостроительОтчета.Выполнить();
ТабЗначений = ПостроительОтчета.Результат.Выгрузить();
Для каждого стр Из ТабЗначений Цикл
КонецЦикла;
КонецФункции
Здравствуйте, при загрузке данных из таблицы эксель в справочник, данные не загружаются. Но при этом, визуально они загружаются ( часть видео с 14:10). В чем может быть проблема? Никаких ошибок не выводит.
Я не очень понял, как не асинхронный метод "выбрать" тут работает?
Круто!
Почему на 23:43 контрагенты автоматически обновились, а мне приходится перезаходить на вкладку, чтобы данные отображались?
У меня тоже не автоматически, я нажимаю кнопку F5 на клавиатуре (обновляет форму в 1С (кстати не только в 1С)) вообщем попробуй нажать и у тебя тоже всё обновился, не надо будет закрывать и открывать заново)
есть вариант как быть, если книга excel и лист excel запаролены? пароль известен
А может кто-нибудь подсказать? Пишу аналогичную обработку, при чтении табличного документа у меня высота таблицы получается 269, хотя фактически заполнено около 25 строк, но в начале таблицы есть лого организации, некое подобие шапки документа, таблица начинается с 19 строки.
Ждём подробное видео загрузки через временное хранилище. Подисался
Вопрос можно было через асинх сделать. Таблицу на форме можно было динамически по содержимому тз рисовать.
Не понял в чем вопрос) можно вроде, я с такими функциями еще не работал))
@@VasiliiPro1C Функцию вопроса в смысле можно сделать через асинх
А, да, можно)
Добрый день! Вы можете показать как загрузить из Excel таблицу с иерархией на форму в Дерево Значений в документе (и чтобы данные документа сохранялись)? Таблица в файле содержит колонки: [Номер строки], [Номер строки родителя], [Наименование], [Количество]?
Привет! Если только в телеграмме могу помочь, снимать такое видео думаю бессмысленно)
Спасибо за видео
Почему может выдавать ошибку "Слишком много фактических параметров"? Когда вывожу сообщение о существующих?
Смотри сколько переменных в процедуру передаешь и сколько принимаешь)
@@VasiliiPro1C Эта в части кода, которая внутри процедуры создания номенклатуры (в вашем видео, контрагентов), я же их никуда не передаю и не принимаю ни откуда?
Сообщение.Текст = СтрШаблон("Номенклатура &1 с Кодом &2 уже есть в информационной базе.",Товар.НаименованиеХарактеристика, Товар.НоменклатурныйНомер);
Запись та же что у вас, но при этом ошибку выдаёт
Не совсем та, смотри внимательнее на символы, я взял пример этой функции из синтаксис помощника:
СтрШаблон("Ошибка в данных в строке %1 (требуется тип %2)", 2, "Дата")
У тебя &, а надо %
Полезное видео!
А как быть если нужно загрузить данные с двух листов эксель документа в одну таблицу значений? Причем нужно сделать соответствие по листам, т.к. в одной строке таблицы должны быть данные и с первой и со второй страницы вместе
Сколько вопросов оказывается в загрузке 1С) я как то сталкивался с этим, но уже не помню конечно с лету решение) посмотрю и сниму видео)
@@VasiliiPro1C
Будет отлично, если снимите!
Я начинающий, сам сейчас пытаюсь решить подобную задачу)
Наглядно
А что делать, если тип реквизита ссылка справочник или перечисление? Он не передает их, если указать строку((( надо получать объект?
При загрузке их эксель? Находите нужный объект в справочнике использую функции НайтиПоНаименованию например
@@VasiliiPro1C а цикл остается прежним? мы в цикле НайтиПоНаименовнию используем или все-все меняется? Как выглядит пример?
Если что, не кидайтесь тапками, только изучаю(
@@VasiliiPro1C а так видео супер полезное и понятное, спасибо за это!)
Мучаюсь только со сложными типами данных, хех)
@@Катерина-м3ф не за что) присоединяйтесь в телеграмме в чате, там быстрее могут ответить
А можно ТОЛЬКО загрузить Файлы? Т.е. через одну кнопку?
А что вы с ними еще хотите сделать?) не совсем понял вопрос
Чтобы сначала не через Загрузить данные, а сразу в Создать контрагентов
И ещё, когда нажимаю на кнопку Выбрать (чтобы открыть файл), появляется Выбор файла, нажимаю на нужный файл и потом выскакивает: Введите строку для поиска
Что не так?
А если данные нужно загружать в справочник, не в табличную часть.
Загружаем в тч просто чтобы посмотреть что там вообще в файле, дальше то загружаем в справочник естественно) но с этим не должно быть проблем
@@VasiliiPro1C Спасибо! Хороший контент у Вас! 👍
Спасибо Вам за обратную связь!
Если окно вопроса закрыть, то результат = неопределено, а код все равно отработает, так как стоит неправильное условие.
Это способ не будет работать в серверном режиме, почему об этом не говорится????
Откройте следующее видео!
Почему не смотрим???????? :)
Выходит ошибка: “область не найдена: R2C1”
Заходи в телеграмм чат и скидывай ошибку) Посмотрим!
Та же беда 😅
Проверьте раскладку клавиатуры. Есть вероятность что "С" набрано на русском!
Зачем так сложно обращаться к значениям ячеек, через склейку строк RC, лучше по индексу. Зачем использовать "ПолучитьОбласть", вообще не нужно. Вот код для примера
Для НомСтр = 2 По ТабДок.ВысотаТаблицы Цикл
Поле1 = Табдок.Область(НомСтр, 1,НомСтр, 1).Текст;
Поле2 = ТабДок.Область(НомСтр, 2,НомСтр, 2).Текст;
КонецЦикла;
Мне показалось что такой пример визуально понятнее будет для новичка, но приемов, конечно же, много))
ИНН - это строка так как может начинаться с нуля.
Видео не сильно корректное. Если клиент и сервер на разных машинах или прав учётной записи сервера не хватит на выбранную папку, то не взлетит.
+
И зачем вообще такое снимать где путь к файлу хардкодится? Как это в практической задаче применить? Неужели трудно было показать через ДиалогВыбораФайла ил ДиалогПомещенияФайла?
Это не самый быстрый способ.
На быстроту никто и не претендует, написано же что самый простой:)
&НаКлиенте
Процедура ДвоичныеДанныеВоВременноеХранилище(Команда)
ДД = Новый ДвоичныеДанные(ПутьКФайлу);
АдресВХ = ПоместитьВоВременноеХранилище(ДД);
ПрочитатьИзВХНаСервере(АдресВХ);
КонецПроцедуры
&НаСервере
Процедура ПрочитатьИзВХНаСервере(АдресВХ, Режим = "Значение")
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xlsx");
ДД = ПолучитьИзВременногоХранилища(АдресВХ);
ДД.Записать(ИмяВременногоФайла);
СпособЧтения = СпособЧтенияЗначенийТабличногоДокумента.Значение;
Попытка
ТабДок.Прочитать(ИмяВременногоФайла, СпособЧтения);
Исключение
КонецПопытки;
КонецПроцедуры