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

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

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

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

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

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


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

  • В момент, когда происходит заказ или реализация товара, нужно было добавить в документ дополнительно номенклатуру, которая должна быть обязательно в этом документе. То есть, например, вы продаете водку «Особенная», вы добавляете данную позицию в документ, после в документ автоматически добавляется позиция пиво «Светлое», а, как известно, водка без пива деньги на ветер.
  • Для меня также было важно рассчитать количество единиц товара, которые мне нужно было добавить в документ. То есть если в расчете на 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. Также в коде упоминается процедура "ДобавитьДоИсходнойТаблицыКолонкиСродителями", эта процедура нужна для того, чтобы дополнить табличную часть товары из документа колонками родителей номенклатуры.
5

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

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

См. также

Полезные процедуры и функции для программиста 160

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

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

07.10.2019    11489    HostHost    23       

Cashback 35% при покупке 1С лицензий на счет INFOSTART.RU с 27.11 по 04.12 Промо

Оформляете заказ на 1С лицензии или конфигурации. Получаете 35% от стоимости на счет в профиле INFOSTART.RU. Выбираете сервисы и продукты на сумму кэшбэка.

Перенос документов и справочников ERP 2 / КА 2 / УТ 11 => БП 3.0 Промо

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

19700 руб.

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

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

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

05.09.2019    15389    ids79    44       

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

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

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

03.09.2019    10446    YPermitin    69       

Очный семинар по регулярному менеджменту Александра Фридмана "Вы или Хаос", 12 декабря 2019 г. , Санкт-Петербург Промо

Семинар по регулярному менеджменту от Александра Фридмана для собственников, первых лиц и топов. Технология управленческого планирования, комплексного управления временем и другими ресурсами, выполнением поручений, делами, информацией, контактами (встречи-звонки-почта).

от 11000 до 29000 рублей

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

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

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

17.08.2019    12574    ids79    16       

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

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

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

08.08.2019    17766    ids79    31       

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

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

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

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

02.08.2019    12676    avalakh    21       

Перенос данных КА 1.1 => ERP 2 (ЕРП) (обработка переноса документов, остатков и справочной информации из "1С:Комплексная автоматизация, ред. 1.1" в "1С:ERP Управление предприятием, ред 2"). Обновлен до КА 1.1.115.х и ERP 2.4.10.х Промо

Обработка позволяет переносить из КА 1.1 в ERP 2 документы за выбранный период и остатки. Типовая обработка от фирмы 1С документы не переносит. Также исправлены ошибки типовой обработки. При выходе новых релизов обновление высылается бесплатно в течение года. Разработка будет полезна фирмам-франчайзи, которые периодически выполняют такой перенос данных для заказчиков. Вы можете один раз приобрести обработку переноса, и потом бесплатно получать обновления в случае выхода новых релизов конфигураций 1С.

29700 руб.

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

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

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

26.07.2019    15919    ids79    8       

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

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

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

17.07.2019    13486    ids79    27       

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

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

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

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

09.07.2019    10518    YPermitin    12       

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

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

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

04.07.2019    9292    SeiOkami    49       

Перенос документов, остатков и справочников КА 1.1 => КА 2 / УТ 11. Обновлено до КА 2.4.10.х и УТ 11.4.10.х! Промо

Более 130 компаний выполнили переход на КА 2 или УТ 11 с помощью нашей разработки! Позволяет перенести не только остатки и справочники (как типовая обработка), но и документы за нужный период времени. Предоставляем техподдержку, оперативно исправляем замечания, выпускаем обновления при выходе новых релизов программ 1С. Вы можете проверить разработку до покупки: сделаем бесплатный тестовый перенос из вашей базы КА 1.1 и предоставим доступ к базе-результату через веб-клиент!

29700 руб.

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

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

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

25.06.2019    23604    ids79    17       

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

Статья Программист Нет файла v8 v8::Запросы Бесплатно (free) Практика программирования Разработка

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

11.06.2019    13564    dmurk    134       

Вакансия Автор новостных обзоров на тему 1С и бухучета, По совместительству Промо

Редакция Infostart.ru будет рада сотрудничеству с 1С-специалистом, умеющим и любящим излагать свои мысли в письменной форме. Если вы работали в IT-изданиях или имеете опыт ведения технологического блога/канала/группы, если сможете сделать обзор обработок из каталога infostart.ru/public/all/, то у вас большое преимущество.

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

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

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

16.05.2019    21001    YPermitin    27       

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

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

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

11.05.2019    12899    Eret1k    23       

Вакансия Программист, аналитик, эксперт 1С Промо

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

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

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

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

25.04.2019    7287    m-rv    2       

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

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

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

16.04.2019    9857    m-rv    16       

Подборка решений для взаимодействия со ФГИС «Меркурий» Промо

С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.

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

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

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

07.04.2019    18857    ellavs    125       

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

Статья Программист Стажер Нет файла v8 Windows Бесплатно (free) Практика программирования Разработка

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

28.03.2019    15079    ellavs    83       

1С:Предприятие через Интернет. 1С:Fresh Промо

Ведение бухгалтерского и налогового учет, сдача отчетности, управление бизнесом из любой точки мира. Привычные программы «1С» через Интернет без приобретения коробочных программ.

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

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

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

14.03.2019    15818    YPermitin    52       

Онлайн-курс "Технология выполнения проектов ERP-класса – процессный подход". Третий поток. Курс проходит с 21 января по 18 марта 2020 года. Промо

Курс разработан Внедренческим центром «Раздолье». Курс предназначен для подготовки аналитиков, архитекторов и руководителей проектов автоматизации процессов управления с использованием комплексных ИТ-систем (1С:ERP, 1С:УХ, 1С:КА, 1С:УТ). В основе курса лежит методика применения процессного подхода.

9000 рублей

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

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

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

03.02.2019    19092    ids79    9