1с поле текстового документа установить текст
Очень часто появляется необходимость в загрузке данных в 1С из других источников, например, файлов, текстовых документов, excel, xml и т.д. В интернете можно найти типовую обработку для для этих целей, либо написать собственную. Задачи подобного рода встречаются очень часто, поэтому каждый должен уметь это делать, тем более что это не очень сложно. Поэтому желательно написать обработку самостоятельно, в этом случае Вы узнаете обо всех нюансах и подводных камнях, да и такой опыт пригодиться 100%.
Общая схема загрузки данных из файлов выглядит следующим образом, создается обработка с табличной частью и двумя командами «Прочитать» и «Загрузить», с помощью первой сначала данные из файла читаются и отображаться в ТЧ, после их проверки пользователем они загружаются в базу уже с помощью второй команды.
Очень часто встречал различные обработки которые по нажатию одной команды сразу же производят загрузку данных в базу, это не правильно, так как пользователь может выбрать не тот файл и по ошибки загрузить не те данные.
Загрузка данных из текстового файла .txt
Для примера будем загружать данные о контрагентах из текстового документа «.txt», который будет выглядеть следующим образом, в каждой строчке будет находиться сначала «Краткое наименование», потом «Полное» и «ИНН», все это будет разделяться точкой с запятой «;».
Открываем конфигуратор и создаем новую обработку, назовем её «Загрузка Контрагентов».
Переходим во вкладку «Данные» и добавляем один реквизит «Выбор файла», создаем табличную часть «Данные Файлы» с реквизитами «Наименование», «Расшифровка», «ИНН».
С помощью реквизита «Выбрать файл» мы собственно будем выбирать файл, и загружать его в табличную часть, поэтому количество реквизитов ТЧ должно совпадать с данными в файле.
Все реквизиты будут с типом «Строка» только с разной длинной, тут Вы сами устанавливаете длину.
Наименование можно установить «150», полное наименование скажем 250 ну и ИНН стандартно 12 символов.
Далее нужно создать команду которая будет загружать данные из файла.
Для того чтобы появился возможность выбора фала в поле «Выбор файла» нужно открыть свойства этого реквизита, в разделе «Использование» найти пункт «Кнопка выбора» и переключить на «Да».
Далее создаем событие «Начало выбора» для реквизита «Выбрать Файла».
И пишем вот такой код.
В принципе тут все стандартно.
После чего создаем процедуру для команды «Загрузить».
Вариантов может быть два, если файл небольшой то его можно сразу загружать целиком в массив, потом обрабатывать каждую строчку массива, если же файл большого размера то лучше загружать построчно. Для начала рассмотрим первый вариант, «ПоследовательноеЧтение = Ложь;» этот вариант рассмотрим немного позже.
Сам код описывать не будут, тут все достаточно просто, но если будут вопросы пишите в комментариях. Если кратко то: Создаем переменную «Текст» сохраняем в неё данные выбранного файла в виде массива, далее в цикле читаем каждую строчку массива с разделителем, ну и присваиваем каждый элемент массива соответствующей колонке в ТЧ.
Сохраняем обработку и проверяем что получилось.
В поле «Выбрать файл» должен отображаться путь к нему, после нажатия кнопки «Загрузить» данные из файла должны отобразиться с табличной части.
Первый этап закончен, теперь необходимо описать способ последовательного чтения для больших файлов, а так же создать команду которая уже будет записать данные из ТЧ непосредственно в базу 1С.
Но об этом в следующей статье, так как информация получаемая небольшими объемами усваивается намного быстрей и лучше, я разобью эту тему на несколько частей.
Значения ячеек и элементы управления в табличном документе
Табличный документ (ТД) состоит из строк и столбцов, которые образуют ячейки. В этой статье рассмотрены возможности "1С:Предприятия 8", позволяющие разместить в ячейках табличного документа элементы управления для редактирования значений.
Ниже рассмотрены следующие темы:
- Свойства "Текст" и "Значение"
- Свойство "Формат"
- Элементы управления
- Элементы управления, встроенные в ячейку
- Элементы управления, не встроенные в ячейку
- Расширение элементов управления, расположенных в поле табличного документа
Свойства "Текст" и "Значение" ячейки табличного документа
Основные свойства у каждой ячейки табличного документа — это Текст и Значение , причем по умолчанию доступно свойство Текст , а свойство Значение заблокировано.
ВАЖНО! Свойства Текст и Значение не могут быть использованы одновременно! Если свойство-признак СодержитЗначение установлено в значение Истина , то свойство Текст недоступно, и наоборот, если свойство-признак СодержитЗначение равно Ложь , то свойство Значение недоступно, а также все связанные другие свойства, например, ТипЗначения и ЭлементУправления .
Ниже на рисунке показана палитра свойств для ячейки табличного документа. Обратите внимание, что флажок Содержит значение не установлен, поэтому данная ячейка будет отображать Текст .
Свойство Текст имеет тип Строка . Если в ячейке необходимо разместить какую-либо текстовую информацию, необходимо использовать именно свойство Текст , например:
Обратите внимание, что даже если вы присвоите свойству Текст значение другого типа (не строкового), то оно все равно будет интерпретировано как строка. Значения базовых типов преобразуются к строке, а для ссылочных типов данных (элементов справочников, документов и т. д.) берется их представление. Если же необходимо разместить в ячейке значение другого типа, например, число, булево, дату или ссылку, и при этом не преобразовывать это значение к строке, то нужно использовать свойство Значение .
Для того чтобы появилась возможность использовать свойство Значение , необходимо явно присвоить свойству ячейки СодержитЗначение значение Истина или установить флажок Содержит значение в палитре свойств, как это показано на следующем рисунке:
Для ячейки, у которой установлен признак СодержитЗначение , можно задать тип значения, размещаемого в ячейке. На следующем рисунке указан тип Строка , но есть также возможность указать несколько возможных типов, используя составной тип данных:
Следующий фрагмент демонстрирует, как можно управлять этими свойствами из встроенного языка:
Свойство "Формат" ячейки табличного документа
Для ячейки табличного документа можно задавать формат вывода данных. Для этого используется свойство Формат , которое содержит форматную строку. Приемы работы с форматной строкой полностью совпадают с функцией Формат() системы "1С:Предприятие 8". Свойство Формат может быть установлено как интерактивно — через палитру свойств, так и программно — из встроенного языка, например:
Элемент управления в табличном документе
Элементы управления, встроенные в ячейку
Для ячейки, у которой установлен признак СодержитЗначение , можно также задать элемент управления, который будет использоваться для редактирования этого значения.
Элемент управления можно назначить через палитру свойств или из встроенного языка с помощью метода УстановитьЭлементУправления() . Чтобы проверить в программе, установлен ли элемент управления для конкретной ячейки, можно использовать свойство ЭлементУправления , которое возвращает элемент управления, назначенный для ячейки.
Элементы управления, встроенные в ячейку, отображаются только при входе в режим редактирования значения. На приведенном ниже рисунке редактируемая ячейка обведена овалом, и в ней отображается флажок:
Ниже показан пример установки элемента управления типа Флажок из встроенного языка:
Элементы управления, не встроенные в ячейку
Существует еще один способ размещения элемента управления в ячейке: использование независимого элемента управления и его "привязка" к нужной ячейке. В этом случае сама ячейка не участвует в процессе работы, а ее значения и свойства ни на что не влияют. Значения нужно будет непосредственно получать из элемента управления как обычного элемента формы. Ячейка при этом используется только как область размещения (привязки) элемента управления.
Ниже показано, как могут выглядеть такие элементы управления (не встроенные в ячейку):
В следующем фрагменте приводится пример размещения не встроенного в ячейку элемента управления в табличном документе:
Расширение элементов управления, расположенных в поле табличного документа
Для элементов управления, расположенных в табличном документе, расширяется набор свойств, методов и событий:
Разберем самые важные свойства и методы:
- Свойство ВстроенВЯчейку имеет тип Булево и говорит о том, что элемент управления встраивается в ячейку или просто привязывается к ней, о чем было рассказано выше.
- Свойство Видимость позволяет показать или скрыть элемент управления.
- Свойство Значение предоставляет доступ к значению, которое редактируется в элементе управления. Оно используется только для элементов управления, поддерживающих связь с данными.
- Метод Расположить позволяет разместить элемент управления в конкретной области ячеек табличного документа. Именно этот метод был использован в вышеприведенном примере.
Для элементов управления, расположенных в табличном документе, можно обрабатывать события, например, При изменении . Процедура-обработчик события должен находиться в модуле формы. Вот почему элементы управления имеет смысл располагать в табличном документе, только если он выводится в диалог формы (в поле табличного документа).
Свойство "Защита" ячейки табличного документа
Это свойство имеет тип Булево и содержит признак защиты ячейки от редактирования. В режиме просмотра в табличном документе недоступны для редактирования ячейки и рисунки, у которых установлено свойство Защита .
Текстовый документ в 1С 8.3 это объект встроенного языка, который позволяет представлять различную информацию в виде текстов. Может быть создан интерактивно режиме 1С:Предприятие или в режиме Конфигуратор. Средствами встроенного языка 1С, е го можно сохранять в текстовый файл и читать из текстового файла. Также текстовый документ можно размещать на форме или в макете. 1С:Предприятие 8.3 поддерживает создание текстовых макетов, на основании которых могут быть сформированы текстовые документы. Эти макеты могут быть добавлены в конфигурацию с помощью объектов Макет.
✔ Запись текстового файла
&НаКлиенте
Процедура ЗаписьТекстовогоФайла ( Команда )КаталогСохранения = "D:\Storage\data" ;
СоздатьКаталог ( КаталогСохранения ); // Имя каталога (путь)Файл_ТХТ = Новый ТекстовыйДокумент ;
// Наполнение файла содержимым
Файл_ТХТ . УстановитьТекст ( "
|MS Windows
|Linux
|MacOS
|OSX" );// Очистка содержимого файла
Файл_ТХТ . Очистить ();// Добавление 1-й строки:
Файл_ТХТ . ДобавитьСтроку ( "Word" );
// Добавление 2-й строки:
Файл_ТХТ . ДобавитьСтроку ( "Excel" );
// Добавление 3-й строки:
Файл_ТХТ . ДобавитьСтроку ( "Powerpoint" );// Замена первой строки на "Outlook"
Файл_ТХТ . ЗаменитьСтроку ( 1 , "Outlook" );// Вставка новую строки сразу после 1-й (*на место 2-й)
Файл_ТХТ . ВставитьСтроку ( 2 , "Access" );// Удаление 2-й строки: ("Access")
Файл_ТХТ . УдалитьСтроку ( 2 );// Запись/перезапись файла (D:\Storage\data\MS.txt) на диск
// Параметры: путь, кодировка, разделитель строк
Файл_ТХТ . Записать ( КаталогСохранения + "\MS.txt" , КодировкаТекста . UTF8 , Символы . ВК + Символы . ПС );// Открытие созданного файла в блокноте
ЗапуститьПриложение ( КаталогСохранения + "\MS.txt" );&НаКлиенте
Процедура ЧтениеТекстовогоФайла ( Команда )Файл_ТХТ = Новый ТекстовыйДокумент ;
Файл_ТХТ . Прочитать ( ПутьКФайлу_ТХТ , КодировкаТекста . UTF8 , Символы . ВК + Символы . ПС );
// Показать текст целиком
Сообщить ( Файл_ТХТ . ПолучитьТекст ());
//Outlook
//Excel
//Powerpoint// Показать текст по строкам
Для Индекс = 1 По Файл_ТХТ . КоличествоСтрок () Цикл
Сообщить ( Файл_ТХТ . ПолучитьСтроку ( Индекс )); //. Outlook . Excel . Powerpoint
КонецЦикла;&НаКлиенте
Процедура ФормированиеПечатнойФормыИзТекстовогоМакета ( Команда )ФормаПечати = СформироватьПечатнуюФорму ();
ФормаПечати . Показать ( "Счет №2020" );&НаСервере
Функция СформироватьПечатнуюФорму ()ФормаПечати = Новый ТекстовыйДокумент ;
Макет = ЭтотОбъект . ПолучитьМакет ( "Макет_Счета" );// Получение области и макета по имени
Шапка = Макет . ПолучитьОбласть ( "Шапка" );
// Заполнение параметров
Шапка . Параметры . Дата = ТекущаяДата ();
Шапка . Параметры . Номер = 2020 ;
// Вывод шапки в документ
ФормаПечати . Вывести ( Шапка );// Заголовок табличной части.
ЗаголовокТ = Макет . ПолучитьОбласть ( "ТЧ_Заголовок" );
ФормаПечати . Вывести ( ЗаголовокТ );// Строки табличной части (обычно в цикле)
СтрокаТ = Макет . ПолучитьОбласть ( "ТЧ_Строка" );// Строка 1
СтрокаТ . Параметры . Номенклатура = "SSD Intel Optane DC P4800X 1.5TB" ;
СтрокаТ . Параметры . Количество = 7 ;
ФормаПечати . Вывести ( СтрокаТ );// Строка 2
СтрокаТ . Параметры . Номенклатура = "SSD Huawei 02351SPX 1.92TB" ;
СтрокаТ . Параметры . Количество = 12 ;
ФормаПечати . Вывести ( СтрокаТ );// Вывод подвала ТЧ
СтрокаТ = Макет . ПолучитьОбласть ( "ТЧ_Подвал" );
СтрокаТ . Параметры . ИтогоКоличество = 19 ; // Всего
ФормаПечати . Вывести ( СтрокаТ );В этой статье я рассмотрю основные моменты работы с текстовым файлом в 1С 8.3. в режиме отключенной модальности.
Для написания статьи я создал форму обработки, на которой разместил реквизит «РеквизитСтрока» с типом Строка, а так же две команды: ЗагрузитьТекстовыйФайл и СохранитьТекстовыйФайл. Реквизит и команды я поместил на форму, у поля, которое связанно с реквизитом, выбрал тип «Поле текстового документа».
В пользовательском приложении должна получиться такая форма:
Для команд были созданы клиентские обработчики:
Для работы с текстовыми документами в 1С: Предприятии есть специальный объект ТекстовыйДокумент, который вызывается при помощи конструктора Новый. Решим следующую задачу: будем при выполнении команды СохранитьТекстовыйДокумент сохранять текст из реквизита «РеквизитСтрока» в определенный файл, а при выполнении команды ЗагрузитьТекстовыйДокумент будем загружать текст из определенного файла.
При сохранении, код в обработчике команды будет следующий
В этом коде мы создаем объект ТекстовыйДокумент (строка //1), и при помощи метода этого объекта УстановитьТекст помещаем в данный объект текст из реквизита «РеквизитСтрока» (строка //2).А дальше нам необходимо записать текстовый документ в файл, для этого мы используем метод НачатьЗапись, который нужно применять в случае немодального использования конфигурации. Он имеет следующий синтаксис
Первый параметр — ОписаниеОповещения содержит имя процедуры, которая вызывается после записи. Можно не указывать, что мы и делаем в строк //3.
ИмяФайла – полное имя файла.
Смысл остальных параметром можете узнать в справочной информации.Отмечу только, что разделитель я указал, как Символы.ВК + Символы.ПС, потому что такой набор символов используется по умолчанию при загрузке текстового файла.
Посмотрим, как работает наша команда
Теперь напишем загрузку текстового файла.
В этом случае, код будет немного сложнее, чем при записи. Мы используем метод НачатьЧтение объекта текстовый документ (строка //4), но в этот раз передаем в него описание оповещения (создали в строке //3), где указываем процедуру ПослеЧтенияФайла, а в описание оповещения передаем в процедуру ПослеЧтенияФайла параметр, в котором указали созданный текстовый документ (строка //2). И уже в процедуре ПослеЧтенияФайла реквизиту РеквизитСтрока присваиваем текст, который содержится в текстовом документе, при помощи метода текстового документа ПолучитьТекст.
Почему мы извлекаем текст именно в процедуре оповещения ПослеЧтенияФайла? Потому что она вызывается именно тогда, когда завершено чтение файла. Если Вы попытаетесь прочитать текст, после строки //4, то ни чего не получится. Это одна из особенностей работы асинхронных методов 1С 8.3.
Сейчас мы спокойно сможем сохранить текст в файл, путь к которому указан в качестве первого параметра метода НачатьЗапись. Но, иногда бывает нужно, что бы пользователь сам выбирал, в какой файл сохранить текст. Переделаем наш код записи текста: будем вызывать окно, в котором пользователь укажет каталог, куда будет записан файл, и само название файла.
В этом случае мы вызываем диалог выбора файла с режимом сохранения, заполняем нужные параметры этого объекта, и в конце используем метод Показать. В качестве единственного параметра этого метода нужно указать обработчик оповещения, который мы создали строкой ранее, с процедурой, которая выполнится после сохранения файла (после нажатия на кнопку «Сохранить» диалога). А вот уже в обработчике оповещения ПослеСохраненияФайла мы создаем текстовый документ, устанавливаем в него текст из реквизита и записываем в файл, путь которого указан в массиве – параметре процедуры ВыбранныеФайлы. В первом параметре процедуры обработки оповещения содержится массив полных путей к выбранным файлам (в случае множественного выбора). Если Вы посмотрите на переменную ВыбранныеФайлы в отладке, то увидите путь к этому массиву.
Посмотрим, как работает наш код.
Теперь выполним обратную задачу: будем загружать текст из файла в реквизит на форме. Переделаем обработчик команды ЗагрузитьТекстовыйФайл.
В этом случае, в обработчике ЗагрузитьТекстовыйФайл мы так же используем объект ДиалогВыбораФайл, который создаем в режиме Открытия, заполняем параметры этого диалога и используем метод Показать, где в качестве параметра используется описание оповещения, с процедурой, которая выполнится после выбора файла (после нажатия на кнопку «Открыть» диалога). А в процедуре ПослеЗагрузкиФайла, которая указана в оповещение, мы загружаем в текстовый файл по пути, который указан в массиве — параметре процедуры ВыбранныеФайл. В этом случае алгоритм действий точно такой же, как и в том случае, когда мы путь к файлу указывали жестко.
Посмотрим, как работает наша загрузка файла
Изучите программирование в 1С с помощью моей книги «Программировать в 1С за 11 шагов»
- Без сложных технических терминов.
- Более 700 страниц практического материала.
- Каждое задание сопровождается рисунком (скриншот).
- Сборник задач для домашней проработки.
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
Эта книга подойдёт тем, кто уже начал программировать и испытывает определенные сложности с этой темой и тем, кто уже давно программирует, но ни разу еще не работал с управляемыми формами 1С
- Без сложных технических терминов;
- Более 600 страниц практического материала;
- Каждый пример сопровождается рисунком (скриншот);
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
Промо-код на скидку в 15% — 48PVXHeYu
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655Вступайте в мои группы:
One thought on “ Работа с текстовыми файлами в 1С 8.3 (немодальные вызовы) ”
Нужно было установить у реквизита формы РеквизитСтрока тип ТекстовыйДокумент. Это позволило бы обойтись без преобразований, т.е. вместо
ТекстДок = Новый ТекстовыйДокумент;
ТекстДок.УстановитьТекст(РеквизитСтрока);
ТекстДок.НачатьЗапись(,ВыбранныеФайлы[0],
КодировкаТекста.ANSI,
Символы.ВК + Символы.ПС);Было бы просто
РеквизитСтрока.НачатьЗапись(,ВыбранныеФайлы[0],
КодировкаТекста.ANSI,
Символы.ВК + Символы.ПС);В этой статье начнем разбирать основные элементы управляемой формы 1С 8.3. Управление формой осуществляется посредством различных элементов формы, которые расположены иерархически на закладке Элементы конструктора формы. Самым главным элементом является сама форма, которая расположена вверху иерархии элементов, а остальные элементы ей подчинены.
Все элементы формы можно разделить на пять групп: поля, элементы группировки, кнопки, декорации и таблицы. В своих статьях я разберу каждую из групп. В этой статье мы начнем изучать один из видов элемента поле — поле ввода, но перед этим научимся добавлять элемент на форму.
Добавление элементов на форму
Делается это достаточно просто: необходимо выделить элемент Форма в окне Элементы конструктора формы и нажать на кнопку «Добавить». После этого откроется окно, в котором необходимо выбрать нужный тип элемента
После выбора, элемент нужного появится в окне Элементы.
Элемент управляемой формы Поле
Разберем элемент управляемой формы Поле. Этот элемент нужен для ввода информации на форме. А также для отображения какой-либо информации. После того, как Вы добавите этот элемент на форму, справа откроется палитра свойств элемента формы. Пока Вас должны интересовать два свойства – ПутьКДанным и Вид.
В свойстве ПутьКДанным разработчик может связать элемент формы с нужным реквизитом формы. Обратите внимание, что после того, как был добавлен элемент Поле ввода на форму он не отобразился на самой форме. Это произошло потому, что наш новый элемент не связан с реквизитом формы. Для примера я создал на форме обработки несколько реквизитов с разными примитивными типами и один реквизит с ссылочным типом.
Здесь и далее используется конфигурация, созданная в книге «Программировать в 1С за 11 шагов»
Теперь свяжем наш недавно добавленный элемент формы с одним из реквизитов, для этого выберем нужный реквизит с свойстве элемента ПутьКДанным.
После этого заполнятся свойства ПутьКДанным и Вид, а сам элемент отобразится в представлении формы.
Обратите внимание на свойство элемента Вид. При помощи этого свойства определяется функциональность поля ввода. Можно выбрать различные значения этого свойства.
В зависимости от выбранного значения будет определятся функционал. На рисунках выше выбрано значение – поле ввода, т.е. мы можем вводить какие-либо значения в это поле ввода, а если выбрать значение поле надписи, то ни чего вводить мы не сможем.
Этот значение свойств Вид поля ввода удобно выбирать, когда нужно просто показать справочную информацию пользователю.
Теперь добавим новый элемент формы с типом Поле ввода и свяжем его с реквизитом РеквзитДата посредством уже знакомого нам свойства ПутьКДанным
Как Вы видите вид поля ввода поменялся, а так же поменяется возможный выбор значений свойства Вид.
Таким образом, делаем вывод – функциональность поля ввода зависит от типа реквизита.
Для реквизита с типом Булево будут доступны следующие значения свойства Вид.
А для реквизита с ссылочным типом будут доступны иные значения свойства Вид.
Более подробно работа с элементами формы на практичных примерах дается в книге «Основы разработки в 1С:Такси. Разработка управляемого приложения за 12 шагов».
Иногда кажется, что изучить язык программирование в 1С сложно и трудно. В действительности программировать в 1С — легко. Помогут Вам легко и быстро освоить программирование в 1С мои книги: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»
Изучите программирование в 1С с помощью моей книги «Программировать в 1С за 11 шагов»
- Без сложных технических терминов.
- Более 700 страниц практического материала.
- Каждое задание сопровождается рисунком (скриншот).
- Сборник задач для домашней проработки.
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
Эта книга подойдёт тем, кто уже начал программировать и испытывает определенные сложности с этой темой и тем, кто уже давно программирует, но ни разу еще не работал с управляемыми формами 1С
- Без сложных технических терминов;
- Более 600 страниц практического материала;
- Каждый пример сопровождается рисунком (скриншот);
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
Промо-код на скидку в 15% — 48PVXHeYu
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655Вступайте в мои группы:
One thought on “ Элементы управляемой формы 1С 8.3. Поле ввода ”
Огромное спасибо, за отличную публикацию! побольше бы таких сайтов как у Вас!
Читайте также: