среда, 11 декабря 2013 г.

1С v7.7 Быстрый метод создания периферийной базы УРБД SQL

Имеем сабж)

Рухнула как то периферийная БД. Соответственно возникла необходимость создания новой. База относительно не маленькая (22 Gb). Выгрузить периферийку штатными средствами не представляется возможным (ибо ограничение на выгрузку 2 Gb в 7.7 так и не пофиксили). Через сторонние выгрузки (плагин Romix`a) - долго. Задача стояла восстановить работу предприятия в кратчайшие сроки.

Итак, приступим:

1. Через конфигуратор в центральной базе создаем новую периферийную БД.

2. Через Enterprice Manager (SQL сервер 2000), в таблице _1SBDSET центральной базы, для новой базы меняем DBSTATUS c "N" на "C", и DBFMODE c "1" на "3" (активируем ее).

3. Отключаем (Detach Database) центральную базу в Enterprice Manager, копируем файлы базы данных .MDF и .LDF туда, где будет располагаться периферийная база и подключаем ее (Attach Database), (не забываем центральную тоже назад подключить).

4. Через Query Analizer периферийной базы запускаем скрипт. Меняем номер периферийной БД 1С и имя базы SQL):

use 

declare @Nom char(3)
declare @NomCentr char(3)

select @NomCentr = dbsign from _1SDBSET where dbstatus = 'M'
set @Nom = '048'              --  МЕНЯТЬ НОМЕР на НОВОЙ НОМЕР ПЕРИФ. БАЗЫ ЗДЕСЬ!!!! (в этом случае 048)

delete from _1SDBSET
where dbsign <> @NomCentr and dbsign <> @Nom

update _1SDBSET
set dbstatus = 'P'
where dbsign = @NomCentr 

update _1SDBSET
set dbstatus = 'M'
where dbsign = @Nom

update  _1SSYSTEM
set  DBSIGN = @Nom

truncate table _1SDWNLDS
truncate table _1SUPDTS

--DBCC SHRINKDATABASE(,5)  - при желании сожмем базу (раскомментировать в этом случае)
--exec sp_changedbowner '1cuser'                       - и если база поключилась с другим владельцем, сменим на нужного



Периыерийная и центральная БД готовы к работе! Done!  © maxis33

вторник, 26 ноября 2013 г.

просмотр ip-адресов компьютеров в локальной сети

Чтобы вывести список ip-адресов компьютеров в локальной сети, можно выполнить команду:

$nmap -sP 192.168.0.1-255

возможно придется предварительно установить nmap

четверг, 19 сентября 2013 г.

Команды редактора VI

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

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

Консольные системы Unix не имеют в своем базовом комплекте ни одного нормального (еще раз подчеркну это слово - НОРМАЛЬНОГО) текстового редактора.

Поэтому системный администратор должен уметь пользоваться тем, что ему дают. А дают ему несравненный "Визуальный" экранный редактор файлов - Редактор VI.


Для работы, обычно достаточно знать всего несколько команд. Обычно для работы хватает таких:

vi /file_folder/filename - открыть файл в редакторе vi
vi /file_folder/filename ++25 - открыть файл в редакторе vi и перейти к строке 25.

i - включить режим внесения изменений
[Esc] - выйти из данного режима

u - undo (отмена сделанного изменения)
CTRL + R - redo (вернуть сделанное изменение)

:w [Enter] - сохранить внесенные изменения.

:q! [Enter] - выйти без сохранения изменений
:wq [Enter] - сохранить внесенные изменения и выйти.

dd - удалет строку на которой находится курсор
x - удалет символ на котором находится курсов


[y] - копирует строку в буфер
[P] - вставляет скопированную строку после той, на которой в текущий момент находится курсор


Поиск:

/text [Enter] - выполняет поиск "text" в тексте


Автозамена:

:%s/6201/6202/gc - ищет в документе вхождение 6201 и меняет (с подтверждением) на 6202 (замена порта).


Показать/Скрыть номера строк в редакторе vi:

:set nu - нумеровать строки
:set nonu - не нумеровать строки



!!!Чтобы редактор сохранил настройки, необходимо в файле ~/.vimrc
прописать строку, например set nu





Код взят на каком-то из девелоперских серверов. Допиливаем VI под себя:

vi ~/.vimrc

Достаточно удобно по F2 сохранять результат, а по F10 выходить.

1 set nocompatible
2
3 colorscheme desert
4
5 set novisualbell
6
7 set nu
8
9 set termencoding=utf-8
10
11 set hidden
12
13 set ch=1
14 set showcmd
15
16 syntax on
17
18 set autoindent
19 set smartindent
20
21 nmap <F2> :w<cr>
22 vmap <F2> <esc>:w<cr>i
23 imap <F2> <esc>:w<cr>i<right>
24
25 imap <Ins> <Esc>i
26
27 map <F10> :q!<cr>
28 vmap <F10> <esc>:q!<cr>
29 imap <F10> <esc>:q!<cr>

четверг, 12 сентября 2013 г.

Настройка разрешения экрана для видеокарт Intel 82945G/GZ в Ubuntu


Итак, сабж... Собственно, зачем это нужно?! Должно же из коробки работать. Работало... Но, в один прекрасный момент, по каким-то загадочным причинам перестало, есть такой глючок у интеловских видух. Т.е. в настойках можно установить только разрешение 800х600, что есть грустно.
Честно скажу, логи читать было лень, ибо возвращается все назад очень нехитрыми манипуляциями.


Генерируем интересующий нас Modeline:
#cvt 1280 1024 75

выхолп:

1280x1024 74.90 Hz (CVT 1.31M4) hsync: 80.30 kHz; pclk: 138.75 MHz
Modeline "1280x1024_75.00"  138.75  1280 1368 1504 1728  1024 1027 1034 1072 -hsync +vsync


Смотрим текущие настройки экрана:
#xrandr

выхлоп:

Screen 0: minimum 320 x 200, current 800 x 600, maximum 800 x 600
VGA1 connected 800x600+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
800x600        60.3     56.2
640x480        59.9     59.9

Выставляем интересующее нас разрешение:
#export DISPLAY=:0
#xrandr --newmode "1280x1024_75.00"  138.75  1280 1368 1504 1728  1024 1027 1034 1072 -hsync +vsync
#xrandr --addmode VGA1 1280x1024_75.00
#xrandr --output VGA1 --mode 1280x1024_75.00

Примечание!!! В качестве параметров необходимо использовать "modeline", полученный в шаге 1 и VGA1, как видно из шага 2, ибо они специфичны для каждого компутера...

Создаем чистый конфиг Xorg`a, бекапим (если есть) текущий его конфиг и подкидываем новый:
#Xorg -configure
#/etc/init.d/gdm stop
#cp /etc/X11/xorg.conf /etc/X11/xorg.conf.origin
#cp ~/xorg.conf.new /etc/X11/xorg.conf

Приводим секцию "Monitor" к такому виду:
#mcedit /etc/X11/xorg.conf

Section "Monitor"
Identifier   "Monitor0"
VendorName   "Monitor Vendor"
ModelName    "Monitor Model"
Modeline     "1280x1024_75.00"  138.75  1280 1368 1504 1728  1024 1027 1034 1072 -hsync +vsync
Option       "PreferredMode" "1280x1024_75.00"
EndSection

Рестартим Xorg (или ребутим машину).

 Done.

вторник, 3 сентября 2013 г.

Организация RDP-сервера на базе Debian/Ubuntu

Итак, собсна, сабж...

Огромнейшее спасибо Kevin Cave за труды! Его скрипт очень автоматизирует установку и настройку RDP-сервера на базе Debian/Ubuntu.
Далее предлагаю вольный перевод статьи (оригинала) для тех, кто не очень дружит с буржуйским...

Качаем мега-скрипт:

$sudo apt-get install -y git
$git clone https://github.com/scarygliders/X11RDP-o-Matic.git
$cd X11RDP-o-Matic

Данный скрипт скачивает, собирает и устанавливает пакеты xrdp_0.7.0-1_<arch>.deb и x11rdp_0.7.0-1_<arch>.deb 

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

$sudo ./X11rdp-o-matic.sh --justdoit

!В случае ошибок сборки, докачиваем необходимые пакеты и запускаем инсталятор снова!

Параметры запуска скрипта:

--help : показать справку.

--justdoit : произвести полную компиляцию и установку всех пакетов по-умолчанию,
без вмешательства пользователя (Рекомендуется).

--nocpuoptimize : не изменять скрипт компиляции X11rdp для использования
более одного ядра процессора (если установлена, для сборки используется только одно ядро,
в противном случае - все доступные ядра процессора будут задействованы).

--nocleanup : не удалять исходники X11rdp / xrdp после установки (по-умолчанию удаляются).

--noinstall : не выполнять установку необходимых пакетов, а просто собрать их.

--nox11rdp  : собрать только xrdp, без "обертки" x11rdp (не рекомнедую, в связки очень достойно работают).

--bleeding-edge : использовать нестабильные репозитории исходных кодов.

Запускаем скрипт настройки клиентов:

$sudo ./RDPsesconfig

RDP-сервер готов!!! Для подключения, в принципе, можно использовать любой клиент с поддержкой RDPv5. Я рекомендую: Remmina (кроссплатформенный), KRDC

Стандартные виндузятные клиенты тоже подходят...

пятница, 30 августа 2013 г.

Настройка подключения через proxy в Ubuntu 12.04

Для работы через прокси-сервер в ubuntu 12.04 и выше нужно поправить 2 конфига:

Правим переменные окружения:
$sudo mcedit /etc/environment

Добавляем настройки на прокси в формате:

http_proxy="http://username:password@proxy:port/"
https_proxy="https://username:password@proxy:port/"
ftp_proxy="ftp://username:password@proxy:port/"
ftps_proxy="ftp://username:password@proxy:port/"

Например
http_proxy="http://192.168.10.2:8080/"
https_proxy="https://192.168.10.2:8080/"

Правим конфиг APT:

$sudo mcedit /etc/apt/apt.conf

Добавляем или изменяем следующие строчки, в формате по аналогии с окружением

Acquire::http::Proxy "http://username:password@proxy:port/";
Acquire::https::Proxy "http://username:password@proxy:port/";
Acquire::ftp::Proxy "http://username:password@proxy:port/";
Acquire::ftps::Proxy "http://username:password@proxy:port/";

Для исключения использования прокси-сервера в отношении каких-либо адресов/подсетей в environment добавляем:

no_proxy=localhost,127.0.0.1,192.168.10.0/24,www.exemple.com

Ребут.

пятница, 19 апреля 2013 г.

Описание таблиц SQL для 1С V8.x

Данное описание таблиц применимо к с следующим СУБД:
  • Microsoft SQL Server (клиент-серверный вариант информационной базы).
  • PostgreSQL (клиент-серверный вариант информационной базы).
  • IBM DB2  (клиент-серверный вариант информационной базы)
Основные таблицы:

Название таблицыОписание
Config Основная конфигурация информационной базы. Эта конфигурация соответствует реальной структуре данных и используется 1С:Предприятием 8.х в режиме Предприятия
ConfigSaveКонфигурация, редактируемая Конфигуратором.
Не сама основная конфигурация, а только отличия ее от конфигурации БД (т.е. только измененные объекты). Таким образом, если конфигурации базы данных и основная конфигурация совпадают, то таблица ConfigSave пустая. Конфигурация из ConfigSave переписывается в Config при выполнении "Обновления конфигурации базы данных" в Конфигураторе
FilesСодержит служебную информацию, например, о работе с хранилищем конфигурации
Params
Содержит параметры информационной базы. Среди них:
  • Список пользователей информационной базы. 
  • Национальные настройки информационной базы. 
  • Таблица соответствия объектов метаданных и объектов базы данных (таблиц, полей, индексов). 
_YearOffsetСмещение дат в базе данных. Эта таблица создается только при использовании Microsoft SQL Server
DBSchemaСодержит информацию о структуре базы данных 1С:Предприятия и определяет другие объекты базы данных, используемые данной информационной базой


Таблицы планов обмена, с установленным флагом "Распределенная информационная база":

Название таблицыОписание
_ConfigChangeRec Таблица регистрации изменений объектов конфигурации
_ConfigChangeRec_ExtPropsТаблица имен файлов измененных внешних свойств объектов конфигурации


Таблицы метаданных:

Название таблицыОписание
_Consts Константы.Содержит текущие значения всех констант, определенных в конфигурации
_ConstsChangeRecКонстанты. Таблица регистрации изменений констант. Создается, если хотя бы одна константа участвует хотя бы в одном плане обмена.
_Node<n> Планы обмена. Таблица плана обмена
_Node<n>_VT<k> Планы обмена. Табличная часть плана обмена, создается для каждой табличной части
_Reference<n> Справочники. Таблица справочника
_Reference<n>_VT<k> Справочники. Табличная часть справочника - для каждой табличной части
_ReferenceChangeRec<n> Справочники. Таблица регистрации изменений справочника. Создается, если справочник участвует хотя бы в одном плане обмена.
_Document<n> Документы. Таблица документов для каждого объекта метаданных "документ".
_Document<n>_VT<k> Документы. Табличная часть документа - для каждой табличной части каждого документа.
_DocumentChangeRec<n> Документы. Таблица регистрации изменений объекта метаданных типа "документ". Создается для каждого объекта метаданных типа "документ", если он участвует хотя бы в одном плане обмена.
_Sequence<n> Последовательности документов. Таблица регистрации документов - для каждой последовательности.
_SequenceBoundary<n> Последовательности документов. Таблица границ последовательности - для каждой последовательности.
_SequenceChangeRec<n> Последовательности документов. Таблица регистрации изменений последовательности. Создается для каждой последовательности, которая участвует хотя бы в одном плане обмена.
_DocumentJournal<n> Журналы документов. Таблица журнала документов, создается для каждого журнала документов.
_Enum<n> Перечисления. Таблица перечисления - по одной для каждого перечисления. 
_Chrc<n> Планы видов характеристик. Основная таблица плана видов характеристик.
_Chrc<n>_VT<k> Планы видов характеристик. Табличная часть плана видов характеристик - для каждой табличной части.
_ChrcChangeRec<n> Планы видов характеристик. Таблица регистрации изменений плана видов характеристик. Создается, если план видов характеристик участвует хотя бы в одном плане обмена.
_Acc<n> Планы счетов. Основная таблица плана счетов.
_Acc<n>_ExtDim<k> Планы счетов. Таблица видов субконто плана счетов, создается для плана счетов в том случае, если максимальное количество субконто больше нуля.
_Acc<n>_VT<k> Планы счетов. Табличная часть плана счетов, создается для каждой табличной части плана счетов. 
_AccChangeRec<n> Планы счетов. Таблица регистрации изменений плана счетов. Создается, если план счетов участвует хотя бы в одном плане обмена. 
_CalcKind<n> Планы видов расчета. Основная таблица плана видов расчета.
_CalcKind<n>_BaseCK Планы видов расчета. Таблица базовых видов расчета, создается для плана видов расчета в случае, если его свойство "Зависимость от базы" имеет значение, отличное от "Не зависит".
_CalcKind<n>_DisplacedCK Планы видов расчета. Таблица вытесняемых видов расчета, создается для плана видов расчета в случае, если у него установлен флаг "Использует период действия". 
_CalcKind<n>_LeadingCK Планы видов расчета. Таблица ведущих видов расчета - для каждого плана видов расчета.
_CalcKindDN<n> Планы видов расчета. Вспомогательная таблица для порядка вытеснения, создается, если у плана видов расчета установлен флаг "Использует период действия". 
_CalcKind<n>_VT<k> Планы видов расчета. Табличная часть плана видов расчета, создается для каждой табличной части.
_CalcKindChangeRec<n> Планы видов расчета. Таблица регистрации изменений плана видов расчета. Создается, если план видов расчета участвует хотя бы в одном плане обмена. 
_InfoReg<n> Регистры сведений. Таблица движений регистра сведений.
_InfoRegChangeRec<n> Регистры сведений. Таблица регистрации изменений регистра сведений. Создается, если регистр сведений участвует хотя бы в одном плане обмена.
_AccumReg<n> Регистры накопления. Таблица движений регистра накопления.
_AccumRegTotals<n> Регистры накопления. Таблица итогов регистра накопления, если регистр поддерживает остатки.
_AccumRegTurnovers<n> Регистры накопления. Таблица оборотов регистра накопления, если регистр поддерживает обороты. 
_AccumRegChangeRec<n> Регистры накопления. Таблица регистрации изменений регистра накопления. Создается, если регистр накопления участвует хотя бы в одном плане обмена.
_AccumRegOptions Регистры накопления. Таблица настроек хранения итогов регистров накопления одна на все регистры накопления. 
_AccntReg<n> Регистры бухгалтерии. Таблица движений регистра бухгалтерии
_AccntRegED<n> Регистры бухгалтерии. Таблица значений субконто регистра бухгалтерии, создается в том случае, если он ссылается на план счетов, у которого максимальное количество субконто больше нуля.
_AccTtl0<n> Регистры бухгалтерии. Таблица итогов по счету.
_AccTtl<i><n> Регистры бухгалтерии. Таблица итогов по счету с количеством видов субконто равным i, где i от 1 до максимального количества субконто. 
_AccTtlC<n> Регистры бухгалтерии. Таблица итогов оборотов между счетами, только для регистра бухгалтерии поддерживающего корреспонденцию. 
_AccntRegChangeRec<n> Регистры бухгалтерии. Таблица регистрации изменений регистра бухгалтерии. Создается, если регистр бухгалтерии участвует хотя бы в одном плане обмена. 
_AccntRegOptions Регистры бухгалтерии. Таблица настроек хранения итогов одна на все регистры бухгалтерии.
_CalcReg<n> Регистры расчета. Таблица движений регистра расчета.
_CalcRegActPer<n> Регистры расчета. Таблица фактических периодов действия для регистра расчета, создается, если у регистра расчета установлен флаг "Период действия".
_CalcRegChangeRec<n> Регистры расчета. Таблица регистрации изменений регистра расчета. Создается для каждого регистра расчета, участвующего хотя бы в одном плане обмена.
_CalcRegRecalc<n> Регистры расчета. Таблица перерасчета регистра расчета, создается для каждого перерасчета.
_CalcRegRecalcChangeRec<n> Регистры расчета. Таблица регистрации изменений перерасчета. Создается, если перерасчет участвует хотя бы в одном плане обмена.
_BPRoutePoint<n> Бизнес-процессы. Таблица точек маршрута бизнес-процесса для каждого бизнес-процесса.
_BusinessProcess<n> Бизнес-процессы. Основная таблица бизнес-процесса. 
_BusinessProcess<n>_VT<k> Бизнес-процессы. Табличная часть бизнес-процесса для каждой табличной части.
_BusinessProcessChangeRec<n> Бизнес-процессы. Таблица регистрации изменений бизнес-процесса. Создается для каждого бизнес-процесса, участвующего хотя бы в одном плане обмена.
_Task<n> Задачи. Основная таблица задачи.
_Task<n>_VT<k> Задачи. Табличная часть задачи для каждой табличной части.
_TaskChangeRec<n> Задачи. Таблица регистрации изменений в задачах. Создается для каждого объекта метаданных типа "задача", который участвует хотя бы в одном плане обмена. 


Структуру и название таблиц используемых для хранения данных в БД 1С 8.х можно посмотреть, выполнив следующий код на встроенном языке 1С:

 МассивИменМетаданных = Новый Массив();
 МассивИменМетаданных.Добавить("Справочник.Номенклатура");

 // Таблица значений, содержащая таблицы указанного объекта.
 Таблицы = ПолучитьСтруктуруХраненияБазыДанных(МассивИменМетаданных);
 Построитель = Новый ПостроительОтчета;
 Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(Таблицы);
 Построитель.ЗаполнитьНастройки();
 Построитель.Вывести(ЭлементыФормы.ПолеТабличногоДокумента1);
 Обновить();
 
 //Для Каждого Таблица Из Таблицы Цикл
 // ПоляТаблицы = Таблица.Поля;
 // Для Каждого Поле Из ПоляТаблицы Цикл
 //  // Просмотр свойств таблицы.
 // КонецЦикла; 

 // ИндексыТаблицы = Таблица.Индексы;
 // Для Каждого Индекс Из ИндексыТаблицы Цикл
 //  // Просмотр свойств индекса.
 // КонецЦикла;   
 //КонецЦикла;