После использования 1с Предприятия 1 год, вылезла такая ошибка (и не дает ничего проводить): Ошибка СУБД: Превышен максимально допустимый размер внутреннего файла 'D:\Basa _1c8.2/1Cv8.1CD' по причине: Превышен максимально допустимый размер внутреннего файла 'D:\Basa _1c8.2/1Cv8.1CD' Поле долгих прогулок по интернету я выяснил: 1) Используя программу Tool_1CD, нашел внутренную таблицу, которая 4Гб (размер базы 5,17ГБ). 2) Проводил "Тестирование и исправление" со всеми галочками. Размер таблицы не уменьшается. 3) Развернул базу на другом компе, удалил 2 накладных. О чудо - зармер таблицы умешился на 2Мб.
Суть вопроса: что могло разогнать так эту внутреннюю таблицу, ведь удаление всех документов не выход? Может кто то сталкивался с таким? И как уменшить эту таблицу?
Некоторая дополнительная информация: База - файловая, переход на SQL пока не планируется. Платформа 1С:Предприятие 8.2 (8.2.16.368)
Есть два привнтера: принтер этикеток Zebra TLP 2824 и принтер, на котором пачатаются накладные Epson (матричный). Проблема в том, что когда отправил накладну на печать и нужно на печатать этикетки, то они сначала лезут на епсон, а не на зебру. Приходится настраивать параметры страницы через таблицу в 1с. Что нужно зделать, что бы 1с понимала, что этикетки нужно послать на зебру, а накладую на эпсон. З.Ы. принтера локальные
есть 1с 7,7 сетевая версия 27 релиз 3 компа: один сервер, 2 подключаются к нему Когда работаеш за сервером и подключаешся к базе по сети локальным компом, то локальный работает в набагато медленее (примерно в 3, 4 раза) чем нужно. А когда монопольно с локального компа, то скорость норм. на всякий случай кидаю характеристики компов сервер: атлон ІІ х4 3,1 GHz 4 ГБ ОЗУ локальный селерон 2,8 GHz 1 ГБ ОЗУ Подскажите найти решение проблемы в скорости на локальных компах
незнаю. Что то при обьединении конфирурации нет отчета Вот код точета. Должно работать, когда поля которые нужно заполнять в отчете пустые [Здесь было что то не по правилам]
// =============================== // ОПИСАНИЕ МОДУЛЬНЫХ ПЕРЕМЕННЫХ
Перем СписокПодбора,СправочникПодбора; // СписокПодбора - список, в который отбираются элементы // (используется для множественных фильтров) // СправочникПодбора - строка - идентификатор справочника, из которого осуществляется отбор // (используется для множественных фильтров)
Перем СписокТоваров; // список товаров, удовлетворяющих фильтру по категориям Перем СписокКонтрагентов; // список контрагентов, удовлетворяющих фильтру по категориям
Перем ВП; // валюта печати
Перем Т; Перем Обновить; Перем Расшифровка; // используются для стандартного механизма кнопок "Обновить" и "Настройка"
// =============================== // "СЛУЖЕБНЫЕ" ПРОЦЕДУРЫ И ФУНКЦИИ
// =============================== // Название: ИзмЦена // Параметры: // НЕТ // Возвращаемое значение: // НЕТ // Вызывается при изменении флажков "с учетной ценой" и "с розничной ценой": // Наименование,. // Описание: // Изменяет видимость этих флажков Процедура ИзмЦена() Если (СРозничнымиЦенами = 0) и (СУчетнымиЦенами = 0) Тогда СРозничнымиЦенами = 1; КонецЕсли; КонецПроцедуры
// =============================== // Инвертирует список с пометками Процедура Инвертировать() Для а=1 По СтатусыПартий.РазмерСписка() Цикл Если СтатусыПартий.Пометка(а) = 1 Тогда СтатусыПартий.Пометка(а,0); Иначе СтатусыПартий.Пометка(а,1); КонецЕсли; КонецЦикла; КонецПроцедуры
// =============================== // Помечает все элементы списка Процедура ВыделитьВсе() Для а=1 По СтатусыПартий.РазмерСписка() Цикл СтатусыПартий.Пометка(а,1); КонецЦикла; КонецПроцедуры
// =============================== // Название: ИзмФирма // Параметры: // НЕТ // Возвращаемое значение: // НЕТ // Вызывается при изменении флажка "только итоги": // Наименование,. // Описание: // Изменяет значение ВыбВалюта при изменении значения ВыбФирма Процедура ИзмФирма(Фрм) Если Фрм = 0 Тогда ВыбФирма = 0; КонецЕсли; КонецПроцедуры
// =============================== // Название: МножественныйФильтрЗадан // Параметры: // НЕТ // Возвращаемое значение: // 0, если множественный фильтр задан // 1, иначе // Вызывается из формул элементов диалога: // Наименование,. // Описание: Функция МножественныйФильтрЗадан() Если МФВыбТовары.РазмерСписка()>0 Тогда Возврат 1; КонецЕсли; Если МФКатТоваров.РазмерСписка()>0 Тогда Возврат 1; КонецЕсли; Если МФВыбКонтрагенты.РазмерСписка()>0 Тогда Возврат 1; КонецЕсли; Если МФКатКонтрагентов.РазмерСписка()>0 Тогда Возврат 1; КонецЕсли; Возврат 0; КонецФункции // МножественныйФильтрЗадан
// =============================== // Название: ПерерисовкаНазванийЗакладок // Параметры: // НЕТ // Возвращаемое значение: // Вызывается из формул элементов диалога: // Наименование,. // Описание: // Добавляет "(!)" в заголовок закладки с множественным фильтром, когда этот фильтр задан Функция ПерерисовкаНазванийЗакладок() Форма.Закладки.УстановитьЗначение(2,?(МножественныйФильтрЗадан()=1,"(!) ","")+"Множественный фильтр"); КонецФункции // ПерерисовкаНазванийЗакладок
// =============================== // Название: ВывестиДокументы // Параметры: // Запрос - запрос, по которому выводится отчет // Т - формируемая таблица // Возвращаемое значение: // НЕТ // Вызывается из формул элементов диалога: // Наименование,. // Описание: // вывод детализации по всем документам Процедура ВывестиДокументы(Запрос,Т) Перем ПечКонтрагент;
Если ДеталПоВсемДокументам=0 Тогда Возврат; КонецЕсли;
Пока Запрос.Группировка("Докум") = 1 Цикл Док=Запрос.Докум; ВидДок=Док.Вид(); Если Док.Выбран()=0 Тогда // пропускаем непонятные документы Продолжить; КонецЕсли;
Если (Запрос.ПрихПродСтоимость+Запрос.РасхПродСтоимость)<>0 Тогда Если (Запрос.ПрихОстатокТовара+Запрос.РасхОстатокТовара)<>0 Тогда // цена товара для прихода и расхода может отличаться ЦенаТовараПриход = ?(ПустоеЗначение(Запрос.ПрихОстатокТовара)=1,0,Запрос.ПрихПродСтоимость/Запрос.ПрихОстатокТовара); ЦенаТовараРасход = ?(ПустоеЗначение(Запрос.РасхОстатокТовара)=1,0,Запрос.РасхПродСтоимость/Запрос.РасхОстатокТовара); СебестТовара =?(ПустоеЗначение(ВыбФирма)=1, (Запрос.ПрихСтоимость+Запрос.РасхСтоимость+Запрос.ПрихНДС+Запрос.РасхНДС) /(Запрос.ПрихОстатокТовара+Запрос.РасхОстатокТовара), (Запрос.ПрихСтоимость+Запрос.РасхСтоимость) /(Запрос.ПрихОстатокТовара+Запрос.РасхОстатокТовара)); Иначе ЦенаТовара = БалансТовараСтоимостьРозн/БалансТовара; ЦенаТовараПриход = ЦенаТовара; ЦенаТовараРасход = ЦенаТовара; СебестТовара = БалансТовараСтоимость/БалансТовара; КонецЕсли; КонецЕсли;
Если ПустоеЗначение(ВыбФирма)=1 Тогда // пересчитаем цены из валюты учета в валюту печати ЦенаТовараПриход = глПересчет(ЦенаТовараПриход,Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2); ЦенаТовараРасход = глПересчет(ЦенаТовараРасход,Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2); СебестТовара = глПересчет(СебестТовара,Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2); КонецЕсли;
Если СУчетнымиЦенами = 1 Тогда ПечБалансТовара = ПечБалансТовара + РазделительСтрок + глФРМ(БалансТовараСтоимость,ВП,1); КонецЕсли;
Если СРозничнымиЦенами = 1 Тогда ПечБалансТовара = ПечБалансТовара + РазделительСтрок + глФРМ(БалансТовараСтоимостьРозн,ВП,1); КонецЕсли;
Если (Запрос.РасхОстатокТовара<>0) или (Запрос.РасхСтоимость<>0) или (Запрос.РасхПродСтоимость<>0) Тогда Приращение = Запрос.РасхОстатокТовара; ПечПриращение = глФРМКоличествоВОтчете(Приращение,Запрос.Товар); ПриращениеСтоимость =?(ПустоеЗначение(ВыбФирма)=1,глПересчет(Запрос.РасхСтоимость+Запрос.РасхНДС,Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2),Запрос.РасхСтоимость); ПриращениеСтоимостьРозн =?(ПустоеЗначение(ВыбФирма)=1,глПересчет(Запрос.РасхПродСтоимость,Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2),Запрос.РасхПродСтоимость); Если СУчетнымиЦенами = 1 Тогда ПечПриращение = ПечПриращение + РазделительСтрок + глФРМ(ПриращениеСтоимость, ВП,1); КонецЕсли; Если СРозничнымиЦенами = 1 Тогда ПечПриращение = ПечПриращение + РазделительСтрок + глФРМ(ПриращениеСтоимостьРозн, ВП,1); КонецЕсли; Т.ВывестиСекцию("Расход"); КонецЕсли; Если (Запрос.ПрихОстатокТовара<>0) или (Запрос.ПрихСтоимость<>0) или (Запрос.ПрихПродСтоимость<>0) Тогда Приращение = Запрос.ПрихОстатокТовара; ПечПриращение = глФРМКоличествоВОтчете(Приращение,Запрос.Товар); ПриращениеСтоимость =?(ПустоеЗначение(ВыбФирма)=1,глПересчет(Запрос.ПрихСтоимость+Запрос.ПрихНДС,Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2),Запрос.ПрихСтоимость); ПриращениеСтоимостьРозн =?(ПустоеЗначение(ВыбФирма)=1,глПересчет(Запрос.ПрихПродСтоимость,Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2),Запрос.ПрихПродСтоимость); Если СУчетнымиЦенами = 1 Тогда ПечПриращение = ПечПриращение + РазделительСтрок + глФРМ(ПриращениеСтоимость, ВП,1); КонецЕсли; Если СРозничнымиЦенами = 1 Тогда ПечПриращение = ПечПриращение + РазделительСтрок + глФРМ(ПриращениеСтоимостьРозн, ВП,1); КонецЕсли; Т.ВывестиСекцию("Приход"); КонецЕсли; глОживить(1); КонецЦикла; КонецПроцедуры // ВывестиДокументы
// =============================== Функция ПечСуммы(ПечСебестоимость,ПечРозничная,РазделительВНачале=1) Рез = ""; Если СУчетнымиЦенами = 1 Тогда Рез = Рез + ?(РазделительВНачале=1,РазделительСтрок,"") + ПечСебестоимость; КонецЕсли; Если СРозничнымиЦенами = 1 Тогда Рез = Рез + ?(((РазделительВНачале=1) и (СУчетнымиЦенами = 0)) или (СУчетнымиЦенами = 1),РазделительСтрок,"") + ПечРозничная; КонецЕсли; Возврат Рез; КонецФункции //
// =============================== // Название: ВывестиНакладные // Параметры: // Запрос - запрос, по которому выводится отчет // Т - формируемая таблица // Возвращаемое значение: // НЕТ // Вызывается из формул элементов диалога: // Наименование,. // Описание: // вывод детализации по партиообразующим документам Процедура ВывестиНакладные(Запрос,Т)
// теперь еще раз пройдемся по ПрихДокумент и пропишем все основательно Если ДеталПоНакладным=0 Тогда ВывестиДокументы(Запрос,Т); Возврат; КонецЕсли;
Пока Запрос.Группировка("Статус") = 1 Цикл Пока Запрос.Группировка("Поставщик") = 1 Цикл
Пока Запрос.Группировка("ПрихДокумент") = 1 Цикл
Док=Запрос.ПрихДокумент;
// В некоторых документах есть движения и прихрод и расход // Рассчитаем приход и расход товара с учетом этой особенности БалансТовара = Запрос.ПрихОстатокТовара - Запрос.РасхОстатокТовара;
Если ПустоеЗначение(Док)=0 Тогда ПечНомерДок=глДокументВОтчете(Док,"с номером")+"; "+СокрП(Запрос.Поставщик); Иначе ПечНомерДок="средневзвешенная цена"; КонецЕсли;
Пока Запрос.Группировка("Товар") = 1 Цикл ТекТовар=Запрос.Товар; Если ТекТовар.Выбран()=0 Тогда Продолжить; КонецЕсли;
// В некоторых документах есть движения и прихрод и расход // Рассчитаем приход и расход товара с учетом этой особенности БалансТовара = Запрос.ПрихОстатокТовара - Запрос.РасхОстатокТовара; БалансТовараСтоимость = ?(ПустоеЗначение(ВыбФирма)=1 ,глПересчет(Запрос.ПрихСтоимость-Запрос.РасхСтоимость+Запрос.ПрихНДС-Запрос.РасхНДС, Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2) ,Запрос.ПрихСтоимость-Запрос.РасхСтоимость); БалансТовараСтоимостьРозн = ?(ПустоеЗначение(ВыбФирма)=1 ,глПересчет(Запрос.ПрихПродСтоимость - Запрос.РасхПродСтоимость, Запрос.Товар.ВалютаУчета,Дата2,ВП,Дата2) ,Запрос.ПрихПродСтоимость - Запрос.РасхПродСтоимость);
// =============================== // Название: РаботаСоСписком // Параметры: // Режим - строка, принимающая 4 значения: // "Добавить" // "ДобавитьНесколько" // "Удалить" // "УдалитьВсе" // Список - список значений, в котором задается множественный фильтр // ТипСправочника - строка, содержащая идентификатор справочнника, по // которому осуществляется мноджественный фильтр // Возвращаемое значение: // НЕТ // Вызывается из формул элементов диалога: // кнопок работы с множественными фильтрами ("...",".....","X","XX") // Наименование,. // Описание: // процедура предназначена для добавления и удаления элементов // из множественных фильтров Процедура РаботаСоСписком(Режим,Список,ТипСправочника) Перем ТекПоз; Перем ТекЭлемент; Перем Фрм;
ТекПоз = Список.ТекущаяСтрока(); Если ТекПоз>0 Тогда ТекЭлемент=Список.ПолучитьЗначение(ТекПоз); КонецЕсли;
Если Режим="Добавить" Тогда // добавляем в список один элемент СписокПодбора = Список; СправочникПодбора = ВРег(ТипСправочника); // открываем окно подбора ОткрытьПодбор("Справочник."+ТипСправочника,,Фрм,0,ТекЭлемент); Фрм.ВыборГруппы(1);
ИначеЕсли Режим="ДобавитьНесколько" Тогда // добавляем в список несколько элементов СписокПодбора = Список; СправочникПодбора = ВРег(ТипСправочника); // открываем окно подбора ОткрытьПодбор("Справочник."+ТипСправочника,,Фрм,1,ТекЭлемент); Фрм.ВыборГруппы(1);
ИначеЕсли Режим="УдалитьВсе" Тогда // удаляем все элементы из списка Список.УдалитьВсе();
ИначеЕсли Режим="Удалить" Тогда // удаляем из списка один элемент Если ТекПоз>0 Тогда Список.УдалитьЗначение(ТекПоз); КонецЕсли; КонецЕсли;
КонецПроцедуры // работа со списком
// =============================== // Название: Сформировать // Параметры: // ЗакрытьЭкран - флаг того, что после формирования отчета надо закрыть экран // Возвращаемое значение: // НЕТ // Вызывается из формул элементов диалога: // кнопки "Сформировать" и "ОК" // Наименование,. // Описание: // запускает отчет Процедура Сформировать(ЗакрытьЭкран=0)
глПроверкаДаты(Дата1,Дата2);
// Здесь формируется отчет, который использует регистры, критичные к // последовательности проведения документов // поэтому сравним установленные даты периода формируемого отчета с ГП глПроверкаАктуальностиОтчета(Дата1,Дата2,"Общ",ВыбФирма,0);
ПечФорма = "Таблица"; Язык = глЯзык(ПечФорма); глУстПропись(Гривня,Язык);
Если (ТипЗначенияСтр(Т) <> "Таблица") ИЛИ (Обновить = 0) Тогда Т = СоздатьОбъект("Таблица"); Иначе Т.Очистить(); КонецЕсли; Т.ИсходнаяТаблица(ПечФорма);
Если глФильтрПоСправочнику("Номенклатура", ВыбТовар,МФВыбТовары,КатТоваров,МФКатТоваров,ТипМФКатТоваров.ТекущаяСтрока(), СписокТоваров, ТекстЗапроса,Заг,Язык, "Товар,ВыбТовар,МФВыбТовары,СписокТоваров,товара,товару,товарам,товару,товара х")=0 Тогда Возврат; КонецЕсли;
Если глФильтрПоСправочнику("Контрагенты", ВыбКонтрагент,МФВыбКонтрагенты,КатКонтрагентов,МФКатКонтрагентов,ТипМФКатКо нтрагентов.ТекущаяСтрока(), СписокКонтрагентов, ТекстЗапроса,Заг,Язык, "Поставщик,ВыбКонтрагент,МФВыбКонтрагенты,СписокКонтрагентов,поставщика,поста вщику,поставщикам,постачальнику,постачальниках")=0 Тогда Возврат; КонецЕсли;
Заг=Заг+?(Язык="у","По статусах партій:Товари у роздрібній торгівлі. ","По статусам партий: Товар в рознице.");
// отфильтруем по статусам СписокСтатусов = СоздатьОбъект("СписокЗначений"); Для Инд=1 По СтатусыПартий.РазмерСписка() Цикл Если СтатусыПартий.Пометка(Инд) = 1 Тогда Стр = ""; СписокСтатусов.ДобавитьЗначение(СтатусыПартий.ПолучитьЗначение(Инд,Стр),Стр); КонецЕсли; КонецЦикла;
Если СписокСтатусов.РазмерСписка() > 0 Тогда ТекстЗапроса = ТекстЗапроса +"Условие(Статус в СписокСтатусов);"; КонецЕсли;
Если СписокСтатусов.РазмерСписка() = СтатусыПартий.РазмерСписка() Тогда Заг=Заг+?(Язык="у"," По всіх статусах партій. "," По всем статусам партий. "); Иначе Заг=Заг+?(Язык="у"," По статусах партій:"," По статусам партий:"); Для а=1 По СписокСтатусов.РазмерСписка() Цикл Заг = Заг + " " + глСтатусПартииТекстом(СписокСтатусов.ПолучитьЗначение(а), 1, Язык)+","; КонецЦикла; Заг = Лев(Заг,СтрДлина(Заг)-1)+"."; КонецЕсли;
Если СУчетнымиЦенами = 1 Тогда Заг=Заг+?(Язык="у","З обліковими цінами. ","С учетными ценами."); КонецЕсли;
Если СРозничнымиЦенами=1 Тогда Заг=Заг+?(Язык="у","З роздрібними цінами. ","С розничными ценами."); КонецЕсли;
// Создание Таблицы для выходного отчета
Если Запрос.Выполнить(ТекстЗапроса)=0 тогда Предупреждение("Запрос по Партиям не выполнился!!!"); Возврат; КонецЕсли;
// теперь в запросе собраны все Документы по партиям глЧислоСтрок=0;
ПечНДСШапка = ?(ПустоеЗначение(ВыбФирма)=1,?(Язык="у"," з ПДВ"," с НДС"),?(Язык="у"," без ПДВ"," без НДС")); Если (ДеталПоНакладным=0)И(ДеталПоВсемДокументам=0) Тогда ПечШапкаТовар = "Товар"; Т.ВывестиСекцию("ШапкаТов"); Иначе ПечШапкаДок = "Товар"; Если ДеталПоНакладным = 1 Тогда ПечШапкаДок = ПечШапкаДок+"/"+?(Язык="у","Партія","Партия"); КонецЕсли; Если ДеталПоВсемДокументам = 1 Тогда ПечШапкаДок = ПечШапкаДок+"/"+"Документ"; КонецЕсли; Т.ВывестиСекцию("ШапкаДок"); КонецЕсли; глОживить(4);
// выводим детализацию по товарам
Если ВыбФирма.Выбран()=0 Тогда ВП=Доллары; Иначе ВП=Гривня; КонецЕсли;
ВывестиТовары(Запрос,Т);
//Вызов выходного отчета в окно просмотра и редактирования. Т.Защита(Константа.ФлагЗащитыТаблиц); Т.ТолькоПросмотр(1); Т.Опции(0,0,6,0,"ПарамПечатиУпрПартииТоваров","РазмОкнаУпрПартииТоваров"); Т.ОбластьПечати(2); Т.Показать("Отчет о партиях товаров","");
Если (Обновить = 2)ИЛИ(ЗакрытьЭкран=1) Тогда СтрокаДействийФормы = "#Закрыть"; КонецЕсли;
КонецПроцедуры // Сформировать
// =============================== // ПРОЦЕДУРЫ И ФУНКЦИИ, ВЫЗЫВАЕМЫЕ ИЗ ФОРМУЛ ЭЛЕМЕНТОВ ДИАЛОГА
Запрошиваю отчет Розница, далее выставляю нужные даные -> сформировать, и выкакивает ошибка такого типа
Если Запрос.Выполнить(ТекстЗапроса)=0 тогда Отчет.Розница.Форма.Модуль(719)}: Функция КонСтоимость = КонОст( <<?>> Стоимость); Запрос[18] : Переменная 'Стоимость' не опеределена Если Запрос.Выполнить(ТекстЗапроса)=0 тогда {Отчет.Розница.Форма.Модуль(719)}: Функция ПрихСтоимость = Приход( <<?>> Стоимость); Запрос[19] : Переменная 'Стоимость' не опеределена Если Запрос.Выполнить(ТекстЗапроса)=0 тогда {Отчет.Розница.Форма.Модуль(719)}: Функция РасхСтоимость = Расход( <<?>> Стоимость); Запрос[20] : Переменная 'Стоимость' не опеределена Если Запрос.Выполнить(ТекстЗапроса)=0 тогда {Отчет.Розница.Форма.Модуль(719)}: Функция НачПродСтоимость = НачОст( <<?>> ПродСтоимость); Запрос[21] : Переменная 'ПродСтоимость' не опеределена Если Запрос.Выполнить(ТекстЗапроса)=0 тогда {Отчет.Розница.Форма.Модуль(719)}: Функция КонПродСтоимость = КонОст( <<?>> ПродСтоимость); Запрос[22] : Переменная 'ПродСтоимость' не опеределена Если Запрос.Выполнить(ТекстЗапроса)=0 тогда {Отчет.Розница.Форма.Модуль(719)}: Функция ПрихПродСтоимость = Приход( <<?>> ПродСтоимость); Запрос[23] : Переменная 'ПродСтоимость' не опеределена Если Запрос.Выполнить(ТекстЗапроса)=0 тогда {Отчет.Розница.Форма.Модуль(719)}: Функция РасхПродСтоимость = Расход( <<?>> ПродСтоимость); Запрос[24] : Переменная 'ПродСтоимость' не опеределена[/color][/color]
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!