Новый FAQ по 1С

Вопрос:
Как перенести настройку документа из одной базы в другую для 1С:Бухгалтерия 6.0?
Ответ:
1. Копируем базу, из которой необходимо перенести документ во временную директорию.
2. Удаляем из временной базы данных настройки всех документы, кроме нужного ("Документы и расчеты"/"Уд."). Если в журнале есть документы тех видов, которые нужно удалить, то необходимо предварительно очистить журнал операций ("Операции"/"Удаление операций")
3. Запускаем 1sbwconv.exe /s
4. Делаем экспорт "документов и расчетов" в файл ("Выгрузить").
5. Импортируем настройки документов из файла в новую базу данных ("Загрузить").
6. Копируем файл с формой (.gfd) в директорию с новой базой данных.

Вопрос:
При вводе документа для 1С:Бухгалтерия 6.0 в поле "номер" остается пустым. Из-за чего это происходит?
Ответ:
Вероятно, дело в настройке шрифтов. Попробуйте выключить режим Large Font или уменьшить размер шрифта через диалог "Сервис/Общие параметры/Списки/Выбрать шрифт".

Вопрос:
Как с нового года в 1С:Бухгалтерия 6.0 начать нумерацию документов заново?
Ответ:
Первый способ - сделать копию настроек документа и вносить в журнал документы нового вида. Второй - включать год в старшие разряды номера (980001). Чтобы в формах документов были видны только младшие разряды, нужно в поле, содержащие номер поставить следующее выражение: ФОРМАТ(ОКР(0+ВЫД(""+ЗН1\СТРДЛИНА(""+ЗН1)-3\4)\0)\"Е0")

Вопрос:
Почему в поле вида "Информационное табло" 1С:Бухгалтерия 6.0 выводятся суммы без копеек?
Ответ:
Реквизиты "Информационное табло", типа "число" выводятся целыми, а имеющие тип "текст" с двумя знаками после десятичной точки. Т.е. необходимо установить тип "текст".

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

Вопрос:
Почему программа округляет 1.5 до 1?
Ответ:
По нормативным документам, именно так и нужно округлять в финансовых расчетах.

Вопрос:
Какую структуру имеет информационная база 1С:Бухгалтерия 6.0.
Ответ:
Описание структуры данных можно найти в файле 1sbw.dd.
1sbcons.dbf - константы, настройки документов, отчетов, параметры субконто, шапки документов
1sbdoc.dbf - табличные части документов
1sbglkn.dbf - остатки и обороты по счетам
1sboper.dbf - журнал операций
1sbopert.dbf- временный файл, используется при вводе типовой операции
1sbsch.dbf - план счетов
1sbspsk.dbf - списки субконто
1sbsvpr.dbf - сводные проводки
1sbsvprt.dbf- временный файл, используется при расчете сводных проводок
1sbsvsk.dbf - временный файл, используется при построении отчетов
1sbsys.dbf - системные параметры
1sbsysl.dbf - локальные системные параметры
Файлы 1sbglkn.dbf и 1sbsvpr.dbf формируются при расчете итогов на основании 1sboper.dbf т.е. их можно восстановить пересчитав итоги начиная с периода, в котором были первые операции. Для удаления всех операций из журнала необходимо пользоваться командой "Операции/Удаление операций", просто удалить файл 1sboper.dbf недостаточно - останется информация о документах.

Вопрос:
Почему после удаления операций обЪем баз 1С:Бухгалтерия 6.0 не уменьшился?
Ответ:
Фактического удаления данных из файла не происходит, запись получает атрибут "Deleted" и занимаемое ей пространство будет использовано в дальнейшем при внесении новой информации. Если необходимо удалить из файла все записи помеченные к удалению, то можно воспользоваться командой Pack из пакета FoxPro или другой программой, работающей с файлами в формате dbf.

Вопрос:
Ключ защиты 1С:Бухгалтерия 6.0 мешает работе принтера. Как быть?
Ответ:
В первую очередь попробуйте запретить двусторонний обмен данными (Панель управления/Принтеры/Свойства/Сведения/Очердь/Двусторонний обмен данными с принтером). В некоторых случаях помогает изменение типа параллельного порта (Normal/ECP/EPP). В локальной сети есть возможность перенести на другой компьютер сервер защиты или принтер. Можно установить дополнительную карту с портом принтера или мультикарту т.е. разнести ключ защиты и принтер на разные порты LPT.

Вопрос:
Как работает Windows 2000 и 1С 7.7 ?
Ответ:
Нормально работает, в списке девайсов haspemul, находиться : My computer->hardware manager->show hidden devices. Еще одна интересная особенность - в ней все надо делать последовательно, иначе хасп не установить уже никогда. Т.е. поставить 1С, поставить драйвер хаспа, перезагрузиться, удалить драйвер хаспа, перезагрузиться, поставить эмулятор, поставить вместо auto - boot, перезагрузиться. Если где-то напутать или пропустить или не перезагрузиться, то при попытке установить драйвер или эмулятор она ругается на ошибку записи в реестр.

Вопрос:
Какие ключи для запуска приложений 1С ?
Ответ:
CONFIG - конфигуратор
DEBUG - отладчик
ENTERPRISE - предприятие
/D - каталог информационной базы данных
/U - каталог пользователя
/N - имя пользователя, как оно указанно в списке пользователей в конфигураторе
/P - пароль пользователя, имя которого указано в параметре /N
/M - монопольный режим
/T - параметр для переопределения каталога временных файлов Если путь имеет вид, типа c:\Program Files\:. то для запуска необходимо весь путь. Не забывайтеуказать путь в кавычках - /D"C:\Program Files\Vasya Pupkin"

Вопрос:
Как подавить вывод заставки 1C предприятия ?
Ответ:
Нужно поставить NO_SPLASH_SHOW и работает это только при запуске в режиме OLE Automation сервера или ручками через hiew.exe :
1cv7.exe 7.7.002 ищем 8B87548500, заменяем на 33C090909090
1cv7l.exe 7.7.014 ищем 8B8B548500, заменяем на 31C990909090
1cv7.exe 7.7.014 ищем 8B87548500, заменяем на 31C090909090

Вопрос:
Как пpовести докyмент без всяких вопpосов?
Ответ:
На кнопке ОК меняешь #Записать? Пpовести? Закpыть на то же без вопросов, а в ПpиЗаписи() АвтоВpемяТекyщее()

Вопрос:
Пpоблема в следyющем: если user1 загpyзил на своем компе две базы, то пpи попытке user2 войти в эти две базы появляется ошибка откpытия таблицы (т.е. в однy базy (любyю) user2 может войти, а в две сpазy нет). С user3, на компе котоpого эти две базы физически находятся, все в поpядке (т.е. он может войти сpазy в две базы). В чем пpоблема?
Ответ:
Эта проблема возникает, когда на машине user3 (там где лежит база) установлена ОС Win 9x, которая имеет ограничение в 1024 открытых по сети файла. Конфигурация открывает в среднем около 300 файлов (имеются ввиду типовые или навернутые самопальные DBF).Решение в переносе базы на машину с другой ОС (НТ, Новелл, Линух)

Вопрос:
Довольно часто возникают проблемы с тем, что кто-то сидит в монопольном режиме в SQL-базе, второй юзер ломится туда же и все падает.
Ответ:
Решение есть, если у вас SQL 7.0 - необходимо поставить ServicePack 2 для SQL 7.0 и тогда краха не будет, отваливаться будет _второй_ юзер, не попортив данных!

Вопрос:
А где можно найти программу для чтения *.MXL файлов Microsoft Excel ?
Ответ:
Прямо на сервере http://1c.rivne.com/files/xfilter.zip

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

Вопрос:
Как "сломать" паpоль на конфигуpационный файл?
Ответ:
Если на конфиуpацию стоит паpоль, то "сломать" его можно следующим обpазом:
(Вариант 1)
1.В файле BkENd.dll найти стpочку содеpжащую "TaskItem".
2.Заменить ее на любую дpугую стpочку, главное, что бы совпадали их длины.
3. Запустить конфигуpатоp, внести изменние и сохpанить конфигуpацию.
4. Веpнуть ноpмальный файл обpатно Единственное уточнение от меня: пpи этом становится дефолтным Id и свойства задачи в конфигуpации. Vladimir Sinitsin (2:5030/437.543)
(Вариант 2)
1. Установите плагин DocFile для FAR'a
2. Создайте в 1С:Конфигураторе пустой внешний отчет и сохраните его
3. Скопируйте при помощи FAR'a из защищенного отчета всю структуру за исключением "Container.Profile" в пустой отчет.
(Вариант 3)
В конфигурациях >7.70.003 пароль можно менять как и в конфигурациях
Вопрос:
При запуске "1С:Предприятие для SQL" выдается ошибка: SQL state 08004 (Native: 916) Server User ID 11 is not a valid user in database 'имя_базы'.
Ответ:
Это означает, что в Конфигураторе в параметрах соединения с базой данных SQL 6.5 указано имя пользователя, который отсутствует в списке пользователей данной базы или не является ее владельцем.

Вопрос:
Что делать, если при реиндексации возникает ошибка с кодом 630 (при работе с 32-bit Novell Client версии 3.00 и выше) ?
Ответ:
Такая ошибка возникает, если в свойствах Novell Client в закладке Advansed Settings значение параметра File Cache Level больше 1. В этом случае не производится реиндексация базы на сервере. Нужно установить значение этого параметра равным 1 или 0.

Вопрос:
Что делать, если при запуске "1C:Пpедпpиятия 7.7" выдается сообщение "Порядок сортировки строк, установленный для Базы Данных, отличается от системного !"?
Ответ:
Проверьте региональные установки Windows (кнопка "Пуск"-"Настройка"- "Панель управления"-"Язык и стандарты"). Необходимо выбрать язык - русский . Запустите программу в режиме Конфигуратора и в меню "Администрирование" выберите "Кодовая страница таблиц ИБ". Выберите в нем 1251 (Русский...языки). Если при запуске "1С:Предприятия" снова выдается то же самое сообщение, то выберите в Конфигураторе в Кодовой странице "Текущую системную установку" (в самом низу списка) и перезапустите Предприятие.

Вопрос:
Как организовать непосредственный доступ к рабочей базе 1С через ярлык на рабочем столе?
Ответ:
Во многих случаях возникает неудобство при обращении к рабочей базе программы 1С через диалоговое окошко Запуск 1С:Предприятия. Непосредственный запуск рабочей базы можно организовать самостоятельно, что позволит прежде всего экономить время при запуске конфигурации. Кликните на ярлыке 1С правой кнопкой мыши и выберите в появившемся подменю . На закладке в окошке указан путь к файлу 1cv7.exe (либо 1cv7s.exe; 1cv7l.exe). Например, "C:\Program Files\1Cv77\BIN\1cv7.exe". Открыть рабочую базу можно в режиме 1:Предприятие указав после заданного пути следующие параметры: enterprise /D Путь к рабочей базе . Например, если путь к Вашей базе D:\Base1C\1sbdb, то в окошке ОбЪект будет следующая запись:

"C:\Program Files\1Cv77\BIN\1cv7.exe" enterprise /DD:\Base1C\1sbdb

Нажав , Вы задействуете новый режим запуска.

Вопрос:
Как узнать себестоимость товара в ТиС 7.7 ред. 8.7?
Ответ:
Информация по себестоимости находится в регистре Партии товаров. Вот функция которая возвращает текущую себестоимость товара:
Функция ПолучитьСреднююСебестоимость(вТовар) 

 Перем РегПартий; // обЪект доступа к регистру ПартииТоваров
 Перем РезТаблица; // возвращаемая таблица значений
 Перем Стоимость, Колво; // вспомогательные переменные для расчета цены
 Перем ТекущийТовар; // текущий товар в выборке из регистра

 // изначально текущий товар не задан
 РегПартий = СоздатьОбЪект("Регистр.ПартииТоваров");

 // устанавливаем фильтр на выборку итогов
 // упр. учет
 РегПартий.УстановитьЗначениеФильтра("Фирма", глПустаяФирма, 1); 
 // фильтр на равенство

 // выбирать только по товару
 РегПартий.УстановитьЗначениеФильтра("Товар", вТовар, 2); 
 // фильтр на вхождение

 // инициализируем переменные для суммирования итогов
 Стоимость = 0;
 Колво= 0;

 РегПартий.ВыбратьИтоги();
 Пока РегПартий.ПолучитьИтог() = 1 Цикл
      Стоимость = Стоимость+РегПартий.Стоимость + РегПартий.НДС + РегПартий.СтоимостьНП;
      Колво = Колво+РегПартий.ОстатокТовара;
 КонецЦикла; 

 Попытка
     вСебестоимость=Стоимость/Колво;
 Исключение
     вСебестоимость=0; 
 КонецПопытки;

Возврат вСебестоимость;
КонецФункции 
// ПолучитьСреднююСебестоимость
Вопрос:
Как подсчитать итог по колонке в подчиненном справочнике?
Ответ:
Допустим у нас есть справочник "Номенклатура" и подчиненный к нему справочник "Цены" с периодическим реквизитом "Цена". Если нам надо получить сумму всех цен к какому-либо товару, тогда воспользуемся следующей функцией.
// Функция возвращает строку с указанием суммы реквизита.
Функция ВернутьСумму(вСпр) 
// Описание переменных.
Перем вРез,вСум;

// Обработка ошибки.
Если (ПустоеЗначение(вСпр)=1) Тогда
Возврат ""; 
КонецЕсли;

// Сначала сумма=0.
вСум=0;

// Создаем обЪект - справочник цен.
вС=СоздатьОбЪект("Справочник.Цены");
// Для периодических реквизитов нужно установить дату
// выборки.
вС.ИспользоватьДату(РабочаяДата());
// Установим владельца для списка элементов справочника.
вС.ИспользоватьВладельца(вСпр.ТекущийЭлемент());
// Открываем выборку элементов.
вС.ВыбратьЭлементы();
// Выбираем элемент из выборки.
Пока (вС.ПолучитьЭлемент()=1) Цикл
// Собственно суммируем.
вСум=вСум+вС.Цена;
КонецЦикла; 

// Подготавливаем результат.
вРез="Сумма всех цен "+Строка(вСум);

// Возвращаем результат. 
Возврат вРез;
КонецФункции 
Вопрос:
Как удалить нулевые значения периодического реквизита справочника?
Ответ:
Бывают ситуации, когда действительно необходимо убрать "лишние" нули из периодического реквизита справочника. Например, из реквизита "Цена". Рассмотрим пример решения такой задачи.

Исходные данные:

вСпр - элемент справочника, у которого есть временный реквизит "Цена". Тогда, так выглядит код программы для удаления всех "нулей", если они есть.

// Начало кода.
вПериодический=СоздатьОбЪект("Периодический"); 
	// Создаем периодический обЪект.
вПериодический.ИспользоватьОбЪект("Цена",вСпр.ТекущийЭлемент()); 
	// Связываем обЪекты.
вПервый=1; 
	// Для того чтобы не потереть 1-й элемент, тк он достаточно важен, даже если и ноль.
аПериодический.ВыбратьЗначения(); 
	// Открываем выборку значений.
Пока (вПериодический.ПолучитьЗначение()=1) Цикл 
	// Выбираем значение из списка.
    // Не первый элемент.
    Если (вПериодический.Значение=0) Тогда
    // Удаляем это значение.
       вПериодический.Удалить();
    КонецЕсли;
   Иначе
     вПервый=0; 
	 // Пропускаем первое значение.
   КонецЕсли; 
КонецЦикла;
Вопрос:
Как выгрузить табличную часть документов за определенный период и загрузить в новый документ ?
Ответ:
Предположим, что это документ 'Расходная Накладная' и нам надо выбрать документы за период , далее выгрузить табличную часть этих документов и вставить в текущий документ ( к примеру 'Акт по продажам').

Решение выглядит примерно так:

1) В документе 'Акт по продажам' необходимо создать два реквизита 'ДатаНачала ' и 'ДатаКонца'.
2) В диалоге формы вставить кнопку 'Заполнить' и повесить на нее процедуру ЗаполнитьТабЧасть().
3) Напишем процедуру с использованием обЪекта типа 'ТаблицаЗначений'.

Процедура ЗаполнитьТабЧасть()
Перем Док, ТЗ;
// Удаляем все строки в табличной части заполняемого документа.
УдалитьСтроки(); 
// Определяем переменные.
Док = СоздатьОбЪект("Документ.РасходнаяНакладная");
ТЗ = СоздатьОбЪект("ТаблицаЗначений");
// Подготавливаем таблицу значений к заполнению.
ВыгрузитьТабличнуюЧасть(ТЗ);
ТЗ.УдалитьСтроки(); 
// Выбирам документы за период.
Док.ВыбратьДокументы(ДатаНачала,ДатаКонца);
//Проходим по каждому документу выбираем строки и заполняем 'ТаблицуЗначений'. 
Пока Док.ПолучитьДокумент()=1 Цикл
Док.ВыбратьСтроки();
Пока (Док.ПолучитьСтроку()=1) Цикл
// Заполняем ТЗ.
ТЗ.НоваяСтрока();
ТЗ.Товар=Док.Товар;
ТЗ.Количество=Док.Количество;
и.т.д.
КонецЦикла;
КонецЦикла;
// При необходимости можно дублирующий товар свернуть в одну строку. 
ТЗ.Свернуть("Товар","Количество");
//Загружаем табличную часть в документ 'Акт по продажам'. 
ЗагрузитьТабличнуюЧасть(ТЗ);
В принципе все !!!
КонецПроцедуры
Вопрос:
Как послать сообщение по электронной почте?
Ответ:
Ниже представлена функция, которая пересылает данные из программы по электронной почте.

//---------------------------
Функция общНетМейлСоздатьСообщение(
вАдрес,
вТема="",
вСообщение=""
) 
// Функция создания сообщения электронной почты.
// Возвращает "Да"/"Нет" - "Успех"/"Неудача".
Перем objMAPISession, objMAPIMessages;

Попытка
Если (ПустаяСтрока(вАдрес)=1) Тогда
отлСообщить("общНетМейлСоздатьСообщение() - "+
"не указан адрес ....");
Возврат Нет;
КонецЕсли;

objMAPISession=СоздатьОбЪект("MSMAPI.MAPISession");
objMAPIMessages=СоздатьОбЪект("MSMAPI.MAPIMessages");

objMAPISession.DownloadMail=0;
objMAPISession.SignOn();

objMAPIMessages.SessionID=objMAPISession.SessionID;

objMAPIMessages.Compose();
objMAPIMessages.RecipType=1; // Primary recipient.
objMAPIMessages.RecipAddress=СокрЛП(вАдрес);
objMAPIMessages.MsgSubject=СокрЛП(вТема);
objMAPIMessages.MsgNoteText=СокрЛП(вСообщение);
objMAPIMessages.Send(1);
Исключение
// Начало обработки исключительной ситуации.
стрОшибка="общНетМейлСоздатьСообщение() - "+
""""+СокрЛП(ОписаниеОшибки())+""""+
" ....";

Сообщить(стрОшибка);
КонецПопытки;

Возврат Нет;
КонецФункции
Вопрос:
Как можно загрузить информацию из файлов формата *.DOC или *.XLS?
Ответ:
Вот два примера для Word и Excel:

1. Word:
// Создаем обЪект Word.
// фФайл - переменная с полным именем файла.
вВорд=СоздатьОбЪект("Word.Application"); // Создаем обЪект. 
вВорд.Documents.Open (фФайл); // Открываем файл.

вДок=вВорд.ActiveDocument; // Получаем обЪект документа.
//вВорд.Visible=1; // Эта команда открывает окно Word с файлом (если надо его посмотреть).

кол=вДок.Paragraphs.Count(); // Количество параграфов (строк).

Для пер=1 По кол Цикл
вСтрока=вДок.Paragraphs(пер).Range.Text; // Получаем строку.
// Дальше уже можно обработать строку как угодно. 
КонецЦикла;

вВорд.Quit(); // Выход из Wordа.

2. Excel:

вExcel=СоздатьОбЪект("Excel.Application");
вExcel.Workbooks.Open (фФайл);

//вExcel.Visible=1;

вДок=вExcel.Worksheets(1);
кол=вДок.Rows.Count;

пНомерДок=вДок.Range("G5").Value; 
// Так можно получить значение из конкретной ячейки.

Для пер=20 По кол Цикл
Состояние("Обрабатывается строка - "+Строка(пер));
Количество=вДок.Cells(пер, 8).Value; // а так получаем значение из 8-го столбца.
// Беда сотоит в том что кол всегда равно 65536 примерно строк...
// Поэтому надо предусмотреть какой-то выход.
// Или по конкретному значению или по количествоу строк...
КонецЦикла;

Комментарии

5
  • Хранитель_врат
    Ссылка http://1c.rivne.com/files/xfilter.zip не работает
  • Хранитель_врат
    Кто знает как заставить 6.0 работать быстрее под Win2000?
    Ссылка http://1c.rivne.com/files/xfilter.zip и в правду не работает!