Imagesforyou.ru

IMG FOR YOU — ИНТЕРЬЕРНАЯ ФОТОСТУДИЯ
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Заметки 1С-Программиста

  • Заметки
  • Конфигурация Библиотека
  • WSReader 2.0 — Чтение и исполнение веб-сервисов

1С:Предприятие 8. Веб-сервисы. Передаем массив в 1С

Чтобы передать массив в 1С в качестве параметра операции веб сервиса достаточно просто этому параметру указать тип anyType (http://www.w3.org/2001/XMLSchema). После чего, переданный из php массив, в 1С будет передан как СписокXDTO, который можно обходить в цикле.

Давайте создадим веб сервис и операцию «GetMass». Для этой операции добавим один параметр «param» типа anyType (http://www.w3.org/2001/XMLSchema) как показано на рисунке.

В принципе, это все что необходимо сделать.

Следующий код передает массив в 1С.

<?php

// устанавливаем кодировку
header(«Content-Type: text/html; charset=UTF-8»);
ini_set(«soap.wsdl_cache_enabled»,»0″);

// создаем клиент для веб-сервисов и вызываем операцию
$SoapClient1C = new SoapClient(«http://ghostaz.no-ip.org/mass/ws/WebСервис?wsdl»);
$Mass = array(1,2,3);
$Result = $SoapClient1C->GetMass(array(«param»=>$Mass));

print_r($Result);

?>

В 1С в отладчике можно увидеть что params имеет тип СписокXDTO.

Соответственно возможен обход в цикле:

Функция GetMass ( param )

Результат = 0 ;
Для каждого Значение из param.int цикл
Результат = Результат + Значение ;
КонецЦикла;

Возврат Результат ;

КонецФункции

Вместо типа anyType можно использовать другие типы, например, array из стандартных типов 1С datacore.

UPD от 01.09.2015:

По каким то причинам передать массив или структуру в веб сервис из 1С нельзя. Ругается на несоответствие типов. Но передать параметр можно, если в операцию передать ОбъектXDTO.

Опубликовано 21 сентября 2011

таблица значений 1С

Таблица значений 1С – 3 часть. Метаданные. Перебор колонок таблицы значений

В этой статье я расскажу как работать с таблицей значений «неизвестной» структуры, как перебирать колонки таблицы значений, как извлекать данные из колонок и строк, не используя названия колонок. (Эта статья относится к циклу статей 1С с нуля; программирование 1с с нуля; таблица значений 1с)

Две предыдущие статьи:

Для объяснения материала и для того, чтобы можно было запустить наши примеры программного кода «в живую», нам необходимая некая тестовая таблица значений 1С. Часть наших примеров будет извлекать данные из таблицы значений, поэтому мы сделаем таблицу с тремя колонками «Фамилия», «Имя», «Отчество» и внесем в нее небольшое количество данных — аж целых 3 строки 🙂

Итак, создадим тестовую таблицу значений 1С и заполним ее:

Наша тестовая таблица состоит из трех колонок: Имя, Фамилия, Отчество; и имеет три заполненных строки с фамилиями героев Гражданской войны.

Номер строкиФамилияИмяОтчество
ЧапаевВасилийИванович
1ДзержинскийФеликсЭдмундович
2КотовскийГригорийИванович

Первый образец кода — перебор колонок таблицы значений 1С как коллекции.

Наш цикл выведет в окно сообщений 1С все имена колонок:

Мы видим, что для перебора колонок применяется специальный цикл перебора коллекции, похожий на цикл перебора строк (в прошлой статье). МояТЗ.Колонки — это коллекция колонок таблицы значений 1С «МояТЗ». Коллекция содержит в себе объекты типа «КолонкаТаблицыЗначений» Каждый объект этого типа и является колонкой таблицы значений, и содержит свойства и методы. Обращаясь к этим свойствам и методам мы получаем нужные сведения об одной колонке или производим какие-то другие действия с ней.

Например, обращаясь к свойству «Имя» (Колонка.Имя) мы получаем имя текущей колонки.

Хочу обратить ваше внимание на заголовок цикла: «Для Каждого Колонка Из МояТЗ.Колонки Цикл» Переменная с именем «Колонка» придумана нами. Необязательно использовать такое же имя. Можно назвать эту переменную как угодно, например «МояТекущаяКолонка» Тогда пример выше будет выглядеть таким образом:

Читайте так же:
За сколько можно продать ноутбук асус

Когда исполняющая подсистема 1С встречает цикл такого вида, при каждом проходе цикла она присваивает переменной с указанным именем один элемент из нашей коллекции, в данном случае — один элемент коллекции колонок таблицы значений МояТЗ.Колонки А далее мы обращаемся к переменной, которая содержит в себе текущую колонку, и используем свойство «Имя».

Предлагаю рядом с именем колонки вывести еще и номер каждой колонки в коллекции колонок:

В окно сообщений 1С будет выведен текст:

Обратим внимание на то, что колонки в таблице значений 1С нумеруются начиная с нуля, так же, как и строки таблицы значений.

Количество колонок в таблице значений 1С

Чтобы узнать количество колонок в таблице значений, мы используем метод «Количество()» у коллекции колонок.

На экране будет выведена цифра «3». Действительно, в нашей таблице три колонки: «Фамилия», «Имя», «Отчество»

Получение объекта- колонки по ее номеру (индексу) и перебор колонок при помощи индекса колонок

Сделаем цикл перебора всех колонок таблицы значений при помощи индексов колонок (номеров). Помним, что нумерация колонок начинается с нуля. Поэтому счетчик цикла «Сч» мы должны наращивать от нуля до числа, равного количеству колонок минус один.

На экране мы получим следующее

Думаю, что этот пример был понятен. Мы обратились к методу Количество() коллекции колонок «МояТЗ.Колонки.Количество()«, получили количество колонок, и запустили цикл со счетчиком от нуля до количество колонок минус один. Внутри цикла мы получаем каждую колонку из коллекции колонок и присваиваем текущий объект-колонку в переменную ТекущаяКолонка Далее, у переменной ТекущаяКолонка мы обращаемся к свойству Имя и выводим значение этого свойства на экран: Сообщить(ТекущаяКолонка.Имя);

Важно никогда не путать свойство объекта и метод объекта.

Свойство — это некая статическая величина и обращение к нему пишется без скобок, например ТекущаяКолонка.Имя. А метод — это по сути, процедура или функция объекта, а вызовы процедур и функций всегда пишутся со скобками (даже если нет входных параметров). Например: МояТЗ.Колонки.Количество()

Если мы обратимся к методу, забыв написать скобки — интерпретатор 1С выдаст нам сообщение об ошибке и не запустит код на выполнение. Так как интерпретатор будет считать, что мы обращаемся не к методу, а к свойству — потому что нет скобок. А свойства с таким именем найти не сможет (потому что с таким именем имеется только метод) — о чем и будет сказано в сообщении об ошибке.

Вот что напишет интерпретатор, если я забуду поставит скобки в вызове метода таким неправильным способом МояТЗ.Колонки.Количество (без скобок после «Количество()»):

Поле объекта не обнаружено (Количество)

В данном случае «поле» и «свойство» следует понимать как синонимы, или неточность терминологии разработчиков 1С. Они используют оба этих слова для обозначения одного и того же понятия. Хотя в других языках программирования эти термины могут означать разные понятия.

Получение данных из таблицы значений 1С при помощи номеров колонок

Предлагаю вам, для начала, простой пример получения данных из первой строки нашей таблицы. Обратите внимание, что мы используем заранее заполненную таблицу из начала статьи. Мы точно знаем, что в таблице есть первая строка, и есть хотя бы одна колонка. Если мы применим этот пример к незаполненной таблице, то произойдет ошибка. Итак:

Читайте так же:
Войти чужой компьютер впервые

На экран будет выведено:

Сначала мы получили объект-строку таблицы значений, обратившись к таблице значений при помощи оператора [. ]. (если забыли, как это делается, можно посмотреть предыдущие статьи) Внутрь оператора мы передали аргумент «0». Это индекс первой строки таблицы значений. ПерваяСтрока = МояТЗ[0];

Далее, к объекту-строке мы тоже имеем право обратиться при помощи оператора [. ]. Внутрь этого операторы мы передали номер столбца таблицы значений, в данном случае тоже «0». И, таким образом, мы получили значение столбца с номером «0» для текущей строки таблицы под номером «0». Это значение мы вывели на экран и оно представляет собой строку «Чапаев».

Немного усложним наш пример:

Теперь мы вывели на экран значения из всех трех столбцов первой строки нашей таблицы значений:

Теперь я еще модифицирую этот пример, чтобы нам обойтись без переменной «ПерваяСтрока»

На экране будет тоже самое

Мы увидели в примере выше, что для обращения к значению, находящемуся в конкретной строке и конкретном столбце таблицы значений мы можем использовать последовательный вызов двух операторов [. ] в такой форме: ТаблицаЗначений[ИндексСтроки][ИндексКолонки]

Значит, мы готовы к тому, чтобы создать цикл перебора и получить данные всех строк и всех столбцов при помощи индексов строк и столбцов:

Сейчас, на нашем экране информация стала выглядеть более представительно:

Да, чуть не забыл. При использовании подряд двух операторов [. ][. ], мы можем вместо индекса колонки передавать имя этой колонки: ТаблицаЗначений[ИндексСтроки][ИмяКолонки]

Обратите внимание на строку, отмеченную стрелочкой «

Как научиться программировать в 1С с нуля?

Как работать программистом 1С и получать до 150 000 рублей в месяц?

ЗАПИШИСЬ НА БЕСПЛАТНЫЙ

«ПРОГРАММИРОВАНИЕ в 1С ДЛЯ НОВИЧКОВ»

Курс придет на электронную почту. Стань программистом, выполняя пошаговые задания.

Реализация поставленной задачи с применением функций СКД Массив и СоединитьСтроки

    1. Создадим новый набор данных.
    2. Вставим в него, вышеуказанный запрос.
    3. Перейдём на закладку «Вычисляемые поля» и добавим новую запись.
    4. В поле «Путь к данным» напишем МассивНомеров.
    5. В поле «Выражение» напишем Массив(РегистраторНомер).

    Создание вычисляемого поля с функцией СКД Массив (Array)

    Создание ресурсов поля с функцией СКД СоединитьСтроки (JoinStrings)

    Настройка группировок и полей отчёта СКД

    Настройка вывода итогов СКД

    Такие же шаги, но с некоторыми дополнениями, были использованы при создании отчёта о продаже номенклатуры по ГТД.

    Особенности реализации

    Если с запросами и функциями всё более менее ясно неприятным сюрпризом может стать то, что дополнительный реквизит на форме содержит название, отличающееся от этого реквизита, например, такое:

    Чтобы найти реквизит на форме 1С БСП создаёт новые реквизиты формы Свойства_ОписаниеДополнительныхРеквизитов и Свойства_ОписаниеЗависимыхДополнительныхРеквизитов, с помощью них можно установить однозначное соответствие между элементом и значением объекта:

    Второй особенностью реализации можно выделить невозможность создания свойства с мутабельным типом, с одной стороны это очевидное ограничение, с другой тип «Список значений» вполне допустим, но только для дополнительного реквизита (у дополнительных сведений невозможность связана с архитектурными ограничениями, так как объект и свойство — это измерения регистра «Дополнительные сведения»). Возможно, отсутствие такого типа связано со сложностями при обмене, а возможно в скором времени это будет реализовано, предлагаю посмотреть на пример такой реализации ниже.

    Добавим новый дополнительный реквизит для справочника физические лица «Номера счетов»

    Добавляем программно, вторую запись в табличную часть «Дополнительные реквизиты» справочника «Физические лица» с тем же самым свойством:

    Немного модифицируем код функции ЗначенияСвойств в общем модуле УправлениеСвойствамиСлужебный:

    А также код процедуры ЗаполнитьДополнительныеРеквизитыВФорме в общем модуле УправлениеСвойствами:

    Таким образом мы можем сохранять и восстанавливать значения реквизитов, которые, принимают множество значений.

    Как выгрузить данные из 1С

    Благодаря удобству и информационной надежности 1С огромное количество пользователей используют решения для автоматизации и обработки бизнес-процессов на любых фирмах. Но, все же, зачастую возникает необходимость выгрузки информации из 1С в другие программы и файлы. Данный материал раскрывает понятие выгрузки и показывает, как проводится данный процесс и потенциальные сложности при его проведении. Сразу хотим отметить, если у вас возникнет необходимость задать вопрос по 1С, вы можете это сделать по телефону или через заявку на сайте, по которой с вами свяжутся в ближайшее время.

    Какие данные можно выгружать из 1С

    В 1С любой конфигурации доступна выгрузка следующей информации:

    • Печатные формы;
    • Отчеты;
    • Таблицы и списки.

    Форматы для выгрузки поддерживаются следующие:

    • Microsoft Excel;
    • Microsoft Word;
    • PDF;
    • Выгрузка в CSV;
    • HTML и другие.

    Процесс выгрузки печатных форм и отчетов

    Сохранение в требуемом формате можно сделать для любой печатной формы или отчета в 1С. Открываем форму или отчет и выбираем в Главном меню Файл – Сохранить как.

    Затем мы увидим окно сохранения документа, где нужно присвоить имя и тип файла.

    Потенциальные сложности во время выгрузки

    Опция «Сохранить как» не всегда может функционировать.

    Объясняется это неактивизированной печатной формой или отчетом в настоящий момент. Кликаем мышкой в любом месте и печатная форма становится активной для сохранения.

    Можно увидеть, что опция «Сохранить как» уже доступна. Напомним, по любым вопросам касаемо выгрузки и не только вы можете обращаться к нашим консультантам по сопровождению 1С 8.3.

    Особенности выгрузки в Excel

    Чаще всего требуется произвести выгрузку в табличном формате Excel. Для сохранения данных указываем тип Лист Excel2007 -…(*.xlsx), реже используется старый формат Лист Excel (*.xls):

    Выгрузка из 1С в другие форматы (PDF, Word, CSV и др) проводится таким же образом.

    Как выгружать произвольные таблицы из 1С

    Давайте рассмотрим возможность выгрузки любых данных в случае наличия на это прав.

    Используя штатный механизм в 1С, позволяющий выгружать любые списки (к примеру, список документов или элементы справочника), пользователь может получать комплексные данные удобным способом. Так, в командной панели любого списка выбираем группу «Еще» и затем команду «Вывести список»:

    После этого нужно определить требуемые колонки и нажать кнопку ОК:

    Мы получим данные в виде специального табличного документа, имеющего аналогичный вид, как и у всех отчетов в 1С. Выгрузка проводится также с помощью опции Файл – Сохранить как:

    Выгрузка невидимых в перечне данных

    Часто пользователи сталкиваются с необходимостью добавить в список колонки, присутствующие в документе, но отсутствующие по каким-то причинам в текущем перечне. Например, в перечне «Клиенты» отсутствует поле «Телефон», которое видно только в дополнительной панели с правой стороны.

    Для возможности выгрузить телефон из 1С необходимо эти данные сначала внести в список. Нажимаем «Еще – Изменить форму». Из перечня колонок выбираем нужную нам. Стоит отметить, что почти во всех конфигурациях программы имеется поле «Ссылка». При переходе на это поле и нажав кнопку «Добавить поля» нам отобразятся все доступные поля этого справочника. Тут мы и делаем выбор поля «Телефон» и присваиваем ему галочку использования.

    После проведения этих этапов база данных клиентов с телефонами готова к выгрузке в файл используя команду «Вывести список».

    Из Excel в «1С:Управление нашей фирмой 8»

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

    1-й этап. Загрузка списка номенклатурных позиций

    Шаг 1. Открываем обработку для загрузки (раздел «Компания» – «Загрузка данных из внешнего источника» – «Номенклатура»).

    Шаг 2. Выбираем «Автоматический режим. Выбрать внешний файл».

    Открывается окно проводника, где выбираем наш документ с перечнем товаров для загрузки в формате «.xlsx».

    После прочтения документа в табличной части окна «Загрузка данных из внешних источников» будет показан перечень товаров с данными.

    Шаг 3. На данном шаге нам необходимо определить наименования колонок. Для этого жмем на ссылку «Не загружать» вверху каждой колонки и в открывшемся окне выбираем верный реквизит.

    Шаг 4. Когда все колонки будут сопоставлены, нажимаем кнопку «Далее». Откроется окно аналитики сопоставления данных.

    Здесь указано сколько было обнаружено новых элементов, а какое количество уже есть в базе. Уточняем настройки: нужно ли создавать новые товары справочника или необходимо обновить те, что уже есть.
    Также можно уточнить в какую группу справочника номенклатуры загружать новые элементы (и переместить уже имеющиеся).

    Если данные загружаем в пустой справочник, то выбираем параметр «Создавать новые элементы, если полученные данные не сопоставлены», а параметр «Обновлять сопоставленные элементы полученными данными» наоборот не выбираем.

    После проверки корректности настроек нажимаем «Загрузить данные в приложение».

    При верном заполнении «1С:УНФ» загрузит из документа перечень товаров и создаст новые элементы в указанной группе справочника «Номенклатура».

    2-й этап. Загрузка цен номенклатуры

    Шаг 1. Открываем обработку для загрузки (раздел «Компания» – «Загрузка данных из внешнего источника» – «Цены»)

    Выбираем «Автоматический режим. Выбрать внешний файл. ».

    Откроется окно проводника, где мы выбираем необходимый нам документ, аналогично тому, как мы делали в прошлом этапе.

    После прочтения документа то в табличной части окна «Загрузка данных из внешних источников» будет показана информация из документа.

    Шаг 2. На данном шаге нам необходимо определить наименования колонок, для этого жмем на ссылку «Не загружать» вверху каждой колонки и в открывшемся окне выбираем верный реквизит, как мы делали на предыдущем этапе.

    Шаг 3. После определения наименований колонок нажимаем кнопку «Далее». Появится окно аналитики сопоставления данных.

    Здесь программа показывает, сколько было элементов сопоставлено.

    Если нажать на «показать строки», то можно более детально посмотреть, какие пункты будут загружены.

    Тут же необходимо указать, какой тип цен будет загружаться.

    Если данного типа цен еще нет, то нажимаем на кнопку «Создать», в наименовании цены пишем, например, «Розничная», способ расчета выбираем «Статический», уточняем каким образом в цене будет рассчитываться НДС.

    Нажимаем «Записать и закрыть».

    Шаг 4. После проверки корректности заполнения настроек нажимаем кнопку «Загрузить данные в приложение».

    При верном заполнении «1С:УНФ» загрузит из документа цены перечня справочника номенклатуры.

    Выгрузка в CSV из 1С 8.3

    Перед тем как настраивать экспорт в CSV, стоит определиться с каталогом, в который будут выгружаться данные. У пользователя, который будет выгружать данные, должен быть доступ на запись в выбранную папку. Обработка для CSV будет состоять из нескольких функций – так намного нагляднее и понятнее, чем одна большая процедура:

    1. Процедура запуска выгрузки в файл. Указываем путь к файлу, который нужно создать;
    2. Задаем разделитель и вызываем последовательно все функции – запроса данных, их обработки и записи;
    3. Функция получения данных, которые необходимо сохранить в CSV. Информация выгружается из базы данных в таблицу значений с помощью запроса;
    4. Формирование текста для нового файла с учетом разделителей, заголовков и переноса строк;
    5. Процедура записи полученной текстовой строки в конечный файл с указанием нужной кодировки.

    Рис.1 Файл CSV Рис.1 Файл CSV

    Чтобы представить полученный файл в виде таблицы в Excel, можно воспользоваться мастером импорта текста. На вкладке «Данные» есть кнопка «Текст по столбцам». Необходимо выделить наш текст, который по умолчанию сохраняется в первый столбец, и нажать на эту кнопку. После простой настройки, в течение которой вы укажете разделитель, перед нами появится таблица.

    Рис.2 Настройка Текст по столбцам Рис.2 Настройка Текст по столбцам
    Рис.3 Таблица Рис.3 Таблица

    Это код универсальной выгрузки данных, которая применима в большинстве случаев. Важно помнить, что выбранный символ разделителя не должен встречаться в данных, иначе придется обрабатывать конечный файл. Поэтому, перед тем как выгружать данные, проведите их анализ и определите наилучший вариант. Платформа 1С Предприятие 8.3 предоставляет широкий выбор, поэтому вряд ли возможна ситуация, когда в данных встречаются все спецсимволы.

    Интеграция

    Интеграция 1С с Битрикс

    Для совместной работы 1С с интернет-магазинами и корпоративными площадками. Дорожная карта в подарок!

    Интеграция с сайтом

    Интеграция 1С с сайтом

    Поможем настроить торговлю через интернет для любых CMS. Дорожная карта интеграции с сайтом в подарок

    Уверенная работа с CSV позволит вам зарекомендовать себя не только как опытного разработчика 1С, но и интегратора. На текущий момент большинство задач для 1С от крупных компаний связано именно с обменом данными между системами. Конечно, не во всех случаях подойдет приведенный выше алгоритм, но поняв его принцип, вы с легкостью доработаете его при необходимости.

    голоса
    Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector