Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: УФ Некоторые значения ТЧ рассчитать по среднему

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

Здравствуйте, вытаскиваю запросом цены из _1SCONST, некоторые из них представлены непонятно как..гугление намекнуло что используется что 36ричная система счисления, но перевод из 36 р в 10 не дает правильных результатов, к тому же в некоторых значениях есть русские буквы. Может кто то знает как все таки хранятся там данные?
23B = 5.94
T5 = 90.47
2YOЦО = 15.54
Ответ:
Тебе надо обращать внимание на поле ID и от него плясать. Если это ID константы у которой в значениях лежит число, тогда там число, если агрегатка, тогда надо смотреть что там за агрегатка.
Вопрос: ЗУП 2.5 Документ Оплата о среднему заработку. нет данных для расчета.?!

Добрый день!
ЗУП 2.5 (2.5.124.3) 

Есть сотрудник. С 01.09.2017 переведен на внешнее совместительство.
Далее его по основной и второй организации рассчитывали документом Оплата о среднему заработку, - за сентябрь и октябрь все рассчитывалось нормально.

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

Доброго время! мне нужно реализовать функцию расчета среднего значения для аттестата у Физического лица. Если в 1с какие то функции или нужно создавать массив?
Подскажите как реализовать? не могу представить. Есть физическое лицо и все сведение о образовании, но нужно чтобы был средний балл.


Ответ:
Сообщение от 77gg77gg
табличную часть в том же справочнике или создать документ
Лучше регистр сведений, ка можно его еще подчинить регистратору (документ - регистрирующий значения оценок в разрезе физ лица и предмета). Документ и справочник как то не так :/ добавление новой оценки = перезапись объекта, что не есть гут, этож все-таки операция добавления по сути оперативных данных. По хорошему документ (физик + предмет = оценка) регистрирует свои движения в регистре сведений за определенный день. Регистр сведений (периодичность день) по измерениям - Физик и предмет, по ресурсам - оценка
По среднему в запросе так:
1C
1
2
3
4
5
6
7
8
9
    Запрос = Новый Запрос("ВЫБРАТЬ СРЕДНЕЕ(Оценки.Оценка) КАК Оценка ИЗ РегистрСведений.Оценки КАК Оценки
                          |ГДЕ Оценки.ФизическоеЛицо = &ФизическоеЛицо");
    
    Запрос.УстановитьПараметр("ФизическоеЛицо", ФизическоеЛицо);
    
    ВыборкаРезультата = Запрос.Выполнить().Выбрать();
        ВыборкаРезультата.Следующий();
    
    СредняяОценка = ?(ЗначениеЗаполнено(ВыборкаРезультата.Оценка), ВыборкаРезультата.Оценка, 0);
Вопрос: СКД: оформить итоговое значение по Задолженности

Приветствую, Форумчане!

1. Создал некий отчет в СКД. В принципе работает правильно и выдает правильные результаты. Но вызывает серьезное возмущение по выводу результата по сумарной задолженности.

Как видно на рисунке в последней графе "Задолженность" видна расшифровка по задолженности, а нужно чтобы на глаза попадалось только итоговое значение (обвидено черным). Все остальные (зачеркнуто красным) необходимо убрать с глаз.

Подскажите как это можно сделать...

2. В иделале хотелось бы получить 2-е колонки по задолженности: если минус, то задолженность Компании, если "+", то задолженность Клиента...

Подскажите, кто чем может...

К сообщению приложен файл. Размер - 39Kb
Ответ:
trew
Ukraina,

1. В СКД закладка Ресурсы
2. В СКД закладка Вычисляемые поля (в поле Рассчитать по - попробуй ничего не указывать)


К сожалению это не помогло, в вычисляемых полях также ведется расшифровка, а нужно чтобы их не было (зачеркнуто красным)

Как можно будет создать подобный отчет (на новом рисунке)?

Т.е. Над итоговыми значениями по каждому контрагенту выводится итоговые данные по итогам, но с учетом по задолженности по направлениям, ну типа Дебет/Кретит в Акте взаиморасчетов

К сообщению приложен файл. Размер - 22Kb
Вопрос: [Удалить]УФ некоторые вопросы

Здравствуйте!
Опять у меня проблема с Владельцем формы, но теперь уже с УФ.
Помогите пожалуйста.
Документ - ВводЗаданий, ТЧ - Задания, Реквизит ТЧ - Контракт - Справочник.НоменклатурныеГруппы.
Код:
&НаКлиенте
Процедура ЗаданияКонтрактНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    Список = ЗаданияКонтрактНачалоВыбораНаСервере();
    Отбор = Новый Структура;
    Отбор.Вставить("Ссылка", Список);
    ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("Отбор", Отбор);
    ПараметрыФормы.Вставить("Отображение", ОтображениеТаблицы.Список);
    //ПараметрыФормы.Вставить("Ключ", Элемент.Родитель.Родитель.ТекущийЭлемент); //Элементы.Задания.ТекущиеДанные.Контракт
    //ПараметрыФормы.Вставить("Владелец", Элемент.Родитель.Родитель.ТекущийЭлемент);
   
    ОткрытьФорму("Справочник.НоменклатурныеГруппы.ФормаВыбора", ПараметрыФормы,Элементы.Задания.ТекущиеДанные.Контракт);
КонецПроцедуры

&НаСервере
Функция ЗаданияКонтрактНачалоВыбораНаСервере()
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    КонтрактыФилиаловСрезПоследних.Контракт
    |ИЗ
    |    РегистрСведений.КонтрактыФилиалов.СрезПоследних(&Дата, ) КАК КонтрактыФилиаловСрезПоследних
    |ГДЕ
    |    КонтрактыФилиаловСрезПоследних.Филиал = &Организация";
   
    Запрос.УстановитьПараметр("Дата", Объект.Дата);
    Запрос.УстановитьПараметр("Организация", Объект.Организация);
   
    РезультатЗапроса = Запрос.Выполнить();
    Список = Новый СписокЗначений;
    Список.ЗагрузитьЗначения(РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("Контракт"));
    Возврат Список;
КонецФункции

&НаКлиенте
//
Процедура ЗаданияКонтрактНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    Список = ЗаданияКонтрактНачалоВыбораНаСервере();
КонецПроцедуры

&НаСервере
Процедура ЗаданияКонтрактОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    // Вставить содержимое обработчика.
    а=0;
КонецПроцедуры
Не получается - выбрать значение из справочника в документ.
Не срабатывает ПараметрыФормы.Вставить("Отображение", ОтображениеТаблицы.Список), надо из спр отобразить только значения из списка, а открывается иерархический список.
Спасибо!
Ответ:
С этим разобралась. ОбработкаВыбора для УФ не надо.
Для спр сделала ФормуВыбора УФ.
Есть другой вопрос, как сделать ввод двух значений пользователю ?
Вот чтото типа этого
Массив = Новый Массив;
Массив.Добавить(Тип("СправочникСсылка.НоменклатурныеГруппы"));
ОписаниеТипов = Новый ОписаниеТипов(Массив, );
Если ВвестиЗначение(ВыбЗнач, "Введите значение контракта", ОписаниеТипов) Тогда
// // обработка введенного значения
Сообщить("Введенное значение: "+ВыбЗнач);
КонецЕсли;
но двух значений, т.е. еще один справочник к примеру.
и, можно ли на открытый СправочникСсылка.НоменклатурныеГруппы наложить мои условия, мне надо всего два значения из спр.
Вопрос: СКД, подбор базового значения диаграммы исходя из минимального значения

Доброго дня.
Имеется отчет на СКД, который выводит диаграммы динамики различных показателей (отборы, группировки).
Диаграмма выводится по каждому значению группировок отдельная.
Все хорошо, но некоторые показатели варьируют, например (абстрактно), от 0.001 до 0.005, другие от 0.788 до 0.852, третьи от 166.2 до 169.8
Естественно, без установки правильного базового значения (например, в последнем случае 165), диаграммы получаются неинформативными, колебания показателя становятся слабозаметными.
Но автоматического определения базового значения в диаграмме не нашел, только выставлять настройками в целом для диаграммы.
Подскажите, может кто знает способ установки базового значения для каждой группировки (могу для каждого показателя задать значение), или автоматического из минимального значения, или еще какие способы.
Подозреваю, что можно только кодом, перехватывать вывод отчета, и в цикле по группировкам устанавливать базовое значение для диаграммы.
Заранее спасибо за ответы по делу.
Ответ: () мм.. не совсем понял.
Есть идея, добавить несколько группировок по характеристикам, в которых указать отбор, например, по минимальному или максимальному значению, которое заранее посчитать по группировке.
Вопрос: Как убрать период из расчета среднего

Здравствуйте!

Конфигурация ЗУП 2.5.

Проблема такая. Бухгалтер хочет, чтобы при расчете отпуска по календарным дням (и прочей оплате по среднему) из расчетного периода выбрасывалось время кадровых перемещений "по статье 72" и дополнительных отпусков.
При кадровом перемещении пользователю временно вместо оклада по часам назначается копия оклада по часам - "Оклад по часам (ст 72)".
Вопрос: как сделать так, чтобы ДНИ И ЧАСЫ, оплаченные видом расчета, не учитывались при расчете отпуска?
Ответ: Не понял. Откуда выкидывать?
Если ты про табличную часть расчета среднего в документе начисления отпуска, то там нет разбивки по видам начисления, там средний заработок индексируемый, не индексируемый и т.д.
Вопрос: Расчет среднего для больничного

Перенесли данные из БП 2 в ЗУП 3.0
Перенесли не вводом остатков, а создали документы кадровые и по расчету з/п начиная с лохматого года. Больничные спихали в документ начисления. В итоге суммы учитываются,а  дни нет

Интересует где указать кол-во дней для расчета среднего заработка?
Если брать полный год, то средний заработок считает правильно.
Но у сотрудника были больничные, которые в ээтот расчет попасть не должны
Ответ: Дни в строках с начислениями, входящими в расчет среднего, в веденных документах указаны?
Вопрос: Чтение ИЗ Excel в Таблицу значений

Всем доброго дня.

Есть ЗУП КОРП 2.5 - обычные формы. Делаю загрузку из екселя. В файле больше 1000 строк.

Проблемы возникли на стадии чтения из файла:

1. Некоторые ячейки не читаются, тип в екселе - дата (если открыть файл или просто перетащить в 1С, то все ок и ячейки заполнены, но при чтении они пустые).
2. Постоянные вылеты, нужно перезагружать 1С, закрывать ексель из диспетчера.
3. Не читается *.xlsx (*.xls с абсолютно такой же начинкой читается).

Функция, которой я перекачиваю ексель в ТаблицаЗначений (нашел, эта хоть как-то работает в отличие от остальных):

Код 1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
Функция ПолучитьТЗИзEXCEL(ПутьКФайлу, ИмяНомерСтраницы, Заголовок = Истина, ПерваяСтрока = 0) Экспорт
 
    ТЗ  = Новый ТаблицаЗначений;
 
    #Если Клиент Тогда
        Состояние("Подключение к файлу Excel...");
    #КонецЕсли
    //
    Попытка
        Эксель = Новый COMОбъект("Excel.Application");
        Версия = СтрПолучитьСтроку(СтрЗаменить(Эксель.Version, ".", Символы.ПС), 1);
    Исключение
        Сообщить("Ошибка подключения к "+ПутьКФайлу+" : "+ОписаниеОшибки(),СтатусСообщения.Важное);
        Возврат ТЗ;
    КонецПопытки;
    //
    Книга = Эксель.WorkBooks.Open(ПутьКФайлу);
    // Выбираем данные запросом из таблицы файла по имени страницы
    Если ТипЗнч(ИмяНомерСтраницы) = Тип("Число")  Тогда
        Лист        = Книга.WorkSheets(ИмяНомерСтраницы);
        ИмяСтраницы = Лист.Name;
    Иначе
        ИмяСтраницы = ИмяНомерСтраницы;
    КонецЕсли;
    //
    // Определим диапазон данных Excel
    ПослЯчейка = СтрЗаменить(Книга.WorkSheets(ИмяСтраницы).Cells(1,1).SpecialCells(11).Address, "$", "");
    //
    Эксель.Application.Quit();
    //
    Эксель  = неопределено;
    Книга   = неопределено;
    Лист    = неопределено;
 
    // Подлючаемся
 
    Connection          = Новый COMОбъект("ADODB.Connection");
    Если Версия = "12" ИЛИ Версия = "14" Тогда
        СтрокаПодключения   ="Provider =Microsoft.ACE.OLEDB.12.0;Data Source="+ПутьКФайлу+";Extended Properties=""Excel 12.0 Xml;HDR="+?(Заголовок,"YES","NO")+";IMEX=1""";
    Иначе
        СтрокаПодключения   ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ПутьКФайлу+";Extended Properties=""Excel 8.0;HDR="+?(Заголовок,"YES","NO")+";IMEX=1""";
    КонецЕсли;
 
    Попытка
        Connection.Open(СтрокаПодключения);
    Исключение
        Сообщить("Ошибка подключения!"+ОписаниеОшибки(),СтатусСообщения.ОченьВажное);
        Возврат ТЗ;
    КонецПопытки;
 
    Command=Новый COMОбъект("ADODB.Command");
    Command.ActiveConnection=Connection;
    Command.CommandText = ?(ПерваяСтрока = 0, "Select * From [" + ИмяСтраницы + "$]", "Select * From [" + ИмяСтраницы + "$A" + ПерваяСтрока + ":" + ПослЯчейка + "]");
 
    Попытка
        Записи=Command.Execute();
    Исключение
        Сообщить("Ошибка при выполнении запроса!"+ОписаниеОшибки(),СтатусСообщения.ОченьВажное);
        Возврат ТЗ;
    КонецПопытки;
 
    Для НомерПоля = 0 По Записи.Fields.Count-1 Цикл
        СтрКолонка = Строка(Записи.Fields.Item(НомерПоля).Name);
        СтрКолонка = СтрЗаменить(СтрКолонка,"№","Num");
        НедопустимыеСимволы = " ~`!@""#№$;%^:&?*()-+=/\|.,";
        Для i = 1 По СтрДлина(НедопустимыеСимволы) Цикл
            СтрКолонка = СтрЗаменить(СтрКолонка, Mid(НедопустимыеСимволы, i, 1), "_")
        КонецЦикла;
        ИмяКолонки = СокрЛП(СтрКолонка);
        ТЗ.Колонки.Добавить(ИмяКолонки, , СтрКолонка);
    КонецЦикла;
 
    Пока НЕ Записи.EOF() Цикл
        НоваяСтрока = ТЗ.Добавить();
        Для НомерПоля = 0 По Записи.Fields.Count-1 Цикл
            НоваяСтрока[НомерПоля] = Записи.Fields(Записи.Fields.Item(НомерПоля).Name).Value;
        КонецЦикла;
        Записи.MoveNext();
    КонецЦикла;
 
    Command = Неопределено;
    Записи  = Неопределено;
 
    Возврат ТЗ;
 
КонецФункции
Подскажите хороший проверенный механизм чтения.
Ответ:
Код 1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
// Функция получает данные из файла Excel
//
// Параметры:
//   пФайл     - Имя файла
//   пЛист     - Имя листа с данными
//   СтруктураКолонок - Структура вида "ИмяКолонки" - "НомерКолонки"
//                      если не задано, созадутся колонки вида "К1", "К2"
//   XLSОбъект - COM объект типа "Excel.Application"
//
// Возвращаемое значение:
//   ТаблицаЗначений
//
Функция Excel_ПолучитьДанные_COMArray(пФайл, пЛист, СтруктураКолонок = Неопределено, Знач НачСтрока = 0, Знач КонСтрока = 0, XLSОбъект = Неопределено) Экспорт
 
    #Если Клиент Тогда
    Состояние("Открытие Excel");
    #КонецЕсли
 
    Если XLSОбъект = Неопределено Тогда
        XLSОбъект = Новый COMОбъект("Excel.Application");
        XLSОбъект.Visible       = Ложь;
        XLSОбъект.DisplayAlerts = Ложь;
    КонецЕсли;
 
    Попытка
        Book = XLSОбъект.Workbooks.Open(пФайл, , Истина);
    Исключение
        Сообщить ("Проблемы с подключением к Excel" );
        Возврат Неопределено;
    КонецПопытки;
 
    Лист = Book.Sheets(1);
    КолвоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
    КолвоСтрок   = Лист.Cells(1,1).SpecialCells(11).Row;
 
    Таблица = Новый ТаблицаЗначений;
 
    Если СтруктураКолонок = Неопределено Тогда
 
        Для Счетчик = 1 По КолвоКолонок Цикл
            Колонка = Таблица.Колонки.Добавить("К" + Счетчик);
        КонецЦикла;
 
    Иначе
 
        МаксимальныйНомерКолонки = 0;
        Для каждого КлючИЗначение Из СтруктураКолонок Цикл
            Колонка = Таблица.Колонки.Добавить(КлючИЗначение.Ключ);
            МаксимальныйНомерКолонки = Макс(МаксимальныйНомерКолонки, КлючИЗначение.Значение);
        КонецЦикла;
 
        КолвоКолонок = Мин(КолвоКолонок, МаксимальныйНомерКолонки);
 
    КонецЕсли;
 
    НачСтрока = ?(НачСтрока = 0, 1, НачСтрока);
    КонСтрока = ?(КонСтрока = 0, КолвоСтрок, КонСтрока);
    КонСтрока = Мин(КонСтрока, КолвоСтрок);
 
    // Массив типа COMSafeArray
    Массив = Лист.Range(Лист.Cells(НачСтрока, 1), Лист.Cells(КонСтрока, КолвоКолонок)).Value;
    КолвоСтрок   = Массив.GetUpperBound(1);
 
    Для НомерСтроки = 1 По КолвоСтрок Цикл
 
        #Если Клиент Тогда
        Состояние("Чтение файла: " + Формат(НомерСтроки) + " из " + Формат(КолвоСтрок));
        ОбработкаПрерыванияПользователя();
        #КонецЕсли
 
        НоваяСтрока = Таблица.Добавить();
 
        Если СтруктураКолонок = Неопределено Тогда
 
            Для НомерКолонки = 1 По КолвоКолонок Цикл
 
                НоваяСтрока["К" + Формат(НомерКолонки, "ЧГ=0")] = Массив.GetValue(НомерКолонки, НомерСтроки);
 
            КонецЦикла;
 
        Иначе
 
            Для каждого КлючИЗначение Из СтруктураКолонок Цикл
 
                НоваяСтрока[КлючИЗначение.Ключ] = Массив.GetValue(КлючИЗначение.Значение, НомерСтроки);
 
            КонецЦикла;
 
        КонецЕсли;
 
    КонецЦикла;
 
    XLSОбъект.Application.Quit();
    Возврат Таблица;
 
КонецФункции
Так работает лучше, хоть и приходится передавать туда имя листа и структуру колонок и начальная строка не работает. Времени переделать нету...