Формирование синонима переменной из идентификатора

Публикация № 162834

Разработка - Практика программирования

Синоним Создание синонима Полезные функции

Функция формирует синоним переменной из идентификатора, как это делает платформа 1С8.

Функция формирует синоним переменной из идентификатора, как это делает платформа 1С8.
Используется при визуализации таблицы значений, давая читабельные для пользователей названия колонок:

  • "СуммаБезНДС" => "Сумма без НДС",
  • "СуммаЗадолженностиКонтрагента" => "Сумма задолженности контрагента",
  • "СинонимПеременной" => "Синоним переменной".

Для 7.7 переделывается легко.

// Формирует синоним переменной.
// Пример: на входе "ИмяПеременнойАБВГ", на выходе "Имя переменной АБВГ"
//
// Параметры
// ИмяРеквизита - Строка. Имя переменной, имя колонки таблицы
//
// Возвращаемое значение:
// Строка - Представление переменной
//
Функция СформироватьСиноним(ИмяРеквизита)
    
    Перем Синоним, ъ, Символ, ПредСимвол, СледСимвол, Прописная, ПредПрописная, СледПрописная, ДлинаСтроки;
    
    Синоним = ВРег(Сред(ИмяРеквизита, 1, 1));
    ДлинаСтроки = СтрДлина(ИмяРеквизита);
    Для ъ=2 По ДлинаСтроки Цикл
        Символ = Сред(ИмяРеквизита, ъ, 1);
        ПредСимвол = Сред(ИмяРеквизита, ъ-1, 1);
        СледСимвол = Сред(ИмяРеквизита, ъ+1, 1);
        Прописная = Символ = ВРег(Символ);
        ПредПрописная = ПредСимвол = ВРег(ПредСимвол);
        СледПрописная = СледСимвол = ВРег(СледСимвол);
        
        // Варианты:
        Если НЕ ПредПрописная И Прописная Тогда
            Синоним = Синоним + " " + Символ;
        ИначеЕсли Прописная И НЕ СледПрописная Тогда
            Синоним = Синоним + " " + Символ;
        Иначе
            Синоним = Синоним + Символ;
        Конецесли;
    КонецЦикла;
    
    Возврат Синоним;
    
КонецФункции // СформироватьСиноним()

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. DrAku1a 1402 21.11.12 02:55 Сейчас в теме
А вот обратное преобразование:

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


P.S. ъ - как счетчик цика... мда... оригинально.
GATTUSO; anchovy; awk; Rustig; shakmaev; +5 Ответить
16. v.l. 21.11.12 17:32 Сейчас в теме
(1) DrAku1a, гиде взял? ))

Вот пару строк для этого: (8-ка)

	Синоним = ТРег(ИмяРеквизита);
	Синоним = СтрЗаменить(Синоним, " ", "");
	
	Возврат Синоним;
17. andrewks 1290 21.11.12 18:34 Сейчас в теме
(16) что она даст для "Цена закупки" ?
18. v.l. 21.11.12 20:23 Сейчас в теме
(17) andrewks, ну если пошагово, то так:

    Синоним = ТРег(ИмяРеквизита);            | "Цена Закупки"
    Синоним = СтрЗаменить(Синоним, " ", ""); | "ЦенаЗакупки" 
Rustig; Serj1C; +2 Ответить
21. andrewks 1290 21.11.12 20:31 Сейчас в теме
(18) допустим. а для "Сумма НУ" ?
24. DrAku1a 1402 22.11.12 02:27 Сейчас в теме
(16),(18) блин... протупил я... это не обратное преобразование - это аналог получается... :-)
(20) По-идее правильно преобразовывать: "Слава КПСС" <-> "Слава_КПСС", а "Цена закупки" <-> "ЦенаЗакупки", так что, (16) - не совсем верно.
26. v.l. 22.11.12 12:17 Сейчас в теме
(24) DrAku1a, Трям!

А это идея - аббревиатуры отделять знаком подчёркивания.
Да и подчёркивание я не учел в начальной процедуре.
2. nelse 21.11.12 04:09 Сейчас в теме
Мура
GATTUSO; Alien_RS_Forever; shakmaev; RomanUzmov; wolfsoft; +5 Ответить
3. DrAku1a 1402 21.11.12 08:05 Сейчас в теме
(2) Иногда требуется и так поизвращаться...
4. bulas 192 21.11.12 08:23 Сейчас в теме
Если для счетчика вместо ъ использовать Ё, то работает быстрее.
kirinalex; zfilin; Alien_RS_Forever; Rustig; SeiOkami; Артано; +6 Ответить
6. v.l. 21.11.12 12:41 Сейчас в теме
(4) bulas, многолетние опыты британских учёных подтвердили использование именно маленького твёрдого знака "ъ" вместо заглавной "Ё".
5. wolfsoft 2423 21.11.12 11:43 Сейчас в теме
Для ъ=2 По ДлинаСтроки Цикл
<...>
СледСимвол = Сред(ИмяРеквизита, ъ+1, 1);

Дальше можно не смотреть.
GATTUSO; Alien_RS_Forever; Serj1C; +3 Ответить
7. v.l. 21.11.12 12:43 Сейчас в теме
(5) wolfsoft, предложи свой вариант, мне интересно.
10. wolfsoft 2423 21.11.12 14:01 Сейчас в теме
(7) лень копаться, навскидку, чтобы не было выходов за границы строки, например так:

Функция СформироватьСиноним(ИмяРеквизита)
	
	Перем Синоним, ъ, Символ, ПредСимвол, СледСимвол, Прописная, ПредПрописная, СледПрописная, ДлинаСтроки;
	
	Синоним = ВРег(Сред(ИмяРеквизита, 1, 1));
	ДлинаСтроки = СтрДлина(ИмяРеквизита);
	
	Для ъ=2 По ДлинаСтроки Цикл
		
		Символ = Сред(ИмяРеквизита, ъ, 1);
		ПредСимвол = Сред(ИмяРеквизита, ъ-1, 1);
		//СледСимвол = Сред(ИмяРеквизита, ъ+1, 1);
		
		Прописная = Символ = ВРег(Символ);
		ПредПрописная = ПредСимвол = ВРег(ПредСимвол);
		//СледПрописная = СледСимвол = ВРег(СледСимвол);
		
		// Варианты:
		Если НЕ ПредПрописная И Прописная Тогда
			Синоним = Синоним + " " + Символ;
		//ИначеЕсли Прописная И НЕ СледПрописная Тогда
		//	Синоним = Синоним + " " + Символ;
		Иначе
			Синоним = Синоним + Символ;
		КонецЕсли;
		
	КонецЦикла;
	
	Возврат Синоним;
	
КонецФункции // СформироватьСиноним()
Показать
12. v.l. 21.11.12 17:23 Сейчас в теме
(10) wolfsoft, вроде ошибок не было. СледСимвол в последней итерации возвращает пустую строку (8-ка). В 7.7 нет возможности попробовать.
13. andrewks 1290 21.11.12 17:26 Сейчас в теме
(12) Сред() не будет ругаться на выход за границы, а просто вернёт пустоту. это ж не си/паскали вам
19. wolfsoft 2423 21.11.12 20:28 Сейчас в теме
(12) в (13) уже ответили

(16) у нас прямо конкурс решений образовался :)
"ленивый" вариант для обратного преобразования

Функция СформироватьРеквизит(Синоним)
	
	Стр = СтрЗаменить(Синоним, " ", Символы.ПС);
	СтрДлина = СтрЧислоСтрок(Стр);
	
	ИмяРеквизита = "";
	Для Индекс = 1 По СтрДлина Цикл
		
		ТекСтр = СтрПолучитьСтроку(Стр, Индекс);
		
		Если ПустаяСтрока(ТекСтр) Тогда
			Продолжить;
		КонецЕсли;
		
		ИмяРеквизита = ИмяРеквизита + ВРег(Лев(ТекСтр, 1)) + Сред(ТекСтр, 2);
		
	КонецЦикла;
	
	Возврат ИмяРеквизита;
	
КонецФункции // СформироватьРеквизит()
Показать
20. v.l. 21.11.12 20:29 Сейчас в теме
(19) О! А это уже универсальное решение для любой платформы. Респект и уважуха.

Конкурс! да! профинтерес размяться )))

Я вот думаю над параметром "ЦенаСНДС", чтобы его в "Цена с НДС" перевести, наверно, составить словарь односимвольных слов "С", "а", "в", "к". Если массив прописных букв начинается с этого слова, отедалить её как слово.

"СлаваКПСС" тогда сработает как "Слава к ПСС", зато "СуммаСНДС" будет правильно - "Сумма с НДС"!

----

upd: Хотя нет, Символы.ПС - это ж для 8-ки, а в 7.7 РазделительСтрок.
Да и отталкиваться тогда удобнее от пробелов.
25. ShantinTD 88 22.11.12 10:27 Сейчас в теме
(20) про СлаваКПСС - улыбнул. Спасибо.

не в тему:
Разбор предложения: Дочь генерала.
Дочь - "кто?", генерала - "что делала?".
29. Rustig 1589 23.11.12 21:02 Сейчас в теме
(20) надо создать слова-исключения, передавать через параметр, выделять из строки целиком, как раз кажется так и реализовано в (27)
22. andrewks 1290 21.11.12 20:32 Сейчас в теме
(19) wolfsoft, вот это нормально. сам именно такой алгоритм утвердил "в голове", да писАть лень было )
8. SPID 21.11.12 13:02 Сейчас в теме
А что вернет по идентификатору СуммаСНДС? Не тестировал, но кажется получается "Сумма СНДС".
11. v.l. 21.11.12 17:18 Сейчас в теме
(8) SPID, да так и вернёт "Сумма СНДС"
9. Поручик 4435 21.11.12 13:28 Сейчас в теме
Я бы вместо маленького твёрдого знака использовал большой мягкий Ь
anchovy; ShantinTD; +2 Ответить
14. andrewks 1290 21.11.12 17:27 Сейчас в теме
не думал, что подобного рода вспомогательные процедурки, коих пишешь по несколько за день, тянут на публикацию.
GATTUSO; romign; ilov_boris; tolyan_ekb; +4 Ответить
15. v.l. 21.11.12 17:28 Сейчас в теме
(14) andrewks, да вот сам не думал )))
23. v.l. 21.11.12 20:34 Сейчас в теме
Чуть позже, дома проверю)))
27. sstar90 22.11.12 14:59 Сейчас в теме
Внесу и свою лепту - в прикрепленной обработке функции преобразования, которые я использую.
Результат их выполнения:
"Сумма_С_НДС", "СуммаСНДС" => "Сумма с НДС"
"Сумма с НДС", "Сумма _ с НДС" => "СуммаСНДС"
Прикрепленные файлы:
ВнешняяОбработка1.epf
28. v.l. 22.11.12 17:02 Сейчас в теме
30. eugen91 25.11.12 01:33 Сейчас в теме
да, по мне можно было красивее найти выход
31. v.l. 26.11.12 13:58 Сейчас в теме
32. maloi_a 26.11.12 14:18 Сейчас в теме
Проверка на прописные буквы делается просто:

// 7.х
Прописная = Символ>="А" И Символ<="Я" ИЛИ Символ>="A" И Символ<="Z";
// 8.х
Прописная = КодСимвола(Символ)>=КодСимвола("А") И КодСимвола(Символ)<=КодСимвола("Я")
ИЛИ КодСимвола(Символ)>=КодСимвола("A") И КодСимвола(Символ)<=КодСимвола("Z");
33. v.l. 26.11.12 15:04 Сейчас в теме
(32) maloi_a, точно. Для 7.7 сгодится. Но ведь в 8-ке куда проще написать
Прописная = Символ = ВРег(Символ);
. С латиницей понятно, там действительно алфавит находится в одной последовательности, не прерываясь.
Что же делать с национальными кодировками? Украинский, белорусский, казахский языки имеют свои буквы, которые не вписываются в диапазон А..Я, они часто стоят отдельно. Та же Ё и ё не вписываются в диапазон "а".."я", они раньше. Так же и с "Ґ" и "ґ", "Є" и "є", "І" и "і", "Ї" и "ї", "Ў" и "ў". Да и КодСимвола("Z") ведь постоянный, можно просто заменить на диапазон 0x41..0x5a. Правда? )))

За подсказку спасибо, в 7.7 код не тестировал, честно.
34. maloi_a 26.11.12 15:49 Сейчас в теме
(33)
Всё правильно.
Да и с русским языком тоже проблема с "Ё".
В 7.х простое сравнение строк не пойдёт.
Проверил, там "=" к строкам правильно, а ">", "<" для строк применяются без учёта регистра.
Надо использовать КодСимв() и проверку на Ё.
35. v.l. 26.11.12 19:43 Сейчас в теме
(34) maloi_a, не только Ё, но и на другие буквы с диакритическими знаками. Не помню уже, но в каком-то типовом семёрочном клиент-банке при выгрузке/загрузке в/из ДБФ все эти буквы с диакритическими знаками конвертировались туда-сюда. Уже не помню, во что, но эти белорусские Ў были вместе с украинскими Є и Ї. Потому что в ДБФ они терялись (((
36. O-Planet 6897 27.11.12 11:20 Сейчас в теме
Обсуждение пошло явно не в то русло :)
Предлагаю альтернативное решение проблемы:

Процедура ВариацияЪ(Знач Стр,П=1)
	Если П>59 Тогда
		Возврат Стр;
	КонецЕсли;	
	Большие="ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁQWERTYUIOPASDFGHJK­LZXCVBNM";
	Махонькие="йцукенгшщзхъфывапролджэячсмитьбюёqwertyuiopasdfgh­jklzxcvbnm";
	Х=Найти(Стр,Сред(Большие,П,1));
	Если Х=0 Тогда
		П=П+1;
	Иначе
		Стр=Лев(Стр,Х-1)+" "+Сред(Махонькие,Х,1)+Сред(Стр,Х+1);
	КонецЕсли;	
	Возврат ВариацияЪ(Стр,П);
КонецПроцедуры
Показать


Зацените мощЪ мысли... :D
37. O-Planet 6897 27.11.12 11:23 Сейчас в теме
Пс... И не говорите мне про НРЕГ! Тогда оно уже почти перестанет быть быдлокодом...
38. maloi_a 27.11.12 15:18 Сейчас в теме
(37)
Процедуру заменить на функцию
и
Стр=Лев(Стр,Х-1)+" "+Сред(Махонькие,П,1)+Сред(Стр,Х+1);

Тогда будет всё правильно.
40. O-Planet 6897 27.11.12 17:22 Сейчас в теме
39. KillHunter 7 27.11.12 16:07 Сейчас в теме
да хороший вариант:
Стр=Лев(Стр,Х-1)+" "+Сред(Махонькие,П,1)+Сред(Стр,Х+1);
41. O-Planet 6897 27.11.12 17:25 Сейчас в теме
А вот интересно, на какой длине строки этот вариант начнёт работать быстрее, чем оригинальный в статье?
44. maloi_a 28.11.12 09:16 Сейчас в теме
(41)
При длине имени больше 200 ВариацияЪ() будет быстрее.
Увы.
Мой вариант самый эффективный - сравнение "<>" работает быстрее встроенной Врег().
42. ildarovich 7120 28.11.12 02:04 Сейчас в теме
Предложу свой вариант на основе стэйт-машины
Функция Синонимайзер(Имя, Ответ = "", Стэйт = 7, б = "") Экспорт
	Для ё = 1 По СтрДлина(Имя) Цикл
		а = Сред(Имя, ё, 1);
		Стэйт = (НРег(а) <> а) * 4 + Цел(Стэйт / 2);
		Ответ = Ответ + ?(Стэйт = 2, НРег(б), ?(ё = 2, ВРег(б), б)) + ?(Стэйт = 4 ИЛИ Стэйт = 5, " ", "");
		б = а
	КонецЦикла;
	Возврат Ответ + б
КонецФункции
Показать
Выгодное отличие здесь в том, что символ вырезается из строки и проверяется на регистр только один раз. Если б не надо было первую букву делать заглавной - было бы еще красивее.
46. v.l. 29.11.12 11:36 Сейчас в теме
(42) Класс!
Значения параметров что обозначают? // сплю я еще
47. ildarovich 7120 05.12.12 21:03 Сейчас в теме
(46) Значения параметров обозначают начальные значения переменных цикла. Делая их параметрами, мы, кроме сокращения количества строк в записи функции, добиваемся некоторого расширения ее возможностей. Например, присвоив параметру Ответ значение "Синоним:" мы получим результат, начинающийся со строки "Синоним:". Присвоив параметру Стэйт значение 7 * 2 * 2 * 2 * 2 * 2 (7 умножить на два в некоторой степени), мы "защитим от преобразования" соответствующее количество символов в имени. Присвоив параметру б некоторое значение, мы получим результат, начинающийся с этого значения, записанного в верхнем регистре.
v.l.; mr_sav; Evil Beaver; +3 Ответить
48. v.l. 06.12.12 01:35 Сейчас в теме
(47) ildarovich, вона, как... Для меня пока слишком умнО.
43. Jogeedae 38 28.11.12 05:15 Сейчас в теме
непорядок :)
СинКосТан32Котан
Син кос тан32 котан - преобразование 1с-ки
Син кос тан 32Котан - преобразование Синонимайзера
45. ildarovich 7120 28.11.12 11:00 Сейчас в теме
(43) Внес исправления, теперь должно работать правильно...
Прикрепленные файлы:
mr_sav; Jogeedae; +2 Ответить
49. Поручик 4435 17.01.13 12:19 Сейчас в теме
Немного подумал и решил использовать в рабочем проекте.
50. nick-max 234 06.08.13 11:02 Сейчас в теме
51. nalivai-chai 655 20.09.13 15:52 Сейчас в теме
Хотел здесь найти функцию, которая вернет правильный идентификатор по произвольной строке, но не нашел(:
Пришлось самому писать, вот может кому пригодиться:

//	Возвращает правильный идентификатор переменной языка 1С из произвольной строки.
//
Функция ПолучитьПравильноеИмяИдентификатораЯзыка1С(Строка)
	
	ДлинаСтроки = СтрДлина(Строка);
	
	Идентификатор = "";
	
	ПерваяБуква = Истина;
	
	Для НомерСимвола = 1 По ДлинаСтроки Цикл
		
		ТипСимвола = ТипСимвола(Строка, НомерСимвола); 
		Если ТипСимвола >= 1 И ТипСимвола <= 4 Тогда
			Если ПерваяБуква Тогда
				Идентификатор = Идентификатор + ВРег(Сред(Строка, НомерСимвола, 1));
			Иначе
				Идентификатор = Идентификатор + Сред(Строка, НомерСимвола, 1);
			КонецЕсли;
			ПерваяБуква = Ложь;
		Иначе
			Если ТипСимвола >= 5 И ТипСимвола <= 6 Тогда
				Идентификатор = Идентификатор + Сред(Строка, НомерСимвола, 1);
			КонецЕсли;
			ПерваяБуква = Истина;
		КонецЕсли;
		
	КонецЦикла;
	
	Если ПустаяСтрока(Идентификатор) Тогда
		Возврат Неопределено;
	КонецЕсли;
	
	Если ТипСимвола(Идентификатор, 1) = 5 Тогда
		Идентификатор = "_" + Идентификатор;
	КонецЕсли;
	
	Возврат Идентификатор;
   
КонецФункции
	
//	Возвращает код типа символа:
//		1	- верхний регистр кириллицы;
//		2	- нижний регистр криллицы;
//		3	- верхний регистр латиницы;
//		4	- нижний регистр латинцы;
//		5	- цифра;
//		6	- нижние подчеркивание;
//		-1	- не является ни буквой, ни цифрой.
Функция ТипСимвола(Стр, Поз = 1) Экспорт
	
	Код_с = КодСимвола(Стр, Поз);
		
	Код_0		= 48;	//	КодСимвола("0");
	Код_9 		= 57;	//	КодСимвола("9");

	Код_в_Эй	= 65;	//	КодСимвола("A");
	Код_в_Зэд	= 90;	//	КодСимвола("Z");
	Код_н_эй	= 97;	//	КодСимвола("a");
	Код_н_зэд	= 122;	//	КодСимвола("z");
	
	Код_		= 95;   //	КодСимвола("_");

	Код_в_А		= 1040;	//	КодСимвола("А");
	Код_в_Я		= 1071;	//	КодСимвола("Я");
	Код_н_а		= 1072;	//	КодСимвола("а");
	Код_н_я		= 1103;	//	КодСимвола("я");
	
	Если (Код_с >= Код_в_А) И (Код_с <= Код_в_Я) Тогда
		Возврат 1;
	ИначеЕсли (Код_с >= Код_н_а) И (Код_с <= Код_н_я) Тогда
		Возврат 2;
	ИначеЕсли (Код_с >= Код_в_Эй) И (Код_с <= Код_в_Зэд) Тогда
		Возврат 3;
	ИначеЕсли (Код_с >= Код_н_эй) И (Код_с <= Код_н_зэд) Тогда
		Возврат 4;
	ИначеЕсли (Код_с >= Код_0) И (Код_с <= Код_9) Тогда
		Возврат 5;
	ИначеЕсли Код_с = Код_ Тогда
		Возврат 6;
	КонецЕсли;
		
	Возврат -1;
	
КонецФункции

Показать
52. v.l. 17.10.13 11:57 Сейчас в теме
(51) nalivai-chai, "нижнее подчеркивание"... Хм... навеяло: "В подвале клуба любителей тавтологии обнаружен смертельно убитый труп погибшего мертвеца".

А можно ж и переделать: убрать недопустимые символы и символ после пробела преобразовать к верхнему регистру, а пробел удалить.
Аналог такой функции я использовал в отчете по менеджерам в 2008 году http://infostart.ru/public/16635
Там динамически формируются колонки в таблице значений по фамилиям менеджеров.

В типовых есть процедура,разлагающая строку на массив слов. Обходя массив делать первый символ верхним. Навскидку:
Подстроки = Общегоназначения.РазложитьСтрокуВМассивПодстрок(Синоним, " ");
Имя = "";
Для каждого ТекСтрока Из Подстроки Цикл
	Имя = Имя + ТРег(ТекСтрока);
КонецЦикла;
53. nalivai-chai 655 17.10.13 19:59 Сейчас в теме
(52) однако, не один такой, из Википедии:

... Кроме того, этот символ часто называют «Нижнее подчёркивание», что также некорректно и является плеоназмом — подчёркивание всегда выполняется снизу...
54. Denic_01 30 30.07.20 10:30 Сейчас в теме
Строку:
Синоним = Синоним + " " + Символ;

В некоторых случаях следует заменить на:
Синоним = Синоним + " " + НРег(Символ);

т.к. в простом случае, сейчас "ЦенаЗакупки"
Вернет "Цена Закупки"
что неверно - должно быть "Цена закупки"

в остальном рабочий вариант)
Оставьте свое сообщение

См. также

Использование программных перечислений, ч.1: строковые константы Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    37589    unichkin    74    

Программная работа с настройками СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

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

27.01.2020    28244    ids79    26    

[СКД] Программное создание схемы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    24893    John_d    22    

Последовательности событий при проведении документа 1С. Шпаргалка + про формы + про расширения

Практика программирования v8 Россия Бесплатно (free)

Собрал информацию о событиях/подписках/расширениях в одном месте.

30.12.2019    19140    kuzyara    33    

Вспомогательные инструкции в коде 1С Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    30635    tormozit    100    

30 задач. Странных и не очень

Практика программирования v8 Бесплатно (free)

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    17333    YPermitin    72    

Как передать IP адрес, который вызвал HTTP запрос в 1C (для веб-сервера Apache)

Практика программирования v8 Бесплатно (free)

Столкнулся с задачей получения IP адреса, который вызывает http сервис 1С. Итак, решение:

22.11.2019    8617    Sibars    19    

Таблица значений. Нюансы

Практика программирования v8 Бесплатно (free)

Обзор некоторых аспектов использования общеизвестного инструмента 1С.

01.10.2019    34302    Yashazz    50    

Оформление и рефакторинг сложных логических выражений Промо

Практика программирования v8 Россия Бесплатно (free)

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

20.09.2012    78258    tormozit    131    

О программе Postman для тестирования API и для чего она нужна 1С-нику

Практика программирования Программное обеспечение (software) v8 Бесплатно (free)

Для чего нужна программа Postman для тестирования API и какая от него польза для 1С-программиста.

24.09.2019    12282    budidich    28    

[Шпаргалка] Программное создание элементов формы

Практика программирования Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Программное создание практически всех популярных элементов формы.

06.09.2019    52265    rpgshnik    63    

Агрегатные функции СКД, о которых мало кто знает

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    50740    ids79    54    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.

11.07.2007    48724    tormozit    41    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    29276    YPermitin    24    

Три костыля. Сказ про фокусы в коде

Практика программирования v8 Бесплатно (free)

Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.

03.09.2019    25772    YPermitin    80    

Отслеживание выполнения фонового задания

Практика программирования Универсальные функции Разработка v8 1cv8.cf Бесплатно (free)

Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.

17.08.2019    32011    ids79    16    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017    45091    tormozit    74    

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    86009    ids79    49    

Фоновое выполнение кода в 1С - это просто

Практика программирования v8 1cv8.cf Бесплатно (free)

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

02.08.2019    36751    avalakh    22    

Разбираемся с параметрами редактирования СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Связь по типу, Параметры выбора, Связи параметров выбора

31.07.2019    24695    json    14    

Выгрузка документа по условию Промо

Практика программирования Разработка v8 Бесплатно (free)

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    16137    m-rv    2    

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    62093    ids79    11    

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Инструментарий разработчика Практика программирования v8 v8::СКД Бесплатно (free)

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    36468    ids79    27    

Регистры сведений. За кулисами

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    26447    YPermitin    14    

Как прикрутить ГУИД к регистру сведений Промо

Практика программирования Перенос данных из 1C8 в 1C8 Разработка v8 Бесплатно (free)

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

16.04.2019    20400    m-rv    17    

"Меньше копипаста!", или как Вася универсальную процедуру писал

Практика программирования Разработка v8 v8::СКД 1cv8.cf Бесплатно (free)

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    19810    SeiOkami    50    

Работа с настройками системы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

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

02.07.2019    48381    ids79    17    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    53821    ids79    25    

Как сделать запрос на изменение данных Промо

Практика программирования v8 v8::Запросы 1cv8.cf Бесплатно (free)

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    30923    m-rv    21    

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017

Практика программирования Производительность и оптимизация (HighLoad) v8 v8::Запросы Бесплатно (free)

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    25469    dmurk    145    

Регистры накопления. Виртуальные таблицы. Часть №2: "Остатки" и "Остатки и обороты"

Практика программирования v8 1cv8.cf Бесплатно (free)

Описание работы платформы 1С:Предприятие 8.2 с виртуальными таблицами регистров накопления "Остатки" и "Остатки и обороты". Анализ SQL-запрос при работе с виртуальными таблицами

22.05.2019    26016    YPermitin    7    

Регистры накопления. Структура хранения в базе данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

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

16.05.2019    44116    YPermitin    30    

Метод формирования движений в типовых регистрах нетиповыми регистраторами Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

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

05.12.2017    28369    itriot11    34    

О расширениях замолвите слово...

Практика программирования Разработка v8 Бесплатно (free)

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    35794    ellavs    126    

Git-репозитории для 1С-кода (опыт использования при небольших проектах)

Практика программирования v8 Бесплатно (free)

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    27635    ellavs    90    

Трюки с внешними источниками данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Некоторые трюки для преодоления ограничений внешних источников данных.

14.03.2019    31747    YPermitin    53    

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    76745    Serginio    108    

Ошибки при работе с хранилищем конфигурации и способы их решения

Практика программирования v8 Бесплатно (free)

В статье собраны наиболее распространенные ошибки при работе с хранилищем конфигурации и способы их обхода и решения.

01.03.2019    40514    Смешной 1С    28    

Разработка и сценарное тестирование с Vanessa-ADD. Отчетность Allure. Автоматизация запуска сценариев

Практика программирования Vanessa Automation v8 Россия Бесплатно (free)

Формируем отчетность о результатах выполнения сценариев. Автоматизируем запуск.

26.02.2019    22447    Vladimir Litvinenko    27    

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    35251    ids79    40    

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS)

Практика программирования БСП (Библиотека стандартных подсистем) Роли и права v8 v8::Права Бесплатно (free)

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    40661    ids79    9    

Тестер: частые вопросы Промо

Практика программирования v8 Бесплатно (free)

Ошибкам бой - тесты норма жизни!

25.07.2018    29404    grumagargler    28    

EnterpriseData – часть 2. Процесс выгрузки данных

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

Основные этапы выгрузки данных через ED, обработчики событий выгрузки, правила обработки данных, правила конвертации объектов, конвертация свойств первого и второго этапов, процедуры БСП, используемые при выгрузке данных, структура «КомпонентыОбмена».

26.12.2018    27208    ids79    31    

Новый подход к обмену данными EnterpriseData

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

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

14.12.2018    42144    ids79    72    

EnterpriseData - пример доработки правил конвертации без использования КД 3.0 в расширении конфигурации

Практика программирования Обмен через XML v8 v8::УФ БП3.0 УТ11 Россия Бесплатно (free)

В статье подробно описан реальный пример доработки обмена данными через EnterpriseData (универсальный формат обмена) между конфигурациями УТ 11.4 и Бухгалтерия 3.0

16.11.2018    37709    ids79    42    

Ускоряем 1С: модули с повторным использованием возвращаемых значений Промо

Практика программирования v8 Бесплатно (free)

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

04.09.2017    53119    m-rv    61    

Программное заполнение пользовательских параметров и отборов СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

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

13.11.2018    49007    Unk92    25