1С8:борьба - личный опыт работы с платформой 1с8

30.03.12

Разработка - Механизмы платформы 1С

Мой личный опыт работы с платформой 1С8. Заметки, которые я делал несколько лет при работе с 1с8. Полезные советы. Планирую обновлять.

Скачать файлы

Наименование Файл Версия Размер
article.doc
.doc 1,04Mb
319
.doc 1,04Mb 319 Скачать

Личный опыт Гения 1С борьбы с платформой 1С8

ВВЕДЕНИЕ

РАЗДЕЛ: ПРОГРАММИРОВАНИЕ

    ПЛАТФОРМА: ЯЗЫК 1С

    ПЛАТФОРМА: МАТЕМАТИКА В 1С

        Хеши, MD5

        Случайные числа

    ПЛАТФОРМА: КОЛЛЕКЦИИ

    ПЛАТФОРМА: ПРИКЛАДНЫЕ ОБЪЕКТЫ

        Работа функции «Принадлежит элементу»

    Документы

        Мягкое перепроведение документов

    РЕГЛАМЕНТНЫЕ ЗАДАНИЯ

        Запуск внешних отчетов по расписанию

РАЗДЕЛ: ФОРМЫ 1С81

    ФОРМЫ 1С81: ЭЛЕМЕНТЫ УПРАВЛЕНИЯ

        Табличное поле

        Подсветка текущей строки табличного поля

        Иерархический просмотр списков в табличном поле

РАЗДЕЛ: ОТЧЕТЫ

    ОТЧЕТЫ: РАБОТА С МАКЕТАМИ

        Печать прозрачных картинок

    ОТЧЕТЫ: ПОСТРОИТЕЛЬ ОТЧЕТА

        Обработка макета построителя отчета перед выводом

    ОТЧЕТЫ: СИСТЕМА КОМПОНОВКИ ДАННЫХ (СКД)

        Программная обработка настроек СКД

        Настройка группировок настройки СКД

        Поиск и установка параметров настройки СКД

        Отчеты, которые сложно написать на СКД

        Отчеты, где ресурсы расположены выше группировок

РАЗДЕЛ: ТОРГОВОЕ ОБОРУДОВАНИЕ

    ТО: РАБОТА СО ШТРИХ-КОДАМИ

        Последовательная генерация штрих-кодов

РАЗДЕЛ: БЕЗОПАСНОСТЬ

    БЕЗОПАСНОСТЬ: ПРАВА ДОСТУПА

        Запрет интерактивной работы

РАЗДЕЛ: ОБМЕНЫ

    ОБМЕНЫ: ПЛАНЫ ОБМЕНА

        Объекты планов обмена

    ОБМЕНЫ: ОБМЕНЫ ДАННЫМИ

        Недопустимые символы в плане обмена

    ОБМЕНЫ: РАСПРЕДЕЛЕННЫЕ ИНФОРМАЦИОННЫЕ БАЗЫ (РИБ)

        Создание начального образа

    ОБМЕНЫ: ОБМЕН ПО ПРАВИЛАМ

        Предопределенные элементы в обеих базах

РАЗДЕЛ: ИНТЕГРАЦИЯ

    ИНТЕГРАЦИЯ: РАБОТА С 1С ЧЕРЕЗ COM И OLE

        Неявно описанные методы COM и OLE

        Общие сведения о Com-соединениях

        Шаблон Com-соединения

        Выполнение произвольного кода 1С в Com-соединении

    ИНТЕГРАЦИЯ: ВНЕШНИЕ КОМПОНЕНТЫ

        Использование функции ПодключитьВнешнююКомпоненту

    ИНТЕГРАЦИЯ: ПРОЧЕЕ

РАЗДЕЛ: АДМИНИСТРИРОВАНИЕ

    АДМИНИСТРИРОВАНИЕ 1С

        Ошибки SDBL

        Работа из командной строки

        Запуск 1С из командной строки

        Названия таблиц и полей в физической базе 1С

        Надежность файловой версии

        Надежность SQL версии

        Portable установка 1C

        Взаимодействие платформы с системой безопасности Windows

        Прекращение сеансов файловой версии

        Быстродействие файловой системы при работе нескольких пользователей

        Советы по обновлению конфигурации

    СЕРВЕР: 1С-ПРЕДПРИЯТИЯ

        Перезапуск сервера 1С

    СЕРВЕР: MICROSOFT SQL SERVER ДЛЯ 1С

        SQL-почта для уведомлений

        Планирование заданий средствами SQL-сервера

        Архивирование баз средствами SQL сервера

        Периодическая копия базы

        Восстановление копии базы из архива SQL

РАЗДЕЛ: МЕНЕДЖМЕНТ

    ВЕДЕНИЕ РАЗРАБОТКИ ПРОГРАММИСТОМ 1С8

        Рекомендации по хранилищу конфигурации

    ЛИЦЕНЗИРОВАНИЕ 1С

        Что необходимо делать при покупке 1С

        Восстановление утерянных регистрационных карточек

        Стоимость перехода с 1с81 на 1с82

= ОБНОВЛЕНИЯ =

 

Введение

Я – программист 1С Осипов Сергей Александрович, 1975 года рождения. В Рунете известен под никами «Гений 1С» и «Фиксин».

С 1999 года я начал заниматься 1С. Сначала 7.7, а в январе 2005 года – 8.0.

Эту книгу я начал писать в мае 2008 года, имея за плечами почти десять лет работы с 1С.

За это время накопил огромное количество опыта не только по 1С, но и по алгоритмам, используемым в учете, а теперь вот решил поделиться этими знаниями.

Книга посвящена 1С версии 8.*, т.к. 1С 7.7 меня уже не интересует.

Книга – не учебник, а сборник рецептов.

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

В электронном виде книга распространяется свободно, а в печатном – на общих основаниях закона об авторском праве.

Просьба по возможности указывать ссылку на источник или на авторство.

В книге также использованы работы других авторов, надеюсь, их использование пойдет на пользу делу – изучению и использованию 1С.

Буду благодарен всем за помощь в написании книги.

РАЗДЕЛ: ПРОГРАММИРОВАНИЕ

Платформа: Язык 1С

Пример использования оператора безусловного перехода:

~Метка:
Перейти ~Метка;

Безусловный переход не может вести внутрь условия.

Платформа: Математика в 1С

Хеши, MD5

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

Случайные числа

Для генерации случайных чисел можно использовать GUID, т.к. при его генерации используются случайные числа.

В 1с81 появилась функция генерации случайных чисел.

Платформа: Коллекции

Метод НайтиСтроки таблицы значений не всегда возвращает строки в том порядке, в котором он был в исходной таблице.

Платформа: Прикладные объекты

Работа функции «Принадлежит элементу»

Сам справочник не принадлежит себе, что не очевидно прописано в синтакс-помощнике:

   С = Справочники.Номенклатура.ИмяПредопределенного;
   Сообщить(С.ПринадлежитЭлементу(С.Родитель));

Документы

Мягкое перепроведение документов

Можно немного уменьшить нагрузку на базу при проведении документа, особенно если документ нужно перепровести только по нескольким регистрам, следующим способом:

  1. Получить объект по ссылке документа
  2. Вызвать его метод «ОбработкаПроведения», при этом метод должен быть описан в модуле документа с ключевым словом Экспорт, чтобы можно было вызвать этот метод у документа.
  3. Сравнить коллекцию движений документа Движения по требуемым регистрам с движениями документа по регистрам в базе. Записать новые движения только в том случае, если они отличаются от старых движений.

 

Разрешить проводить помеченные на удаление документы

По непонятным причинам платформа запрещает проводить помеченные на удаление объекты.

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

Лечится кодом, который можно вставить в глобальную подписку ПередЗаписью документов:

//Осипов
Если РежимЗаписи = РежимЗаписиДокумента.Проведение И Источник.ПометкаУдаления Тогда
    Источник.ПометкаУдаления = ложь;
КонецЕсли;

Платформа: Системные функции

Как отключить пользователя базы данных, не удаляя

Для этого достаточно убрать у пользователя оба вида аутентификации. Пользователь перестанет быть видимым в списке выбора и под ним нельзя будет зайти в 1С:

Процедура ОтключитьПользователя(ПользовательИБ) Экспорт
    ПользовательИБ.АутентификацияОС = ложь;
    ПользовательИБ.АутентификацияСтандартная = ложь;
    ПользовательИБ.Записать(); //Осипов
КонецПроцедуры

Регламентные задания

Запуск внешних отчетов по расписанию

Платформа 1с81 не умеет запускать внешние отчеты и сохранять таблицы в Excel. Это умеет делать платформа 1с82.

Но чтобы получить эту возможность в 1с81, можно в COM-соединении создавать OLE-подключение к 1С81 и в нем уже выполнять нужный код.

Пример:

Функция ВыполнитьНаКлиенте(Метод) Экспорт
    
    СтрокаСоединения = СтрокаСоединенияИнформационнойБазы();
    ПарольРобота = Справочники.САПКонстанты.ПарольРобота.Значение;
    СтрокаСоединения = СтрокаСоединения + "Usr=""robot"";Pwd=""" + ПарольРобота + """"; //Важно чтобы не было две подряд идущих ;;
    
    ЗаписьЖурналаРегистрации("Отладка", , , , "Соединение для выполнения на клиенте, начало попытки: " + СтрокаСоединения);
    
    Соединение = Новый ComОбъект("V81.Application");
    Соединение.Connect(СтрокаСоединения);
    
    ЗаписьЖурналаРегистрации("Отладка", , , , "Соединение для выполнения на клиенте, попытка прошла: " + СтрокаСоединения);
    
    ЗаписьЖурналаРегистрации("Отладка", , , , "Выполнение метода, начало: " + Метод);
    
    Выполнить "Соединение." + Метод;
    
    ЗаписьЖурналаРегистрации("Отладка", , , , "Выполнение метода, завершено: " + Метод);
    
    Соединение.ЗавершитьРаботуСистемы();
    ЗаписьЖурналаРегистрации("Отладка", , , , "Завершена работа системы ");
    Соединение = 0;
    
КонецФункции

Процедура РассылкаОтчетаПоПродавцам() Экспорт
    ВыполнитьНаКлиенте("_РегламентныеЗадания.РассылкаОтчетаПоПродавцам_Код()");
КонецПроцедуры

 

РАЗДЕЛ: ФОРМЫ 1С81

Формы 1С81: Приёмы

Стандартная функция обработки оповещений

В 1С8 есть возможность рассылки оповещений формам.

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

В модуле приложения добавляю процедуру:

Процедура глОбработкаОповещения(ИмяСобытия, Параметр, Источник) Экспорт
    Попытка
        Источник.ОбработкаОповещения(ИмяСобытия, Параметр, Источник);
    Исключение
    КонецПопытки;
КонецПроцедуры

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

В самой форме для проверки открытости использую код:

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)    
    Оповестить("ПроверитьОткрытаЛиМояФормаХХХ", Отказ, ЭтаФорма);    
    Если НЕ Отказ Тогда        
        Попытка //В попытке, т.к. в модуле приложения может и не быть такой функции, для универсальности            
            ПодключитьОбработчикОповещения("глОбработкаОповещения");            
        Исключение            
        КонецПопытки;        
    КонецЕсли;    
КонецПроцедуры


Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) Экспорт    
    Если ИмяСобытия = " ПроверитьОткрытаЛиМояФормаХХХ " Тогда        
        Если Открыта() Тогда //Иногда форма может быть закрыта, но висеть в памяти, тогда все-же открываем новый экземпляр            
            Параметр = истина; //Если открыта тогда            
            Активизировать();            
        КонецЕсли;        
    КонецЕсли;    
КонецПроцедуры

 

Формы 1С81: Элементы управления

Табличное поле

Подсветка текущей строки табличного поля

Подсвечивать текущую строку можно в событии вывода текущей строки. Когда текущая строка меняется, событие вывода строки не вызывается. Единственный метод сменить оформление строки – вызывать событие обновление формы. Немного накладно по скорости, но работает. В примере подсвечиваются три колонки текущей строки серым цветом.

Процедура СправочникСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    
    Если ДанныеСтроки = Неопределено ИЛИ ЭлементыФормы.СправочникСписок.ТекущаяСтрока = ДанныеСтроки.Ссылка Тогда
        ЦветФона = WebЦвета.СеребристоСерый;
        ОформлениеСтроки.Ячейки.Наименование.ЦветФона = ЦветФона;
        ОформлениеСтроки.Ячейки.Код.ЦветФона = ЦветФона;
        ОформлениеСтроки.Ячейки.Картинка.ЦветФона = ЦветФона;
    КонецЕсли;
    
КонецПроцедуры


Процедура СправочникСписокПриАктивизацииСтроки(Элемент)
    Обновить();
КонецПроцедуры

Иерархический просмотр списков в табличном поле

Если в списке отображается дерево справочника, то управлять иерархическим просмотром нужно с использованием свойств «Дерево» и «Иерархический просмотр».

Допустим, у нас есть кнопка «Дерево» в панели «Командная панель».

Тогда код будет выглядеть следующим образом:

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

Процедура ОбновлениеОтображения()
    ЭлементыФормы.КоманднаяПанель.Кнопки.Дерево.Пометка = ЭлементыФормы.ТаблицаНоменклатуры.ИерархическийПросмотр;
КонецПроцедуры

РАЗДЕЛ: УПРАВЛЯЕМЫЕ ФОРМЫ

Отладка

Часть управляемых форм выполняется на сервере. Для того, чтобы отлаживать серверный код, нужно подключать два предмета отладки - на клиенте и на сервере.

Отладка на сервере возможна только если сервер запущен с ключом -debug.

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

В типовых на УФ обычно отчеты выполняются через фоновые задания, чтобы отключить подобное поведение, нужно установить режим отладки, тогда отчеты будут запускаться через вызов процедуры модуля. Для этого в конфигураторе указать в Сервис - Параметры - Основные - Параметр запуска указать строку содержащую текст "РежимОтладки" (без кавычек) и запускать 1С предприятие из конфигуратора. Можно указывать этот ключ и в строке запуска.

В типовых код по проверке параметра запуска выглядит так:

ПараметрыСеанса.ПараметрыКлиентаНаСервере.Получить("ПараметрЗапуска")

Точку останова можно ставить напрямую в конце процедуры РаботаВБезопасномРежиме. ВыполнитьМетодКонфигурации на операторе Выполнить.

Интерфейсы в типовых конфигурациях

Интерфейс  Команда - Обработка Панель

Используется в УТ 11.

В разделе "Открыть командный интерфейс" содержится верхнее меню с настройками видимости по ролям:

 

В нем содержатся общие команды с названиями вида " ДополнительныеОтчетыРегламентированныйУчет".

 

В модуле команды содержится однообразный код:

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)    
    
    ДополнительныеОтчетыИОбработкиКлиент.ОткрытьФормуКомандДополнительныхОтчетовИОбработок(
        ПараметрКоманды,
        ПараметрыВыполненияКоманды,
        ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка(),
        "РегламентированныйУчет");    
    
КонецПроцедуры

Код вызывает обработку с именем вида ПанельСправочниковРегламентированныйУчет:

В форме на управляемых элементах нарисовано меню:

 

Нюансы типовых конфигураций

Добавление нового объекта метаданных в типовых

После добавления нового регистра/отчета в типовых (УТ11) нужно запускать 1С с ключом ЗапуститьОбновлениеИнформационнойБазы, иначе будет ругаться, что не выполнено обновление метаданных в режиме 1С:Предприятия.

Как запустить фоновое задание без изменения конфигурации в типовых

В типовых есть функция ДополнительныеОтчетыИОбработки.ВыполнитьКоманду. Её можно использовать для обработчика фонового задания, чтобы выполнить свою обработку, помещенную в справочник внешних обработок. Можно смотреть также ДлительныеОперации.ЗапуститьВФоне.

 

Программная обработка управляемых форм

Добавление нового реквизита в форму

Новый добавляемый реквизит - это реквизит формы, он отличается от реквизитов объекта.

Т.е. если мы добавляем реквизит в форму справочника, его путь будет "ИмяРеквизита", в отличии от реквизита Наименование, например, путь которого "Объект.Наименование".

 

Реквизит добавлять в событии ПриСозданииНаСервере. В примере создается реквизит и к нему привязывается флажок.

Обратите внимание, путь к данным без приставки "Объект.":

УстановитьДействие("ПередЗаписью", "_ПередЗаписьюНаКлиенте");
НовыеРеквизиты = Новый Массив();
НовыйРеквизит = Новый РеквизитФормы("_РазрешитьРасхождениеНаименованияИПолногоНаименования", Новый ОписаниеТипов("Булево"), , "Разр.расх.имен", ложь);
НовыеРеквизиты.Добавить(НовыйРеквизит);
ИзменитьРеквизиты(НовыеРеквизиты);

ПередЭлементом = Элементы.Родитель;
Элемент = Элементы.Вставить("_РазрешитьРасхождениеНаименованияИПолногоНаименования", Тип("ПолеФормы"), ПередЭлементом.Родитель, ПередЭлементом);
Элемент.Вид = ВидПоляФормы.ПолеФлажка;
Элемент.Заголовок = "Разр.расх.имен";
Элемент.ПутьКДанным = "_РазрешитьРасхождениеНаименованияИПолногоНаименования";
Элемент.ЦветТекстаЗаголовка = WebЦвета.БледноКрасноФиолетовый;

Далее, в форме к реквизиту можно обращаться так:

&НаКлиенте
Процедура _ПередЗаписьюНаКлиенте(Отказ, ПараметрыЗаписи)    
    Если ЭтаФорма._РазрешитьРасхождениеНаименованияИПолногоНаименования <> истина И Объект.Наименование <> Объект.НаименованиеПолное Тогда        
        Отказ = истина;        
        Сообщить("Наименование и полное наименование расходятся, чтобы можно было записать объект, установите галочку ""Разрешить расхождение имен""");        
    КонецЕсли;    
КонецПроцедуры

РАЗДЕЛ: Запросы

РАЗДЕЛ: ОТЧЕТЫ

Отчеты: Работа с макетами

Печать прозрачных картинок

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

Отчеты: Построитель отчета

Обработка макета построителя отчета перед выводом

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

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

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

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

Общая схема подхода такая:

ПостроительОтчетаОтчет.Макет = Неопределено; //Сбрасываем макет
ПостроительОтчетаОтчет.Выполнить(); //Формируем авто-макет
ТекМакет = ПостроительОтчетаОтчет.Макет; //Обрабатываем макет отчета
...
ПостроительОтчетаОтчет.Макет.Показать(); //Смотрим макет во время разработки
ПостроительОтчетаОтчет.Макет = ТекМакет; //Устанавливаем обработанный макет

Рассмотрим конкретные способы модификации макета.

В следующем примере показан цикл, который ищет в макете ячейки, содержащие целиком текст «Дата». Если этот текст содержится в заголовке (вид заполнения ячейки – текст), тогда меняет заголовок шапки. Если текст содержится в параметре (вид заполнения ячейки – параметр), тогда меняет ширину колонки и формат даты:

Область = Неопределено;
Пока (Истина) Цикл    
    Область = ТекМакет.НайтиТекст("Дата", Область, , , истина);    
    Если Область = Неопределено Тогда        
        Прервать;        
    КонецЕсли;    
    Если Область.Заполнение = ТипЗаполненияОбластиТабличногоДокумента.Параметр Тогда        
        Область.Формат = "ДФ=dd.MM.yyyy";        
        Область.ШиринаКолонки = 10;        
    КонецЕсли;    
КонецЦикла;

Параметр «истина» в методе «НайтиТекст» указывает, что нужно искать текст целиком.

Бесконечный цикл – удобный инструмент для обработки всех найденных областей по указанному условию.

Отчеты: Система компоновки данных (СКД)

Программная обработка настроек СКД

В разделе описывается, как программно обрабатывать настройки СКД.

Настройка группировок настройки СКД

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

Если точно известно, в каком месте структуры находятся нужные поля, можно использовать непосредственное указание по индексу, например:

Поле = НайтиВКоллекцииПоРеквизиту(КомпоновщикНастроек.Настройки.Структура.Получить(0).Структура.Получить(0).ПоляГруппировки.Элементы, "Поле", Новый ПолеКомпоновкиДанных("ХарактеристикаНоменклатуры"))

Поиск и установка параметров настройки СКД

В примере ищется параметр с именем «Склад» и, если найден, устанавливаетсяв значение, указанное в переменной ВыбСклад. При этом устанавливается галочка использования параметра:

ЗначениеПараметра = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Склад"));    
Если ЗначениеПараметра <> Неопределено Тогда        
    ЗначениеПараметра.Значение = ВыбСклад;        
    ЗначениеПараметра.Использование = Истина;        
КонецЕсли;

Поля пустого элемента в СКД

Если в отборе или группировке извлекается поле из элемента, значение которого равно пустая ссылка, например, Номенклатура.ОсновнойПоставщик, то результатом будет NULL, а не пустая ссылка.

Чтобы избежать этого, я придумал только один способ: завести пустую ссылку нужного типа, в нашем примере пустой товар с заранее известным кодом, например «ПЭ-ПУЭЛЕМЕН».

Далее в запросе писать:

ВЫБОР КОГДА Номенклатура  = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) Тогда &ПустаяНоменклатура ИНАЧЕ Номенклатура КОНЕЦ

А в параметрах добавить значение:

Параметры. Найти(Новый ПараметрКомпоновки(«ПустаяНоменклатура»).Значение = Справочники.Номенклатура.НайтиПоКоду(«ПЭ-ПУЭЛЕМЕН»);

 

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

Если не позаботиться о такой защите, то в группировке будут как минимум два значения – одно пустое, другое NULL.

А в отборе сравнение с NULL никогда не даст истину, ни в случае равенства, ни в случае неравенства.

Отчеты, которые сложно написать на СКД

На СКД можно написать практически 90% всех необходимых на практике отчетов, но некоторые отчеты довольно сложно ложатся на структуру СКД.

Отчеты, где ресурсы расположены выше группировок

Такие отчеты удобны, чтобы сравнивать значение одного ресурса (количество, сумма) по разным измерениям – по складам, периодам и т.п.

РАЗДЕЛ: ТОРГОВОЕ ОБОРУДОВАНИЕ

ТО: Настройки сканеров штрих-кода

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

13-разрядные EAN коды, начинающиеся с нуля

В США и Канаде вместо EAN используется штрих-код UPC, полностью совместимый с EAN. Длина штрих-кода 13 символов. Последний – контрольный.

Однако в стандарте UPC штрих-кода, начинающиеся на ноль, читаются как 12-разрядные, первый ноль отбрасывается. Чтобы такие штрих-кода считывались нормально, нужно перепрограммировать сканер, включить опцию, которая называется примерно так: «Преоразовывать UPC в EAN».

Например, для сканера Chipher Lab 1560/1562 коды программирования выглядят так:

 

Восприятие CODE-128

 

Не все сканеры умеют читать длинные коды CODE-128-B, которыми часто записываются серийные номера и IMEI. Но даже если сканер умеет считывать подобные коды, иногда их чтение по умолчанию отключено и его требуется включить программированием сканера. Искать опцию вида «Активация штрих-кода типа CODE-128»

Например, для сканера Chipher Lab 1560/1562 коды программирования выглядят так:

 

Чтение длинных 19-20 разрядных штрих-кодов

 

Не все сканеры умеют читать очень длинные 19-20 разрядные штрих-кода. Обычно, если сканер имеет тонкий луч, то такие кода сканируются. Если луч сканера достаточно широкий, то может и не считывать.

Если штрих-код не читается сканером

Можно скачать на смартфон андроид-приложение для сканирования штрих-кодов и попробовать разобраться, какой тип штрих-кода не воспринимается сканером. Однако эти приложения тоже не воспринимают все штрих-кода, например длинные 19-20 разрядные штрих-кода не опознают.

ТО: Работа со штрих-кодами

Последовательная генерация штрих-кодов

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

Если НЕ ЗначениеЗаполнено(Префикс) Тогда
    Предупреждение("Не заполнен префик, обратитесь к разрабочкику!");
    Возврат;
КонецЕсли;


З = Новый Запрос(
        "ВЫБРАТЬ        
        |      МАКСИМУМ(ХарактеристикиНоменклатуры.Наименование) КАК Наименование        
        |ИЗ        
        |      Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры        
        |ГДЕ        
        |      ХарактеристикиНоменклатуры.Наименование ПОДОБНО &Маска");
З.УстановитьПараметр("Маска", бф.ДополнитьСтрокуСимволами(Префикс, 13, "_"));
МаксЧисло = 0;
Выборка = З.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
    ТекШК = Выборка.Наименование;
    Если ТекШК <> NULL Тогда
        //Обрезаем правый символ
        МаксСтрока = Лев(ТекШк, СтрДлина(ТекШк) - 1);
        //Обрезаем префикс
        МаксСтрока = Сред(МаксСтрока, СтрДлина(Префикс) + 1);
        Попытка
            МаксЧисло = Число(МаксСтрока);
        Исключение
            Предупреждение("Не получилось выразить в число максимальный штрих-код в системе: " + ТекШК);
            Возврат;
        КонецПопытки;
    КонецЕсли;
КонецЕсли;


МаксЧисло = МаксЧисло + 1;


ЧислоСтрокой = Формат(МаксЧисло, "ЧДЦ=0; ЧГ=");
Основа = Префикс + бф.ДополнитьСтрокуСимволами(ЧислоСтрокой, 12 - СтрДлина(Префикс), "0", ложь);
ШтрихКод = бф.СформироватьEAN13(Основа);


Наименование = ШтрихКод;

Используются функции из библиотеки функций:

Функция ДополнитьСтрокуСимволами(С, Длина, Символ, Справа = истина) Экспорт    
//Назначение: Дополняет строку С символами Символ до нужной длины Длина слева или справа, в зависимости от флага Справа    
Функция СформироватьEAN13(Основа) Экспорт        
//Назначение: формирует правильный EAN13 по первым 12 символам

Например, с префиксом 225 получаются штрих-кода: 2250000000014, 2250000000021, 2250000000038, …

РАЗДЕЛ: БЕЗОПАСНОСТЬ

Рассмотрены вопросы прав доступа, протоколирования и прочие.

Безопасность: Права доступа

Запрет интерактивной работы

Можно завести пользователя, для которого будет невозможно работать интерактивно. Очень удобно использовать для различных роботов. Как только задание при входе отрабатывает и пользователь выходит на интерактивную работу, сеанс 1с завершается.

Для этого достаточно подключить обработчик ожидания и в нем

Процедура ОбработчикОжиданияПроверкаРазрешенияИнтерактивнойРаботы() Экспорт    
    Если ИмяПользователя() = "Автообмен" Тогда        
        ЗавершитьРаботуСистемы(ложь, ложь);        
    КонецЕсли    
КонецПроцедуры


//При начале работы приложения
Если ИмяПользователя() = "Автообмен" Тогда    
    ПодключитьОбработчикОжидания("ОбработчикОжиданияПроверкаРазрешенияИнтерактивнойРаботы", 1);    
КонецЕсли;

РАЗДЕЛ: ОБМЕНЫ

Рассмотрены вопросы обмена данными между 1С и другими системами.

Обмены: Планы обмена

Объекты планов обмена

Объекты плана обмена – довольно странные сущности. Они имеют ссылку, но эта ссылка действительна только в пределах одной базы. Если эта ссылка переедет в другую базу, то она будет ссылаться уже на другой объект. Поэтому для ссылки на конкретный объект плана обмена можно использовать только код объекта, благо, что он уникальный.

Объекты плана обмена не регистрируются в таблицах изменений планов обмена.

Не рекомендуется в объектах плана обмена добавлять реквизиты, которые  должны хранить различные значения в различных узлах УРБД. Эти реквизиты в периферийных базах при получении первого же файла автообмена из центра будут заменены реквизитами центральной базы. Для хранения таких реквизитов рекомендуется использовать регистр сведений с измерением код (не ссылка) плана обмена.

В файле автообмена из центра содержится секция nodes, где перечислен центральный узел и узел-получатель со своими реквизитами. В файле автообмена в центр такой секции нет, т.е. изменения в объекте плана обмена на периферии игнорируются.

В связи с этим непонятно, почему реквизиты плана обмена доступны на редактирование на филиале, если они всегда затираются реквизитами из центра.

Обмены: Обмены данными

Недопустимые символы в плане обмена

Если обмен не происходит из-за ошибки вида «Текст XML содержит недопустимые символы в позиции …», то значит в базе данных содержатся данные, которые не могут быть выгружены в XML.

Найти такие данные может типовая обработка «ВыгрузкаЗагрузкаДанныхXML». Она также удаляет недопустимые символы.

Однако есть один нюанс – она не может удалить недопустимые символы из записи по удалению объекта, особенно если это удаление записи регистра сведений.

Т.е. она показывает найденную пустую запись, но очистить недопустимые символы не может.

Справиться в этой ситуации поможет или полная очистка регистрации по объекту, содержащему недопустимые символы, или более мягкий способ – обработка «ПросмотрЗарегистрированныхИзменений fixin», которая показывает ключи всех записей, зарегистрированных в плане обмена. Можно найти нужную запись и удалить:

 

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

 

 

Обмены: Распределенные информационные базы (РИБ)

 

РИБ – это распределенные информационные базы, типовой механизм платформы 1с8 для организации баз данных с одинаковой конфигурацией, обменивающихся между собой информацией.

Создание начального образа

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

 

Как отдельно загрузить данные из файл обмена УРБД

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

Файл обмена можно загрузить обработкой «Выгрузка-загрузка данных XML».

Для этого нужно содержимое тега V8DE:Data (используемого в РИБ) перенести внутрь тега внутрь тега V8Exch:Data  (используемого в файле выгрузки-загрузки) в файле вида:

<?xml version="1.0" encoding="UTF-8"?>
<V8Exch:_1CV8DtUD xmlns:V8Exch="http://www.1c.ru/V8/1CV8DtUD/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v8="http://v8.1c.ru/data">
       <V8Exch:Data>
     
       </V8Exch:Data>
</V8Exch:_1CV8DtUD>

Файл должен быть в кодировке UTF-8.

Обмены: Обмен по правилам

Предопределенные элементы в обеих базах

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

В результате в обеих базах появятся по два экземпляра каждого элемента. Один будет предопределенным, другой – из другой базы.

Далее для каждого предопределенного элемента делаем (можно одновременно для всех):

1.      В одной из баз переименовываем не предопределенный элемент в элемент с припиской «(не использовать)» и помечаем его на удаление.

2.      Выполняем замену ссылок на помеченный на удаление объект на непомеченный объект:

3.      Делаем обмен между базами. В другой базе после обмена элементы выглядят так:

4.      Если в другой базе есть пары, заменяем их аналогично, заменой ссылок.

При замене заменятся ссылки в регистре соответствий объектов обмена и все будет работать корректно. 

РАЗДЕЛ: КОНФИГУРАЦИЯ КОНВЕРТАЦИЯ ДАННЫХ

Если нужно добавить реквизит в обмен между двумя базами

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

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

РАЗДЕЛ: ИНТЕГРАЦИЯ

Рассмотрены вопросы интеграции 1С с другими приложениями и системами.

Интеграция: Работа с 1С через COM и OLE

Работа с 1С по COM и OLE происходит одинаковым образом.

Неявно описанные методы COM и OLE

В документации явно не прописаны некоторые методы COM и OLE.

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

Например, чтобы создать в подключении новый объект, аналогично оператору Новый ИмяТипа(А1, А2), мы должны писать:

Подключение.NewObject("ИмяТипа", А1, А2);

Вычислить произвольное выражение можно с помощью функции Eval:

Подключение.Eval("1+2");

 

Общие сведения о Com-соединениях

Com-соединение устанавливается быстрее, чем OLE-соединение.

Для того, чтобы Com-соединение было установлено, нужно чтобы 1С была штатно проинсталлирована на компьютере. Если вы установили portable-версию 1С, то соответствующий объект не будет установлен.

Шаблон Com-соединения

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

//Try to connect to v81 base
var V8 = new ActiveXObject("V81.COMConnector"); //для 1с80 использовать V80.COMConnector
try {
  
       ConnectionString = 'File="C:\\1c\\Catalog";Usr="Admin";Pwd="123456"'; //Для серверной: Srvr="server";Ref="1cBase"
       var Base = V8.Connect(ConnectionString);
       var isConfigUpdate = Base.КонфигурацияИзменена();
       WScript.Echo('Состояние флага изменения конфигурации: ' + isConfigUpdate);   

} catch(e){
       WScript.Echo('Не удалось создать com-соединение!' + e.description);
}

Для доступа к объектам базы можно использовать примерно следующий код:

var NewGood = Base.Справочники.Номенклатура.СоздатьЭлемент();

Выполнение произвольного кода 1С в Com-соединении

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

Функция Run(Код) Экспорт    
    Перем Р;    
    Выполнить(Код);    
    Возврат Р;    
КонецФункции

При этом код может устанавливать значение локальной переменной Р, значение которой и будет возвращено, как значение функции.

Интеграция: Внешние компоненты

Использование функции ПодключитьВнешнююКомпоненту

Функция «ПодключитьВнешнююКомпоненту» не работает с русскими именами каталогов. А ведь обычно файлы бросаются во временный каталог, поэтому можно использовать преобразование имени файла к схеме 8.3:

FileSystemObject=Новый COMObject("Scripting.FileSystemObject");
FileName= FileSystemObject.getFile(LongPath).ShortPath; //Файл должен уже существовать к этому моменту

 

Интеграция: Прочее

Веб-сервисы рассмотрены в отдельной моей статье «Веб-сервисы в 1С».

РАЗДЕЛ: АДМИНИСТРИРОВАНИЕ

Администрирование 1С

Как узнать по файлу 1CD версию платформы

10-й байт содержит номер подверсии – 1 или 2.

Ошибки SDBL

Код ошибки

 

Примечание

Для полей, начиная с FileName, не хватило значений (pos=19)

 

Лечится путем запуска в консоли SQL сервера команд:

TRUNCATE TABLE _ConfigChangeRec
TRUNCATE TABLE _ConfigChangeRec_ExtProps

 

Возникает при обновлении конфигурации ИБ

Работа из командной строки

Параметры запуска из командной строки можно посмотреть в справке по 1С, по ключу «Командная строка».

Запуск 1С из командной строки

Для серверного варианта:

"C:\Program Files\1cv81\bin\1cv8.exe" enterprise /S "Sever" /N "username" /P "password"

Для файлового варианта:

"C:\Program Files\1cv81\bin\1cv8.exe" enterprise /F "Catalog" /N "username" /P "password"

Где:

  • Server – имя сервера 1С
  • Base – имя базы на сервере 1С
  • Catalog – каталог файловой базы
  • Enterprise – режим запуска в 1С-предприятии.

 

Названия таблиц и полей в физической базе 1С

Названия таблиц и их полей в базах РИБ могут быть различными в центральной  и периферийной базах.

Надежность файловой версии

В некоторых случаях при выключении питания или зависании компьютера теряются последние введенные данные в 1С. Иногда причиной такого поведения может быть кэширование файлов на уровне Windows или локальной сети.

Чтобы избежать проблем из-за кэширования, нужно:

1.       Для диска с базой – зайти в Свойства - Оборудование, выбрать дисковое устройство – винчестер, на котором размещен диск, зайти в его Свойства – Изменить параметры – Политика и сбросить галочку «Разрешить кэширование для этого устройства»:

2.       Отключить доступные автономно папки. Если папка каким-либо образом расшарена, т.е. доступна по локальной сети, у нее нужно выключить автономное использование. В нашем случае расшарен был целиком диск C под скрытым именем C$.


 

Надежность SQL версии

SQL-версия тоже может преподносить сюрпризы. В практике встречаются случаи, когда базу нельзя полностью восстановить из выгруженного DT файла, т.к. при загрузке в SQL версию выдается сообщение о нарушении индекса. При этом дальнейшее восстановление базы останавливается. Можно попытаться загрузить базу в файловую версию, но если одна из таблиц больше 4 Гб, ничего не получится. Поэтому главным способом профилактики подобных ситуаций является параллельное архивирование базы средствами SQL сервера и периодическое выполнение тестирования и исправления баз данных.

Portable установка 1C

1С можно установить на компьютер без инсталляции. Для этого достаточно просто скопировать папку BIN уже установленной 1С.

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

В portable режиме не доступны COM и OLE-соединения, т.к. они не прописаны в реестре.

Для того, чтобы они заработали, нужно выполнить регистрацию 1cv8.exe:

"C:\Program Files\1cv81\bin\1cv8.exe" /regserver

Предыдущий способ не всегда срабатывает, возможен вариант регистрации COM-компоненты:

regsvr32 "C:\Program Files\1cv81\bin\comcntr.dll"

В Vista/Win7 нужно выполнять эти команды под правами администратора. Но тоже не всегда срабатывает.

Взаимодействие платформы с системой безопасности Windows

Для нормальной работы XBASE (DBF-файлов) требуется доступ на создание и изменение файлов в каталоге временных файлов Windows. Узнать расположение этого каталога можно в переменных среды или через команду set temp.

Прекращение сеансов файловой версии

На одном компьютере может быть запущено несколько баз, поэтому требуется сначала определить, какой из процессов 1С относится к какой базе. Для этого можно с помощью консольной утилиты handle.exe определить список процессов, которые блокируют файл 1c8.1cd (автор идеи – Петрик Николай) и затем убить эти процессы:

Пример:

handle.exe 1cv8.1cd > C:\test.txt

Получим  test.txt:

Handle v3.42
Copyright (C) 1997-2008 Mark Russinovich
Sysinternals - www.sysinternals.com
1cv8.exe           pid: 5080    3A8: D:\Work\Клиент1\81\только конфа\1Cv8.1CD
1cv8.exe           pid: 2148    3A8: D:\Work\Клиент1\81\БП 1.6.17\1Cv8.1CD

Далее, можно распарсить этот текст и получить pid процессов, которые нужно убить.

Убить процессы можно, например, с помощью следующего кода (java-script):

//Убиваем все процессы 1С  
var Processing = new ActiveXObject("WbemScripting.SWbemLocator");
var Service = Processing.ConnectServer(".");
var Items  = new Enumerator(Service.ExecQuery("SELECT * FROM Win32_Process WHERE Name = '1cv8.exe'"));
  
for (Items.moveFirst(); !Items.atEnd(); Items.moveNext()) {
       var Item = Items.item();
       Item.Terminate(0);
       WScript.Echo('Kill process 1s8'); //удаляем процесс 1с8
}

В примере уничтожаются все процессы 1s8. Код нужно доработать, чтобы убивать только процессы заданной базы данных.

Быстродействие файловой системы при работе нескольких пользователей

Иногда ускорить работу 1С могут следующие действия:

  • Отключить полнотекстовый поиск. Очень важно! Часто именно этот пункт оказывает решающее значение.
  • Уменьшить количество файлов в каталоге
  • Сжать базу, чтобы уменьшить ее размер.

Советы по обновлению конфигурации

Если устанавливать блокировку на сервере с датой начала и датой конца, то программа 1С сама будет предупреждать о приближающейся блокировке, а по наступлении даты начала отключит сеанс (точные периоды предупреждений не знаю).

Иногда конфигуратор при обновлении перестает отвечать на команды и как-бы зависает. Можно в диспетчере задач найти конфигуратор и выполнить для него команду «На передний план» или «Переключиться». Обычно это происходит, когда зависает диалоговое модальное окно принятия изменений в конфигурации.

Работа с программными лицензиями и аппаратными ключами защиты

Перезагрузка для восстановления лицензии

Иногда лицензия не восстанавливается, пока не перезагрузишь компьютер.

Пин-коды для базовой и проф версий

Нужно заходить в конфигурацию проф или базовой версии при запуске 1с.

Основное отличие PIN кодов платформ – 16 символьный код применяется для активации платформы базовой версии. 15 символьный активирует ПРО версию. Базовая версия платформы 1С Предприятие отличается про ПРОФ версии 1С Предприятие тем, что в базовой версии нельзя править конфигурацию. Поддерживаются только шаблонные конфигурации, скачанные с сайта 1С. Обычно такая конфигурация поставляется на установочном диске вместе с дистрибутивом. Именно по версии и типу конфигурации платформа 1С определяет режим работы, базовый или ПРО, и соотв. запрашивает пин-код определённого вида.

Сервер: 1С-предприятия

Перезапуск сервера 1С

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

Вот проверенный вариант:

Set WshShell = WScript.CreateObject("WScript.Shell")

'Перезапуск Агента сервера 1С:Предприятия 8.1
WshShell.Exec("sc.exe stop ""1C:Enterprise 8.1 Server Agent")
WScript.Sleep 60000  '60 seconds
WshShell.Exec("sc.exe start ""1C:Enterprise 8.1 Server Agent")
WScript.Sleep 60000 '60 seconds

'Перезапуск Агента сервера 1С:Предприятия 8.2
WshShell.Exec("sc.exe stop ""1C:Enterprise 8.2 Server Agent")
WScript.Sleep 60000  '60 seconds
WshShell.Exec("sc.exe start ""1C:Enterprise 8.2 Server Agent")
WScript.Sleep 60000 '60 seconds

Есть еще другой вариант, но он вызывает сомнения (в примере нужно заменить имя сервера aladdin на нужное):

Dim oCatalog 'As COMAdmin.COMAdminCatalog'
Dim sName 'As String'

Set oCatalog = CreateObject("COMAdmin.COMAdminCatalog","aladdin")
sName = "1CV8"
oCatalog.ShutdownApplication sName
oCatalog.StartApplication sName
Set oCatalog = Nothing

 

Вот еще один проверенный вариант на языке CMD:

rem Перезапуск 82 сервера
sc.exe stop "1C:Enterprise 8.2 Server Agent (x86-64)"
ping 127.0.0.1 -n 30 > nul
sc.exe start "1C:Enterprise 8.2 Server Agent (x86-64)"

rem Перезапуск 81 сервера
sc.exe stop "1C:Enterprise 8.1 Server Agent (x64)"
ping 127.0.0.1 -n 30 > nul
sc.exe start "1C:Enterprise 8.1 Server Agent (x64)"

rem Перезапуск SQL сервера / надо еще прописать перезапуск агента
rem sc.exe stop "MSSQLSERVER"
ping 127.0.0.1 -n 30 > nul
rem sc.exe start "MSSQLSERVER"

rem Финальная пауза, для демонстрации результата
ping 127.0.0.1 -n 30 > nul

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

Запуск сервера 1С

Полезно создать задание, которое раз в полчаса запускает сервер 1С. Это полезно, если сервер вылетит, а служба сервера сама не восстановится.

Сервер: Microsoft SQL Server для 1С

SQL-почта для уведомлений

Устаревшая компонента называется SQL-mail. Новая компонента называется Database Mail, находится по пути Управление – Компонент «Database Mail».

Отправка тестового сообщения осуществляется по ПКМ на компоненте «Database Mail» - «Отправка тестового сообщения»:

Списки рассылок для уведомлений (операторы) задаются по пути «Агент SQL Server – Операторы». Если требуется задать несколько почтовых адресов, они разделяются точкой с запятой.

В заданиях «Агент SQL сервер» - Задания получатель сообщения оператор-получатель задается в поле Электронная почта на закладке «Уведомления»:

Возможно рассылать уведомления всегда при завершении, а также при успешном или ошибочном завершении задания.

Планирование заданий средствами SQL-сервера

В SQL есть встроенный планировщик заданий. Чтобы им воспользоваться, нужно:

1.      Зайти в Microsoft SQL Server Management Studio.

2.      Создать новое задание в Агент SQL Server:

 

3.      Дать заданию имя:

4.      Перейти на закладку «Шаги», добавить новый шаг:


В поле команда указываем текст команды на SQL (команда должна завершаться словом GO):

BACKUP DATABASE [UTOffice] TO  DISK = N'E:\1CBackUp\SQL_BASES\Backups\UTOffice' WITH NOFORMAT, NOINIT,  NAME = N'UTOffice', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO

5.      Можно добавить дополнительные шаги.

6.      Сохраняем шаги. На закладке «Расписания» указываем расписание запуска задания:

7.      Нажать ОК. Задания можно увидеть в разделе «Агент SQL Сервер»:

8.      Все, задание настроено. Остается только проверить результаты его работы.

Архивирование баз средствами SQL сервера

Для создания архива с заданным именем, включающим дату и время архивирования вида UTOffice-2012-01-01-03-01-02, можно воспользоваться скриптом (в примере для базы UTOffice):

declare @d varchar(500);
select @d = convert(varchar(20),getdate(),20);
select @d = replace(@d, ':', '-');
select @d = replace(@d, ' ', '-');

-- Путь, куда архивировать
select @d = 'E:\1CBackUp\SQL_BASES\Backups\UTOffice-' + @d ;
BACKUP DATABASE [UTOffice] TO  DISK = @d  WITH FORMAT, INIT, COMPRESSION,  NAME = N'UTOffice', SKIP, NOREWIND, NOUNLOAD,  STATS = 10

Если в имени файла должна присутствовать только дата, тогда можно использовать другой вариант:

select @d = 'E:\1CBackUp\SQL_BASES\Backups\BUH2-' + convert(varchar(10),getdate(),120);

Если требуется в расписании вставить несколько команд архивации, можно записать их так:

select @d = 'E:\1CBackUp\SQL_BASES\Backups\BUH_MAG-' + convert(varchar(10),getdate(),120);   
BACKUP DATABASE [BUH_MAG] TO  DISK = @d  WITH FORMAT, INIT, COMPRESSION,  NAME = N'BUH_MAG', SKIP, NOREWIND, NOUNLOAD,  STATS = 10

declare @d varchar(500);
select @d = 'E:\1CBackUp\SQL_BASES\Backups\buh_newtm-' + convert(varchar(10),getdate(),120);
BACKUP DATABASE [buh_newtm] TO  DISK = @d  WITH FORMAT, INIT, COMPRESSION,  NAME = N'buh_newtm', SKIP, NOREWIND, NOUNLOAD,  STATS = 10

GO

Периодическая копия базы

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

 Восстановление можно совместить с архивацией, добавив в скрипт архивации команды (в примере восстановление в базу UtOfficeDAY):

-- Отключение сеансов пользователей в базе-получателе
alter database  [UTOfficeDay]  set RESTRICTED_USER with rollback immediate;

RESTORE DATABASE [UTOfficeDay] FROM  DISK = @d WITH  FILE = 1,  MOVE N'UTOffice' TO 
N'e:\1CBackUp\SQL_BASES\Day\UTOfficeDAY.mdf',  MOVE N'UTOffice_log' TO 
N'e:\1CBackUp\SQL_BASES\Day\UTOfficeDAY_log.ldf',  NOUNLOAD,  REPLACE,  STATS = 10

Восстановление копии базы из архива SQL

Восстановить базу из архива в SQL можно интерактивно, несколькими щелчками мыши.

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

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

  • arc_filename – полное имя файла архива, из которого будет осуществляться восстановление данных
  • src_base_name – имя исходной SQL-базы
  • dst_base_name – имя конечной SQL-базы
  • dst_base_path – путь, по которому расположены файлы конечной SQL-базы

 Запрос подразумевает, что файлы базы данных именуются стандартно, т.е. «*.mdf» и «*_log.ldf».

-- Declare all variables
declare @arc_filename varchar(1024);
declare @src_base_name varchar(1024);
declare @dst_base_name varchar(1024);
declare @dst_base_path varchar(1024);
declare @src_log_name varchar(1024);
declare @dst_log_name varchar(1024);
declare @dst_base_filename varchar(1024);
declare @dst_log_filename varchar(1024);


-- Parameters for procedure of restoring data
select @arc_filename = 'e:\1CBackUp\SQL_BASES\Backups\UTOffice-2011-04-13-03-00-00';
select @src_base_name = 'UTOffice';
select @dst_base_name = 'Restore1s1';
select @dst_base_path = 'e:\1CBackUp\SQL_BASES\1';


-- Calculate any depending variables
select @src_log_name = @src_base_name + '_log';
select @dst_log_name = @dst_base_name + '_log';
select @dst_base_filename = @dst_base_path + '\' + @dst_base_name + '.mdf';
select @dst_log_filename = @dst_base_path + '\' + @dst_log_name + '.ldf';


-- Viewing some variables for debuging
-- select @src_base_name;
-- select @dst_base_name, @dst_base_filename, @dst_log_filename;


-- Disconnect all users from destination
alter database  @dst_base_name set RESTRICTED_USER with rollback immediate;


-- Restore destination from src
RESTORE DATABASE @dst_base_name FROM  DISK = @arc_filename WITH FILE = 1,  MOVE 
@src_base_name TO @dst_base_filename,  MOVE @src_log_name TO @dst_log_filename,  
NOUNLOAD,  REPLACE,  STATS = 10

Копирование базы в SQL

Иногда требуется создать копию базы средствами SQL. Вот образец скрипта:

BACKUP DATABASE [dbt_buh] TO DISK = 'D:\BACKUP\tmp.bak' WITH INIT, NOUNLOAD, NAME = 'TMP', NOSKIP, NOFORMAT, STATS = 25
GO
RESTORE DATABASE [dbt_buh_osa] FROM DISK = 'D:\BACKUP\tmp.bak'
       WITH
       MOVE 'db_buh' TO 'D:\BACKUP\db_buh_osa.mdf',
       MOVE 'db_buh_log' TO 'D:\BACKUP\dbt_buh_osa_log.ldf',
       REPLACE
GO

Главное - указать перенос логических файлов в физические файлы в секции MOVE.

Запуск SQL Agent

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

Помочь справиться с ситуацией может запись в планировщик сервера Windows запуска раз в час службы SQL-агент:

net start "SQLSERVERAGENT"

Настройки отладчика

Выбор портов для отладки

Причиной ошибки «Для выполнения отладки необходимо включить поддержку сетевого протокола TCP/IP» обычно является нехватка портов TCP/IP для отладки.

В конфигураторе пункт Отладка – Подключение показывает, какие сеансы 1С работают в режиме отладки:

Если стоит галочка «Устанавливать режим разрешения отладки при запуске», то каждая сессия будет запускаться в режиме отладки и расходовать порт из диапазона портов для отладки:

 

Если их много (например, работает несколько программистов), то начинаются проблемы – для отладки не хватает доступных портов.

 

Поэтому в каталоге выполнимого файла 1С, например C:\Program Files (x86)\1cv81\bin\conf, нужно создать файл debugcfg.xml, в нем прописать порты для отладки. Рекомендую использовать большой диапазон, чтобы всем хватило:

<config xmlns="http://v8.1c.ru/v8/debugcfg">
    <debugports range="2940:3350"/>
</config>

 

РАЗДЕЛ: МЕНЕДЖМЕНТ

Стандарты разработки

Для форм использую разрешение 1000*600 (под монитор 1024*768). Более мелкие мониторы уже устарели, использовать форму большего размера неудобно при разработке.

Ведение разработки программистом 1С8

Рекомендации по хранилищу конфигурации

Рекомендуется создавать следующие логины:

  • Два логина на каждого пользователя хранилища, например Осипов и Осипов2.
  • Логин База под которым будет подключаться рабочая база
  • Логин Администратор, под которым нельзя подключать базу к хранилищу, служит только для администрирования списка пользователей.

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

Лицензирование 1С

Нужно внимательно относиться к соблюдению лицензионной политики 1С.

Что необходимо делать при покупке 1С

В обязательном порядке сделайте сканы или ксерокопии регистрационных карточек. Т.к. в случае их утери и отсутствия копий использование программ нелегально.

Восстановление утерянных регистрационных карточек

Для восстановления утерянных регистрационных карточек нужно знать их номера. Без этого не восстановят. Номера можно узнать у франчайзи, которые продавали программные продукты.

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

Стоимость перехода с 1с81 на 1с82

Только кажется, что переход с 1с81 на 1с82 сопоставим с ценой ИТС на 3 месяца, чтобы обновиться на последний релиз. Если у вас распределенная компьютерная сеть, стоимость может влететь в копеечку.

Пример расчета в ценах марта 2012 года:

Для перехода сети из 40 магазинов на 1С8 понадобится разово купить ИТС ПРОФ на 12 месяцев и по одной подписке ИТС ДУО на каждую из розничных точек. На меньший срок и Техно с ДУО не продают. Т.е. легальный переход на 1С82 будет стоить порядка: 25 000 (ИТС ПРОФ) +  40 * 2170 (ИТС ДУО) = 111 800 (по 2 795 рублей на каждую точку). Эта подписка дает право обновляться на текущие релизы 1с в течение 12 месяцев.

РАЗДЕЛ: ТЕРМИНОЛОГИЯ

Слова «До и По» для периодов

Если мы говорим до даты Д, то подразумеваем, что дата Д не включается. Если мы говорим по дату Д, то подразумеваем, что дата Д включается.

РАЗДЕЛ: ПРОЕКТИРОВАНИЕ

Проектирование: Регистры правил

Период действия записей регистров правил.

При проектировании периодических регистров правил можно использовать обычные периодические регистры сведений, но добавлять еще измерение «Дата по». В этом поле будет указываться, по какую дату включительно будет использоваться. Этот способ проще, чем перекрывать записи другими.

Например, у нас есть регистр прав доступа к документу.

С 1 января Иванов может проводить поступления по фирме Х

С 1 февраля Петров может проводить все поступления

Необходимо указать, что Иванов с 1 марта может проводить поступления по фирме У и не может проводить поступления по фирме Х.

Для этого можно сделать сторнирующую запись на 1 марта:

С 1 марта Иванов может проводить поступления по фирме Х.

Но такой способ увеличивает количество правил и приводит к ошибкам.

Проще изменить исходную запись следующим образом:

С 1 января Иванов может проводить поступления по фирме Х

 

 

 

= ОБНОВЛЕНИЯ =

Дата

Изменение

Место

Примечание

     

 

     

 

     

 

26.09.12

Веха

Статья подготовлена для Инфостарт.

 

22.09.10

Правка

Реорганизована структура статей

 

22.01.10

Вставка

Прекращение сеансов файловой версии

 

17.12.09

Вставка

Мягкое перепроведение документов

 

05.09.08

Вставка

Хранение в базе GUID

 

03.08.08

Вставка

Обработка макета построителя отчета перед выводом

 

04.06.08

Вставка

Объекты планов обмена

 

21.05.08

Веха

Начато ведение заметок. 

 

См. также

Поинтегрируем: сервисы интеграции – новый стандарт или просто коннектор?

Обмен между базами 1C Администрирование СУБД Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.17 появился замечательный механизм «Сервисы интеграции». Многие считают, что это просто коннектор 1С:Шины. Так ли это?

11.03.2024    3567    dsdred    48    

66

Как готовить и есть массивы

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Все мы используем массивы в своем коде. Это один из первых объектов, который дают ученикам при прохождении обучения программированию. Но умеем ли мы ими пользоваться? В этой статье я хочу показать все методы массива, а также некоторые фишки в работе с массивами.

24.01.2024    5032    YA_418728146    25    

62

Планы обмена VS История данных

Обмен между базами 1C Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    6160    dsdred    36    

110

1С-ная магия

Механизмы платформы 1С Бесплатно (free)

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    18197    SeiOkami    46    

116

Дефрагментация и реиндексация после перехода на платформу 8.3.22

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

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

14.09.2023    11766    human_new    27    

72

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

28.08.2023    8558    YA_418728146    6    

139

Внешние компоненты Native API на языке Rust - Просто!

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Внешние компоненты для 1С можно разработывать очень просто, пользуясь всеми преимуществами языка Rust - от безопасности и кроссплатформенности до удобного менеджера библиотек.

20.08.2023    6195    sebekerga    54    

93

Все скопируем и вставим! (Буфер обмена в 1С 8.3.24)

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Рассмотрим новую возможность 8.3.24 и как её можно эффективно использовать

27.06.2023    15525    SeiOkami    31    

103
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. fishca 1254 30.03.12 16:13 Сейчас в теме
что находится в файлах к публикации?
2. fixin 4252 30.03.12 16:43 Сейчас в теме
3. fishca 1254 30.03.12 16:56 Сейчас в теме
(2) что имею, то и введу ;)

Какая информация находится в файлах к публикации? Если все тоже самое что и в публикации зачем они, для накручивания маней? Почему тогда их две, а не одна?
4. fixin 4252 30.03.12 17:20 Сейчас в теме
(3) в файлах то же самое. Просто мне не удалось добитьс (пока что) красивого форматирования Word в движок инфостарта, поэтому прилагаю аналогичную статью. Она такая же, но более красиво офорленная и более удобная для чтения. Собственно...
5. sinjevla 184 31.03.12 14:31 Сейчас в теме
Спасибо за публикация, слежу за вашим творчеством.
Респект, уважаю
6. Andreeei 47 02.04.12 12:38 Сейчас в теме
Картинка анонса просто супер )) Да и статья тоже.
7. fixin 4252 02.04.12 12:56 Сейчас в теме
(6) картинко зачотное, да... Именно такую и хотель...
8. BalVlad 02.04.12 14:37 Сейчас в теме
Спасибо за статью. Плюсую и жду развития - продолжения.
11. fixin 4252 02.04.12 16:10 Сейчас в теме
(8) планирую дописать про СКД
9. Kutuzov 736 02.04.12 14:38 Сейчас в теме
Целиком пока не прочитал, но пролистал; то, что видел - весьма ценная информация :)
P.S. Птичку жалко! (см. картинку к статье)
10. marat_n 112 02.04.12 15:50 Сейчас в теме
У самого опыт работы с 1С примерно такой же, но некоторые вещи любопытны.
Воистину, век живи - век учись.
Спасибо, бесценный опыт хорошего специалиста.
12. y22-k 250 02.04.12 17:37 Сейчас в теме
Спасибо, уважение за труд
13. Kamikadze 46 02.04.12 18:56 Сейчас в теме
Платформа 1с81 не умеет запускать внешние отчеты и сохранять таблицы в Excel. Это умеет делать платформа 1с82.

не понял - тоесть не возможности сохранить файл в формате ексель?
14. Kamikadze 46 02.04.12 19:02 Сейчас в теме
Запрет интерактивной работы

как мне кажется - проще создать роль и ее юзать
15. fixin 4252 02.04.12 19:16 Сейчас в теме
(14) детали, какую именно роль?
(13) на сервере невозможно (а именно под сервером работают регл.задания) в 1с81.
16. Ish_2 1104 02.04.12 20:13 Сейчас в теме
Убери это. Несолидно :
Подсветка текущей строки табличного поля
Подсвечивать текущую строку можно в событии вывода текущей строки. Когда текущая строка меняется, событие вывода строки не вызывается. Единственный метод сменить оформление строки – вызывать событие обновление формы. Немного накладно по скорости, но работает. В примере подсвечиваются три колонки текущей строки серым цветом.

Процедура СправочникСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
Если ДанныеСтроки = Неопределено ИЛИ ЭлементыФормы.СправочникСписок.ТекущаяСтрока = ДанныеСтроки.Ссылка Тогда
ЦветФона = WebЦвета.СеребристоСерый;
ОформлениеСтроки.Ячейки.Наименование.ЦветФона = ЦветФона;
ОформлениеСтроки.Ячейки.Код.ЦветФона = ЦветФона;
ОформлениеСтроки.Ячейки.Картинка.ЦветФона = ЦветФона;
КонецЕсли;
КонецПроцедуры

Процедура СправочникСписокПриАктивизацииСтроки(Элемент)
Обновить();
КонецПроцедуры
Показать
17. fixin 4252 03.04.12 00:13 Сейчас в теме
18. Ish_2 1104 03.04.12 09:00 Сейчас в теме
(17) Режим выделения строки "Строка" или "Ячейка" для Табличного поля устанавливается в Конфигураторе.
Для того , чтобы выделить строку в табличном поле НЕНУЖНО писать код.
Достаточно - см. Рисунок.
Прикрепленные файлы:
19. fixin 4252 03.04.12 10:42 Сейчас в теме
(18) заметка как бе не об этом, дядя Ишь... Перечитайте еще раз.
В конфигураторе можно сделать подсветку именно трех колонок, как в примере? Без кода? Бугога... Ну что вы меня лечите.

Для исключения инсиннуаций, уточняю, что речь идет не о стандартной подсветке текущей строки, а о произвольной подстветке текущей строки, цитирую: "В примере подсвечиваются три колонки текущей строки серым цветом".
20. Ish_2 1104 03.04.12 12:12 Сейчас в теме
(19) Э..нет. Не пойдет. Давай читать вместе и по слогам.
1.
Подсветка текущей строки табличного поля. Подсвечивать текущую строку можно в событии вывода текущей строки.
Хм...жутковато , но содержание не комментирую.
Здесь говорится о выделении строки - "подсветка". Где здесь о выделении конкретных колонок ?
2. Идём далее
Когда текущая строка меняется, событие вывода строки не вызывается. Единственный метод сменить оформление строки – вызывать событие обновление формы. Немного накладно по скорости, но работает.
Опять же свои комментарии опускаю.
Но о выделении конкретных колонок - ни слова.
3. И лишь как пример иллюстрирующий общий подход , описанный выше говорится :
В примере подсвечиваются три колонки текущей строки серым цветом.

На основании этого я сделал скромное предположение :
ты чего-то упустил в знаниях свойств табличного поля.
Предположение это тем более обосновано , что экзотический пример с выделением отдельных колонок в текущей строке выглядит совсем диковато.
Я даже не могу привести ни одного примера в известных мне решениях 1с , чтобы в табличном поле выделялись лишь некоторые колонки в текущей строке. Пример твой явно притянут за уши.
Таков мой скромный взгляд.
21. fixin 4252 03.04.12 13:00 Сейчас в теме
(20) не буквоедствуй, если ты не разобрался в примере. Выделять цветом нужно было именно левые три колонки, чтобы цветовое выделение не мешало цветовому оформлению значений в колонках. Открой Эксель. Там когда ты шагаешь по ячейкам, столбик слева подсвечивается. Так захотел пользователь. А он всегда прав.
Если твой практический опыт не включает этого, то это просто твой опыт мал.
Резюмируя - речь идет об специфическом оформлении текущей строки. Так что пример адекватен и ваше замечание отклоняется. Предположение твое оказалось неверным, я разжевал почему. Никакой это не позор, а нормальный код. ОК?
27. Ish_2 1104 05.04.12 16:21 Сейчас в теме
(21) Ладно.. Забираю твой "ОК".
Пусть у меня постоит под столом. Верну при случае.
29. fixin 4252 05.04.12 18:11 Сейчас в теме
(27) ну вот и чудесно... за взаимопонимание!
22. bestuzhev 679 03.04.12 13:03 Сейчас в теме
Моя Борьба - Адольф Гитлер :) Всяко +
23. МимохожийОднако 140 03.04.12 21:26 Сейчас в теме
Стоимость перехода с 1с81 на 1с82.
ИМХО, лажа. Этот расчет нужен только для развода клиентов. Для одной конторы (если это сеть магазинов) достаточно одного ИТС. Приведи хотя бы один пример, когда обошлись одним ИТС, а 1С реально предъявила претензию о легальности перехода на 8.2.
25. fixin 4252 04.04.12 10:57 Сейчас в теме
(23) интересный у тебя совет - воруй мол, еще никого не посадили. Обновлять одним ИТСом нелегально, вне зависимости от того, ловит отдел К за это или закрывает на это глаза.
24. NPMar 04.04.12 10:07 Сейчас в теме
Спасибо большое! Я работаю в семерке, но нужно срочно переходить на восьмерку. Очень интересно Вы все описываете. Уверена, что обязательно воспользуюсь Вашей публикацией!
26. vikiking 04.04.12 22:47 Сейчас в теме
Большое спасибо за книгу, интересно почитать :)
28. пользователь 05.04.12 17:19
Сообщение было скрыто модератором.
...
30. nataon 29.05.12 10:12 Сейчас в теме
Спасибо, интересная статья
31. scorp_23 27.07.12 09:49 Сейчас в теме
На самом деле очень много полезной информации, однозначно +!
32. AlexanderKai 02.10.12 17:33 Сейчас в теме
Прикольно. Некоторые моменты могут пригодится.
33. YalanchidiO 20 18.10.12 15:52 Сейчас в теме
А почему 2 файла? Что во втором?
И да, кстати, вернула Вам 1 мань ;)
34. fixin 4252 18.10.12 18:07 Сейчас в теме
(33) о да, я дико обогатился, у меня 1984 СМ. ;-)
35. YalanchidiO 20 18.10.12 21:23 Сейчас в теме
Очень за Вас рада! Я не целью обогатить Вас скачала статью, а с целью чему-нибудь научиться.
36. borrman 23.02.13 00:39 Сейчас в теме
+ за лицензирование и администрирование )
37. asved.ru 36 07.05.13 15:58 Сейчас в теме
Совет отключить кэширование на устройстве просто шикарен. Я при фейспалме лицо ушиб.

Хотя, конечно, для единичного локального пользователя это будет малозаметно.
38. fixin 4252 07.05.13 16:06 Сейчас в теме
39. DoctorRoza 07.05.13 16:37 Сейчас в теме
Ну-с .. с наступающим 9 мая! :)
40. shoy 19 03.06.13 16:19 Сейчас в теме
Славное произведение!
41. shoy 19 03.06.13 16:20 Сейчас в теме
А про СКД маловато будет! ;)
Обещание надо выполнять.
42. EarlyBird 6 12.07.13 22:10 Сейчас в теме
43. rosinfo1 17.08.13 01:16 Сейчас в теме
Спасибо про ошибку РОS 19, в свое время только восстановление из архива помогло. Еще не хватает про смещение дат 2000 при создании новой базы 1С на СКЛ. А то у меня пользователи дату рождения сотрудника 20.08.0012 года завели, потом весь обмен РИБ накрылся. Пол дня причину искал...
44. so-quest 140 28.08.14 11:33 Сейчас в теме
Безусловный переход не может вести внутрь условия. - не верно. В выполнить() он может вести куда угодно и откуда угодно.
45. a1ex4ndr 5 10.09.14 02:46 Сейчас в теме
почти война и мир, получилась ;)
плюсанул.
46. fixin 4252 10.09.14 12:01 Сейчас в теме
47. Xershi 1473 08.02.24 18:16 Сейчас в теме
Обновлять планируете?
Процедура ОтключитьПользователя(ПользовательИБ) Экспорт
    ПользовательИБ.АутентификацияОС = ложь;
    ПользовательИБ.АутентификацияСтандартная = ложь;
    ПользовательИБ.Записать(); //Осипов
КонецПроцедуры

В 1С 8.3 появились дополнительные методы Аутентификации, правда я их сам пока не пробовал.
48. fixin 4252 08.02.24 20:12 Сейчас в теме
(47) Нет, это уже старое. Думаю создать библиотеку функций, там все будет актуально.
Оставьте свое сообщение