Заказы на доработку 1С (сервис удаленной работы)

Хранилище

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

Здравствуйте, гость ( Войти | Зарегистрироваться )

История благодарностей участнику Vladal ::: Спасибо сказали: 60 раз
Дата поста: В теме: За сообщение: Спасибо сказали:
28.11.19, 11:14 Можно ли вернуть хранилище, которое было до момента отката до более ранней версии этого хранилища?
Итак, если осталась последняя конфигурация - может в бекапе базы, может еще как, то можно с ее помощью актуализировать конфигурацию хранилища.

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

1. Выгрузить актуальную конфигурацию в файл.
2. Сначала сравнить эту конфу с конфигурацией хранилища и захватить измененные объекты.
3. Затем сравнить и объединить изменения с конфигурацией из п.1 и поместить её в хранилище.
4. Настроить бекапы хранилища.

О принципе работы хранилища.
Каждая версия хранилища хранит только разницу в объектах от предыдущей версии.
Т.е. если подправили какую-то процедуру, то в хранилище помещается только текст модуля.
Когда откатили хранилище до более ранней версии, то "новые слои" были удалены.
п.3 создаст один единственный "слой" изменений над существующими.

Это сильно упрощенное объяснение.
info230a02,
27.11.19, 15:28 Можно ли вернуть хранилище, которое было до момента отката до более ранней версии этого хранилища?
Ошибка в том, что надо было просто получить ту версию документа из хранилища.
А откат или сокращение до версии влияет на всю базу.

Если нет бекапов - ничего не сделать. Только вручную догонять изменения.

Я в свое время в скрипты бекапа баз добписал бекап хранилища и внешних файлов (фото, сканы и т.д.), прикрученных к базе.
info230a02,
27.11.19, 11:55 Синтаксическая ошибка в запросе -Объединить. (1с 8.2.19.106)
Цитата(andrew76 @ 27.11.19, 9:50) *
Мне нужен только последний документ из каждой выборки.

Тогда каждый вид документа в отдельную виртуальную таблицу и результаты объединять.

Запрос = Новый Запрос; 
Запрос.Текст = "
|ВЫБРАТЬ ПЕРВЫЕ 1
|
|   ДекретОт.ДатаУхода Как Начало,
|   ДекретОт.Сотрудник как Сотрудник
// поместить выборку по первому виду документов во временную таблицу
|Поместить вт1

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

|ИЗ
|    Документ.ПриказНаОтпускПоУходуЗаРебенком  КАК ДекретОт1
|ГДЕ
|    ДекретОт1.Сотрудник = &Сотрудник
|
|Упорядочить по ДекретОт1.ДатаВыхода Убыв
|;

// объединить результаты обеих временных таблиц
|Выбрать
|    вт1.Начало как Начало,
|    вт1.Сотрудник как Сотрудник
|из
|    вт1 как Вт1
|
|объединить
|
|выбрать
|    вт2.Начало,
|    вт2.Сотрудник
|из
|    вт2 как Вт2

";


Писал без 1С, поэтому допускаю синтаксические ошибки.
andrew76,
10.10.19, 17:43 Объеденение полей запроса
fly @ Сегодня, 18:09 * ,
Если так - да. Быстрый пример. Но и он содержит ошибки.

В типовых есть (было)
Для ПП=1 По 10000 Цикл
КонецЦикла;


Цитата(fly @ 10.10.19, 18:09) *
на что влияет?

Читабельность и понимание логики.
Я видел шедевры (и одно время работал с их генератором) вроде этого:
Если Не ЗначениеФлажка = Ложь Тогда


Обычная беззлобная критика ради повышения качества кода.
fly,
19.08.19, 10:30 Проблема отображения записей в справочнике через RLS (1c 8.2.19.106)
Цитата(andrew76 @ 19.08.19, 11:22) *
надо именно отдельные записи (вернее отдельные реквизиты) в справочнике ФизЛица.

ОК.

А адреса тоже хранятся в справочнике физлиц?
Тогда РЛС на реквизит. В настройках прав на право Чтение выбрать проверяемые поля. Например, Адрес (если он хранится в справочнике Физлица) и справа условие, по которому оно будет доступно.

Естественно, во всех запросах к чтения Адреса по этому справочнику добавить РАЗРЕШЕННЫЕ.

Честно, сейчас проверить нет возможности.

Но я писал RLS к документу, вычисляя его возможность чтения по сотруднику, его руководителю, чтобы руководитель подразделения видел только документы своих сотрудников.
andrew76,
23.07.19, 15:45 Формирование QR-кодов нативными средствами 1С (компонента из БСП)
Вытащил из БСП компоненту и пример кода для формирования QR-кодов.

Процедуры и функции общих модулей также скопировал в модуль обработки, чтобы они были доступны в любой конфигурации.

// к теме Работа с QR Code при помощи типовой КомпонентаПечатиQRКода
Batchir, mut, Vofka,
17.07.19, 10:19 Данные из регистратора через СКД
Володька @ Вчера, 16:05 * ,
Примерно так:

Получить таблицу оборотов с регистратором.

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


Затем по каждому виду документов добавлять по условиям Ссылка = Регистратор и Номенклатура ТЧ = Номенклатура из регистра
ГДЕ
    (Ссылка, Номенклатура) В
            (ВЫБРАТЬ
                втОбороты.Регистратор,
                втОбороты.Номенклатура
            ИЗ
                втОбороты КАК втОбороты)
и группировать по номенклатуре и цене.

Получится примерно так:

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    АвансовыйОтчетТовары.Ссылка КАК Ссылка,
    АвансовыйОтчетТовары.Номенклатура КАК Номенклатура,
    АвансовыйОтчетТовары.Цена КАК Цена,
    СУММА(АвансовыйОтчетТовары.Сумма) КАК Сумма
ПОМЕСТИТЬ втНоменклатураЦеныСумма
ИЗ
    Документ.АвансовыйОтчет.Товары КАК АвансовыйОтчетТовары
ГДЕ
    (Ссылка, Номенклатура) В
            (ВЫБРАТЬ
                втОбороты.Регистратор,
                втОбороты.Номенклатура
            ИЗ
                втОбороты КАК втОбороты)

СГРУППИРОВАТЬ ПО
    АвансовыйОтчетТовары.Ссылка,
    АвансовыйОтчетТовары.Номенклатура,
    АвансовыйОтчетТовары.Цена

ОБЪЕДИНИТЬ

....
;


А потом эти таблицы соединить по Регистратору и Ссылке:
ВЫБРАТЬ
    втОбороты.Регистратор КАК Регистратор,
    втОбороты.Номенклатура КАК Номенклатура,
    втОбороты.КоличествоНачальныйОстаток КАК НачальныйОстаток,
    втОбороты.КоличествоПриход КАК Приход,
    втОбороты.КоличествоРасход КАК Расход,
    втОбороты.КоличествоКонечныйОстаток КАК КонечныйОстаток,
    втНоменклатураЦеныСумма.Ссылка КАК РегистраторСсылка,
    втНоменклатураЦеныСумма.Номенклатура КАК РегистраторНоменклатура,
    втНоменклатураЦеныСумма.Цена КАК РегистраторЦена,
    втНоменклатураЦеныСумма.Сумма КАК РегистраторСумма
ИЗ
    втОбороты КАК втОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ втНоменклатураЦеныСумма КАК втНоменклатураЦеныСумма
        ПО втОбороты.Регистратор = втНоменклатураЦеныСумма.Ссылка
            И втОбороты.Номенклатура = втНоменклатураЦеныСумма.Номенклатура
Володька,
19.06.19, 16:10 как найти строки в таблице документа
Цитата(lolmatrix @ 11.06.19, 8:50) *
Спасибо вопрос решен

На случай, если кто-то из потомков наткнется на эту тему из поисковиков.

Отбор.Вставить("машина", "СтрокаМашина ");
Пытается в колонке "Машина" найти машину по строке "СтрокаМашина ".
Если тип колонки отличается от строкового, то ничего не находит.

В типовых конфигурациях есть процедура общего модуля ОтобратьСтрокиПоКритериям. Советую взять её к себе.
Пример:
СтруктураОтбора = Новый Структура("Пометка", Истина);
ОбрабатываемыеСтроки = ОбщегоНазначения.ОтобратьСтрокиПоКритериям(ТаблицаДокументов, СтруктураОтбора).Выгрузить();

Отбирает по заданным параметрам с условием "равно". То есть все строки, у которых реквизит Пометка равен Истина.
А если надо другое сравнение, например, Больше, Меньше, Не равен и т.д. то создать еще одну структуру для параметра СложныйОтбор. Пример: отобрать строки, где тип оплаты не равен выбранному:
СтруктураОтбора = Новый Структура("ТипОплаты", ТипОплаты);
СтруктураСложныхКритериев = Новый Структура;
СтруктураСложныхКритериев.Вставить("ТипОплаты", ВидСравнения.НеРавно);
Выборка = ОбщегоНазначения.ОтобратьСтрокиПоКритериям(ТаблицаЗначений, СтруктураОтбора, СтруктураСложныхКритериев).Выбрать();
Vofka,
04.06.19, 10:05 Как прекратить начисление по исполнительным листам ?
Посмотрел в своей УТП.
Банится только форма документа.
В модулях регистра расчета ПлановыеУдержанияРаботниковОрганизаций нет никаких проверок.

Скорее всего это единичный случай.
Можно снимать дату запрета, корректировать документ и снова устанавливать запрет.
Или автоматически заполнить документ КорректировкаЗаписейРегистров по движениям выбранного ИЛ (сторнирующие записи) и следующей строкой внести расчет с правильным сроком.

Я работал в организации, где ИЛ приходили массово - алименты, кредиты, штрафы, - ИЛ прошлых периодов не банил, оставили на ответственности бухгалтера, потому что она отчитывалась об удержаниях перед исполнительной службой.
sasha007,
03.05.19, 10:15 RLS по к автору документа по табличной части справочника Пользователи
Решил, изменив архитектуру. Тот случай, когда действительно надо переписать.

Из справочника Пользователи убрал табличную часть, подчистил все эти подписки и обработчики ПередЗаписью/ПриЗаписи, попытки-шмопытки, исключения-шмиключения.

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

А в RLS изменил правило используя тот же шаблон:
...
#ПоЗначениямРасширенный("Документ.ЗаявкаНаПлатеж", "","",
"внутреннее Соединение РегистрСведений.ПодчиненныеПользователи КАК Т2 ПО (Т.Автор = Т2.Подчиненный И Т2.Руководитель=&ТекущийПользователь)",
...


Теперь то, что и задумывалось: создатель заявки видит только свои документы, его руководитель видит свои и документы всех своих подчиненных.
andr_andrey, Vofka,
18.04.19, 15:21 Работа с синонимом реквизита шапки документа
Цитата(nysysimara @ 18.04.19, 10:28) *
Каюсь, периодически балуюсь FormEx-ом

И небось, там уже есть консоль запросов?
leonid_gun,
18.04.19, 9:08 Работа с синонимом реквизита шапки документа
Цитата(leonid_gun @ 17.04.19, 21:00) *
Вы предлагаете разобрать Идентификатор документа на подобие синонима. Но мне необходимо разобраться в механизме обращения к синониму и комментарию реквизитов шапки документа, которые прямо указаны в конфигурации.

Если Вы заметили, у меня два варианта. Первый из них как раз из метаданных.
Читая метаданные, можно найти Синоним. Но если он не заполнен? Или просто пришла таблица значений и её надо "красиво оформить" - тогда по идентификатору можно получить синоним.
В принципе, применяемые методы те же и мой код подходит для 7.7.

Цитата(leonid_gun @ 17.04.19, 22:11) *
Попробовал обратится к реквизиту шапки документа через
РеквДок = Метаданные.Документ("МойДок").РеквизитШапки(НомерРеквШапки);

где НомерРеквШапки просто номер по порядку, так как он записан в Конфигураторе, и выводит синоним, если поле Синоним не заполнен, тогда Идентификатор.


НомерРеквШапки можно получить в цикле перебором. или по имени реквизита, как это сделано в глобальном модуле глЕстьРеквизитШапки.
В отладчике посмотрите все доступные поля для этого элемента (имя, синоним, тип и т.д.)

// Перебор общих реквизитов документов 
Для ИндРекв = 1 по Метаданные.ОбщийРеквизитДокумента() Цикл
    Сообщить("- общий реквизит: " + Метаданные.ОбщийРеквизитДокумента(ИндРекв).Идентификатор + ", синоним: " + Метаданные.ОбщийРеквизитДокумента(ИндРекв).Синоним);
КонецЦикла;

// Перебор документов в цикле
Для Индекс = 1 по Метаданные.Документ() Цикл
    ИдентДока = Метаданные.Документ(Индекс).Идентификатор;
    Сообщить("Документ " + ИдентДока);
    Для ИндРекв = 1 по Метаданные.Документ(ИдентДока).РеквизитШапки() Цикл
        Сообщить("- реквизит шапки: " + Метаданные.Документ(ИдентДока).РеквизитШапки(ИндРекв).Идентификатор
            + ", синоним: " + Метаданные.Документ(ИдентДока).РеквизитШапки(ИндРекв).Синоним);
    КонецЦикла;
    Для ИндРекв = 1 по Метаданные.Документ(ИдентДока).РеквизитТабличнойЧасти() Цикл
        Сообщить("- реквизит таблицы: " + Метаданные.Документ(ИдентДока).РеквизитТабличнойЧасти(ИндРекв).Идентификатор
            + ", синоним: " + Метаданные.Документ(ИдентДока).РеквизитТабличнойЧасти(ИндРекв).Синоним);
    КонецЦикла;
КонецЦикла;


Для конкретного документа "МойДокумент" нужно в примере написать ИдентДока = "МойДокумент". Например:

ИдентДока = "МойДок";
Сообщить("Документ " + ИдентДока);
Для ИндРекв = 1 по Метаданные.Документ(ИдентДока).РеквизитШапки() Цикл
    Сообщить("- реквизит шапки: " + Метаданные.Документ(ИдентДока).РеквизитШапки(ИндРекв).Идентификатор
        + ", синоним: " + Метаданные.Документ(ИдентДока).РеквизитШапки(ИндРекв).Синоним);
КонецЦикла;
Для ИндРекв = 1 по Метаданные.Документ(ИдентДока).РеквизитТабличнойЧасти() Цикл
    Сообщить("- реквизит таблицы: " + Метаданные.Документ(ИдентДока).РеквизитТабличнойЧасти(ИндРекв).Идентификатор
        + ", синоним: " + Метаданные.Документ(ИдентДока).РеквизитТабличнойЧасти(ИндРекв).Синоним);
КонецЦикла;


Еще ознакомьтесь с https://infostart.ru/public/65108/

Цитата(leonid_gun @ 17.04.19, 21:00) *
У меня ТиС 7.70.032.

Надо было название конфы и версию указывать в стартовом сообщении. Об этом напоминает всплывающий баннер с правилами оформления.

Цитата(nysysimara @ 18.04.19, 9:46) *
Если я не ошибаюсь в FormEx есть возможность обратится к Синониму Атрибута Формы.
Кладовочка АЛьФа

Формекс классная штука. Но она как наркотик.

leonid_gun,
17.04.19, 16:23 Работа с синонимом реквизита шапки документа
Правильно ли я понимаю, что синоним реквизита должен быть заполнен в метаданных?
Тогда по метаданным в цикле и прочитать синоним

Не знаю, что у Вас - УФ или ОП, есть кусочек из кода для обычного приложения:

    МетаданныеДокумента = Источник.Метаданные();
    
    // Проверка по реквизитам шапки

    Для Каждого РеквДок из МетаданныеДокумента.Реквизиты Цикл
        Сообщить(РеквДок.Синоним);
    КонецЦикла;
    
    // Проверка по табличным частям

    Для каждого ТабЧасть Из МетаданныеДокумента.ТабличныеЧасти Цикл
        Для каждого КолонкаТЧ Из ТабЧасть.Реквизиты Цикл
            Сообщить(КолонкаТЧ.Синоним);
        КонецЦикла;
    КонецЦикла;


Для УФ будет немного иной подход.

Более подробно смотрите мои ответы в этой теме на Мисте: https://forum.mista.ru/topic.php?id=736319

-------------------------------------------------------------------------------------------------------------

А вот факультативно занимался подобным, формируя синонимы реквизитов. Функция СформироватьСиноним()
тоже моя публикация: https://infostart.ru/public/162834/

// Формирует синоним переменной.
// Пример: на входе "ИмяПеременнойАБВГ", на выходе "Имя переменной АБВГ"
//
// Параметры
// ИмяРеквизита - Строка. Имя переменной, имя колонки таблицы
//
// Возвращаемое значение:
// Строка - Представление переменной
//
Функция СформироватьСиноним(ИмяРеквизита)
    
    Перем Синоним, ъ, Символ, ПредСимвол, СледСимвол, Прописная, ПредПрописная, СледПрописная, ДлинаСтроки;
    
    Синоним = ВРег(Сред(ИмяРеквизита, 1, 1));
    ДлинаСтроки = СтрДлина(ИмяРеквизита);
    Для ъ=2 По ДлинаСтроки Цикл
        Символ = Сред(ИмяРеквизита, ъ, 1);
        ПредСимвол = Сред(ИмяРеквизита, ъ-1, 1);
        СледСимвол = Сред(ИмяРеквизита, ъ+1, 1);
        Прописная = Символ = ВРег(Символ);
        ПредПрописная = ПредСимвол = ВРег(ПредСимвол);
        СледПрописная = СледСимвол = ВРег(СледСимвол);
        
        // Варианты:
        Если НЕ ПредПрописная И Прописная Тогда
            Синоним = Синоним + " " + Символ;
        ИначеЕсли Прописная И НЕ СледПрописная Тогда
            Синоним = Синоним + " " + Символ;
        Иначе
            Синоним = Синоним + Символ;
        Конецесли;
    КонецЦикла;
    
    Возврат Синоним;
    
КонецФункции // СформироватьСиноним()


Тогда было интересное обсуждение, в комментариях предложили еще несколько вариантов и один парень собрал все алгоритмы в одной обработке:
https://infostart.ru/public/196681/

Оттуда же самый изящный способ:

Функция Синонимайзер(Имя, Ответ = "", Стэйт = 7, б = "") Экспорт
    Для ё = 1 По СтрДлина(Имя) Цикл
        а = Сред(Имя, ё, 1);
        Стэйт = (НРег(а) <> а) * 4 + Цел(Стэйт / 2);
        Ответ = Ответ + ?(Стэйт = 2, НРег(б), ?(ё = 2, ВРег(б), б)) + ?(Стэйт = 4 ИЛИ Стэйт = 5, " ", "");
        б = а
    КонецЦикла;
    Возврат Ответ + б
КонецФункции
leonid_gun,
17.04.19, 16:03 Аналитик-консультант 1с
Есть еще один индикатор, но про зарплаты разработчиков:
https://jobs.dou.ua/salaries/
Kateryna6789,
17.04.19, 16:01 Реализовать автоматическое выполнение задач для данного исполнителя
Будет хорошим тоном написать, как я решил эту проблему.

В пустой базе "сферический конь в вакууме" работает так, как мне надо, значит я на верном пути.
В рабочей конфе тоже все отрабатывает, если закрывать задачу непосредственно самой задачей
Задача.ВыполнитьЗадачу(); вместо вызова модуля БизнесПроцессыИЗадачиВызовСервера.ВыполнитьЗадачу(Задача.Ссылка, Истина);.
Но при этом все равно валилась ошибка об измененном объекте и несоответствии версий.
Попробовал записывать задачу перед закрытием, ожидаемого эффекта не было, ошибка осталась, зато отладчик Задача.Ссылка.УникальныйИдентификатор() показывал, что создаются разные задачи и к ним потом рекурсивно обращается метод ВыполнитьЗадачу().

Ок.
Но при выходе из каждой итерации рекурсии каждая из задач оказывалась с признаком Выполнена, и соответственно в модуле самой задачи не проходила проверку по условию:
...
ИначеЕсли НЕ ПометкаУдаления И ИсходныеРеквизиты.Выполнена И Выполнена Тогда
    ОбщегоНазначения.СообщитьПользователю(
        НСтр("ru='Эта задача уже была выполнена ранее.';en='This task has already been done earlier.'"),,,, Отказ);
    Возврат;
КонецЕсли;


Нужен был какой-то признак для игнора этой проверки. Добавил свойство Автозакрытие в ДополнительныеСвойства и всё получилось!

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


А в модуле задачи ПередЗаписью читаю, есть ли этот признак и вызываю проверку:
ИначеЕсли НЕ ПометкаУдаления И ИсходныеРеквизиты.Выполнена И Выполнена 
    И НЕ ЭтоАвтоЗакрытие Тогда                                          // При автозакрытии из БП не проводить эту проверку
    ОбщегоНазначения.СообщитьПользователю(
        НСтр("ru='Эта задача уже была выполнена ранее.';en='This task has already been done earlier.'"),,,, Отказ);
    Возврат;
КонецЕсли;


Всё работает, все счастливы.
Vofka,
16.04.19, 19:58 Индесация базы 1Сv8 под MS SQL - server 2014
Цитата(george_smith @ 16.04.19, 17:45) *
Думал, что через sql-сервер это более эффективно.

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


george_smith @ Сегодня, 17:45 * ,
А модель восстановления базы какая?
Цитата(andr_andrey @ 16.04.19, 17:01) *
Хорошая ссылка, чтобы выкинуть свои велосипеды.


к той ссылке
https://github.com/Microsoft/tigertoolbox/t...tiveIndexDefrag

добавьте и этот сборник:
https://github.com/Microsoft/tigertoolbox/t...tenanceSolution
george_smith,
16.04.19, 12:02 Индесация базы 1Сv8 под MS SQL - server 2014
0. Какая версия SQL-сервера?

2.
Цитата(george_smith @ 16.04.19, 11:13) *
База 1Сv8.3 под MS SQL (mdf - файл весит около 15 gb., log урезанный до 1 gb.).

А реальный размер базы каков? Что говорит об этом сам сервер?

Цитата(george_smith @ 16.04.19, 11:13) *
После Rebuild Indexes ситуация не изменилась. Запрос sys.dm_db_index_physical_stats показал то же самое.
Подскажите как победить высокий процент фрагментированных индексов? Может через Reorganize Indexes? Чем эти два способа отличаются.


Для начала нужно понимать, что файл индексов содержит b-tree. некое дерево, в котором располагаются ссылки на записи в таблице или на другие ветки дерева.
Reorganize Indexes - Упорядочивает страницы в файле индекса, аналогично дефрагментации файлов на диске. Практически "прозрачно" для работы пользователей.
Rebuild Indexes - удаляет существующее дерево и читаете все записи, создавая новое дерево непосредственно из данных. Эта операция более дорогостоящая чем реорганизация: занимает время, место на диске, но взамен можно получить более-менее оптимизированное дерево индексов.
Обе операции не рекомендуется делать при пороге фрагментации меньше 5%, некоторые рекомендуют этот порог повысить до 10%.

3.
Цитата(george_smith @ 16.04.19, 11:13) *
После Rebuild Indexes ситуация не изменилась.

Делали ТиИ средствами 1С? С пересчетом итогов и реиндексацией? Период рассчитанных итогов актуальный
Как это повлияло на статистику индексов?

Узнайте, какие таблицы БД имеют самые фрагментированные индексы.
Какие данные они представляют в 1С с помощью метода ПолучитьСтруктуруХраненияБазыДанных (напишите или поищите готовую обработку).
Наверно это будет регистр бухгалтерии Хозрасчетный и его виртуальные таблицы?

1.
Цитата(george_smith @ 16.04.19, 11:13) *
Хочу увеличить производительность системы "Управление торговым предприятием для Украины", редакция 1.2. (1.2.48.1)

И все-таки для начала бы сделать регламентные операции средствами 1С - кофигурации: закрытие месяца, актуализация рассчитанных итогов; платформы: ТиИ...

4. Вот еще нашел у Майкрософт
https://docs.microsoft.com/en-us/sql/relati...sql-server-2017

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

Да уж... хорошо копнул. У Майкрософт уже есть, наверняка лучше моего )))
https://github.com/Microsoft/tigertoolbox/t...tiveIndexDefrag
andr_andrey, george_smith,
16.04.19, 8:58 Проверка точки маршрута перестала работать в другой локали
Проблема решилась так же внезапно, как и появилась. После обновления платформы на 8.3.13.1513 все корректно отрабатывает.

Сейчас условие отрабатывает нормально в любой локали:
Если ТочкаМаршрутаТекущейЗадачи <> 
        ПредопределенноеЗначение("БизнесПроцесс.Исполнение.ТочкаМаршрута.Исполнить") Тогда
Представление точки маршрута на английском, модуль и бизнес-процесс так же на поддержке... Кроме карты - та с возможностью редактирования и у элементов английские синонимы.
Acid, Vidocq05, Vofka,
19.03.19, 9:55 Групповая выгрузка налоговых документов XML
Цитата(mar @ 14.02.19, 14:20) *
Требует пароль. Скажите пожалуйта что вводитьза пароль?

Цитата(logist @ 24.01.14, 15:46) *
Попрошаек паролей вероятно надо сразу удалять, чтобы регистрировались еще раз и читали правила.
Trintintin,
25.01.19, 15:45 Изменения в конфигурации пропадают на следующий день
Встречал такое дважды:
1. У всех, кроме одного, нормально обновляется в хранилище, у того то пустые формы попадут и пустой модуль, то еще какие глюки.
Причина: он обновлял демонически в своей тестовой базе.

Проверьте и вашего деятеля. Мы просто сделали эксперимент, при нём, и ситуация воспроизвелась.

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

Несколько раз билось и хранилище: после помещения всех изменений из тестовой базы в рабочей базе пишет, что нет изменений. Выгрузка-загрузка cf - изменения есть.
Снова делаю изменения в тестовой, помещаю в рабочую - не вижу изменений.
Переношу из cf, помещаю в хранилище снова но уже из рабочей базы, получаю изменения из хранилища в тестовой - последние изменения исчезают.

А, это было на PosgreSQL. Больше нигде не встречал такое поведение.

Такие дела.
Acid,
20.01.19, 15:57 Оплата ПДФО сотрудников по разным счетам налоговых инспекций
eact @ 18.01.19, 10:50 * ,
Видел вариант решения: в справочнике сотрудников создали папки с регионами, куда их и помещали. В отчетах добавили дополнительный отбор, где указывался необходимый регион.
eact,
27.11.18, 23:51 Как сменить булевое значение заполнения по умолчанию на булевую константу?
Цитата(Gigi @ 27.11.18, 20:29) *
А константа это не элемент конфигурации?

Элемент. А вот её значение - в области пользовательских данных, а не конфигуратора. Сейчас значение одно, через час другое. А если это значение перечисления, предопределенный элемент справочника, плана счетов или ПВХ, то к нему есть доступ из свойств автозаполнения.
Цитата(Gigi @ 27.11.18, 20:29) *
Пока все внимание акцентирую только на кодинг.

Да. Понимание архитектуры 1С 8 облегчит работу.
Цитата(Gigi @ 27.11.18, 20:29) *
А константа это не элемент конфигурации? Так же как на пример перечисление?

Константа и перечисления - объекты конфигурации.
Только значение перечисления задано в конфигураторе, а значение константы задано в пользовательском режиме. Это если "на пальцах".

Цитата(Gigi @ 27.11.18, 20:29) *
Но суть в том, что если константа "Обслуживание" имеет значение Истина тогда база грузиться, а если ложь то нет.
...
Конечно разумнее было бы создать константу с именем не "Обслуживание", а "Отключение" .. это было бы уместнее к значению по умолчанию.

Да. Это хорошо, что пришли к такому выводу.
Цитата(Gigi @ 27.11.18, 20:29) *
В противном случае придется в других процедурах везде менять. Что думаю и придется делать.
Ладно .. это так ..для ясного понимания негодования...
спасибо

Да, такое тоже бывает, когда надо переписывать код на оптимальный.

Суть негодования понятна. Особенно, когда "бросили на амбразуру" и плыви, как хочешь.
Gigi,
27.11.18, 17:29 Как сменить булевое значение заполнения по умолчанию на булевую константу?
Цитата(Gigi @ 27.11.18, 8:19) *
Ну конечно ... "создайте" ... "доработайте" А в опциях просто сменить значение заполнения константы по умолчанию без "создайте/доработайте" это конечно невозможно.

Если Вы разработчик в 1С - есть ресурсы для обучения или тут же на форуме можно обсудить.
Если Вы - пользователь 1С, хоть и продвинутый, то наверно это создает сложности.

Потом: константа и её значения находятся в области данных информационной базы, поэтому в конфигураторе нельзя задать значение заполнения. Но если бы это была ссылка на объект с предопределенными данными - то да, в значении заполнения можно указать этот предопределенный элемент.

Цитата(Vofka @ 27.11.18, 16:36) *
Зачем вы так жестоко с человеком?

Я не хотел.


Цитата(Gigi @ 27.11.18, 10:09) *
просто длина одного шага вперед должна быть 100 см, а не 95.

Либо нестандартизированная линейка. Как, например, дешевая китайская рулетка, шкала которой не совпадает с эталоном.
Может, Вы ожидаете неоправданно большего от системы, которая рассчитана под другие задачи.
Так что разработчики 1С сделали километр из 1000 эталонных метров, а Вы ожидаете от этого километра 1024 "китайских" метра.
Увы.

Цитата(Gigi @ 25.11.18, 12:43) *
Дело в том, что когда создаешь булевый реквизит объекта, там есть опция "ЗначениеЗаполнения". Обычно по умолчанию всегда стоит Ложь. И поэтому есть возможность сменить на Истину. А вот когда создаешь тот же булевый тип но константу, такая опция как "ЗначениеЗаполнения", и вовсе отсутствует. ПОЧЕМУ? По крайней мере че то ее не нахожу.
А нужно что бы значение созданной булевой константы было не Ложь, а ИСТИНА!
Никто не подскажет пути как это сделать?
Буду опять признателен!

Итак, в форме элемента/группы справочника в обработчике ПриОткрытии можно добавить проверку на то, что это новый объект и заполнять нужный реквизит значением из константы.

Вот пример:

Процедура ПриОткрытии()
    
    Если ЭтоНовый() Тогда
        ЗначениеРеквизита = Константы.БулеваяКонстанта.Получить();
        НовыйРеквизит = ЗначениеРеквизита;
    КонецЕсли;
    
КонецПроцедуры


Но это надо дописывать ручками. А вот чтобы это прописать в свойства реквизита, мне пока неизвестно.


Цитата(Gigi @ 27.11.18, 10:09) *
Просто кое где не до конца удобна.

Зато не надо в notepad.exe или nano писать текст программы и компилировать его из командной строки )))
Gigi,
26.11.18, 15:41 Как сменить булевое значение заполнения по умолчанию на булевую константу?
з - зубожиння


Создайте свою обработку или доработайте обработчик обновления информационной базы, который бы заполнял значения новых реквизитов.
Gigi,
24.10.18, 20:05 Получение данных с COM порта
Цитата(SeverinPasha @ 23.10.18, 13:29) *
Если учесть, если на карте имеется номер 0000255740 (десятеричный) и 039,01335 (некий ТЕКСТОВЫЙ код).
Помогите связать результат вывода с данными которые по идее должны выводиться(написаны на карте)


Супер! Я ждал этого от Вас!
Алгоритм был найден на форуме разработчиков ПО работы с RFID-метками.
Процедуры конвертации чисел между системами счислений найдены на Мисте или Инфостарте.

Процедура КнопкаСчитатьRFIDНажатие(Элемент)
    
    СчитанноеЗначение = "";
    Результат = ВвестиСтроку(СчитанноеЗначение, "Считайте данные карточки RFID", 10, Ложь);
    Если НЕ Результат Тогда
        Возврат;
    КонецЕсли;
    
    // Преобразование 10-ричного серийного номера dec1 (0000255740) в 10-ричные данные (039,01335) dec2, хранящиеся в памяти карточки.
    // Алгоритм преобразования:
    // dec1 преобразовать в hex
    // Старшие 4 байта hex составляют целую часть dec2,
    // младшие 4 байта hex составляют дробную часть dec2.
    
    ДанныеHEX = Прав("00000000" + ОбщегоНазначения.Из_10_В_Любую(СчитанноеЗначение, 16), 8);     // с лидирующими нолями
    ЦелаяЧасть = Прав("000" + ОбщегоНазначения.Из_Любой_В_10(Сред(ДанныеHEX, 1, 4), 16), 3);     // старшие 4 байта в 10-ричное
    ДробнаяЧасть = Прав("00000" + Формат(ОбщегоНазначения.Из_Любой_В_10(Сред(ДанныеHEX, 5, 4), 16), "ЧГ=0"), 5); // младшие 4 байта в дробную часть
    
    НомерДес1 = СчитанноеЗначение;
    НомерДес2 = "" + ЦелаяЧасть + "," + ДробнаяЧасть;
    
КонецПроцедуры


процедуры из модуля ОбщегоНазначения:

Функция Из_10_В_Любую(Знач Значение=0, Нотация=36) Экспорт
    
    Если Нотация <= 0 Тогда
        Возврат ""
    КонецЕсли;
    Значение = Число(Значение);
    Если Значение <= 0 Тогда
        Возврат "0"
    КонецЕсли;
    Значение = Цел(Значение);
    Результат = "";
    Пока Значение>0 Цикл
        Результат = Сред("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", Значение%Нотация + 1, 1) + Результат;
        Значение = Цел(Значение/Нотация);
    КонецЦикла;
    
    Возврат Результат;
    
КонецФункции

Функция Из_Любой_В_10(Знач Значение="0", Нотация=36) Экспорт
    
    Если Нотация <= 0 Тогда
        Возврат 0
    КонецЕсли;
    Значение = СокрЛП(Значение);
    Если Значение = "0" Тогда
        Возврат 0
    КонецЕсли;
    Результат = 0;
    Длина = СтрДлина(Значение);
    Для Х = 1 По Длина Цикл
        М = 1;
        Для У = 1 По Длина-Х Цикл
            М = М*Нотация
        КонецЦикла;
        Результат = Результат + (Найти("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", Сред(Значение, Х, 1)) - 1)*М;
    КонецЦикла;
    
    Возврат Окр(Результат);
    
КонецФункции
bonyaby, SeverinPasha,

2 страниц V   1 2 >
RSS Текстовая версия Сейчас: 09.12.19, 14:53
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!