Связанная номенклатура

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

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

Добавление связанной номенклатуры

Механизм добавления связанной номенклатуры.

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


Итак, вкратце опишу, что нужно было сделать:

  • В момент, когда происходит заказ или реализация товара, нужно было добавить в документ дополнительно номенклатуру, которая должна быть обязательно в этом документе. То есть, например, вы продаете водку «Особенная», вы добавляете данную позицию в документ, после в документ автоматически добавляется позиция пиво «Светлое», а, как известно, водка без пива деньги на ветер.
  • Для меня также было важно рассчитать количество единиц товара, которые мне нужно было добавить в документ. То есть если в расчете на 1 бутылку водки идет 3 бутылки пива, то мне при добавлении в документ 4 бутылок водки надо было добавить 12 бутылок пива.
  • Следует учесть еще такой момент: допустим, у вас вся завязка на добавление связанной номенклатуры может быть не только номенклатура - номенклатура, а  также группа номенклатуры - номенклатура. То есть, если брать наш пример, это будет группа товара водка, а номенклатура пиво «Светлое»
  • Если в пределах одного документа нужно будет добавить одну и ту же позицию, надо будет проверить, чтобы данная позиция не была задвоена в документе и вычислить общее ее количество в заказе, возможно, ваше количество придется округлить.
  • Последнее, что может потребоваться, - выполнить какие-то дополнительные проверки. Допустим, запускать наш процесс добавления номенклатуры только один раз при создании нового документа, проверять документ на соответствие определенным критериям (ответственный, проект).

Теперь давайте приступим к реализации поставленной задачи, я по пунктам распишу, что нужно для этого сделать:

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

        Ну тут как бы есть 2 возможных решения:

  • Добавить соответствующую константу типа булево и вынести ее где-то на форму для удобного редактирования

  • Добавить в предопределенные элементы планов видов характеристик "Настройки пользователей" настройки пользования соответствующую настройку

       

2. Наверное вам нужно будет где-нибудь хранить информацию о соответствии связанной номенклатуры. Лучше всего для этого использовать регистр сведений. Также вам нужно будет определиться с периодичностью регистра, в моем случае я делал регистр  непериодический, мне не нужно было мониторить во времени, когда которую номенклатуру добавлять в документ. Если вам нужно будет добавить какие-то дополнительные условия, структура регистра у вас может немного отличаться, но глобально структура будет примерно такая, как на скриншоте ниже.

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

  • в первой части определяется группа номенклатуры или номенклатура, для которой будет добавляться связанная номенклатура, плюс дополнительные настройки, если они нужны, в моем случае это отбор по проекту в документе
  • вторая часть это таблица со связанной номенклатурой, плюс дополнительные настройки, такие как количество, запрет удаления номенклатуры из документа

Ниже пример кода формы списка:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	МС_СвязиНоменклатуры.Номенклатура КАК Наименование,
	|	МС_СвязиНоменклатуры.Проект
	|ИЗ
	|	РегистрСведений.МС_СвязиНоменклатуры КАК МС_СвязиНоменклатуры";
	
	РезультатЗапроса = Запрос.Выполнить();
	
	Если НЕ РезультатЗапроса.Пустой() Тогда		
		ТЗОбъект = РеквизитФормыВЗначение("Номенклатура");
        ТЗОбъект = РезультатЗапроса.Выгрузить();
       	ЗначениеВРеквизитФормы(ТЗОбъект, "Номенклатура");		
	КонецЕсли; 
	
КонецПроцедуры

&НаКлиенте
Процедура НоменклатураПриАктивизацииСтроки(Элемент)
	
	Если Элемент.ТекущиеДанные <> Неопределено Тогда
		ПолучитьСписокСвязанойНоменклатурыСервер(Элемент.ТекущиеДанные.Наименование, Элемент.ТекущиеДанные.Проект);
	КонецЕсли; 	
	
КонецПроцедуры

&НаКлиенте
Процедура НоменклатураПередУдалением(Элемент, Отказ)
	
	Если Элемент.ТекущиеДанные <> Неопределено Тогда
		УдалитьНаборСервер(Элемент.ТекущиеДанные.Наименование);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура СписокНоменклатурыВходящейВСоставПослеУдаления(Элемент)
		
	ПолучитьСписокСвязанойНоменклатурыСервер(Элементы.Номенклатура.ТекущиеДанные.Наименование, Элементы.Номенклатура.ТекущиеДанные.Проект);
	
КонецПроцедуры

&НаКлиенте
Процедура СписокНоменклатурыВходящейВСоставПередУдалением(Элемент, Отказ)
	
	Если Элемент.ТекущиеДанные <> Неопределено Тогда
		
		ЗаписатьВРегистр(Элементы.Номенклатура.ТекущиеДанные.Наименование,
		                 Элемент.ТекущиеДанные.Номенклатура, 
				 Элементы.Номенклатура.ТекущиеДанные.Проект, 
				 Элемент.ТекущиеДанные.Количество,
				 Элемент.ТекущиеДанные.ЗапретУдаления, 
				 Ложь);	
						 
	КонецЕсли
					 
КонецПроцедуры

&НаКлиенте
Процедура СписокНоменклатурыВходящейВСоставПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
	
	Если Элемент.ТекущиеДанные <> Неопределено Тогда
		
		ЗаписатьВРегистр(Элементы.Номенклатура.ТекущиеДанные.Наименование, 
		                 Элемент.ТекущиеДанные.Номенклатура,
				 Элементы.Номенклатура.ТекущиеДанные.Проект,  
				 Элемент.ТекущиеДанные.Количество,
				 Элемент.ТекущиеДанные.ЗапретУдаления, 
				 Истина);
						 
		ПолучитьСписокСвязанойНоменклатурыСервер(Элементы.Номенклатура.ТекущиеДанные.Наименование, Элементы.Номенклатура.ТекущиеДанные.Проект);
		
	КонецЕсли; 	
	
КонецПроцедуры

&НаСервереБезКонтекста
Процедура УдалитьНаборСервер(Номенклатура)
	
	НаборЗаписей = РегистрыСведений.МС_СвязиНоменклатуры.СоздатьНаборЗаписей();
	НаборЗаписей.Отбор.Номенклатура.Установить(Номенклатура);
		
	НаборЗаписей.Очистить();
	НаборЗаписей.Записать();
	
КонецПроцедуры 

&НаСервереБезКонтекста
Процедура ЗаписатьВРегистр(Номенклатура, ВходящаяВСостав, Проект, Количество, ЗапретУдаления, ЗаписьИлиУдаление)

	Блокировка = Новый БлокировкаДанных;
	ЭлементБлокировки = Блокировка.Добавить("РегистрСведений.МС_СвязиНоменклатуры");
	ЭлементБлокировки.Режим = РежимБлокировкиДанных.Разделяемый;
	ЭлементБлокировки.УстановитьЗначение("Номенклатура", Номенклатура);
	ЭлементБлокировки.УстановитьЗначение("Проект"      , Проект);
	Блокировка.Заблокировать(); 
	 
	Запись = РегистрыСведений.МС_СвязиНоменклатуры.СоздатьМенеджерЗаписи();
	Запись.Номенклатура                = Номенклатура;
	Запись.НоменклатураВходящаяВСостав = ВходящаяВСостав;
	Запись.Проект                      = Проект;
	Запись.Количество                  = Количество;
        Запись.ЗапретУдаления              = ЗапретУдаления;
	
	Если ЗаписьИлиУдаление Тогда
		Запись.Записать();
	Иначе 
		Запись.Удалить();
	КонецЕсли; 
	
КонецПроцедуры

&НаСервере
Процедура ПолучитьСписокСвязанойНоменклатурыСервер(Номенклатура, Проект)
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	МС_СвязиНоменклатуры.НоменклатураВходящаяВСостав КАК Номенклатура,
	|	МС_СвязиНоменклатуры.Проект КАК Проект,
	|	МС_СвязиНоменклатуры.Количество КАК Количество,
	|	МС_СвязиНоменклатуры.ЗапретУдаления КАК ЗапретУдаления
	|ИЗ
	|	РегистрСведений.МС_СвязиНоменклатуры КАК МС_СвязиНоменклатуры
	|ГДЕ
	|	МС_СвязиНоменклатуры.Номенклатура = &Номенклатура
	|	И МС_СвязиНоменклатуры.Проект = &Проект";
	
	Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
	Запрос.УстановитьПараметр("Проект"      , Проект);

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

 

3. Сама процедура добавления связанной номенклатуры в документ была вынесена в общий модуль, где в запрос передаются данные документа и выполняются при этом манипуляции, связанные с добавлением номенклатуры и установлением дополнительных условий. 

// Процедура выполняет добавление связанной номенклатури в документы
//
Процедура ДобавитьСвязануюНоменклатуру(Объект) Экспорт	
	
	// Процедура добавления связаной номенклатуры
	// код присутствует
	// в общем модуле: "МС_ОбщийМодуль"
	// в обработке   : "Рабочее место менеджера по продажам"
	// в документе   : "Заказ покупателя"
	// в документе   : "Коммерческое предложение"
	// в документе   : "Счет на оплату покупателю"
	
	Если Константы.МС_ВключатьВЗаказПокупателяСвязаннуюНоменклатуру.Получить() И Объект.ЭтоНовый() Тогда  
		
		Запрос = Новый Запрос;
		Запрос.Текст = 		
		"ВЫБРАТЬ
		|	ТабЧастьНоменклатура.Номенклатура,
		|	ТабЧастьНоменклатура.Родитель1 КАК Родитель1,
		|	ТабЧастьНоменклатура.Родитель2 КАК Родитель2,
		|	ТабЧастьНоменклатура.РОдитель3 КАК Родитель3,
		|	ТабЧастьНоменклатура.Родитель4 КАК Родитель4,
		|	ТабЧастьНоменклатура.Родитель5 КАК Родитель5,
		|	ТабЧастьНоменклатура.Родитель6 КАК Родитель6,
		|	ТабЧастьНоменклатура.Родитель7 КАК Родитель7,
		|	ТабЧастьНоменклатура.Родитель8 КАК Родитель8,
		|	ТабЧастьНоменклатура.Родитель9 КАК Родитель9,
		|	ТабЧастьНоменклатура.Родитель10 КАК Родитель10,
		|	ТабЧастьНоменклатура.Количество
		|ПОМЕСТИТЬ СписокНоменклатура
		|ИЗ
		|	&Товары КАК ТабЧастьНоменклатура
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	СписокНоменклатура.Номенклатура КАК Номенклатура_Табличная,
		|	СписокНоменклатура.Количество КАК Количество_Табличное,
		|	МС_СвязиНоменклатуры.НоменклатураВходящаяВСостав КАК Номенклатура,
		|	МС_СвязиНоменклатуры.Количество,
		|	МС_СвязиНоменклатуры.ЗапретУдаления,
		|	МС_СвязиНоменклатуры.НоменклатураВходящаяВСостав.ЕдиницаХраненияОстатков КАК ЕдиницаХраненияОстатков,
		|	МС_СвязиНоменклатуры.НоменклатураВходящаяВСостав.ЕдиницаХраненияОстатков.Коэффициент КАК Коэффициент
		|ИЗ
		|	СписокНоменклатура КАК СписокНоменклатура
		|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МС_СвязиНоменклатуры КАК МС_СвязиНоменклатуры
		|		ПО (ВЫБОР
		|				КОГДА СписокНоменклатура.Номенклатура = МС_СвязиНоменклатуры.Номенклатура
		|					ТОГДА СписокНоменклатура.Номенклатура = МС_СвязиНоменклатуры.Номенклатура
		|				КОГДА СписокНоменклатура.Родитель1 = МС_СвязиНоменклатуры.Номенклатура
		|					ТОГДА СписокНоменклатура.Родитель1 = МС_СвязиНоменклатуры.Номенклатура
		|				КОГДА СписокНоменклатура.Родитель2 = МС_СвязиНоменклатуры.Номенклатура
		|					ТОГДА СписокНоменклатура.Родитель2 = МС_СвязиНоменклатуры.Номенклатура
		|				КОГДА СписокНоменклатура.Родитель3 = МС_СвязиНоменклатуры.Номенклатура
		|					ТОГДА СписокНоменклатура.Родитель3 = МС_СвязиНоменклатуры.Номенклатура
		|				КОГДА СписокНоменклатура.Родитель4 = МС_СвязиНоменклатуры.Номенклатура
		|					ТОГДА СписокНоменклатура.Родитель4 = МС_СвязиНоменклатуры.Номенклатура
		|				КОГДА СписокНоменклатура.Родитель5 = МС_СвязиНоменклатуры.Номенклатура
		|					ТОГДА СписокНоменклатура.Родитель5 = МС_СвязиНоменклатуры.Номенклатура
		|				КОГДА СписокНоменклатура.Родитель6 = МС_СвязиНоменклатуры.Номенклатура
		|					ТОГДА СписокНоменклатура.Родитель6 = МС_СвязиНоменклатуры.Номенклатура
		|				КОГДА СписокНоменклатура.Родитель7 = МС_СвязиНоменклатуры.Номенклатура
		|					ТОГДА СписокНоменклатура.Родитель7 = МС_СвязиНоменклатуры.Номенклатура
		|				КОГДА СписокНоменклатура.Родитель8 = МС_СвязиНоменклатуры.Номенклатура
		|					ТОГДА СписокНоменклатура.Родитель8 = МС_СвязиНоменклатуры.Номенклатура
		|				КОГДА СписокНоменклатура.Родитель9 = МС_СвязиНоменклатуры.Номенклатура
		|					ТОГДА СписокНоменклатура.Родитель9 = МС_СвязиНоменклатуры.Номенклатура
		|				КОГДА СписокНоменклатура.Родитель10 = МС_СвязиНоменклатуры.Номенклатура
		|					ТОГДА СписокНоменклатура.Родитель10 = МС_СвязиНоменклатуры.Номенклатура
		|			КОНЕЦ)
		|ГДЕ
		|	(МС_СвязиНоменклатуры.Проект = &Проект
		|			ИЛИ МС_СвязиНоменклатуры.Проект = ЗНАЧЕНИЕ(Справочник.Проекты.ПустаяСсылка))";
		
		ТабЧастьНоменклатура = Объект.Товары.Выгрузить();
		Копия_Товары = НС_ОбщийМодуль.ДобавитьДоИсходнойТаблицыКолонкиСродителями(ТабЧастьНоменклатура);
		
		Запрос.УстановитьПараметр("Товары", Копия_Товары);
		Запрос.УстановитьПараметр("Проект", ?(Объект.Метаданные().Реквизиты.Найти("МС_Проект") = Неопределено, Справочники.Проекты.ПустаяСсылка(), Объект.МС_Проект));
		
		РезультатЗапроса = Запрос.Выполнить().Выгрузить();
		
		Если РезультатЗапроса.Количество() <> 0 Тогда	
			Для каждого стр Из РезультатЗапроса Цикл
				Строка_Есть = Объект.Товары.Найти(стр.Номенклатура);	
				Если Строка_Есть = Неопределено Тогда
					Строка = Объект.Товары.Добавить();
					Строка.Номенклатура 	= стр.Номенклатура;
					Строка.ЕдиницаИзмерения = стр.ЕдиницаХраненияОстатков;
					Строка.Коэффициент 		= стр.Коэффициент;
					Строка.СтавкаНДС		= Перечисления.СтавкиНДС.БезНДС;
					
					// Установим нужное количество добавляемой номенклатуры
					Если стр.Количество <> 0 Тогда
						Строка.Количество = окр(стр.Количество_Табличное / стр.Количество, 0)
					КонецЕсли; 
					
					// Установим запрет на удаление строки, если такая колонка есть в таблице
					Попытка
						ЕстьВТаблице  = Строка["МС_ЗапретУдаления"];
						Строка.МС_ЗапретУдаления = стр.ЗапретУдаления;
					Исключение
						//Сообщить("Нет колонки запрет на удаление");
					КонецПопытки;
					
					// Заполняем реквизиты табличной части.
					Если ТипЗнч(Объект.Ссылка) = Тип("ДокументСсылка.СчетНаОплатуПокупателю") Тогда
						ОбработкаТабличныхЧастей.ЗаполнитьСтавкуНДСТабЧасти(Строка, Объект, "Реализация"); 
						ОбработкаТабличныхЧастей.ЗаполнитьЕдиницуЦенуПродажиТабЧасти(Строка, Объект, Объект.ВалютаДокумента); 
					Иначе
						Объект.ПриИзмененииНоменклатурыТоваров(Строка);
					КонецЕсли;							
				Иначе
					Отбор = Новый Структура;
					Отбор.Вставить("Номенклатура", стр.Номенклатура);				
					Копия = РезультатЗапроса.Скопировать(Отбор);
					ОбщееКоличество  = РезультатЗапроса.Итог("Количество_Табличное");
					
					// Установим нужное количество добавляемой номенклатуры, если такая уже есть в таблице товаров
					Если стр.Количество <> 0 Тогда
						Строка_Есть.Количество = окр(ОбщееКоличество / стр.Количество, 0);			
					КонецЕсли; 
					
				КонецЕсли; 	
			КонецЦикла; 	
		КонецЕсли;
		
	КонецЕсли;   
	
КонецПроцедуры

 

4.  В общем, все, что остается сделать, это при окончании редактирования табличной части выполнить данную процедуру

// Процедура - обработчик события "ПриОкончанииРедактирования" табличной части "Товары".
//
Процедура ТоварыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
	
     МС_ОбщийМодуль.ДобавитьСвязануюНоменклатуру(ЭтотОбъект);
	
КонецПроцедуры // ТоварыПриОкончанииРедактирования()

Дополнительные сведения

  1. Все изменения проводились в конфигурации "Управление торговым предприятием для Украины", редакция 1.2. (1.2.48.1), данный механизм можно реализовать и других конфигурациях, в которых присутствуют справочник номенклатура, документы реализация товаров и услуг, заказ покупателя и т.д.
  2. Сам запрос получения связанной номенклатуры можно немного проапгрейдить, также в запросе учитывается вложенность справочника номенклатуры до 10 уровней
  3. Также в коде упоминается процедура "ДобавитьДоИсходнойТаблицыКолонкиСродителями", эта процедура нужна для того, чтобы дополнить табличную часть товары из документа колонками родителей номенклатуры.

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

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. simuljakr 177 03.12.19 11:07 Сейчас в теме
А чем вас не устроили "наборы" ?
3. Mellow 44 04.12.19 14:00 Сейчас в теме
(1) Если ви имели ввиду наборы номенклатуры - комплекты, то это не совсем подходит под поставленные задачи, плюс там нет возможности включения дополнительних условий отборов и т.д.
2. almas 198 03.12.19 17:39 Сейчас в теме
Спасибо уважаемый. Нужная вещь. чуть было не пришлось самостоятельно разрабатывать.
Оставьте свое сообщение

См. также

3 онлайн-курса по 1С-программированию: обмен данными, расчетные задачи и бухгалтерские задачи с 12 мая по 8 июля 2020 г. Промо

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

Пакет из 3-х курсов по 1С-программированию. Основная цель - сформировать у слушателей практические навыки, связанные с реализацией задач обмена для прикладных решений, работающих на платформе “1С:Предприятие”, а также с разработкой прикладных решений, предназначенных для автоматизации расчета заработной платы и задач бухгалтерского учета.

22.04.2020    4533    23    Infostart    2    

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

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

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

27.01.2020    18971    0    ids79    26    

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

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

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

15.01.2020    18412    0    John_d    22    

Последовательности событий. Шпаргалка

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

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

30.12.2019    13332    0    kuzyara    33    

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

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

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

10.12.2016    35438    0    unichkin    45    

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

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

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

02.12.2019    14572    0    YPermitin    72    

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

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

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

22.11.2019    6718    0    Sibars    19    

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

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

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

01.10.2019    28108    0    Yashazz    45    

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

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

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

15.10.2018    27875    0    tormozit    100    

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

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

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

06.09.2019    39492    0    rpgshnik    62    

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

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

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

05.09.2019    41650    0    ids79    54    

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

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

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

05.09.2019    24335    0    YPermitin    24    

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

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

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

20.09.2012    75369    0    tormozit    129    

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

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

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

03.09.2019    23057    0    YPermitin    80    

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

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

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

17.08.2019    28181    0    ids79    16    

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

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

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

08.08.2019    64928    0    ids79    40    

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

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

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

11.07.2007    46249    0    tormozit    38    

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

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

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

02.08.2019    29218    0    avalakh    22    

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

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

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

31.07.2019    19652    0    json    12    

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

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

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

26.07.2019    48650    0    ids79    11    

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

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

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

10.09.2017    42234    0    tormozit    74    

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

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

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

17.07.2019    31394    0    ids79    27    

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

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

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

09.07.2019    23768    0    YPermitin    13    

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

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

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

04.07.2019    17648    0    SeiOkami    50    

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

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

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

25.04.2019    15350    0    m-rv    2    

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

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

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

02.07.2019    38312    0    ids79    10    

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

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

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

25.06.2019    45839    0    ids79    22    

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

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

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

11.06.2019    22782    0    dmurk    144    

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

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

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

16.04.2019    19126    0    m-rv    17    

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

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

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

16.05.2019    38328    0    YPermitin    30    

Выполнение внешней обработки в фоновом задании

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

Подробное описание подхода к созданию длительной операции на основе внешней обработки. Реализация протестирована на 1С 8.3.12.1714 (x64).

11.05.2019    26515    0    Eret1k    23    

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

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

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

07.04.2019    31982    0    ellavs    126    

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

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

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

01.06.2018    28769    0    m-rv    21    

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

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

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

28.03.2019    25216    0    ellavs    88    

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

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

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

14.03.2019    28795    0    YPermitin    53    

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

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

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

01.03.2019    33583    0    Смешной 1С    27    

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

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

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

05.12.2017    26813    0    itriot11    34    

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

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

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

26.02.2019    20076    0    Vladimir Litvinenko    27    

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

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

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

03.02.2019    34519    0    ids79    9    

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

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

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

27.01.2016    73342    0    Serginio    108    

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

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

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

26.12.2018    24735    0    ids79    31    

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

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

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

14.12.2018    37783    0    ids79    72    

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

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

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

10.11.2018    32352    0    ids79    40    

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

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

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

16.11.2018    34175    0    ids79    40    

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

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

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

13.11.2018    41214    0    Unk92    21    

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

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

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

25.07.2018    27465    0    grumagargler    26