Глава 5 Администрирование 1С-приложений
Эта глава посвящена вопросам, связанным с «1С», которые можно отнести к программированию с большой натяжкой, например, порядок обновления базы данных, контроль работы задним числом, внесение изменений в базу данных, «лечение» базы данных, проблемы, которые могут возникнуть при работе с распределенными базами данных.
Почему нельзя работать задним числом?

Работа задним числом может привести к образованию отрицательных остатков на складах.
Допустим, что в 11:03 один менеджер переместил товар на другой склад. Другой менеджер в 11:05 задним числом (в 11:01) выписал тот же товар под остаток другим документом. Таким образом, получается, что в 11:05 на складе будет отрицательный остаток товара, что в принципе невозможно.
Кроме этого, выписанный и проведенный документ потом может быть изменен, удален или перепроведен. Большинство клиентов клянутся в том, что у них все менеджеры умные, все таймеры синхронизированы и то, что описано выше, произойти не может. Не верьте этим словам!
Оптовое предприятие не может работать без переделок и изменений задним числом. В оптовой деятельности процесс выписки товара, отгрузки и оплаты товара растянут во времени и зависит от многих сотрудников обеих фирм, поэтому и возникают ошибки.*
А вот в розничной торговле изменений задним числом практически не бывает, поскольку оплата, отгрузка товара и его проверка по качеству происходят одновременно, и документы оплаты и отгрузки могут быть объединены.
Рассмотрим пример, который объясняет, почему возможны правки задним числом при оптовой продаже.
Клиент выписал товар и собирается оплачивать товар банковским перечислением. В этом случае возможны следующие ошибки и правки:
• ошибки при погрузке,
• ошибки при доставке,
Работа с константой ДатаЗапретаРедактирования_115
• возврат при отказе клиента принять товар.
Самое простое решение возникших проблем — изменить первичный документ (задним числом) в соответствии с вышеперечисленными ошибками.
Если документ был изменен задним числом, то все документы, которые связаны с этим документом и расположены позже изменяемого документа, должны быть перепроведены. Например, должны быть перепроведены все документы, в которых есть тот же товар, что и в измененном документе, иначе себестоимость будет считаться неверно. В «Торговле» предусматривается специальная процедура восстановления последовательности документов (Операции • Проведение документов • Последовательности).
У процедуры восстановления последовательности проведения документов есть существенный недостаток: она может длиться от нескольких минут до нескольких часов, а это во многих случаях не совсем приемлемо.
Однако есть путь, который позволяет не восстанавливать.последовательность документов. Для этого нужно разрешать правку документов только текущим числом, а переделывать документы, которые были выписаны раньше (до сегодня), сторными операциями. Сторно — это операция, которая аннулирует действие другой операции. Например, была сделана проводка выдачи в подотчет из кассы 100 р.: 71 / 50 / +10000. Тогда сторная операция для нее будет выглядеть так: 71 / 50 / —100-00.
Допустим, следует переделать расходную накладную. Для этого следует выполнить следующие действия:
• оформить возврат товара, полученного по неверной накладной,
• выписать новую накладную (копию старой с изменениями).
Таким образом, проблема «заднего числа» исчезает. Однако и этот метод переделки документов имеет недостаток: иногда невозможно разобраться, кто и зачем делал правки; многие клиенты бывают недовольны появлением лишних возвратных документов в актах сверки. Эти проблемы можно решить через создание документа Переделка, который автоматизирует процесс сторных операций и выписки правленых документов. Строить программные защиты от отрицательных остатков не только неэффективно, но и невозможно. Дело в том, что правка задним числом может и не вызвать появление отрицательных остатков, а ошибка будет. Чем больше остатки в базе не сходятся с реальными, тем больше недоверия к программисту, причем необоснованного.
К сожалению, в реальности запретить работать задним числом практически невозможно. В настоящий момент не выработано приемлемой схемы работы в предыдущем периоде. Можно рекомендовать лишь один способ борьбы с перечисленными выше ошибками: если возникло несоответствие компьютерного остатка реальному, следует проводить инвентаризацию.
Работа с константой ДатаЗапретаРедактирования
Константа ДатаЗапретаРедактирования определяет дату, до которой нельзя производить изменения документов. Одной из проблем, возникающих при работе с этой константой, является то, что пользователь забывает возвращать ее на место (изменил константу на ту дату, где он хотел поработать, и забыл запретить доступ к этому периоду в дальнейшем). Для того чтобы пользователь не забывал возвращать константу на нужную дату, можно изменить процедуру При-НачалеРаботыСистемы так, чтобы она сама устанавливала нужную дату запрета редактирования:
Процедура ПриНачалеРаботыСистемы()
Если не(константа.ДатаЗапретаРедактирования = РабочаяДата() - 1) Тогда константа.ДатаЗапретаРедактирования =» РабочаяДата() - 1;
КонецЕсли,•
КонецПроцедуры
В некоторых случаях нужно запретить не все документы, а только товарные (влияющие на остатки товара). Тогда нужно ввести еще одну константу: Дата-ЗапретаОстатков. Процедура ПриНачалеРаботыСистемы будет выглядеть так:
Процедура ПриНачалеРаботыСистемы()
Если не(константа.ДатаЗапретаРедактирования = РабочаяДата() - 2) Тогда константа.ДатаЗапретаРедактирования = РабочаяДата() - 2;
КонецЕсли;
Если не(константа.ДатаЗапретаОстатков = РабочаяДата () - 1) Тогда
константа.ДатаЗапретаОстатков = РабочаяДата() - 1;
КонецЕсли;
КонецПроцедуры
Но это еще не все. Нужно также запретить запись, проведение, удаление и снятие с проведения документов. В типовой «Торговле» 8.0 во всех документах при проведении вызывается процедура МожноЗаписатьДокумент. В новых конфигурациях эта процедура называется глМожноЗаписатьДокумент. В коде это выглядит так:
Функция МожноЗаписатьДокумент(Конт) Экспорт
Если Конт.ДатаДок <* Константа.ДатаЗапретаРедактирования Тогда Предупреждение("Нельзя записывать документы с датой,
| более ранней, чем Константа
ДатаЗапретаРедактирования!");
Возврат 0;
КонецЕсли;
Если (Конт.Вид() = "РасходнаяНакладная") или \
(Конт.Вид() = "Перемещение") или (Конт.Вид() щ "ПриходнаяНакладная") или (Конт.Вид() = "Списание") Тогда Если Конт.ДатаДок <= Константа.ДатаЗапретаОстатков Тогда Предупреждение("Нельзя записывать документы с датой,
I более ранней, чем Константа ДатаЗапретаОстатков !"); Возврат 0;
КонецЕсли;
КонецЕсли;
Возврат 1;
КонецФункции
С проведением и записью разобрались. Осталось удаление и снятие с проведения. Для удаления и отмены проведения существуют предопределенные процедуры в глобальном модуле ПриОтменеПроведенияДокумента и ПриУдале-нииДокумента. Эти функции выглядят так:
Процедура ПриОтменеПроведенияДокумента(Докум)
Если Докум.ДатаДок <= Константа.ДатаЗапретаРедактирования Тогда
Предупреждение("Нельзя снимать документы с проведения,
выписанные раньше Константы ДатаЗапретаРедактирования!" ); СтатусВозврата (0) ;
Возврат;
КонецЕсли;
Если (Конт.ВидО = "РасходнаяНакладная") или
(Конт.ВидО = "Перемещение") или (Конт.ВидО = "ПриходнаяНакладная") или (Конт.ВидО = "Списание") Тогда Если Конт.ДатаДок <= Константа.ДатаЗапретаОстатков Тогда Предупреждение("Нельзя записывать документы с датой, более ранней, чем Константа ДатаЗапретаОстатков!"); Возврат 0;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ПриУдаленииДокумента(Докум,Режим)
Если Докум.ДатаДок <= Константа.ДатаЗапретаРедактирования Тогда Предупреждение("Нельзя удалять документы, выписанные раньше Константы ДатаЗапретаРедактирования!");
СтатусВозврата(0);
Возврат;
КонецЕсли;
Если (Конт.ВидО = "РасходнаяНакладная") или (Конт.ВидО = "Перемещение") или (Конт.ВидО = "ПриходнаяНакладная") или (Конт.ВидО = "Списание") Тогда Если Конт.ДатаДок <= Константа.ДатаЗапретаОстатков Тогда Предупреждение("Нельзя записывать документы с датой, более ранней, чем Константа ДатаЗапретаОстатков!"); Возврат 0;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
И наконец, нужно не забыть запретить редактировать константу некоторым пользователям, иначе запрет потеряет смысл.
Журнал регистрации

Журнал регистрации отслеживает события, происходящие с базой данных. Например, в журнал заносится факт изменения конфигурации, документов или справочников. Правда, в журнале не фиксируется, какие конкретно изменения были внесены.
По журналу можно определить, какой пользователь изменял (проводил, записывал, открывал) документ, дату и время изменения, но не более того. Если возникает желание определить, кто изменил конкретную позицию в документе, то решить эту проблему можно только анализируя резервные копии базы данных.
Следует отметить, что при использовании распределенной базы данных в каждом филиале находится свой журнал регистрации, и журналы разных точек не консолидируются в общий при обмене данных.
В журнал регистрации по умолчанию заносятся только действия пользователей. Действия обработок или отчетов, влияющих на структуру справочников или документов, в журнал не заносятся. Если программист желает, чтобы обработки, изменяющие документы, оставляли след в журнале регистрации, то в программах следует использовать функцию ЗаписьЖурналаРегистрации.
Резервирование товара
Кроме расходных накладных, которые влияют на остатки товара, операторы могут выписывать счета на оплату, которые влияют не на остатки товара, а на резервы товара.
Обычно счет выписывается на несколько дней, после чего он должен обнулиться, а товар должен сняться с резерва. Проблему ликвидации просроченных счетов можно решить автоматической обработкой, создавая каждый день при первом входе в систему документ СнятиеРезерва, например, следующей процедурой:
Процедура ПриНачалеРаботыСистемыО
Перем Запрос, ТекстЗапроса;
// Держать резерв 3 дня.
ВыбДата = ПолучитьДатуТА();
Дни = ВыбДата - 3;
Запрос = СоздатьОбъект(
мЗапрос
м);
ТекстЗапроса =
”//{{ЗАПРОС(Сформировать)
|Период с ВыбДата по ВыбДата;
|Счет = Регистр. РезервыТоваров.ПоСчету;
I Дат = Регистр.РезервыТоваров.ПоСчету.ДатаДок;
|Ост = Регистр. РезервыТоваров.РезервТовара;
[Функция КонОст = КонОст (Ост);
(Группировка Счет;
|Условие(Дат < Дни);
[”//}}ЗАПРОС;
Док = СоздатьОбъект(мДокумент.СнятиеРезервам);
Док.ВыбратьДокументы(РабочаяДата(),РабочаяДата());
Пока Док.ПолучитьДокумент() = 1 Цикл Если Док.Проведен() = 1 Тогда прервать;
КонецЕсли;
КонецЦикла;
Если Док.Выбран() = 0 Тогда
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат;
КонецЕсли;
Док.Новый() ;
Пока Запрос.Группировка(І) = 1 Цикл Док.НоваяСтрока();
Док.ПоСчету = Запрос.Счет.ТекущийДокумент();
КонецЦикла;
Док.Записать();
Док.Провести();
сообщить("Создан документ снятие резерва №" +
Док.НомерДок + " от " + Док. ДатаДок) ;
КонецЕсли;
КонецПроцедуры
Контроль отрицательных остатков
На рис. 5.1 показаны несколько стадий обработки документа. Цифрами обозначены операции следующих работников:
1 — заказчик,
2 — оператор, выписывающий товарные документы,
3 — работники склада,
4 — работники службы доставки (экспедиторы и т. д.).
 |
Рис. 5.1. Схема движения товара |
В приведенной схеме задействовано четыре человека. Там, где работают люди, возникают проблемы понимания. Даже два человека не всегда правильно понимают друг друга, что же можно сказать о цепочке, составленной из большего количества людей. Выписанный документ на любом этапе обработки может быть скорректирован, что потребует взаимодействия работников всей цепочки, а значит, появятся ошибки.
Изменение документов может привести к ошибкам
Изменение уже проведенных товарных документов (как приходных, так и расходных) может привести к возникновению отрицательных остатков. Рассмотрим пример (рис. 5.2).
 |
Рис. 5.2. Изменение документов задним числом может привести к ошибкам |
1. На складе было 6 единиц товара.
2. Выписали 3 единицы.
3. Вернули 2 единицы.
4. Осталось 5 единиц.
5. После этого произвели правку выписанного количества, заменив 3 на 1. В результате правки остаток на складе будет равным 7.
По какой причине была произведена правка, была ли она санкционирована или нет, не известно.
Этот пример показывает, как могут появляться товары в базе данных, которых на самом деле нет. Оператор, выписывающий товар, ориентируется на информацию базы данных, а не на реальные остатки склада.
Возможны несколько вариантов возникновения отрицательных остатков. Например, оператор выписывает 7 единиц товара, в то время как на складе их только 5. Документ правится с 7 на 5, и в базе остается 2 единицы товара, которые могут в следующий раз опять выписать. Возникновение отрицательных остатков возможно и при удалении документа возврата.
Какие есть варианты решения проблемы отрицательных остатков?
• Запретить проводить документы задним числом, что приведет к невозможности отдать покупателю документ с тем же номером, но другим количеством.
• Переделывать документы путем сторнирования неправильно выписанных. На расходную накладную выписывается сторная накладная (расходная накладная с минусами), а потом вновь выписывается правильный документ. В этом случае возникают лишние документы, которые в одних отчетах следует учитывать, а в других — нет.
• Периодически восстанавливать последовательность документов. Таким образом можно будет отловить все возникшие в ходе работы минусы. Однако если ошибка была совершена, а минусов не возникло, то данным способом проблему не решить.
• Проведение ревизий на складе. В этом случае проблема выходит из сферы компетенции программиста. Конечно, проведение инвентаризации тормозит работу предприятия, зато в ходе инвентаризации можно определить сумму недостачи и высчитать ее из материально ответственных лиц.
Таким образом, лучшим решением проблемы возникновения нереальных остатков будет проведение ревизии.
Механизмы обновления программ
121
Из чего состоит база данных?
База данных состоит из следующих файлов:
• 1CY7.DD — файл структуры базы данных,
• 1CV7.MD — файл конфигурации,
• *.dbf — файл базы данных,
• *.cdx — индексный файл,
• *.сШ — дополнительные функции.
Если уничтожить файлы *. cdx, то при следующем запуске программы они будут восстановлены без потери каких-либо данных.
Если уничтожить файлы *.сШ, то некоторые функции, например работа с Интернетом, перестанут работать.
Если уничтожить файлы *.dbf, то при следующем запуске системы программа восстановит их, однако все данные окажутся потерянными.
Если удалить файлы 1Cv7.DD или 1Cv7.MD, то программа перестанет работать.
Если удалить каталог userdef, то программа забудет про пользователей и их пароли.
Если удалить каталог syslog, то программа очистит журнал работы с программой (кто когда заходил, какие документы создавал или уничтожал).
Если удалить каталог extforms, то программа забудет про внешние подключаемые формы и меню Сервис • Дополнительные возможности окажется пусто.
Релизы и редакции 1С-программ
Срок жизни типовой редакции (то есть той конфигурации, которая поддерживается фирмой «1С») составляет 1-2 года. За это время фирма «1С» выпускает несколько десятков релизов.
Релиз — небольшая модификация конфигурации, связанная с исправлением имеющихся ошибок, выходом новых форм документов и отчетов, небольшими изменениями в законодательстве.
Редакция подразумевает коренное изменение структуры и методологии программы. То есть необходимость в новой редакции возникает, когда выявленные ошибки или веяние времени делают невозможной реализацию новых идей старыми средствами. Появление новых редакций связано с существенными изменениями в законодательстве (изменение Плана счетов, введение налогового учета) и потребностью коренных изменений в структуре данных и выполняемых функций.
Механизмы обновления программ
При переходе от релиза к релизу применяются три способа обновления конфигурации: «Загрузка измененной конфигурации», «Объединение конфигураций» и перетаскивание объектов из одной конфигурации в другую операциями Drag-and-Drop.
• Загрузка измененной конфигурации применяется, если последующая конфигурация является потойком изменяемой конфигурации.

То есть конфигурация была скопирована, изменена и загружена обратно. Если обе копии конфигурации подверглись изменениям, то при попытке загрузить одну из них в другую система выдаст предупреждение: «Выбранный файл конфигурации не является потомком данного файла. При реструктуризации может произойти разрушение данных».
• Объединение конфигураций применяется, если требуется объединить две разные конфигурации (когда-то бывшие одной). При объединении конфигураций можно отдать приоритет либо текущей, либо загружаемой конфигурации и выбрать режим замещения или объединения объектов.
• Для перетаскивания объектов из одной конфигурации в другую следует открыть рядом Конфигураторы двух баз и мышью перетащить нужные объекты из одного Конфигуратора в другой. Также можно использовать для этих целей буфер обмена: объект копируется в одном месте, а затем вставляется в другом.
При переходе от редакции к редакции проектируются специальные конверторы, которые осуществляют перенос данных между двумя информационными базами, например в формате XML.
Как перенести базу данных за пределы офиса заказчика?
В зависимости от сложности задач программист может взять «на вынос» или всю базу данных, или только самые необходимые для работы файлы.
Если вы хотите взять базу данных в минимальной конфигурации, например для работы в офисе, то следует скопировать файлы 1Cv7.DD или 1Cv7.MD. Для запуска базы данных следует запустить Конфигуратор, указав путь к каталогу, в котором находятся эти файлы.
Если требуется взять всю базу данных, то следует заархивировать весь каталог базы данных или воспользоваться Конфигуратором (Администрирование • Сохранение данных).
Кстати, вынося базу данных за пределы офиса заказчика, помните, что вы берете на себя ответственность за попадание базы данных в третьи руки.
Как вносить изменения в типовую конфигурацию?
Первое правило — не торопитесь писать программы по первой просьбе клиента. Многие проблемы у пользователя возникают из-за незнания всех возможно-
Сохранение базы данных
123
стей типовой конфигурации. Возможно, изменения, которые просит сделать заказчик, противоречат законодательству или решаются иными, чем он предложил, способами. Выясните, что пользователь сэкономит в результате внедрения программы. Заставьте клиента убедить вас в необходимости внесения изменений. Конечно, этот совет может противоречить принципам, по которым работает программист: раз позвали, значит, это нужно. Однако, если вы будете делать только необходимые изменения, вас будут знать и рекомендовать не как ремесленника, а как толкового специалиста.
Если же все-таки пользователь настаивает на внесении изменений, то попросите сформулировать изменения в письменном виде. Задание следует как можно больше детализировать: если вам написали проводки документа, то следует уточнить аналитику проводок; если попросили добавить документ, следует уточнить реквизиты документа, возможные движения регистров, проводок и печатную форму, конечную цель документа. Кстати, создание нового документа не всегда оправдано. Перед созданием в Конфигураторе нового документа подумайте, сможете ли вы решить задачу обработкой или отчетом. Если документ не содержит печатной формы, не является первичным документом (таким как приходный кассовый ордер или накладная) и не должен использоваться в отчетах (например, в реестре документов), то использование внешней обработки более предпочтительно по сравнению с созданием нового документа.
Для начала изменения следует производить в копии базы данных. Все изменения надо тщательно документировать. Изменяемый код не удаляйте, а помечайте как комментарий. В комментариях также следует ставить дату изменений, фамилию программиста и причину внесения изменений. Изменения также можно вносить в описание конфигурации или в описание документов или внешних отчетов.
Перед изменением программы реальной базы данных работоспособность внесенных изменений должна проверяться пользователем в копии. Только конечный пользователь может определить правильность работы программы.
После проверки работоспособности программы ее можно переносить в реальную базу данных. Для этого следует зайти в Конфигуратор базы данных и сделать резервное копирование с указанием даты и времени сохранения, и лишь после этого выполнить загрузку измененной конфигурации.
Может быть, описанная выше схема может показаться долгой и нудной, но поверьте, что она выверена, как устав караульной службы в армии. Внести изменения легко, а исправить возможные ошибки бывает почти невозможно. В случае, если программа не была проверена или нет возможности откатить систему на момент «до вмешательства программиста», то винить, кроме как программиста, больше некого.
Сохранение базы данных
Сохранение базы данных делается механизмами «1С» (команда Конфигуратор • Администрирование • Сохранить данные). По умолчанию сохраняются только файлы самой конфигурации, данные и список пользователей.
Журнал регистрации и каталог ExtForms при сохранении базы данных не сохраняются. Для того чтобы файлы из каталога ExtForms сохранялись, следует добавить в файл 1cv7file.lst, который находится в каталоге .AProgram Files\1Cv77\BIN, строку Uextforms\* . *.
Для сохранения журнала регистрации определен специальный механизм в самом журнале (команда Монитор • Монитор • Архивирование журнала).
Проблемы, возникающие при открытии базы данных
Прежде всего нужно определить, какие сообщения выдает программа. Может быть, программа требует загрузиться в монопольном режиме или сообщает, что каталог пользователя занят, то есть кто-то уже зашел в программу под выбранным именем.
Если программа ничего не говорит, тогда следует проверить, запускается ли Конфигуратор. Конфигуратор может не запускаться по нескольким причинам.
1. База находится на сетевом ресурсе, доступном только для чтения. Файлы «1С» должны быть доступны для записи, так как для начала программа должна сделать запись в журнал регистрации и обновить индексные файлы.
2. База находится на сетевом ресурсе, а сетевой ресурс позволяет открыть по сети ограниченное количество файлов. Проверить это можно, закрыв программу у какого-то пользователя и открыв у проблемного. Данная проблема проявляется на компьютерах с Windows 98.
3. Поврежден файл журнала регистрации 1cv7.mlg (файл находится в каталоге syslog). Нужно его удалить или разобраться в структуре записи и устранить неисправность вручную.
4. Если база копировалась с компакт-диска, возможно, вы забыли снять с файлов атрибут «только чтение».
5. Если вы склонны считать, что проблема в работоспособности сети, скопируйте базу данных на локальный компьютер.
6. На диске должно быть не менее 200 Мбайт свободной памяти. Для комфортной работы лучше, чтобы у вас было хотя бы 500 Мбайт.
Иногда в случае непонятных сбоев в работе программы решением может быть копирование базы данных в другой каталог или перезагрузка компьютера.
Если и такие методы не устраняют проблемы, проверьте загруженные компоненты. Если вы работаете в «Торговле», то должен быть загружен оперативный учет, если в «Бухгалтерии» — бухгалтерский и т. д. Если у вас возникли проблемы с загрузкой компонентов, то либо ваша программа взломана (причем неправильно), либо что-то не так с ключом (не доступен по сети, нерабочий разъем и т. д.) и требуется переустановка программы или устранение проблем, связанных с ключом.
Поиск причин возникновения ошибок_125
Лечение базы данных
В механизмах «1С» предусмотрена специальная процедура тестирования и исправления ошибок, возникающих, например, когда в момент проведения документа компьютер с базой данных зависает. Часть регистров в этом случае может измениться, а часть — нет. Чтобы исправить ошибки, следует запустить в Конфигураторе в меню Администрирование команду Исправление и тестирование БД.
Однако возможны случаи, когда тестирование не помогает. Тогда следует сделать копию файлов 1 Cv7.DD и 1 CV7.MD в другой каталог и загрузить из этого каталога Конфигуратор, а затем и базу. Если запустить программу из каталога, где находятся файлы 1Cv7.DD и 1Cv7.MD, но нет DBF-файлов, программа создаст структуру пустых DBF-файлов.
Далее следует протестировать базу (Конфигуратор • Администрирование • Тестирование и исправление ИБ). Если программа после этого запускается (то есть файлы конфигурации 1Cv7.MD и 1Cv7.DD работают без сбоев), то следует вручную анализировать базу данных. Для того чтобы определить, какой из DBF-файлов является источником сбоя, следует порциями копировать файлы из сбойной базы во вновь созданную базу. Каждый раз после копирования следует перезапускать базу данных. Допустим, что в результате проведенных действий был найден сбойный файл, например dh1160.dbf. Попробуйте скопировать этот файл из сохраненной ранее базы данных.
Если база данных не запускается на этапе переноса файлов 1 CV7.DD и 1 Cv7.MD, то это значит, что виноват один из этих файлов. Для выявления источника сбоя * следует последовательно удалять из конфигурации объекты: сначала документы, затем справочники, журналы и т. д.
Поиск причин возникновения ошибок
Ошибки могут быть разными: мнимыми и реальными, связанными с незнанием системы, преднамеренными, случайными, систематическими и разовыми; ошибками пользователя, ошибками программиста, ошибками операционной системы или разработчиков.
Когда бухгалтер заявляет вам: «Я знаю, что этот клиент ничего не должен, а ведомость по взаиморасчетам показывает наличие долга. Пожалуйста, исправьте программу», — такое утверждение нельзя просто принимать на веру. Оно свидетельствует не более чем о некомпетентности бухгалтера. Цифры не могут попасть в базу данных сами по себе. Правильность результатов можно проверить карточкой счета или другим отчетом, который выдает ссылки на первичные документы.
Я бы советовал подходить ко всем стандартным отчетам (карточка счета, анализ счета, оборотно-сальдовая ведомость PI др.) с той точки зрения, что отчеты работают верно. Этот совет будет полезен программисту-новичку, который прежде всего ищет ошибки в своей программе, а не там, где они обычно бывают.
Один из вариантов поиска ошибок состоит в сверке компьютерных отчетов с их бумажными версиями, сделанными некоторое время назад. Кстати, вместо бумажных копий можно сохранять отчеты в XLS- или MXL-формате.
Существует класс ошибок, когда остатки на конец периода не совпадают с остатками на начало периода. Например, сальдо конечное по счету «Касса» за 01.12.03 не идет с сальдо начальным по счету «Касса» за 02.12.03. В этом случае требуется протестировать базу данных. Для этого следует выполнить следующие действия:
1. Сохраните базу данных.
2. Протестируйте ее, выполнив команду Конфигуратор • Администрирование • Тестирование и исправление БД.
Если тестирование не изменило ситуацию, то можно попробовать изменить версию программы, например заменить версию 20 на 21 (не следует путать версию 1С-программы и версию конфигурации). Для того чтобы определить версию 1С-программы, следует в Конфигураторе выбрать пункт меню Помощь • О программе. Версия 1С-программы будет указана в скобках в правом верхнем углу, например: 7-70-0020.
Поиск ошибок может производиться сравнением копий баз данных, сохраненных в разные дни. Для этого следует наладить регулярное архивирование базы данных. Лучше всего базы данных за различные дни архивировать на компактдиски.
Проблемы в распределенных базах данных
Компонента «Распределенная Информационная база» позволяет синхронизировать базы данных, не объединенные одной локальной сетью. Изменения, сделанные на одной из баз через систему обмена данными с центральной базой, через некоторое время попадут в другие распределенные базы данных.
Важно помнить, что при использовании распределенной базы приоритетом обладает центральная база. Поэтому, если документ был одновременно изменен на периферийной базе данных и, допустим, перепроверен в центральной, то изменения, сделанные на периферийной базе данных, будут вытеснены изменениями, сделанными в центральной базе.
Чтобы избежать неприятных сюрпризов, следует запретить всем, кроме центра, изменять некоторые справочники, например справочник Номенклатура.
Однако такой способ решения проблемы не годится для справочника Контрагенты. Проблему двойных клиентов можно решить установкой реквизиту ИНН свойств Отбор по реквизиту и Сортировка. В этом случае поиск клиента можно производить не по наименованию (которое может иметь несколько вариантов: «ООО Прогресс», «Прогресс», «Прогресс ООО»), а по уникальному для каждого предприятия коду — ИНН.
При работе с распределенной базой следует внимательно следить за префиксами справочников и документов. Если после нескольких обновлений появились карточки товаров или расходные накладные с одинаковыми номерами, это значит, что алгоритм назначения кодов справочников не работает. Для назначения номера используется команда УстановитьНовыйНомер (Префикс).
Переход на новые версии программы_127
Переход на новые версии программы
Не спешите менять версии программы торгового учета (речь идет только о программах торгового учета, а не о «Бухгалтерии»). Новая версия лучше, удобнее, но обычно требует больших вычислительных ресурсов. Я бы советовал выждать полгода или год после того, как появится новая версия программы, и лишь после этого переходить на нее.
Содержание раздела