Приветствую Вас ГостьПятница, 17.10.2025, 23:00

Каталог статей

В разделе материалов: 261
Показано материалов: 221-230
Страницы: « 1 2 ... 21 22 23 24 25 26 27 »

Для того, чтобы программно в таблице выделить нужную строку надо &НаКлиенте у элемента формы Таблица установить реквизит ТекущаяСтрока. Это числовой реквизит, но он не равен номеру строки в таблице. Чтобы его получить, надо использовать метод ПолучитьИдентификатор() для нужной строки.

Пример:

ТД = Элементы.ТаблицаИсполнителей.ТекущиеДанные;
ТекущийИсполнитель = ТД.Исполнитель;

// Обновляем таблицу

МассивСтрок = ТаблицаИсполнителей.НайтиСтроки(Новый Структура("Исполнитель", ТекущийИСполнитель));
Если МассивСтрок.Количество() > 0 Тогда
    Элементы.ТаблицаИсполнителей.ТекущаяСтрока = МассивСтрок[0].ПолучитьИДентификатор();
КонецЕсли;
 

Формы | Просмотров: 889 | Добавил: leshic | Дата: 30.01.2020 | Комментарии (0)

Параллельное использование нескольких версий COM control (несколько версий платформ)

https://infostart.ru/public/685924/

Администрирование | Просмотров: 385 | Добавил: leshic | Дата: 24.01.2020 | Комментарии (0)

За основу взята статья https://its.1c.ru/db/v8std#content:657:hdoc

Описываются правила построения и оптимизация запросов

 

Запросы | Просмотров: 500 | Добавил: leshic | Дата: 16.12.2019 | Комментарии (0)

Для обновления динамического списка после добавления объекта, который должен попасть в этот список, можно выполнить процедуру ОповеститьОбИзменении(<Ссылка>) или ОповеститьОбИзменении(<ИзмененныйТип>). В первом случае создается оповещение для динамического списка для обновления по объекту, во втором по типу объектов

Например ОповеститьОбИзменении(Тип("ДокументСсылка.ИнвентаризацияРасчетовСАбонентами"));

Формы | Просмотров: 1242 | Добавил: leshic | Дата: 04.12.2019 | Комментарии (0)

Задать параметры страницы отчета можно в процедуре ПриКомпоновкеРезультата() обратившись к свойствам ДокументРезультат.

Например выведем отчет в формате Ландшафт и впишем в лист:

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    ДокументРезультат.АвтоМасштаб=Истина;
КонецПроцедуры
 

СКД | Просмотров: 478 | Добавил: leshic | Дата: 27.11.2019 | Комментарии (0)

СтрокаРезультат = ВнешняяБД.ValueToStringInternal(Запрос.Выполнить().Выгрузить());
ТабВнешняя = ЗначениеИзСтрокиВнутр(СтрокаРезультат);


Нашел несколько статей по СКД, в которых наконец-то написано про расширение СКД и как его использовать. Есть 3 статьи про регистры расчета.

http://wiki.programstore.ru/category/1s-predpriyatie/

СКД | Просмотров: 318 | Добавил: leshic | Дата: 10.10.2019 | Комментарии (0)

Рассмотри случай когда у нас уже есть опубликованный веб-сервис и надо добавить новую операцию.

Открываем ветку Web-сервисы, существующий веб-сервис, нажимаем "Добавить / Операция".

Указываем

  • Имя 
  • Тип возвращаемого значения. Если тип имеет нестандартный тип, то его предварительно необходимо определить в XDTO-пакете
  • Имя процедуры (нажимаем на лупу и переходим в модуль сервиса)

Если результат должен формироваться по входным параметрам, то создаем параметры для операции. Направление передачи = "Входной".

Для созданного свойства надо обязательно указать права доступа. Правая кнопка мыши, Дополнительно и выдаем для нужной роли права  на "Использование".

Тип значения может быть элементарным или определенным отдельно (но все равно должен состоять из элементарных типов). Про типы можно посмотреть здесь: https://its.1c.ru/db/metod8dev#content:1793:hdoc

Допустим нам надо вернуть таблицу значений. Самый простой вариант определить 2 типа: Тип1 - строка таблицы (определяем столбцы таблицы), Тип2 - массив строк таблицы.

Находим нужный XDTO-пакет (пакет XDTO указан в свойстве "Пакеты XDTO"  сервиса, точнее там указано URI пространства имен. просматриваем все XDTO-пакеты, и ищем нужны по значению этого реквизита).

Добавляем тип объекта для строки таблицы.

Далее создаем тип объекта для таблицы, добавляем свойство СтрикиТаблицы и указываем для него тип созданные ранее для строки таблицы

Так как нам нужна таблица, то в свойствах строки ставим реквизит "Максимальное количество" = -1. Это говорит о том, что максимальное количество значений не ограничено. По умолчанию этот реквизит равен 1, что означает, что он может быть только 1. Поставим реквизит "Возможно пустое" = Истина, так как есть возможность, что наша функция вернет пустой набор строк.

Теперь открываем функцию модуля сервиса.

Текст функции примерно такой:

Функция РаботыИМатериалы(ДатаНачала, ДатаОкончания) // 2 параметра соответствуют входным параметрам нашей операции
    
    ВыходныеДанныеТипТаблица = ФабрикаXDTO.Тип("http://localhost/rng_vdgo", "ТаблицаРеализация");    //создаем тип для таблицы
    ВыходныеДанные = ФабрикаXDTO.Создать(ВыходныеДанныеТипТаблица); // создаем саму таблицу
    
    ВыходныеДанныеТипСтрокаТаблицы = ФабрикаXDTO.Тип("http://localhost/rng_vdgo", "СтрокаРеализация"); //Создаем тип для строки
    
    ТЗРаботыИМатериалы = ВОГ_ВебСервисы.СформироватьТаблицуРаботИМатериалов(ДатаНачала, ДатаОкончания); // получаем таблицу значений для выгрузки
    
    Для каждого СтрокаТЗ из ТЗРаботыИМатериалы Цикл
        
        ВыходныеДанныеСтрокаТаблицы = ФабрикаXDTO.Создать(ВыходныеДанныеТипСтрокаТаблицы); //создаем строку таблицы

        //заполняем строку

        ВыходныеДанныеСтрокаТаблицы.ДатаРеализации = СтрокаТЗ.Период;
        ВыходныеДанныеСтрокаТаблицы.ГУИДПодразделение = Строка(СтрокаТЗ.ПодразделениеСсылка.УникальныйИдентификатор());        
        ВыходныеДанныеСтрокаТаблицы.КодПодразделения = СтрокаТЗ.ПодразделениеКод;
        ВыходныеДанныеСтрокаТаблицы.Подразделение = СтрокаТЗ.ПодразделениеПолноеНаименование;                
        ВыходныеДанныеСтрокаТаблицы.ГУИДНоменклатура = Строка(СтрокаТЗ.НоменклатураСсылка.УникальныйИдентификатор());
        ВыходныеДанныеСтрокаТаблицы.Номенклатура = СтрокаТЗ.НоменклатураНаименование;
        ВыходныеДанныеСтрокаТаблицы.Количество = СтрокаТЗ.Количество;
        ВыходныеДанныеСтрокаТаблицы.Сумма = СтрокаТЗ.Сумма;
        ВыходныеДанныеСтрокаТаблицы.ЭтоМатериал = СтрокаТЗ.ЭтоМатериал;

        ВыходныеДанные.СтрокиТаблицы.Добавить(ВыходныеДанныеСтрокаТаблицы); //добавлеям строку в таблицу (как строка массива)
        
    КонецЦикла;
    
    Возврат ВыходныеДанные; //Обязательно возвращаем значение

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

Для получения данных через веб-сервис по созданной нами операции текст процедуры может быть примерно таким:

Процедура ПолучитьТаблицуРаботИМатериаловНаСервере()
    Сервис = WSСсылки.НашаСсылка.СоздатьWSПрокси("http://localhost/rng_vdgo", "rng_vdgo",  "rng_vdgoSoap");
    Сервис.Пользователь = "пользователь"; //пользователь зарегистрированный в 1С к которой обращаемся и имеющий права на веб-сервисы и чтение данных, указанных в запросе
    Сервис.Пароль = "пароль";
    //в WSСсылке НашаСсылка должна быть обновлена структура WSDL (типы и свойства на удаленном сервере). Этого можно добиться заново забив строку URL источника у ссылки
    ДанныеТаблицаРеализацияТип = Сервис.ФабрикаXDTO.Тип("http://localhost/rng_vdgo","ТаблицаРеализация");  //создаем тип для таблицы
    ДанныеТаблицаРеализация = Сервис.ФабрикаXDTO.Создать(ДанныеТаблицаРеализацияТип); //создаем саму таблицу
    
    ТаблицаРеализации = Сервис.ПолучитьТаблицуФактРаботыИМатериалы(ДатаНачала, ДатаОкончания); //получаем данные

    Для каждого СтрокаРеализации из ТаблицаРеализации.СтрокиТаблицы Цикл //обходим таблицу

                     ...

    КонецЦикла;

КонецПроцедуры

URL задается строкой. Примерный вариант: http://сервер/имя публикации (обычно совпадает с именем базы)/ws/<имя сервиса>.1cws?wsdl

 



Вход на сайт
Поиск
Категории раздела
СКД [52]
Регистры [7]
Формы [49]
Администрирование [51]
Запросы [11]
Объекты конфигурации и типы данных [20]
Взаимодействие с другими базами, приложениями и источниками данных [16]
Программирование [55]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0