Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: На чём пишутся встроенные процедуры и функции?

Всех с наступающим!!!:)

Собственно, стало интересно, для общего развития, а на каком языке написаны встроенные в платформу процедуры и функции? На С++?
Ответ: Может к Новому году станем све подобрее?
Вопрос: Вызов процедуры/функции внешней обработки из формы документа

Добрый день!
Есть внешняя обработка, в нем (в модуле объекта) определена функция (СформироватьДокумент).
Как мне из формы документа вызвать эту функцию (СформироватьДокумент), не открывая форму обработки? Подскажите, пожалуйста.
Ответ: () а все разобрался, спасибо)
Вопрос: Управляемые формы - как выполнить процедуру формы

Подскажите пожалуйста, какой есть способ выполнить процедуру из формы произвольного документа с целью пересчета показателей этого документа?
    Более конкретно задача такая - есть складской ордер на товары, нужно чтоб когда он проводился, в распоряжении, на основании которого он создан, выполнялась процедура ПерезаполнитьПоОтгрузке() из модуля формы документа РеализацияТоваровУслуг, на основании которого он создан. В обычных формах достаточно было написать:
Расходная = Распоряжение.ПолучитьОбъект();
Расходная.ПолучитьФорму("ФормаДокумента").ПерезаполнитьПоОтгрузке();
Расходная.Записать(РежимЗаписиДокумента.Проведение);

А как этот процесс сделать в управляемых формах?
Ответ: А помните была тема, что можно неэкспортные процедуры функции выполнять с клиента?
Вопрос: Как использовать функцию НайтиПоСсылкам()

Вот такой код:

Код:
Процедура НайтиСсылкиНажатие(Элемент)
    Если ЗначениеЗаполнено(Номенклатура) Тогда
        СписокНоменклатуры = Новый Массив;
        СписокНоменклатуры.Добавить(Номенклатура);
        МассивДокументов = Новый Массив;
        Для каждого Документ Из Метаданные.Документы Цикл
            МассивДокументов.Добавить(Документ);
        КонецЦикла;
        СсылкиНаДоки = НайтиПоСсылкам(СписокНоменклатуры, МассивДокументов);   
    КонецЕсли;
КонецПроцедуры
Дает мне вот такой результат:




В чем ошибка? По встроенной справке не понятно что ему надо
Ответ:
Нужно внимательней читать С-П.
Код:
СсылкиНаДоки = НайтиПоСсылкам(СписокНоменклатуры, Новый Массив, МассивДокументов); 
Вопрос: Программа на встроенном языке в 1С

Описать процедуру ShiftRight3(A, B, C), выполняющую правый циклический сдвиг: значение A переходит в B, значение B — в C, значение C — в A.
Ответ — программа на встроенном языке в 1С:Предприятие 8.0.
Нужна помощь, в Паскале решить могу, а в 1С не сильна
Ответ:
ХА еще мона так написать
процедура шифрайт3(а,б,с)
а= а+б+с;
б = а - б-с;
с = а-б-с;
а = а-б-с;

конецпроцедуры
Вопрос: Процедура или функция с указанным именем уже определена

пытаюсь получить макет внешней обработки на клиенте.
создал такую функцию. Вроде все верно.


&НаСервере
Функция ПолучитьМакетЛога()
    Возврат РеквизитФормыВЗначение("Объект").ПолучитьМакет("Лог");

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

Но выдается ошибка-Процедура или функция с указанным именем уже определена Получить макет лога.

Нзвание функции менял, загонял ее в процедуру с другим именем по типу такого и чет ничего не помогает. во втором случае в коде ниже выдается такая же ошибка только уже на процедуру  ПолучитьМакетЛогаТест()

//&НаСервере 

//Процедура ПолучитьМакетЛогаТест()
//    ПолучитьМакетЛога();


//    

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


В чем косяк?
Ответ: () Может подряд две разных директивы в модуле идут? Процедуры между ними например все закомментировал?
Вопрос: v7: Вызвать процедуру или функцию из картинки на форме, как?

Чего-то затупил конкретно... Собственно, сабж...
Подробнее: Форма(справочника, но, это не важно). В ней есть поле картинки. Как кликнув по картинке, вызвать процедуру модуля формы(в ней я хочу открывать картинку методом ЗапуститьПриложение(ПутьКФайлу))-???
В самой картинке есть только идентификатор... Чем отловить событие клика на этом поле?
Ответ: Понятно. Окна вне 1С, мне особо не мешают, зато открывают картинку в исход сделал вот так:

В глобальнике, потому, что используется в нескольких местах, кроме справочника:

// Влад 19.01.2018

Функция НормализоватьАртикул(Арт) Экспорт
    Рез    = СокрЛП(Арт);
    Рез    = СтрЗаменить(Рез,"\","_");
    Рез    = СтрЗаменить(Рез,"/","_");
    Возврат Рез;
КонецФункции

Функция ВернутьИмяФайлаКартинки(Код, Артикул) Экспорт
    ИмяФайлаКартинки = КаталогИБ() + СокрЛП(Константа.КаталогКартинок)+ "\" + СокрЛП(Код) + "_" + НормализоватьАртикул(Артикул) + ".jpg";
    Возврат ИмяФайлаКартинки;
КонецФункции    
// Конец Влад 19.04.2018

Функция убирает слэши из Артикула, меняет на нижние подчеркивания, иначе "общая файловая ошибка".

В форме справочника:

// Влад 19.01.2018

Процедура ЗагрузитьКартинку()
    ИмяФайлаКартинки = ВернутьИмяФайлаКартинки(Код, Артикул);
    Если ФС.СуществуетФайл(ИмяФайлаКартинки) = 1 Тогда
        Картинка.Загрузить(ИмяФайлаКартинки);    
    КонецЕсли;    
КонецПроцедуры

Процедура УдалитьКартинку()
    Если Вопрос("Вы уверены, что хотите удалить картинку?",4,10) = 6 Тогда
        ИмяФайлаКартинки = ВернутьИмяФайлаКартинки(Код, Артикул);    
        ФС.УдалитьФайл(ИмяФайлаКартинки);
        ПустКартинка = СоздатьОбъект("Картинка");
        Картинка.УстановитьКартинку(ПустКартинка);
        Форма.Обновить(0);
    КонецЕсли;    
КонецПроцедуры

Процедура ЗагрузитьКартинкуВБазу()
    ИмяФайлаКартинки = ВернутьИмяФайлаКартинки(Код, Артикул);
    Если ФС.СуществуетФайл(ИмяФайлаКартинки) = 1 Тогда
        Если Вопрос("Вы уверены, что хотите изменить картинку?",4,10) <> 6 Тогда
            СтатусВозврата(0);
            Возврат;
        КонецЕсли;
    КонецЕсли;
    НоваяКартинка     = "";
    Если ФС.ВыбратьФайлКартинки(0,НоваяКартинка,КатЗагрКартинки,"Выберите файл картинки для текущего товара!","jpg",10) = 1 Тогда
        ФС.КопироватьФайл(КатЗагрКартинки + НоваяКартинка, ИмяФайлаКартинки, 0);    
    КонецЕсли;
    Картинка.Загрузить(ИмяФайлаКартинки);    
КонецПроцедуры

Процедура ПросмотрКартинки()
    ИмяФайлаКартинки = ВернутьИмяФайлаКартинки(Код, Артикул);
    ЗапуститьПриложение(ИмяФайлаКартинки);
КонецПроцедуры
// Конец работы с картинками Влад 19.04.2018


Картинки храню в папке, с именем заданным в константе, внутри ИБ.
Вопрос: Вызов серверной функции с параметром типа УправляемаяФорма

В новых типовых конфигурациях есть серверный модуль РеализацияТоваровИУслугФормы. В этом модуле - функция:
Функция ОбработкаВыбораПодборВставкаИзБуфера(Форма, ВыбранноеЗначение, ИмяТаблицы) Экспорт
Функция вызывается из модуля формы РТиУ, когда выполнен подбор номенклатуры.
Есть ли какой нибудь способ вызвать эту функцию из своей обработки?
Т.е. имеется обработка, которая аналогично обработке Подбора формирует таблицу значений с номенклатурой и количеством, для списка документов реализации.
Хочется подсунуть эту ТЗ в типовую функцию, чтобы корректно отработали все штатные заполнения - при этом пользователь работает только с обработкой, форма документа не открывается.
Конфигурация на поддержке, типовая.

Задача сводится к следующему - как, имея только ссылку на документ, вызвать функцию общего серверного модуля (без возможности вызова с клиента), и передать этой функции форму этого документа?
Ответ: Что ж, похоже задача решения не имеет в рамках нашей вселенной...

Отправить тип УправляемаяФорма на серверную функцию общего модуля можно только из контекстной серверной функции модуля формы.

Если надо воспользоваться стандартными процедурами и функциями типовых конфигураций - надо готовить структуру и наполнять ее используемыми данными, и потом подсовывать вместо УправляемойФормы. Если, конечно, в этом общем модуле не делается потом так:
Форма.УстановитьФункциональныеОпцииФормы();
Т.е. из модуля формы вызывается функция общего модуля, а из функции общего модуля вызывается процедура модуля формы.
Интересно, как разработчики типовых не путаются во всех этих взаимозависимостях?
Вопрос: Вызов функции из модуля объекта в модуле формы

Доброго времени суток уважаемые форумчане! )

Столкнулся с проблеммой, никак не соображу что не так, создал внешнюю обработку внешней печатной формы, в модуле объекта прописал следующий код:

Код:
Функция Печать() Экспорт

ТабличныйДокумент = Новый ТабличныйДокумент;

Макет = ПолучитьМакет("Макет");

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| expУточняющиеХарактеристикиПроектов.ЗначениеУточняющейХарактеристики
|ИЗ
| РегистрСведений.expУточняющиеХарактеристикиПроектов КАК expУточняющиеХарактеристикиПроектов
|ГДЕ
| expУточняющиеХарактеристикиПроектов.Регистратор.Проект = &Проект
| И expУточняющиеХарактеристикиПроектов.ВидУточняющейХарактеристики = &ВидУточняющейХарактеристики";
Запрос.УстановитьПараметр("Проект",ДокументРасчет.Проект);

ВидУточняющейХарактеристики = ПланыВидовХарактеристик.expВидыОсновныхХарактеристикПроектов.НайтиПоНаименованию("Вид экспертизы");
Если ЗначениеЗаполнено(ВидУточняющейХарактеристики) Тогда
Запрос.УстановитьПараметр("ВидУточняющейХарактеристики",ВидУточняющейХарактеристики);
КонецЕсли;
Выборка = Запрос.Выполнить().Выбрать();

ОбластьШапки = Макет.ПолучитьОбласть("Шапка");
ОбластьШапки.Параметры.Заполнить(ДокументРасчет);

ТабличныйДокумент.Вывести(ОбластьШапки);

Возврат ТабличныйДокумент;

КонецФункции // СформироватьДанныеПечати()
В модуле формы в действии на кнопку пытаюсь вызвать данную функцию, ругается что функция "Печать" не найдена
Код:
&НаКлиенте
Процедура ПоказатьДокумент(Команда)

Макет = Печать();
Макет.Показать();

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

Непойму что не так?!
Ответ:
&НаКлиенте
Процедура Печать(Команда)

Макет = ПолучитьМакетНаСервере();

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

&НаСервере
функция СформироватьМакетНаСервере()
ЭтотОбъект1 = РеквизитФормыВЗначение("Объект");
Макет = ЭтотОбъект1.Печать();
Возврат Макет;
КонецФункции
Ругается на Печать();
--- Объединение сообщений, 30 сен 2016 ---
Недостаточно фактических параметров
Макет = ОбъектОбработка.Печать();
Вопрос: Как в СКД вывести представление значения через самописную функцию?

Добрый день!

В регистр пишется количество секунд.
Мне нужно в отчет вывести итоги в формате Часы:Минуты:Секунды
В глобальном модуле написал функцию преобразования количества секунд к строке нужного формата.
В СКД у поля в "Выражение представления" указываю "ФорматироватьКоличествоСекунд(КоличествоВремени)"

У процессора компоновки включил использование внешних функций
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);

Не работает.
В отчет выводит исходное значение в виде количества секунд.

Подскажите, плиз, кто знает.
Спасибо заранее.
Ответ: Попробовал вызвать эту же функцию для поля "Проект", по которому группируется отчет. К нему применилась. А к полю, которое ресурс почему-то не хочет.