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

Публикация № 1650362 25.04.22

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

загрузка json 1с:контрагент

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

Попросили поделиться своим кодом для получения и разбора данных из 1С:Контрагент по их новому rest интерфейсу. Ничего сложного там нет, для разбора json использован и немного переработан код из Парсер JSON для платформы 7.7

Для работы нужен 1с++

Основная функция - глПолучитьРеквизитыКонтрагентаПоИНН(ИНН), ИНН нужно передавать уже "очищенный" от КПП.

Результат - Структура с данными, по коду, думаю, разберётесь какие свойства заполняются.

В моей конфигурации в справочнике "Контрагенты" есть реквизиты "Страна" и "Город", "Страна" - это обычный "ОКСМ", "Город" - это по сути аналог справочника  "Регионы" в каких то типовых, у вас может ничего этого не быть

Ах да, ещё, я не смогла найти список кодов статуса, которые выдаёт сервис, поэтому добавила в конфигурацию справочник, куда добавляю коды статуса, которые являются допустимыми для добавления контрагента, на сегодняшний день я смогла "вычислить" три таких: 001,112,132

17.06.2022

В процессе работы потребовалось вернуться к заполнению адреса контрагента по правилам МНС, и я наткнулась на проблему: данные о корпусах и квартирах в json это массивы.

А т.к. я переделала оригинальный код разбора json - вместо списка значений получаю структуру. Оказалось что структура из 1cpp не работает с ключами в виде цифр. Можно было бы извернуться, добавив к индексу в массиве какой-нибудь буквенный префикс, но я решила поступить по другому - заполнять значение структуры вектором из того же 1cpp

Заодно и немного подшаманила типовой код обработки "ВводАдреса", чтобы заполнялось поле КодСтраны с строке адреса

Процедура ПредставитьАдресВФорматеМНС(Адрес)
	
	АдресСписком = глРазложить(Адрес);
	
	Попытка
		КодСтраны = АдресСписком.ПолучитьЗначение(1); 
        //<--Вставка кода страны по умолчанию
		Если (ПустоеЗначение(КодСтраны) = 1) или (Врег(КодСтраны) = "РОССИЯ") или (Врег(КодСтраны) = "РФ") Тогда
			КодСтраны = "643";
		КонецЕсли;
        //->
		Индекс   = АдресСписком.ПолучитьЗначение(2);
		Для Номер = 1 По 5 Цикл 
			УстановитьЗначенияОбъекта(ВидПоНомеру(Номер), "", АдресСписком.ПолучитьЗначение(Номер + 2));
		КонецЦикла;
		Дом         = глНомерИзАдреснойСтроки(Адрес, 8);
		Корпус      = глНомерИзАдреснойСтроки(Адрес, 9);
		Квартира    = глНомерИзАдреснойСтроки(Адрес, 10); 
		ТипДома     = глТипИзАдреснойСтроки(АдресСписком.ПолучитьЗначение(8),  "ТипыДомов");
		ТипКорпуса  = глТипИзАдреснойСтроки(АдресСписком.ПолучитьЗначение(9),  "ТипыКорпусов"); 
		ТипКвартиры = глТипИзАдреснойСтроки(АдресСписком.ПолучитьЗначение(10), "ТипыКвартир"); 
	Исключение
	КонецПопытки;
	
КонецПроцедуры // ПредставитьАдресВФорматеМНС()

Код в публикации исправлен

 

Функция НайтиГородПоНаименованию(НаимГорода)
	
	НаимГорода = глПреобразоватьРегистр(НаимГорода);
	
	спрГорода = СоздатьОбъект("Справочник.Города");
	Если спрГорода.НайтиПоНаименованию(наимГорода, 0, 1) = 1 Тогда
	    Возврат спрГорода.ТекущийЭлемент();
	КонецЕсли;
	
	Возврат "";
	
КонецФункции

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

Функция jsonВСтруктуру(obj)
	
	scriptCtrl =  СоздатьОбъект("MSScriptControl.ScriptControl");
	scriptCtrl.Language="jscript";
	код = "                           
	|
	| // Получить элемент массива
	| function aGet(Array, index) {
	|  return(Array[index]);
	| }
	|
	| // Получить ключ пары по индексу
	| function oKey(Obj, index) {
	|  var size = 0, key;
	|  for (key in Obj) {
	|   if (size == index) break;
	|   if (Obj.hasOwnProperty(key)) size++;
	|  }
	|  return(key);
	| }
	|
	| // Получить значение пары по ключу
	| function oValueByKey(Obj, key) {
	|  return(Obj[key]);
	| }
	|
	| //Получить количество пар в объекте
	| Object.size = function(obj) {
	|  var size = 0, key;
	|  for (key in obj) {
	|   if (obj.hasOwnProperty(key)) size++;
	|  }
	|  return(size);
	| }
	|
	| //Получить размер объекта (количество пар в нём)
	| function oSize(Obj) {
	|  return(Object.size(Obj));
	| }
	|
	| // Получить тип объекта (number, string, object, array)
	| function eType(Element) {
	|  if (Element instanceof Array) {
	|    return(""array"");
	|  } else if (Object.prototype.toString.call(Element) === '[object Array]') {
	|    return(""array"");
	|  } else {
	|   return(typeof(Element));
	|  }
	| }
	|";
	
	scriptCtrl.AddCode(код);
	
	РезультатРазбора = СоздатьОбъект("Структура");
	
	ТипОбъекта = scriptCtrl.run("eType", obj);
	
	Если ТипОбъекта = "object" Тогда
		
		Для н=0 По scriptCtrl.run("oSize", obj)-1 Цикл    
			
			Ключ = scriptCtrl.run("oKey", obj, н);            
			Значение = scriptCtrl.run("oValueByKey", obj, Ключ);
			ТипЗнач = scriptCtrl.run("eType", Значение);
			//Сообщить(Ключ + " = " + Значение + " ("+ ТипЗнач +")");
			
			Если Найти("number, string", ТипЗнач) > 0 Тогда
				
				РезультатРазбора.Вставить(Ключ, Значение);
				
			ИначеЕсли Найти("object, array", ТипЗнач) > 0 Тогда

				РезультатРазбора.Вставить(Ключ, jsonВСтруктуру(Значение));

			КонецЕсли;
			
		КонецЦикла;                                  
		
	ИначеЕсли ТипОбъекта = "array" Тогда
		
		МассивЗначений = СоздатьОбъект("Вектор");
		
		Для н = 0 По obj.length - 1 Цикл
			
			Значение = scriptCtrl.run("aGet", obj, н);  
			ТипЗнач = scriptCtrl.run("eType", Значение);
			
			Если Найти("number, string", ТипЗнач) > 0 Тогда
				
				МассивЗначений.Добавить(Значение);
				
			ИначеЕсли Найти("object, array", ТипЗнач) > 0 Тогда

				МассивЗначений.Добавить(jsonВСтруктуру(Значение));
				
			КонецЕсли;
			
		КонецЦикла;
		
		Возврат МассивЗначений;
		
	КонецЕсли;
	
	Возврат РезультатРазбора;
	
КонецФункции //jsonВСписок(obj)

Функция глРазборJSON(Знач Стр) Экспорт //На входе строка в текущей системной кодировке
	
	scriptCtrl =  СоздатьОбъект("MSScriptControl.ScriptControl");
	scriptCtrl.Language="jscript";
	
	Рез = scriptCtrl.Eval("("+СтрЗаменить(стр, РазделительСтрок,"")+");");
	
	РезультатРазбора = jsonВСтруктуру(Рез);
	
	Возврат РезультатРазбора;
	
КонецФункции //глРазборJSON(Знач Стр)

Функция МассивВСтроку(МассивЗначений)
	
	СтрокаИзМассива = "";
	Для Н = 0 По МассивЗначений.Количество() - 1 Цикл
		Структура = МассивЗначений.Получить(Н);
		Номер = СтрЗаменить(Структура.number, ",", ";");
		СтрокаИзМассива = СтрокаИзМассива + Структура.type + " " + Номер + " ";
	КонецЦикла;
	
	Возврат СтрокаИзМассива;
	
КонецФункции

Функция глПолучитьРеквизитыКонтрагентаПоИНН(ИНН) Экспорт

	РеквизитыКонтрагента = СоздатьОбъект("Структура");
	РеквизитыКонтрагента.Вставить("КодСтатус", 0);
	РеквизитыКонтрагента.Вставить("ЗапретитьОтгрузку", 0);

	спрКодСтатусаКонтрагента = СоздатьОбъект("Справочник.КодыСтатусаКонтрагента");
	
	Если СтрДлина(СокрЛП(ИНН)) = 10 Тогда
		Ресурс = "/rest/corporation/v1/find-corporation-by-inn";
	Иначе
		Ресурс = "/rest/person/v1/find-person-by-inn"
	КонецЕсли;

	Параметр = "?inn=" + ИНН;
	
	Запрос = СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
	Запрос.Open("GET", "https://api.orgregister.1c.ru" + Ресурс + Параметр, 0);
	Запрос.SetCredentials(СокрЛП(Константа.ЛогинИТС), СокрЛП(Константа.ПарольИТС), 0);
	Запрос.Send("");
	
	Если Запрос.Status = 200 Тогда
		
		РезультатРазбора = глРазборJSON(Запрос.ResponseText);
		
		Если РезультатРазбора.Количество() = 1 Тогда
			
			Предупреждение("Контагента с ИНН = " + ИНН + " не существует!");
			РеквизитыКонтрагента.ЗапретитьОтгрузку = 1;
			Возврат РеквизитыКонтрагента;

		КонецЕсли;
		
		Если СтрДлина(СокрЛП(ИНН)) <= 10 Тогда
		
			Наименование = РезультатРазбора.name;
			РеквизитыКонтрагента.Вставить("Наименование", Наименование.commonName);
			РеквизитыКонтрагента.Вставить("ПолнНаименование", Наименование.fullName);
			
			Статус = РезультатРазбора.status;
			РеквизитыКонтрагента.Вставить("КодСтатус", Статус.code);
			Если спрКодСтатусаКонтрагента.НайтиПоКоду(РеквизитыКонтрагента.КодСтатус) = 0 Тогда
				РеквизитыКонтрагента.ЗапретитьОтгрузку = 1;
				Предупреждение("Контрагент в статусе " + Статус.name);
				Возврат РеквизитыКонтрагента;
			КонецЕсли;
			
			РеквизитыКонтрагента.Вставить("ОГРН", РезультатРазбора.ogrn);
			
			КПП = РезультатРазбора.kpp;
			РеквизитыКонтрагента.Вставить("КПП", КПП.value);

			Если РезультатРазбора.Свойство("headPersonInfo") = 1 Тогда
				Руководители = РезультатРазбора.headPersonInfo;

				Директор = Руководители.director;

				Контакт = СоздатьОбъект("Структура");
				Контакт.Вставить("Должность", Директор.position);
				Контакт.Вставить("ФИО", Директор.lastName  + " " + Директор.name + " " + Директор.patronymic);
	
				РеквизитыКонтрагента.Вставить("Контакт", Контакт);
				
			КонецЕсли;
			
			//{Юридический адрес
			Адрес =	РезультатРазбора.address;

			Страна = Адрес.country;
			КодСтраны = Адрес.countryCode;
			
			спрСтрана = НайтиСтрануПоКоду(КодСтраны);
			Если ПустоеЗначение(спрСтрана) = 0 Тогда
				РеквизитыКонтрагента.Вставить("Страна", спрСтрана);
			КонецЕсли;
			
			Если Адрес.Свойство("city") = 1 Тогда
				Город = Адрес.city;
			Иначе
				Город = Адрес.area;
			КонецЕсли;
				
			спрГород = НайтиГородПоНаименованию(Город);
			Если ПустоеЗначение(спрГород) = 0 Тогда
				РеквизитыКонтрагента.Вставить("Город", спрГород);
			КонецЕсли;
				
			
			АдресСтрока = Адрес.countryCode 
				+ "," + Адрес.postalCode
				+ "," + ?(Адрес.Свойство("area") = 1, Адрес.area + ?(Адрес.Свойство("areaType") = 1, " " + Адрес.areaType, ""), "")
				+ "," + ?(Адрес.Свойство("city") = 1, Адрес.city + " " + Адрес.cityType, "")
				+ "," + ?(Адрес.Свойство("district") = 1, Адрес.district  + " " + Адрес.districtType, 
						?(Адрес.Свойство("munDistrict") = 1, Адрес.mundistrictType  + " " + Адрес.mundistrict, ""))
				+ "," + ?(Адрес.Свойство("locality") = 1, Адрес.locality  + " " + Адрес.localityType, "")
				+ "," + ?(Адрес.Свойство("street") = 1, Адрес.street + " " + Адрес.streetType, "")
				+ "," + ?(Адрес.Свойство("house") = 1, Адрес.houseType  + " " + Адрес.house, "")
				+ "," + ?(Адрес.Свойство("buildings") = 1, МассивВСтроку(Адрес.buildings), "")
				+ "," + ?(Адрес.Свойство("apartments") = 1, МассивВСтроку(Адрес.apartments), "");
			РеквизитыКонтрагента.Вставить("ЮридическийАдрес", АдресСтрока);
			
			//}
		
		Иначе
			
			СвФЛ = РезультатРазбора.person;
			РеквизитыКонтрагента.Вставить("Наименование", СвФЛ.lastName + " " + Лев(СвФЛ.name, 1) + ". " + Лев(СвФЛ.patronymic, 1) + ". ИП");
			РеквизитыКонтрагента.Вставить("ПолнНаименование", "ИП " + СвФЛ.fio);
 			РеквизитыКонтрагента.Вставить("Пол", СвФЛ.gender);

			Информация = РезультатРазбора.registrationInfo;
			Статус = Информация.status;
			РеквизитыКонтрагента.Вставить("КодСтатус", Статус.code);
			Если спрКодСтатусаКонтрагента.НайтиПоКоду(РеквизитыКонтрагента.КодСтатус) = 0 Тогда
				РеквизитыКонтрагента.ЗапретитьОтгрузку = 1;
				Предупреждение("Контрагент в статусе " + Статус.name);
				Возврат РеквизитыКонтрагента;
			КонецЕсли;

			Гражданство = РезультатРазбора.citizenship;
			Страна = Гражданство.countryName;
			КодСтраны = Гражданство.countryCode;
			
			спрСтрана = НайтиСтрануПоКоду(КодСтраны);
			Если ПустоеЗначение(спрСтрана) = 0 Тогда
				РеквизитыКонтрагента.Вставить("Страна", спрСтрана);
			КонецЕсли;
			
		КонецЕсли;
		
	Иначе
		
		Предупреждение("Не удалось связазться с сервером: " + Запрос.statusText);
		
	КонецЕсли;
			
	Возврат РеквизитыКонтрагента;
	
КонецФункции	

 

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. quazare 2263 25.04.22 17:56 Сейчас в теме
за развитие 7-ки ставлю плюс!
2. Isay 19.05.22 22:17 Сейчас в теме
Здравствуйте. Подскажите, каким образом Вы далее обрабатываете объект: РеквизитыКонтрагента = СоздатьОбъект("Структура"); Структура - это же не типовой объект для 7.7 он же боль от 8-ки. Просто не могу понять какими методами с ним далее работать. Спасибо.
3. zhenyat 4 20.05.22 15:20 Сейчас в теме
(2) Я же написала, что для работы моего кода нужен 1с++. :)
Можете переделать на "СписокЗначений", тогда код из Парсер JSON для платформы 7.7 можно взять как есть и изменить код по заполнению струкутры на заполнение списка
Оставьте свое сообщение

См. также

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

Универсальные функции v7.7 Россия Бесплатно (free)

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

30.06.2021    2366    Zoltan_Black    11    

Заполнение реквизитов документов из предыдущего документа

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

Функция для автоматического заполнения реквизитов документов.

04.02.2019    5977    drevilo    2    

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

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

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

16.05.2016    11996    kudenzov    3    

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

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

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

24.09.2015    19586    Anzhey    14    

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

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

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

05.07.2015    20519    json    3    

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

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

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

20.06.2015    13600    gimalaj    3    

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

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

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

20.08.2014    8426    hvv2002    0    

1C 7.7 - разбор JSON версия 2

Универсальные обработки v7.7 Абонемент ($m)

Парсер JSON для 1С 7.7

1 стартмани

06.04.2014    23341    79    FatSlon    4    

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

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

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

08.03.2014    10001    kras_71    0    

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

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

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

03.03.2014    18662    kompas-dm    5    

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

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

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

08.08.2012    17608    www2000    4    

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

Универсальные функции v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Бесплатно (free)

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

08.08.2012    15118    mikukrnet    7    

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

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

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

23.07.2012    13860    BorisBelov    11    

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

Универсальные функции v7.7 v8 1cv8.cf 1cv7.md Бесплатно (free)

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

09.07.2012    22060    dusha0020    8    

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

Универсальные функции openconf v77::БУ 1cv7.md Россия Бесплатно (free)

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

30.10.2011    11626    zaursoft    11    

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

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

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

17.10.2011    6652    Krokokot    3    

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

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

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

28.09.2011    17514    dnikolaev    8    

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

Универсальные функции v77::БУ 1cv7.md Россия Бесплатно (free)

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

15.07.2011    10941    natalika1601    14    

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

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

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

29.04.2011    7210    Q-Q    9    

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

Зарплата Универсальные функции v77::Расчет 1С7:ЗиК Россия БУ Бесплатно (free)

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

19.02.2011    11346    jack19    3    

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

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

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

06.12.2010    18400    АннаШ    10    

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

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

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

05.11.2010    10074    Rusk51    10    

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

Универсальные функции v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Бесплатно (free)

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

18.10.2010    26083    brr    11    

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

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

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

02.07.2010    14402    Sk0rp    24    

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

Универсальные функции v77::БУ 1cv7.md Россия Бесплатно (free)

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

08.06.2010    19123    79044970523    8    

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

Универсальные функции v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Бесплатно (free)

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

19.05.2010    14140    Antoska    19    

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

Универсальные функции v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Бесплатно (free)

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

12.05.2010    15219    prolancer    5    

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

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

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

14.04.2010    22893    v.l.    14    

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

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

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

10.03.2010    10117    arithmometr    1    

Восстанавливаем штрих-код (7.7)

Универсальные функции v77::ОУ v77::БУ v77::Расчет 1cv7.md Бесплатно (free)

Если сканер плохо читает...

25.01.2010    20740    Арчибальд    8    

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

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

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

22.01.2010    18358    Gvozdod    3    

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

Универсальные функции v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Бесплатно (free)

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

09.12.2009    11874    mdbm    11    

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

Универсальные функции Email v77::ОУ v77::БУ 1cv7.md 1С7:Бух Бесплатно (free)

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

30.11.2009    15156    kasperok    15    

Переход к редактированию значения в цифровой колонке при нажатии на цифровую клавишу

Универсальные функции v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Бесплатно (free)

Переход к редактированию значения в цифровой колонке при нажатии на цифровую клавишу

20.11.2009    10329    Berrimor    7    

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

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

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

02.10.2009    31290    yuraer    18