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

Хранилище

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

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



История благодарностей участнику Vladal ::: Спасибо сказали: 78 раз
Дата поста: В теме: За сообщение: Спасибо сказали:
16.04.20, 23:43 Работа с QR Code при помощи типовой КомпонентаПечатиQRКода
tis @ 14.04.20, 15:40 * ,

Давайте попробуем разобраться.

В моей УТП этих процедур нет, добавил в ОбщийМодуль, а также макет с компонентой в ОбщиеМакеты.
Соответственно вызов сделал таким:

Функция КомпонентаФормированияQRКода()
    
    ТекстОшибки = НСтр("ru = 'Не удалось подключить внешнюю компоненту для генерации QR-кода. Подробности в журнале регистрации.'");
    
    QRCodeGenerator = ПодключитьКомпонентуИзМакета("QRCodeExtension", "ОбщийМакет.КомпонентаПечатиQRКода");
...
...
Далее. Есть именованная картинка QRКод в макете. Тогда еще проще - к ней можно обращаться по имени.
Убедитесь, что у картинки включен флажок ВыводитьНаПечать. Можно его и программно включить.

Вот пример:
    СтрокаКартинки = ДанныеQRКода(СтрокаСообщения, 2, 400);
    
    ОбластьШапка.Рисунки.QRКод.Картинка = Новый Картинка(СтрокаКартинки);
    ОбластьШапка.Рисунки.QRКод.ВыводитьНаПечать = Истина;
    
    ТабличныйДокумент.Вывести(ОбластьШапка);
roman457, tis,
11.12.19, 16:50 Какоё количество лицензий на 1С
Цитата(Sirius83 @ 09.12.19, 11:40) *
Сетевой HASP4 ORG8B 500

Хороший ключ. Давно его не видел.
andreykyiv@bigmir.net,
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,
20.08.19, 7:22 Консоль запросов 1С 8 / SQL
sertak @ Вчера, 13:50 * ,
Всю интригу сломали.
Hexstorm,
19.08.19, 10:30 Проблема отображения записей в справочнике через RLS (1c 8.2.19.106)
Цитата(andrew76 @ 19.08.19, 11:22) *
надо именно отдельные записи (вернее отдельные реквизиты) в справочнике ФизЛица.

ОК.

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

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

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

Но я писал RLS к документу, вычисляя его возможность чтения по сотруднику, его руководителю, чтобы руководитель подразделения видел только документы своих сотрудников.
andrew76,
26.07.19, 13:58 Работа с QR Code при помощи типовой КомпонентаПечатиQRКода
А вот и обработка с компонентой формирования qr-кода и вызовом функций генерирования картинки
qr-code.zip
AlexHummer, falconemi, genius1981, profithesame, roman457, Silverghoust, telemost,
23.07.19, 15:45 Формирование QR-кодов нативными средствами 1С (компонента из БСП)
Вытащил из БСП компоненту и пример кода для формирования QR-кодов.

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

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

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

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


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

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

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

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

ОБЪЕДИНИТЬ

....
;


А потом эти таблицы соединить по Регистратору и Ссылке:
ВЫБРАТЬ
    втОбороты.Регистратор КАК Регистратор,
    втОбороты.Номенклатура КАК Номенклатура,
    втОбороты.КоличествоНачальныйОстаток КАК НачальныйОстаток,
    втОбороты.КоличествоПриход КАК Приход,
    втОбороты.КоличествоРасход КАК Расход,
    втОбороты.КоличествоКонечныйОстаток КАК КонечныйОстаток,
    втНоменклатураЦеныСумма.Ссылка КАК РегистраторСсылка,
    втНоменклатураЦеныСумма.Номенклатура КАК РегистраторНоменклатура,
    втНоменклатураЦеныСумма.Цена КАК РегистраторЦена,
    втНоменклатураЦеныСумма.Сумма КАК РегистраторСумма
ИЗ
    втОбороты КАК втОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ втНоменклатураЦеныСумма КАК втНоменклатураЦеныСумма
        ПО втОбороты.Регистратор = втНоменклатураЦеныСумма.Ссылка
            И втОбороты.Номенклатура = втНоменклатураЦеныСумма.Номенклатура
Володька,
20.06.19, 8:00 Открыть форму созданного и существующего документа по ДокументуОснования
Цитата(fly @ 14.06.19, 12:47) *
вроде как надо ссылку на объект передать, а не сам объект

Да.
Я иногда делаю так:
(сферический пример в вакууме)
&НаСервере
Функция СоздатьРТУНаСервере()
    ДокОбъект = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
    ДокОбъект.Дата = ТекущаяДата();
    ДокОбъект.Записать();
    Возврат ДокОбъект.Ссылка;
КонецФункции

&НаКлиенте
Процедура СоздатьРТУ(Команда)
    СсылкаНаДокумент = СоздатьРТУНаСервере();
    ОткрытьЗначение(СсылкаНаДокумент);
КонецПроцедуры
Aksiniya,
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) *
Попрошаек паролей вероятно надо сразу удалять, чтобы регистрировались еще раз и читали правила.
maks_75, Trintintin,
25.01.19, 15:45 Изменения в конфигурации пропадают на следующий день
Встречал такое дважды:
1. У всех, кроме одного, нормально обновляется в хранилище, у того то пустые формы попадут и пустой модуль, то еще какие глюки.
Причина: он обновлял демонически в своей тестовой базе.

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

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

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

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

Такие дела.
Acid,

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