Печать таблицы значений в 1С 7.7 при отладке

Публикация № 1467310 30.06.21

Разработка - Универсальные функции

ТаблицаЗначений отладка отладчик печать

Функция выводит таблицу значений в табличный документ. (v7.7) Особенно полезно при отладке. Не нужно вносить изменения в код, вызываем функцию как вычисляемое выражение при останове. Если таблица обрабатывается в несколько этапов, можно вывести её после каждого и визуально проследить эволюцию.

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

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

Особенно при отладке. Без изменения основного кода. Если таблица обрабатывается в несколько этапов, ставим точки останова после каждого, выводим таблицу при каждом останове и визуально сравниваем её на разных этапах обработки.

Хотя, можно внести вызовы и в сам код, в виде отладочной печати, если хочется.

Предлагаю способ вывода таблиц значений без создания шаблона табличного документа.

Нужно лишь добавить в глобальный модуль функцию глВывестиТаблицуЗначений

Самое полезное применение этой  функции - возможность вызова прямо из отладчика.

Именно для этого код помещен в функцию а не в процедуру, а также рекомендую поместить её в глобальный модуль с ключевым словом "Экспорт".

Нужно в отладчике во время останова лишь набрать в окне выражение:

глВывестиТаблицуЗначений(МояТаблица)

Можно сделать это несколько раз, после каждого этапа обработки таблицы. И завершив отладку, наблюдать открытые окна табличных документов.

Еще с помощью этой функции можно быстро создавать простейшие отчеты.

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

Процедура Сформировать()
	ТекстЗапроса="
	|//..................................
	|";
	
	Запрос=СоздатьОбъект("Запрос");
	Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда
		Возврат;
	КонецЕсли;
	РезТаблица=СоздатьОбъект("ТаблицаЗначений");
	Запрос.Выгрузить(РезТаблица,1,0);
	глВывестиТаблицуЗначений(РезТаблица,"Экспресс отчет","Экспресс отчет");
КонецПроцедуры

Сама функция:

//******************************************************************************
// глВывестиТаблицуЗначений(Знач аТаблица,Знач аЗаголовокШапки="",Знач аЗаголовокТаб="ТаблицаЗначений",Знач СтрИтоги="")
//
// Параметры: 
//  аТаблица - таблица значений для вывода на экран
//  аЗаголовокШапки  - строка, выводимая в шапке печатной формы
//  аЗаголовокТаб    - строка заголовка окна выводимой формы
//  аСтрИтоги        - строка, содержащая, через запятую, перечень имен колонок по которым нужно 
//    посчитать и вывести итоговую сумму (числовую) по всей таблице. 
//    Может содержать также значения "_Все_" или "_Все_Числовые_"
//
// Возвращаемое значение:
//  1
//
// Описание:
//  Выводит на экране в табличной печатной форме содержимое таблицы значений
//
Функция глВывестиТаблицуЗначений(Знач аТаблица,Знач аЗаголовокШапки="",Знач аЗаголовокТаб="ТаблицаЗначений",Знач аСтрИтоги="") Экспорт
	
	ТипОснАргумента=ТипЗначенияСтр(аТаблица);
	Если ТипОснАргумента<>"ТаблицаЗначений" Тогда
		Сообщить("В процедуру вывода таблицы значений передан аргумент другого типа ("+ТипОснАргумента+")","!");
		Возврат 0;
	КонецЕсли;
	
	флВывестиИтогиПоКолонкам=0;
	
	СтрИтоги=СокрЛП(аСтрИтоги);
	СпИтоги=СоздатьОбъект("СписокЗначений");                          
	Если ПустоеЗначение(СтрИтоги)=0 Тогда
		РасшСтрока="";
		Пока ПустаяСтрока(СтрИтоги)=0 Цикл
			Поз=Найти(СтрИтоги,",");
			Если Поз<>0 Тогда
				ИмяЭлемента=СокрЛП(Лев(СтрИтоги,Поз-1));
				СтрИтоги=Сред(СтрИтоги,Поз+1);
			Иначе
				ИмяЭлемента=СокрЛП(СтрИтоги);
				СтрИтоги="";
			КонецЕсли;
			Если ПустоеЗначение(ИмяЭлемента)=1 Тогда
				Продолжить;
			КонецЕсли;           
			СпИтоги.ДобавитьЗначение(ИмяЭлемента);
		КонецЦикла;
	КонецЕсли;

	
	ТабКолонок=СоздатьОбъект("ТаблицаЗначений");
	ТабКолонок.НоваяКолонка("Номер","Число",15,0);
	ТабКолонок.НоваяКолонка("Имя","Строка");
	ТабКолонок.НоваяКолонка("Ширина","Число",15,0);
	ТабКолонок.НоваяКолонка("ТипЗн","Строка");
	ТабКолонок.НоваяКолонка("Длина","Число",15,0);
	ТабКолонок.НоваяКолонка("Точность","Число",15,0);
	ТабКолонок.НоваяКолонка("Заголовок","Строка");
	ТабКолонок.НоваяКолонка("ФорматнаяСтрока","Строка");
	ТабКолонок.НоваяКолонка("ВывестиИтог","Число",1,0);
	Для СчКол=1 По аТаблица.КоличествоКолонок() Цикл
		ТипЗн="";
		Длина=0;
		Точность=0;
		ЗаголовокКол="";
		ИмяКолонки=аТаблица.ПолучитьПараметрыКолонки(СчКол,ТипЗн,Длина,Точность,ЗаголовокКол,,,);
		Если ПустоеЗначение(ЗаголовокКол)=1 Тогда
		    ЗаголовокКол=ИмяКолонки;
		КонецЕсли;
		
		ФорматнаяСтрока="";
		ВывестиИтог=0;
		
		Если ТипЗн="Число" Тогда
			ДлинаФС=Длина;
			ТочностьФС=Точность;
			Если (ДлинаФС>0) ИЛИ (ТочностьФС>0) Тогда
				ДлинаФС=?(ДлинаФС=0,15,ДлинаФС);
				ФорматнаяСтрока="Ч0"+ДлинаФС+"."+ТочностьФС+".";
			КонецЕсли;
			Если СпИтоги.Принадлежит("_Все_Числовые_")=1 Тогда
				ВывестиИтог=1;
				флВывестиИтогиПоКолонкам=1;
			КонецЕсли;
		КонецЕсли;
		
		Если (СпИтоги.Принадлежит(ИмяКолонки)=1) ИЛИ (СпИтоги.Принадлежит("_Все_")=1) Тогда
		    ВывестиИтог=1;
			флВывестиИтогиПоКолонкам=1;
		КонецЕсли;
		
		ТабКолонок.НоваяСтрока();
		ТабКолонок.Номер=СчКол;
		ТабКолонок.Имя=ИмяКолонки;
		ТабКолонок.ТипЗн=ТипЗн;
		ТабКолонок.Длина=Длина;
		ТабКолонок.Точность=Точность;
		ТабКолонок.Заголовок=ЗаголовокКол;
		ТабКолонок.Ширина=СтрДлина(ЗаголовокКол)+3;
		ТабКолонок.ФорматнаяСтрока=ФорматнаяСтрока;
		ТабКолонок.ВывестиИтог=ВывестиИтог;
	КонецЦикла;
	
	Для СчСтр=1 По аТаблица.КоличествоСтрок() Цикл
		ТабКолонок.ВыбратьСтроки();
		Пока ТабКолонок.ПолучитьСтроку()=1 Цикл
			Если ТабКолонок.ФорматнаяСтрока<>"" Тогда
				Содержимое=СокрЛП(Формат(аТаблица.ПолучитьЗначение(СчСтр,ТабКолонок.Номер),ТабКолонок.ФорматнаяСтрока));
			Иначе
				Содержимое=СокрЛП(аТаблица.ПолучитьЗначение(СчСтр,ТабКолонок.Номер));
			КонецЕсли;
			ТабКолонок.Ширина=Макс(ТабКолонок.Ширина,СтрДлина(Содержимое));
		КонецЦикла;
	КонецЦикла;
	
	Таб=СоздатьОбъект("Таблица");
	
	СтрШапкиТ=1;
	НачКолТ=1;
	
	Если ПустоеЗначение(аЗаголовокШапки)=0 Тогда
	    
		ОбластьТ=Таб.Область(СтрШапкиТ,НачКолТ,СтрШапкиТ,НачКолТ); 
		ОбластьТ.Текст=аЗаголовокШапки;
		ОбластьТ.Контроль(1);
		ОбластьТ.ВертикальноеПоложение(3);
		ОбластьТ.ГоризонтальноеПоложение(1);
		ОбластьТ.РазмерШрифта(12);
		ОбластьТ.Полужирный(1);
		ОбластьТ.ЦветТекста(255);
		
		СтрШапкиТ=СтрШапкиТ+1;
	КонецЕсли;
	
	ОбластьТ=Таб.Область(СтрШапкиТ,НачКолТ,СтрШапкиТ,НачКолТ); 
	ОбластьТ.Текст="№ п/п";
	ОбластьТ.Полужирный(1);
	ОбластьТ.Контроль(4);
	ШиринаСтолбца=СтрДлина(аТаблица.КоличествоСтрок())+3;
	ОбластьТ.ШиринаСтолбца(ШиринаСтолбца);
	ОбластьТ.ВертикальноеПоложение(3);
	ОбластьТ.ГоризонтальноеПоложение(3);
	ОбластьТ.Рамка(3,3,3,3);
	
	ТабКолонок.ВыбратьСтроки();
	Пока ТабКолонок.ПолучитьСтроку()=1 Цикл
		НомКолТ=НачКолТ+ТабКолонок.Номер;
		ОбластьТ=Таб.Область(СтрШапкиТ,НомКолТ,СтрШапкиТ,НомКолТ); 
		ОбластьТ.Текст=ТабКолонок.Заголовок;
		ОбластьТ.Полужирный(1);
		ОбластьТ.Контроль(4);
		ШиринаСтолбца=ТабКолонок.Ширина;
		Если ШиринаСтолбца>=60 Тогда
			ШиринаСтолбца=Цел(ШиринаСтолбца/2);
		КонецЕсли;
		ОбластьТ.ШиринаСтолбца(ШиринаСтолбца);
		ОбластьТ.ВертикальноеПоложение(3);
		ОбластьТ.ГоризонтальноеПоложение(3);
		ОбластьТ.Рамка(3,3,3,3);
	КонецЦикла;
	 
	НомСтрТ=СтрШапкиТ;
	Для СчСтр=1 По аТаблица.КоличествоСтрок() Цикл
		НомСтрТ=НомСтрТ+1;
		
		ОбластьТ=Таб.Область(НомСтрТ,НачКолТ,НомСтрТ,НачКолТ);
		ОбластьТ.Текст=СчСтр;
		ОбластьТ.Контроль(4);
		ОбластьТ.ВертикальноеПоложение(3);
		ОбластьТ.ГоризонтальноеПоложение(3);
		ОбластьТ.Рамка(3,3,3,3);
		
		ТабКолонок.ВыбратьСтроки();
		Пока ТабКолонок.ПолучитьСтроку()=1 Цикл
			НомКолТ=НачКолТ+ТабКолонок.Номер;
			Если ТабКолонок.ФорматнаяСтрока<>"" Тогда
				Содержимое=СокрЛП(Формат(аТаблица.ПолучитьЗначение(СчСтр,ТабКолонок.Номер),ТабКолонок.ФорматнаяСтрока));
			Иначе
				Содержимое=СокрЛП(аТаблица.ПолучитьЗначение(СчСтр,ТабКолонок.Номер));
			КонецЕсли;
			ОбластьТ=Таб.Область(НомСтрТ,НомКолТ,НомСтрТ,НомКолТ);
			ОбластьТ.Текст=Содержимое;
			ОбластьТ.Контроль(4);
			ОбластьТ.ВертикальноеПоложение(3);
			Если ТабКолонок.ТипЗн="Число" Тогда
				ОбластьТ.ГоризонтальноеПоложение(2);
			Иначе
				ОбластьТ.ГоризонтальноеПоложение(1);
			КонецЕсли;	
			ОбластьТ.Рамка(3,3,3,3);
		КонецЦикла;
	КонецЦикла;	 
	
	Если флВывестиИтогиПоКолонкам=1 Тогда
		НомСтрТ=НомСтрТ+1;
		ОбластьТ=Таб.Область(НомСтрТ,НачКолТ,НомСтрТ,НачКолТ); 
		ОбластьТ.Текст="ИТ.";
		ОбластьТ.Полужирный(1);
		ОбластьТ.Контроль(4);
		ОбластьТ.ВертикальноеПоложение(3);
		ОбластьТ.ГоризонтальноеПоложение(3);
		ОбластьТ.Рамка(3,3,3,3);
		
		ТабКолонок.ВыбратьСтроки();
		Пока ТабКолонок.ПолучитьСтроку()=1 Цикл
		
			Содержимое="";
			Если ТабКолонок.ВывестиИтог=1 Тогда
				ИтогПоКол=0;
				
				Если ТабКолонок.ТипЗн="Число" Тогда
					ИтогПоКол=аТаблица.Итог(ТабКолонок.Имя);
				Иначе
					ИтогПоКол=0;
					аТаблица.ВыбратьСтроки();
					Пока аТаблица.ПолучитьСтроку()=1 Цикл
						ИтогПоКол=ИтогПоКол+Число(Строка(аТаблица.ПолучитьЗначение(аТаблица.НомерСтроки,ТабКолонок.Номер)));
					КонецЦикла;
				КонецЕсли;
				
				Если ТабКолонок.ФорматнаяСтрока<>"" Тогда
					Содержимое=СокрЛП(Формат(ИтогПоКол,ТабКолонок.ФорматнаяСтрока));
				Иначе
					Содержимое=СокрЛП(ИтогПоКол);
				КонецЕсли;
			КонецЕсли;
			
			
			НомКолТ=НачКолТ+ТабКолонок.Номер;
			ОбластьТ=Таб.Область(НомСтрТ,НомКолТ,НомСтрТ,НомКолТ); 
			ОбластьТ.Текст=Содержимое;
			ОбластьТ.Полужирный(1);
			ОбластьТ.Контроль(4);
			ОбластьТ.ВертикальноеПоложение(3);
			ОбластьТ.ГоризонтальноеПоложение(2);
			ОбластьТ.Рамка(3,3,3,3);
		КонецЦикла;
	КонецЕсли;
	
	Таб.Опции(0,0,СтрШапкиТ);
	Таб.ТолькоПросмотр(1);
	Таб.Показать(аЗаголовокТаб);
	Возврат 1;
КонецФункции  //глВывестиТаблицуЗначений()

 

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. serpent 66 30.06.21 11:39 Сейчас в теме
В Вашем решении СФОРМИРОВАННУЮ таблицу можно будет увидеть только после Завершения(прекращения) отладки.

С "ПромТЗ.ВыбратьСтроку()" можно посмотреть результат и вернуться в отладку.

я правильно понимаю?
3. Zoltan_Black 1 01.07.21 04:37 Сейчас в теме
(1) Да, все верно.
Но пользоваться "ВыбратьСтроку" не всегда удобно.
Особенно, если таблица большая.
Сложно найти нужное место в этом маленьком оконце, в котором еще и поиск нормально не работает.
2. CheBurator 3114 30.06.21 19:05 Сейчас в теме
печать ТЗ - это как перенумератор...
Не моя, но допилил всякого (не последняя версия)...
.
//********************************************************************************************************************************
//{--- ОПИСАНИЕ ------------------------------------------------------------------------------------------------------------------
// ПечатьТЗ()
//
// Входные параметры:
//
// 	1. ТЗ: обычно входные данные для вывода в виде плоской таблицы, в качестве входных данных допускаются:
//	- ТаблицаЗначений (или ИндексированнаяТЗ) - выводится на печать в виде плоского списка, если не задан параметр "Заголовок" - заголовка не будет
//	- СписокЗначений - выводится на печать в виде плоского списка из двух колонок (значение и представление), заглавие таблицы 
//	из параметра "Заголовок" дополняется литералом "значения списка"
//  - Документ - выводится на печать табличная часть документа, заглавие таблицы из параметра "Заголовок" дополняется 
//	символьной идентификацией документа по типу "Расходная накладная №00000128 от 01.07.19, дополнительно выводятся
//	автор и комментарий к документу если в конфигурации есть общие реквизиты "Автор" и/или "Комментарий"
//
// 	2. Заголовок: заголовок таблицы в печформе и в окне таблицы
//	по умолчанию - не задан
//
// 	3. КолонкиПоНазваниям: 1 - в шапке выводятся представления колонок, 0 - идентификаторы колонок
//	по умолчанию(1) - заглавия колонок из представлений колонок (заглавия колонок во входной ТЗ)
//
// 	4. ИтогиПоКолонкам: выводится итог, -1 - по всем числовым колонкам, 
//						"Колонка1,Колонка2"- по указанным колонкам(можно указаит идентификаторы или номера колонок), иначе - не выводить
//	по умолчанию(-1) - выводятся итоги по всем числовым колонкам
//
//  5. ИтогиПоЦенам: 0 - колонки, содержащие в идентификаторе колонки последовательность символов "Цена", суммироваться не будут,
//					 1 - будет выводится итог как и по всем остальным числовым колонкам
//	по умолчанию(0) - итог по ценовым колонкам не вычисляется
//
//  6. РазделительРазрядов: символ-разделитель разрядов в числовых значениях, используется если не задан параметр "ФорматЧисловыхЗначений",
//	по умолчанию(') - апостроф
//
//  7. ФорматЧисловыхЗначений: форматная строка для чисел по правилам языка 1С
//	по умолчанию("") - не задано, если параметр не задан - форматная строка конструируется автоматически и
//	символом-разделителем разрядов используется параметр РазделительРазрядов
//
// 	8. Таб: выходная таблица, в которую выводится результат, если не задан - создается новая таблица
//	по умолчанию - таблица выводится в отдельную печформу.
//
//  9. ВыводСетки: 0(или пустое значение) - не выводить сетку при отображении печформы на экране, иначе - выводить
//	по умолчанию(0) - сетку не выводить
//
//  10. ВыводЗаголовков: 0(или пустое значение) - не выводить заголовки строк/колонок при отображении печформы на экране, иначе - выводить
//	по умолчанию(0) - заголовоки строк/колонок не выводить
//
//  11.ВыводНулевойТаблицы: 1(или непустое значение) - выводить печформу на экран даже если в выводе нет строк,
//	0(или пустое значение) - не выводить печформу на экран если в выводе нет строк
//	по умолчанию(1) - выводитm печформу на экран если она получилась пустой
//
//  12.ВыводЗаголовковПодвал: 1(или непустое значение) - перед строкой подвала таблицы с итогами по колонкам 
//	повторно выводит шапку (заглавие колонок) таблицы (чтобы в большой таблице итоги можно было визуально соотнести с колонками),
//	0(или пустое значение) - не выводить перед строкой итогов заглавие таблицы
//	по умолчанию(1) - выводить перед итогами заглавия колонок таблицы
//
//  13.ПоказатьСформированнуюТаблицу: 1(или непустое значение) -показать сформированную таблицу на экран,
//	0(или пустое значение) - не показывать; параметр можно использовать если формирование таблицы идет "в цикле",
//  вывод выполняется в один макет (задан параметр макета "Таб") и результат имеет смысл показать один раз только "после цикла",
//	готовую таблицу можно в процедуре не показывать, а показывать за пределами процедуры (через параметр "Таб") с установкой 
//	за пределами процедуры нужных значений для параметров ВыводСетки, ВыводЗаголовков 
//	по умолчанию(1) - показывать сформированную таблицу
//
//}--- ОПИСАНИЕ ------------------------------------------------------------------------------------------------------------------
//
Функция ПечатьТЗ(Знач ТЗ, Заголовок="", КолонкиПоНазваниям=1, Знач ИтогиПоКолонкам=-1, ИтогиПоЦенам=0,
				ФорматЧисловыхЗначений="", РазделительРазрядов="'", Таб="", ВыводСетки=0, ВыводЗаголовков=0,
				ВыводНулевойТаблицы=1, ВыводЗаголовковПодвал=0, ПоказатьСформированнуюТаблицу=1) Экспорт
Показать
EarlyBird; +1 Ответить
4. serpent 66 01.07.21 08:36 Сейчас в теме
(2) А где текст самой функции?
5. CheBurator 3114 01.07.21 10:18 Сейчас в теме
(4) ну вот так возьми и все вам выложи! ;-) позже малость сделаю.
6. serpent 66 01.07.21 13:49 Сейчас в теме
(5) Спасибо, но нам не надо... у меня сделано на ИТЗ и ТабличномПоле...
7. CheBurator 3114 01.07.21 18:13 Сейчас в теме
8. serpent 66 01.07.21 22:00 Сейчас в теме
(7) там же где и Ваша, усиленно работает
9. alul 22.07.21 14:26 Сейчас в теме
Какие дебаты по измученной "семерке" в 2021 году!)))
10. alul 22.07.21 14:39 Сейчас в теме
Таб.Показать(аЗаголовокТаб); (223): Открытие окна в данном режиме недоступно!
11. Zoltan_Black 1 24.08.21 08:59 Сейчас в теме
(10)
Значит Вы запускаете функцию из такого места, где платформа не даёт открывать новые окна.
Вероятно, из формулы реквизита диалога.
Занятно что метод таблицы значений ВыбратьСтроку() здесь работает.
Я нашел четыре способа обойти эту проблему.

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

2. Не вызывать функцию из реквизита диалога, а, например, вызывать из формулы кнопки, добавив её на форму.

3. Метод, так называемое, "ложное закрытие формы".
Описывать не буду, можно найти здесь: https://forum.infostart.ru/forum9/topic4200/

4. Использовать внешнюю компоненту FormEx. Спасибо, АЛьФ!
Вызвать метод РазрешитьОткрытиеОкон(Флаг) объекта Сервис перед вызовом функции вывода таблицы.

Цитирую АЛьФ-а:
Метод РазрешитьОткрытиеОкон(Флаг) для обхода запрета открытия форм из формулы реквизита диалога.
Принимает в качестве параметра флаг: 1 - разрешить открытие форм, 0 - запретить открытие форм.
Метод надо вызывать непосредственно в месте, где открытие запрещено.


Как использовать:
Сервис = СоздатьОбъект("Сервис");
Сервис.РазрешитьОткрытиеОкон(1);
глВывестиТаблицуЗначений(МояТЗ)
Оставьте свое сообщение

См. также

1С 7.7 и новый 1С:Контрагент

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 Россия Бесплатно (free)

Получение реквизитов контрагентов из 1С:Контрагент для старых конфигураций под 1с 7.7.

25.04.2022    1200    zhenyat    7    

6

Проверка часового пояса

Информационная безопасность Универсальные функции Платформа 1С v7.7 Бесплатно (free)

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

16.05.2016    12427    kudenzov    3    

10

Процедура расшифровки ячейки таблицы в отчетах 1С 7.7

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

Хочу поделиться с вами универсальной процедурой для расшифровки ячеек печатной формы отчетов в 1С 7.7.

24.09.2015    20329    Anzhey    14    

12

Универсальный способ сравнения таблиц

Универсальные функции Запросы Платформа 1С v7.7 Платформа 1С v8.3 Бесплатно (free)

На эту тему уже есть статьи, но этот способ нигде не описан. Хотя я его использую с тех пор, как занимаюсь программированием. Его преимущество в простоте и универсальности: можно применять на 1С, SQL, а также в любом другом языке программирования.

05.07.2015    21102    json    3    

20

Числа прописью в родительном падеже в 7.7? Легко!

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

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

20.06.2015    13907    gimalaj    3    

14

Исправление в типовой комплексной конфигурации глобальной функции глВсеРеквизитыДокументаЗаполнены()

Универсальные функции Платформа 1С v7.7 1С:Комплексная 7.7 Россия Бесплатно (free)

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

20.08.2014    8492    hvv2002    0    

4

Проверка ИНН v.7.7

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 Россия Бесплатно (free)

Проверка ИНН, есть наверняка куча аналогов, для v.8.x точно есть и не один.

08.03.2014    10124    kras_71    0    

3

Полезные функции. Склонение (должность и фамилия подписантов). Любой язык

Универсальные функции Платформа 1С v7.7 Платформа 1С v8.3 Бесплатно (free)

Уехал директор в командировку, отпуск... , оставил доверенность на хозяйственные операции на другого сотрудника. Все договора и другие документы в обмороке - "подписант" теперь другой, по тексту тоже много правок... Пересмотрел много публикаций, вариантов много, не приглянулось. Сделал свой "Баян" . У меня всего-то крутится пять фигурантов ... Нет простого, наглядного и всепогодного варианта без языкового барьера. Всем процессом управляет пользователь.

03.03.2014    18879    kompas-dm    5    

3

Устранение проблемы при работе с полем, которое ограничено маской ввода

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 Россия Бесплатно (free)

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

08.08.2012    18278    www2000    4    

4

Скрытие помеченных на удаление в справочнике

Универсальные функции Оперативный учет 7.7 Бухгалтерский учет 7.7 Расчет 7.7 Конфигурации 1cv7 Россия Бесплатно (free)

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

08.08.2012    15330    mikukrnet    7    

6

Исправление и проведение документов

Универсальные функции Механизмы типовых конфигураций Бухгалтерский учет 7.7 1С:Производство+Услуги+Бухгалтерия Россия Бесплатно (free)

Исправление и проведение документов, например, счетов-фактур, введенных на основании документов реализации, можно организовать многими способами. Описан сравнительно простой подход, реализованный и работающий несколько лет в реальной бухгалтерии 1Cv7.7. Без внешних компонентов.

23.07.2012    14017    BorisBelov    11    

5

Получение характеристик и управление текущим процессом 1С на основе WMI

Универсальные функции Платформа 1С v7.7 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv7 Бесплатно (free)

Функционал для работы из 1С с текущим процессом класса Win32_Process. Пример получает текущее значение ОЗУ занятое процессом 1С. По описанной методике можно получать значения пиковых нагрузок на ОЗУ, время запуска текущей сессии 1С с точностью до миллисекунд. Определять загрузку активного ядра процессом и даже поменять приоритет самого процесса.

09.07.2012    22381    dusha0020    8    

38

Функция проверки валидности e-mail с использованием регулярных выражений RegExp (7.7)

Универсальные функции OpenConf Бухгалтерский учет 7.7 Конфигурации 1cv7 Россия Бесплатно (free)

Функция проверки валидности e-mail с использованием регулярных выражений RegExp (7.7). Данную функцию можно вставить в Глобальный модуль и пользоваться, например, при вводе или сохранении e-mail.

30.10.2011    12158    zaursoft    11    

15

Неправильное изменение категории плательщика ПФР при проведении справки МСЭК

Зарплата Механизмы типовых конфигураций Универсальные функции Расчет 7.7 1С:Зарплата и кадры 7.7 Россия Бухгалтерский учет ФОМС, ЕФС Бесплатно (free)

В ЗиК (релиз 314) при проведении документа "Справка МСЭК" вкралась ошибка: проведение некорректно изменяет категорию плательщика ПФР на "Работник сельскохозяйственной организации - инвалид", затем на "Работник колхоза, совхоза и другого сельскохозяйственного предприятия". Связано это с разными типами ожидаемого и возвращаемого перечисления в функции "глКатегорияПФР": "КатегорияПлательщикаПФ" и "КатегорииЗастрахованныхЛицПФР". Решение: изменить функцию "глКатегорияПФР" (около 2932-й строки).

17.10.2011    6717    Krokokot    3    

6

Хитрость. Использование БУЛЕВО при OLE обмене/подключении из 7.7 к 8

Универсальные функции Обмен между базами 1C Платформа 1С v7.7 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv7 Бесплатно (free)

Как известно, при OLE обмене доступны только типы СТРОКА, ЧИСЛО, ДАТА. А вот БУЛЕВО (ИСТИНА, ЛОЖЬ) использовать при подключении из 7.7 к 8 не получается. Как же быть? Есть хитрость, как использовать тип булево в семерке при обмене с 1С8! :)

28.09.2011    18001    dnikolaev    8    

18

Дата запрета редактирования

Универсальные функции Бухгалтерский учет 7.7 Конфигурации 1cv7 Россия Бесплатно (free)

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

15.07.2011    11023    natalika1601    14    

17

Форма 1-НДФЛ для 2011 года (Зарплата и Кадры 7.7, релиз 310)

Зарплата Универсальные функции Расчет 7.7 1С:Зарплата и кадры 7.7 Россия Бухгалтерский учет НДФЛ Бесплатно (free)

В прежних релизах была возможность из справочника "Сотрудники" сформировать форму 1-НДФЛ по кнопке "Ввод данных" (там была возможность расшифровки сумм). Вернём полезную функцию!

29.04.2011    7267    Q-Q    9    

29

Две простенькие функции для правильного учета сторно-записей и записей-перерасчетов

Зарплата Универсальные функции Расчет 7.7 1С:Зарплата и кадры 7.7 Россия Бухгалтерский учет Бесплатно (free)

Часто при подсчете дней по записям журнала расчетов "Зарплата" берется знак "+" или "-" в зависимости от признака сторно-записи. Но рано или поздно результат получится ошибочным.

19.02.2011    11413    jack19    3    

9

Программное изменение текста в надписях Word

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

Печатная форма договора в шаблоне Word. Реквизиты в 1С. Заполнение шаблона реквизитами: все стандартно, но в надписях долго получалось. Получилось :) Может кому пригодится.

06.12.2010    18902    АннаШ    10    

27

Подбор свободного кода справочника "Номенклатура" без захвата одного и того же кода несколькими операторами.

Универсальные функции Оперативный учет 7.7 1С:Торговля и склад 7.7 Россия Бесплатно (free)

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

05.11.2010    10215    Rusk51    10    

1

Быстрый подсчет элементов справочника

Универсальные функции Оперативный учет 7.7 Бухгалтерский учет 7.7 Расчет 7.7 Конфигурации 1cv7 Россия Бесплатно (free)

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

18.10.2010    27233    brr    11    

18

Мьютексы в 1С 7.7

Файловый обмен (TXT, XML, DBF), FTP Универсальные функции Оперативный учет 7.7 Бухгалтерский учет 7.7 Расчет 7.7 Конфигурации 1cv7 Бесплатно (free)

Существует ряд задач, которые требуют строго последовательного исполнения. Чаще всего это возникает при многопоточном программировании, в этом случае используются критические секции, но иногда надо синхронизировать и разные приложения - для этого существуют такие объекты ядра операционной системы как Мьютекс-ы. http://ru.wikipedia.org/wiki/Мьютекс В статье рассказывается как можно сделать аналогичный объект средствами 1С v7.7

02.07.2010    14499    Sk0rp    24    

10

ТаблицаЗначений в виде сводной таблицы

Универсальные функции Бухгалтерский учет 7.7 Конфигурации 1cv7 Россия Бесплатно (free)

Зарегистрирован: 15 апр 2009, 07:58 Сообщений: 26 Очень часто приходилось преобразовывать ТаблицуЗначений в вид, наподобие Сводной таблицы в Excel (типа шахматки). Для себя написал функцию, которая этим как раз и занимается. Возможно кому-то и пригодится.

08.06.2010    19369    79044970523    8    

12

Фильтрация иерархического справочника по какому-либо условию в форме списка

Универсальные функции Оперативный учет 7.7 Бухгалтерский учет 7.7 Расчет 7.7 Конфигурации 1cv7 Россия Бесплатно (free)

Перед 1С программистами порой встаёт задача реализовать фильтрацию справочника по какому-нибудь условию прямо в форме списка (Например "ФормаСписка" или "ДляПодбора"). Вот и передо мной, недавно, поставили такую задачу. Она оказалась не такой уж и тривиальной, особенно для иерархического справочника...

19.05.2010    14740    Antoska    19    

13

Как получить GUID без v7plus.dll в Предприятии 7.7

Универсальные функции Оперативный учет 7.7 Бухгалтерский учет 7.7 Расчет 7.7 Конфигурации 1cv7 Россия Бесплатно (free)

Часто в терминальных сессиях у пользователю Windows не хватает прав на регистрацию v7plus.dll. Соответственно нельзя воспользоваться, например методом СоздатьGUID() класса V7SysInfo.

12.05.2010    15477    prolancer    5    

10

1C v7.7: Вывод на печать произвольной переменной типа "Таблица значений"

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

Смотрю, "полку нашего прибыло" - стали публиковаться семерочные обработки по выводу таблицы значений на экран, когда поместить таблицу значений на форму или ВыбратьСтроку() по каким-то причинам не удовлетворяет. Это - описание глобальной процедуры, которая выводит любую таблицу значений в табличный документ, с которым уже можно работать дальше. Автор: Денис Горбунов, осень 2001 - осень 2003 Оригинал расположен на: http://faq1c.gorbunov.ru

14.04.2010    23313    v.l.    14    

12

Алгоритм расчета периодов

Универсальные функции Математика и алгоритмы Платформа 1С v7.7 Конфигурации 1cv7 Россия Бесплатно (free)

Вычисление периодов в формате ГГММДД. Вычисление дат по формуле Дата + ГГММДД. Примечание: Даты передаем в виде 'ДД.ММ.ГГГГ', периоды - "ГГ-ММ-ДД". Пользуйтесь.

10.03.2010    10237    arithmometr    1    

3

Простое решение проблемы с казахстанской кодировкой

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 Казахстан Бесплатно (free)

Известно, что для того, чтобы работать в 1С с казахскими шрифтами, нужно изменить кодировку в ОС. Иногда это может быть не очень удобно.

22.01.2010    19311    Gvozdod    3    

8

"Быстрый" выбор периода в журнале

Универсальные функции Оперативный учет 7.7 Бухгалтерский учет 7.7 Расчет 7.7 Конфигурации 1cv7 Россия Бесплатно (free)

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

09.12.2009    11945    mdbm    11    

14

1С Предприятие 7.7 и Mozilla Thunderbird. Отправка писем из командной строки

Универсальные функции Email рассылки Оперативный учет 7.7 Бухгалтерский учет 7.7 Конфигурации 1cv7 1С:Бухгалтерия 7.7 Бесплатно (free)

Клиент захотел чтобы у него из 1С формировались письма с вложениями и отправлялись через Mozilla Thunderbird. Из этого вышла маленькая процедура.

30.11.2009    15361    kasperok    15    

5

Транслитерация в латиницу

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 Россия Бесплатно (free)

При отправке SMSок из 1С столкнулся с тем, что текст отправлялся только латиницей, а данные-то в кириллице. В результате написал функцию перевода текста в латиницу. Может, кому-нибудь пригодится

02.10.2009    32561    yuraer    18    

42