Архив рубрики: 1С Предприятие 8.0

Как программно определить количество строк и столбцов Excel

Пример делаю на 1с 8, вместе с подключением и отключением 

Попытка
Эксель = Новый COMОбъект(«Excel.Application»);
Исключение
Предупреждение(«MS Excel не установлен на компьютере!»,10);
Возврат;
КонецПопытки;
Состояние(«Подключение к EXCEL»,50);
Книга = Эксель.WorkBooks.Open(Путь);
Лист = Книга.WorkSheets(1);
КолСтрок=Лист.Cells(1,1).SpecialCells(11).Row;
КолКолонок = Лист.Cells(1,1).SpecialCells(11).Column;

………………………

//Шо то робим

………………………

//Сохраняем результаты
Эксель.ActiveWorkbook.Save();
//выходим из Excel
Эксель.Quit();

1с 8 Почему спрашивает «Данные были изменены», если ничего не менялось в форме?

Возможно у кнопки, которую нажимали, или у реквизита, который редактировали, установлен флажок «изменяет данные». Он специально предназначен, чтобы установить модифицированность в «истина», если система сама не может определить, изменяет ли данные элемент.

Обычно такое возникает, если делаются различные вспомогательные формы, но вид формы — форма справочника или документа, а не произвольная форма. Мне например больше нравится, чтобы форма была формой справочника или документа — потому что тогда имеется доступ к реквизитам соответствующего объекта, чего в произвольной форме не будет.

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

1С 8 Как заполнить значения при добавлении новой строки в табличную часть

Нужно вставить обработчик события самой табличной части, который называется «При начале редактирования». В нем есть параметр «Новая строка», что дает нам возможность выполнять некоторые действия только при добавлении новой строки. При этом сама строка уже существует, 

Процедура СоставПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
Если НоваяСтрока тогда
текСтрока = ЭлементыФормы.Состав.ТекущиеДанные;
Если не текСтрока = неопределено тогда
текСтрока.ИсточникДанных = перечисления.СпособПолучения.ИзТабличнойЧасти;
КонецЕсли;
КонецЕсли;
КонецПроцедуры

в отличии от обработчика «ПередНачаломДобавления», который можно использовать с тем же успехом, но код будет другой

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

СтандартнаяОбработка = ложь;

нов = Состав.Добавить();

нов.ИсточникДанных = перечисления.СпособПолучения.ИзТабличнойЧасти;

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

1C 8 как округлять до заданной числом точности, например 0.01

мОкруглятьДо = 0,01;

Цел(ВыборкаСотрудник.Сумма/мОкруглятьДо)*мОкруглятьДо;//округляет до сотых

мОкруглятьДо = 0,1;

Цел(ВыборкаСотрудник.Сумма/мОкруглятьДо)*мОкруглятьДо;//округляет до десятых

Недостаточно памяти сервера для обработки команды 1С файловая при подключении через общую папку по сети

Эта ошибка возникает не только при подключении через 1С, но и просто при попытке открыть файл через сетевой ресурс.  Обычно это бывает, если ваш компьютер на XP, а сервер — виндовс семерка, либо наоборот, но не обязательно. Просто чаще бывает именно так.

Нужно зайти на компьютер-сервер —

Тобишь на тот компьютер, на котором файловая база 1с располагается, он и есть сервер в данном случае.

В нем зайти в реестр,  то есть нажать сочетание клавиш windows + R, либо зайти «Пуск» и внизу в окне ввода набрать «cmd» и нажать «Enter», он же «Ввод», он же стрелка вниз и влево (перевод каретки).

В реестре перейти в раздел: 
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters

найти там параметр под названием: 

IRPStackSize

Если его нет — создать: Щелкнуть правой кнопкой мыши на свободном месте правой панели, и выбрать пункт «Создать — Параметр DWORD (32 бита)

Ввести наименование
IRPStackSize  в новой добавившейся строчке или же скопировать отсюда.

Важно — соблюдайте регистр букв. То есть большие и маленькие буквы как здесь указано, так и должны быть в наименовании в реестре.

Нажмите Enter

Нажмите ещё раз Enter или кликните двойным щелчком левой кнопки мыши по имени параметра 
IRPStackSize

или кликните правой кнопкой мыши по этой строке и выберите пункт «Изменить»

В появившемся окне выберите систему исчисления «Десятичная«, а значение напишите 50. По имеющейся у меня информации с других сайтов — это максимальное число одновременных подключений. Причем 1с 8 делает сразу несколько подключений — от 10 и больше. По проверенной мной информации, обычно это 24 открытых файла.

Нажмите ОК.

Закройте окно реестра.

Перезагрузите компьютер.

Ещё раз повторяю, так как многие, и я в том числе на этом спотыкались — это всё нужно делать на компьютере — на котором располагается папка общего доступа с базой 1С.

То же самое касается любых файлов, при доступе к которым не из 1с возникают подобные ошибки.

Вообще, если вы хотите использовать windows 7 для работы на ней файловой базы с количеством одновременно подключаемых пользователей от 3-х и выше, вышеперечисленных мер недостаточно. Нужно превратить операционную систему в некий файловый сервер, я бы сказал даже, в файловую помойку. Для этого придется поковыряться ещё.

Нужно установить следующие параметры в реестре:

 
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters\size
Установите одно из значений ключа: 1, 2 или 3. 1 = Минимальное использование памяти 2 = Сбалансированное 3 = Максимальная пропускная способность для общих файлов и приложений, подключающихся по сети
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement\LargeSystemCache
Для ключа доступны значения 0 и 1. 1 = Максимальная пропускная способность для использования файлов по сети, 0 = Максимальная пропускная способность для приложений, работающих по сети.

Таким образом, чтобы пользователи могли использовать общие файлы и подключаться к базе данных 1С без ограничений, выставляем на компьютере, который хотим использовать в качестве файлового сервера такие значения:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]
"LargeSystemCache"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]
"Size"=dword:00000003

Собственно у меня после такой настройки достаточно крупная контора уже несколько лет работает на файловой 1с8 с кучей пользователей. Хотелось бы сервер конечно для удобства регламентных заданий, но вот так.. настроил, людям хватает.

1С 8 УТ Украины 3.1 как вывести в отчете «Ведомость товаров на складах» склады в колонках

В версии УТ Украины 3.0 склады выводились в колонках. Многие пользователи считают это удобным вариантом. Как сделать то-же самое в 3.1 разобрался не сразу, поэтому, чтобы не забыть, решил сделать видео на эту тему.

1С 8 Как создать реализацию товаров и услуг на основании заказа покупателя УТП

Задача — просто создавать реализацию товаров и услуг на основании заказа. Минимальное количество действий без контроля остатков и ввода приходов.
Предположим, нам неважно, какие остатки на складе и мы абстрагируемся от цены и вводим её вручную.
первый этап — это настройки самих учетных данных.

Заходим в меню: Сервис -> пользователи -> Настройка дополнительных прав пользователей. Настраиваем дополнительные права пользователя, как показано на рисунке.

Далее настраиваем параметр бухучета, который отвечает за контроль остатка при проведении бухгалтерских регистров.
Заходим в Сервис -> Настройка учета -> Настройка параметров учета
Далее находим закладку как показано на картинке и устанавливаем флажок «Отключить контроль отрицательных остатков МПЗ». Кстати в «Управление торговлей» я этой настройки не нашел. Будем считать её имеющейся только в УТП, Бухгалтерии и УПП,

Теперь работаем с заказами и реализациями. При этом нам всё равно прийдется воспользоваться двумя дополнительными документами. Это Счет на оплату покупателю и Платежное поручение входящее. Но это только в случае, если данных товаров нет на остатках склада. Если они на складах имеются и в достаточном количестве, то можно смело создавать реализацию на основании заказа и его табличная часть будет заполнена.

Но для верности лучше использовать платежные документы. В этом случае последовательность действия такая.

Сначала создаем заказ покупателя:
Заполняем его шапку и табличную часть.
Далее на основании заказа покупателя создается счет на оплату покупателю.

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

Что интересно, сам счет на оплату выпадает из структуры подчиненности документа.

Для примера использовались такие платформа и конфигурация:

1С:Предприятие 8.3 (8.3.6.2524)

«Управление торговым предприятием для Украины», редакция 1.1.
Разработка конфигурации: «ABBYY Ukraine», 2007-2009
(1.1.5.3)

Хотя может быть применено в любой типовой конфигурации.

 

Регулярные выражения в 1С 8.х

Процедура возвращает массив из n/m  элементов, где n — это количество найденных выражений, а m — количество подвыражений в каждом выражении. Обратите внимание, что подвыражений может быть разное количество.

Если не найдено ни одного выражения, возвращает «неопределено»

 


функция регВырИгнорРегистр (текст, выражение)
	рез=неопределено;
	Если (ЗначениеЗаполнено(текст)=ложь) ИЛИ (ЗначениеЗаполнено(выражение) =ложь)Тогда
		возврат текст;
	КонецЕсли;
	_Истина=-1;
	_Ложь=0;
	RegExp = новый COMОбъект("VBScript.RegExp");
	
	RegExp.IgnoreCase = _Истина; //Игнорировать регистр
	RegExp.Global = _Истина; //Поиск всех вхождений шаблона
	RegExp.MultiLine = _Ложь; //Многострочный режим
	
	RegExp.Pattern = выражение; //Ищем вхождение
	Matches=RegExp.Execute(текст);
	ЧислоВхождений=Matches.Count();
	Если ЧислоВхождений>0 Тогда
		рез = новый массив;
		для н = 0 по ЧислоВхождений-1 цикл
			Match = Matches.Item(н);
			SubMatches = Match.SubMatches;
			
			Если SubMatches.Count()>0 тогда
				субРез = новый массив;
				для н1 = 0 по SubMatches.Count()-1 цикл
					субРез.Добавить(SubMatches.Item(н1));		
				КонецЦикла;
				рез.Добавить( субРез);
			КонецЕсли;			
				
		КонецЦикла;
		
		//Match = Matches.Item(0);
		//SubMatches = Match.SubMatches;
		//SubMatch=SubMatches.Item(номерПозиции);
		возврат (рез);
	Иначе
		возврат неопределено;
	КонецЕсли;
	Возврат неопределено;
КонецФункции


Как теперь функцию использовать. Предположим, там нужно изменить наименование в карточке склада, в которой установлен признак «не кондиция», чтобы между фразой «Продукты-» далее идет номер магазина, это может быть «Продукты-15» или Продукты-15, то есть с кавычками или без. Затем идет адрес. И нужно между фразой с номером магазина и адресом вставить слово «НЕ КОНДИЦИЯ». Тобишь ,

"Филиал Новозанзибаровка "Продукты-15"ул. Заречная д. 7"

должен превратиться в

"Филиал Новозанзибаровка "Продукты-15"НЕ КОНДИЦИЯ ул. Заречная д. 7"

. Как видно, после фразы «Продукты-15» пробела нет. Но это только в случае, если там его небыло и сразу шло «ул….». Но в нашем случае пробел может быть, а может не быть. Вам предлагаю усовершенствовать выражение, чтобы красиво ставился один пробел, независимо от того, был он там или небыло. В этом примере если он (пробел) там (В наименовании карточки склада) был, то будет и после переименования.


процедура выполнитьПереименование (ТекСклад)
	рез =  регВырИгнорРегистр(СокрЛП(ТекСклад.Наименование),"(.*?)(Продукти|Делві)(-\d+""? ?)(.*)");	
	если рез <> неопределено тогда
		новоеНаименование = рез[0][0]+рез[0][1]+рез[0][2]+"НЕ КОНДИЦИЯ "+рез[0][3];
		Если НеПереименовывать тогда
			Сообщить (СокрЛП(ТекСклад.Наименование)+" --> "+новоеНаименование);
		иначе
			
			о = ТекСклад.ПолучитьОбъект();
			о.Наименование = новоеНаименование;
			попытка
				о.Записать();
			исключение
				сообщить(ОписаниеОшибки());
			КонецПопытки;				
		КонецЕсли;
	КонецЕсли;	
КонецПроцедуры

Конфигурация Hi-Tech для учета работы IT отдела на платформе 1С 8.2

Hi-Tech конфигурация представляет наиболее легкий и удобный способ начать вести учет работы IT отдела.

1. Распределение трудоресурсов

Руководство информационного отдела имеет возможность более удобным способом распределять трудоресурсы, контролировать загруженность отдела.

Сотрудник принимает заявки по телефону и оформляет в документах «Заявки». Если в отделе есть ответственное лицо за распределение заявок, в документе указываются ресурсы (сотрудники), один или несколько, кому поручено выполнение заявки.

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

2. Ведомость и документирования компьютерной техники, подконтрольной отделу.

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

Можно оформлять прием компьютерной техники, комплектацию. При передаче принтера или компьютера в пользование другому сотруднику можно зафиксировать перемещение. В дальнейшем специальный отчет показывает историю перемещений.

Документ «Перекомплектация » позволяет динамически изменять состав оргтехники, перемещать комплектующие со склада запасных частей, а нерабочие комплектующие на склад. Или же переукомплектовывать, взаимозаменяя комплектующие. К примеру, меняем местами винчестеры между компьютерами А и Б.

3. Загрузка сотрудников и подразделений из системы «Зарплата и кадры» 1С 7.7. Для других версий кадрового учета обработки можно написать самостоятельно, или заказать у меня, как дополнительную услугу.

Такой подход позволяет оперативно видеть в ведомости, какая компьютерная техника числится ещё на декретчиках или уволенных и оперативно перемещать её тем, кто более нуждается. Таким образом просмотр ведомости может избавить вас от покупки лишних компьютеров и принтеров.

4. Учет использования расходных материалов

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

Ведомость использования расходных материалов позволяет руководителю отдела видеть четкую картину закупок и расхода.

По вопросам приобретения конфигурации обращайтесь:

sergey.boboshko@mail.ru

skype: s_twilight

Бобошко Сергей