palka.gif - 0,05 K

Главная страница
Бухгалтерия
Зарплата и кадровый учет
Торговля и склад
Файлы
Трюки
Информация


Трюки 2
1С:Предприятие
Как избавиться от распределенной базы?

 



Как избавиться от распределенной базы?

Необходимо в файле (или в таблице если это SQL версия) 1ssystem.dbf заменить значениях в полях DBSIGN и DBSETUUID на такие же из нераспределенных баз. Или просто их обнулить.

1С:Предприятие
Как в SQL версии перевести файлы из dbf в sql?

 



Как в SQL версии перевести файлы из dbf в sql?

Вообще при установке конфигуратор спрашивает, как хранить данные в SQL или в DBF. А так можно сохранить базу, потом создать новую с указанием типа SQL, а затем загрузить вугруженную базу.


1С:Предприятие
Как можно закрыть открытую форму программно?



Как можно закрыть открытую форму программно?

Можно так:
Форма.Закрыть(<?>);
Синтаксис:
Форма.Закрыть(<ЗапрСохр>)
Назначение:
Закрыть форму.
Параметры:
<ЗапрСохр> - необязательный параметр. Число: 0 - закрыть форму без вопросов;
1 - если документ, счет, элемент справочника изменен, то будет запрос о
сохранении изменений. Значение по умолчанию - 1.
Замечание:
Действие данного метода не прерывает выполнения текущей процедуры программы,
т.е. процедура доработает до конца. Данный метод лишь устанавливает
признак, который отрабатывает после окончания выполнения процедуры. Доступ к
методу возможен только в контексте Модуля формы через атрибут Форма.

А можно и так:
СтрокаДействийФормы="Сохранить, Закрыть";

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

Модуль Обработки:

Процедура ПриОткрытии()

// Получили параметр
Форма.Параметр
// Вычислили ответ
Поле=Значение;
СтатусВозврата(1); Форма.Закрыть();

КонецПроцедуры

Использование:

Перем Параметр;

// Передали параметр
ОткрытьФорму("Обработка.Проба",Параметр);
// Получили результат
Параметр.Поле

Особенность в том, что если статус возврата не 0, то контекст формы не
уничтожается, хотя форма уже закрыта.

  1С:Предприятие
Особенность плавающей точки в 1С.
В 1с число в количество знаков для числа входит так же и разделяющая точка. Т.е. число 2.15 будет содержать не три, а четыре знака.

  1С:Предприятие
Как поместить программно новый элемент справочника в определенную группу этого справочника?

Примерно так:

спр.Новый();
спр.Наименование=ИмяПользователя();
Спр1=СоздаьтОбъект("Справочник.Супер");
Спр1.НайтиПоНаименованию(Группа);
Спр.Родитель=Спр1.ТекущийЭлемент();

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

  1С:Предприятие
А где храняться данные о автонумеровках?
А они храняться во в этой таблице - 1suidctl. И при вводе нового к значению прибавляется единичка.

  1С:Предприятие
Как у периодической константы узнать дату смены, от текущей даты?

А вот так:

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

Вот в ДниНазад выдаст, сколько дней назад меняли константу.

  1С:Предприятие
Есть ли какой нибyдь способ yзнать и сохpанить в пеpеменной на каком элементе в справочнике стоит в данный момент кypсоp?

Делаем в форме текстовый реквизит, на закладке Формула ставим
вызов функции, например ЗапомнитьЭлемент().
В модуле должно быть:

Функция ЗапомнитьЭлемент()
              Элемент=ТекущийЭлемент();
КонецФункции

  1С:Предприятие
Каким образом можно выбрать группу в справочника в реквизит документа?
Спр.ВыборГруппы(1)

  1С:Предприятие
Еще раз про работу с новелем.

Что бы нормально работать с NW411 в качестве файлсервера необходимо выполнить следующие действия:

  1. Поставить клиента не ниже версии 3.0
  2. В клиенте в AdvSettings установить параметр FileCacheLevel в 1
  3. Кроме этого установить там же UseExtendedFileHandles = ON
  4. На сервере надо увеличить параметры Set Maximum Record Lock Per Connection и Set Maximum File Lock Per Connection

  1С:Предприятие
Как определить коды БД в РИБД?

Эту операцию можно осуществить следующим образом:

Переводим какое-либо значение при помощи процедуры "ЗначениеВСтрокуВнутр" в строку. Оно будет иметь примерно такой вид "{"O","0","0","35","0","0"," 36ABC"}", где " 36ABC" - код в БД, но первые десять символов нужно преобразовать в 36-ричную систему, подклеить к ним код ИБ-создателя ("ABC") и получаемую строку дополнить лидирующими пробелами до девяти симоволов. Получаемая строка: " 10ABC".

  1С:Предприятие
Как заставить сервер защиты в 1с 7.7 предприятии под Win NT сервером стартовать не логинясь консольно на сервере?
Обходиться как обычно через задний проход. . Нужно иметь комплект драйверов сервера защиты от версии 7.5. Сначала ты поставишь от них hinstall /is, они создадут сервис, потом перезагрузишься и поверх поставишь из комплекта 7.7 hinstall /i.

  1С:Предприятие
Не работает ТекущийДокумент()!

Если в открытом документе, в его модуле написать

Док=СоздатьОбъект("Документ");
Док=ТекущийДокумент();

То программа будет справедливо ругаться. Т.к. пока текущий документ не сохранен. Функция ТекущийДокумент() в данном коде работаеть не будет.

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

  1С:Предприятие
Способ поиметь нумерацию страниц в отчетах.

Кратко, но доходчиво:
Меню "Таблица" - "Колонтитул" - "Верхний"/"Нижний".
Накорябать #P.
Наслаждаться.

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

  1С:Предприятие
РБД неподгружается в центральную БД.

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

Это может пофикситься так (ВHИМАHИЕ ОПАСHО!):
1. Убедиться что перифирийная база получила последние изменнения.
2. В ЦБ найди фалик 1supdts.dbf и начать его править любым DBF редактором.
3. По полю dbsign поставте фильтр - номер той перефирийной базы из которой не получается загрузка. Затем удалите все записи которые удовлетворяют фильтру и кроме того в поле typeid содердат нолик (это и есть флажок выгрузки измененного md-шника).
4. Удалите фалик 1supdts.cdx.
5. Спокойно подгружайте выгрузку из перефирийной и наслаждайтесь

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

Можно предложить еще один способ - изменить еще раз конфигурацию на центральной базе и сделать несколько операций автообмена с гарантированной доставкой.

  1С:Предприятие
Как можно провести документ без лишних вопросов по поводу времени?

Можно, например, в процедуру ПриЗаписи() установить вызов системной процедуры АвтоВpемяТекущее();, кроме этого в самих обработках документа обычно понапихана куча разных проверок, так что надо смотреть конкретно.

Кроме этого в настройках самой программы, можно установить режим автоматической мены времени.

  1С:Предприятие
Число (сумма) прописью
Функция РублиКопейкиПрописью(Сумма) Копейки=(Сумма-Цел(Сумма));
Пропись("DM");
СтрЧислоКоп=HРег(Формат(Копейки*100,"ЧПД"));
СтрЧислоКоп=Лев(СтрЧислоКоп,Hайти(СтрЧислоКоп," мар"));
Пропись(""); СтрСтрКоп=Формат(Копейки,"ЧПДС");
СтрСтрКоп=Сред(СтрСтрКоп,16);
// 15=СтрДлина("Hоль рублей 00 ") Возврат Формат(Сумма,"ЧПД")+" "+СтрЧислоКоп+СтрСтрКоп; КонецФункции

  1С:Предприятие
Ошибка при пересчете итогов SQL.
При пересчете итогов в SQL версии могут врзникать ошибки. Лучше запросом внести в эту таблицу нули (0, не NULL) руками, а то потом эти записанные на УРА NULLы еще где-нибудь всплывут.

  1С:Предприятие
Будьте осторожны при переходе с версии 7.5 на версию 7.7.
В типовых конфигах от 7.5 фyнкции, опеpиpyющие с последовательностями сплошь и pядом пользyют пеpеменнyю с именем "Последовательность".
В 7.7 появляется объект метаданных Последовательность и иже с ним глобальный аттpибyт "Последовательность". Тепеpь pассмотpим ситyацию, когда pаботающее на 7.5 пpедпpиятие пеpеходит на 7.7 и пpодолжает pаботать на той же конфигурации. Hепонятно почемy, но интеpпpетатоp 1С ноpмально съедает такyю констpyкцию

  1С:Предприятие
Ошибка компиляции глобального модуля.
Такая ошибка может возникать из-за языковых настроек вашей Windows системы. Проверьте, установлен ли у вас русский язык в настройках Windows. Примерный путь к настройкам Пуск -> Настройка -> Панель управления -> Языки

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

  1С:Предприятие
Какие лучше установить значения в настройке параметров системы?
Период опроса изменений БД лучше установить побольше, при интенсивной работе с данными и с большими справочниками. Если же требуется оперативно отслеживать изменения в регистрах и справочниках, например, продажа небольшого количества товара и если этот товар уже продан, а у пользователя в спрачонике показывается значение, что он еще имеется, то имеет смысл уменьшение периода опроса БД до нескольких секунд. Однако следует заметить, что в таком случае сервер и сеть будут нагружаться значительно больше и могут возникать проблемы при работе больлшого количества пользователей.
Время ожидания захвата таблиц подразумевает, то время в течении которого программа пытается получить доступ к записям до вывода сообщения "Транзакция неактивна". После появления этого сообщения пользователю предлагается или отменить транзакцию или продолжить попытку захвата таблицы. По сообщениям от наблюдателей, 1С при попытке захватить таблицу осуществляет это очень активно и тем самым значительно замедляет работу программы, захватившей эту таблицу. Таким образом, все то время, что отводится на время ожидания все программы будут значительно тормозится. Так, что в таких случаях рекомендуется устанавливать это значение поменьше (порядка двух-трех секунд). С другой стороны при работе длительного алгоритма без надзора оператора малое время ожидания может привести к остановке алгоритма.

  1С:Предприятие
Почему все ругают сетевые карты RTL8029?
Вышеозначенные сетевые карты на 10 мегабит в PCI исполнении под витую пару очень плохо себя зарекомендовали. И вызывали головную боль множества системных администраторов. Причиной этому были "пропуски битых сетевых пакетов", нормальная сетевая карта в таком случае просто перезапрашивает такой пакет еще раз. Эта же карта просто-напросто передает его дальше - пользовательской программе. В результате оная просто незнает, что нужно делать с таким мусором. "Попадают" на этом программы активно работающие с сетью, например 1С, Lotus Notes и т.д. Такая "работа" карты вызывает в них разнообразные ошибки и зависания :-) Предпосылками возникновения в большом количестве битых пакетов в первую очередь можно считать некачественное сетевое оборудование, обычно это плохо обжатые коннекторы, неправильно разведенная витая пара (например 10 мбит сеть такое издевательсво еще выдержит, но 100 мбит уже нет) и т.д.
Если вам не повезло и у вас установлены именно такие карты, то лучше конечно же их заменить на что-либо более другое. Если такой возможности нет, то крайне желательно установить самые последние-распоследние драйвера для этой карты, взять их можно например здесь http://www.realtek.com.tw/cn/driver/8029-driver.htm. Установка свежих драйверов обычно устраняет более 90% всех ошибок возникающих по вине этой карты.

  1С:Предприятие
ABACUS vs 1С:Предприятие
В данном кратеньком отчетике сравниваются два продукта российских производителей программного обеспечения для автоматизации учета на предприятиях. Это ABACUS Prof 5.32 для MSDOS компании ОМЕГА и 1С:Бухгалтерия 7.5 от соответственно.
Обе программы предназначены для автоматизации бухгалтерского учета. Стоимость программ не рассматривается.
ABACUS выбран именно для систем MSDOS, поскольку является наиболее массовым из семейства этих программ, а так же по причине незаконченности WINDOWS версии этой программы (кроме того, они отличаются практически только интерфейсом).
Характеристика
ABACUS
1C:Бухгалтерия
Сетевая версия
есть
есть
Защита программы
HASP/NetHasp
HASP/NetHASP
Работа в форматах баз данных
Clarion, BTrieve, TopSpeed
DBF, MS SQL
"Качество" работы в сетевом варианте
средне
ниже среднего, средне в SQL версии
Настройка интерфейса
практически нет возможности настройки интерфейса
полная настройка интерфейса
Возможная взаимосвязь с внешним миром
экспорт/импорт в файлы, прямая работа с базами возможна только в версии с TopSpeed (при условии наличия ODBC или подобного драйвера)
экспорт/импорт, внешние модули, OLE, прямая работа с базами
Наличие языка программирования
Присутствует некое подобие конструктора макроязыка. В Windows версии присутствует компилятор этого языка
Полнофункциональный язык программирования
"Настройка" бухгалтерии под свои нужды
Крайне затрудено, желательно использовать стандартный план счетов
Широкие возможности настройки. Возможна полная перестройка плана счетов (требуется изменение модулей документов)
Основное хранилище данных
Общая таблица проводок
Регистр проводок
Оценочная скорость работы БД

Добавление, модификация, удаление - ниже среднего

Выборка - отлично

Добавление, модификация, удаление - хорошо

Выборка - хорошо

Взаимосвязь с пердыдущими версиями (программно) Возможна конвертация модулей на внутреннем языке программирования из DOS версии в WIN версию, обратное не возможно. Возможна конвертация программных модулей из версии 7.5 в версию 7.7, обратное невозможно.
Возможность одновременной работы нескольких версий Возможна работа одновременно DOS версии и WIN версии. Не возможна работа разных "версий" баз с одни релизом. База должна соответствовать релизу программы. При установке нового релиза, производится конвертация базы. Возможна работа одновремемно разных релизов программ, невозможна работа на разных "версиях" баз. Возможна конвертация баз, обратная конвертация невозможна.
Общее впечатление от программы изнутри Создана школьниками-старшекласниками или студентами начальных курсов в качестве курсовой и получила дальнейшее развитие Создана студентами старшекурсниками в качестве диплома или закуплен уже готовый движек
Уровни аналитики Субсчет, хозяйственная операция, хозяйственная подоперация Субсчет, 3 субконто (в стандартной поставке). Возможно уменьшение или увеличение количества субконто
Техническая поддержка и поддержка пользователей
Отлично
Ниже среднего
Скорость восстановления после сбоев (разрушение индексных файлов, для файловой БД)
Длительная процедура
Быстрая процедура


Итак общее резюме:
ABACUS больше подходит для нетребовательного пользователя ограниченного в ресурсах, не желающего месяц настраивать систему, а потом полгода выводить глюки, 1С же в свою очередь для весьма требовательного пользователя, желающего получить "на грош пятаков", т.е. недорогую систему, которую он может настроить полностью под свои нужды и требования.

Новинка - июль 2000 1С:Предприятие
Переход с v7.5 на v7.7 для SQL. Как это было.
btbl.zip - 4 K
[CHANGEACC.ZIP]
Этап 1. 7.5 -> 7.7
Никаких проблем вообще не вызвал.
Запускаю 7.7, запускаю базу (та, которая под 7.5) в режиме конфигуратора. Он спрашивает:
Выполнить конвертацию данных? Если нет, то до свидания. Остается
согласиться.
Через 20-30 минут наслаждаюсь новыми возможностями 7.7.
Все счастливы.

Этап 2. 7.7 ->7.7 SQL
Установка SQL Server и его SP не отняла умственных ресурсов. Оставлял выставленные по умолчанию параметры, давил ОК. Единственный вопрос - тип аутентификации. NT или NT и SQL? NT.
В Enterprise Manager регистрирую сервер. Логину SA задаю свой любимый пароль. Создаю новую базу, размер по рекомендации 1С в 3 раза больше чем все DBF+CDX.

Перехожу к 1С.
Выгружаю базу из 7.7: 'Администрирование / Выгрузить данные ...' .
Создаю пустой каталог. Прописываю его как каталог базы. Запускаю 7.7 в режиме конфигуратора.
На вопрос о формате хранения ответил - SQL Server.

Теперь нужно связать 1С с SQL Server.
Пункт меню - 'Администрирование/Параметры базы данных SQL...'

Сервер: имя_сервера
База данных: имя_базы_данных
Пользователь: SA (или другой логин , являющийся DBO базы)
Пароль: пароль_SA

Затем загружаю базу из ZIPа: 'Администрирование / Загрузить данные ...'. Предупреждения о вреде существующим данным игнорирую.

Воспоминания очевидцев:
Вначале всё шло хорошо. Создал таблицы. Начал создавать индексы счетов и ? Ошибка!!! Duplicate key.  Мать ... Оказалось, что в плане счетов в режиме Предприятие есть счета с одинаковыми кодами счетов. В конфигураторе все счета уникальные.( Наверное, такого база данных не должна допускать, ;-) но раз уж так случилось. )

Вот совет от 1С:
Проверьте в плане счетов наличие продублированных счетов. Если в базе формата DBF существуют в Плане счетов в режиме Предприятия дубли счетов (одинаковые счета и / или субсчета), то необходимо выполнить следующее:

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

Всё так. Вопрос - как править? У меня было набито документов за полгода на один счет, еще полгода на другой. Вручную это всё перелопатить сложно. А завтра всё должно быть уже под SQL. Пришлось автоматизировать процесс.

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

  1С:Предприятие
Обмен данными через OLE.
Примерно вот так можно делать.

//*******************************************
Процедура Сформировать()

Перем Nomenkl;
Спр=СоздатьОбъект("Справочник.Hоменклатура");
СпрГр=СоздатьОбъект("Справочник.Hоменклатура");
V7=CreateObject("V75.Application");
result=V7.Initialize(V7.RMTrade, "/dc:\1c\1sdbf /nUSER /pPASSWROD","No_Splash_Show");
Тов=V7.EvalExpr("CreateObject(""Справочник.Hоменклатура"")");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()=1 Цикл
Спр.Удалить();
КонецЦикла;

Тов.ВыбратьЭлементы();
Пока Тов.ПолучитьЭлемент()=1 Цикл
Если Тов.ЭтоГруппа()=1 Тогда
Спр.HоваяГруппа();
Спр.Код=Тов.Код;
Спр.Hаименование=Тов.Hаименование;
Спр.Записать();
КонецЕсли;

КонецЦикла;
Тов.ВыбратьЭлементы();
Пока Тов.ПолучитьЭлемент()=1 Цикл
Если Тов.ЭтоГруппа()=0 Тогда
СпрГр.HайтиПоКоду(Тов.Родитель.Код);
Спр.ИспользоватьРодителя(СпрГр.ТекущийЭлемент());
Спр.Hовый();
Спр.Код=Тов.Код;
Спр.Hаименование=Тов.Hаименование;
Спр.РозничнаяЦена=Тов.Цена;
Спр.ЦенаПриобретения=Тов.Себестоимость;
Сообщить(Спр.Hаименование);
Спр.ИспользоватьДату(ТекущаяДата());
Спр.Записать();
КонецЕсли;
КонецЦикла;
КонецПроцедуры

Пример от n76






[Главная страница] [Бухгалтерия] [Зарплата и кадровый учет] [Торговля и склад] [Файлы] [Трюки] [Трюки3] [Информация]