Полезности при работе в конфигураторе 1С

Не все о них знают, работая в конфигураторе много лет. Сам о них узнал совсем недавно 😉

  1. Закладки.  Они есть. По горячим клавишам Alt-F2 установить и F2 — ходить по ним. Не очень конечно удобно, но хотяб так..
  2. В «штатной» настройке конфигуратор группирует только процедуры — функции. И я несколько лет думал что «вот убогий конфигуратор». Ан нет, просто я не потыкал настройки:

Чтиво за последнее время

Взрослое:

Роберт Хайнлайн. «Двери иных миров». Почему то не пшло от слова совсем (-)

Владимир Батаев. Меч за 500 золотых. По сюжету ничего необычного. Люди по разным причинам попадают в игру РПГ. Ну и «качаются». В целом (-). Хотя прочитал до конца.

Роман Канушкин. Серия книг «Канал имени Москвы». Сюжет:  «Мир пожрал туман, вся жизнь вдоль берегов каналов». Не впечатлило. Это не научно и высосано из пальца (с) (-)

Владимир Решшен. Наложницы отчаяния. Сюжет: бредовый с элементами порно.  (-)

Василий Головачев. Коготок Большого взрыва. Опять не пошло. Вроде и научно всё обосновано.. но как-то скучно..без души. (-)

Сергей Вишневский. Серия книг «Маго-ядерный ядрёнбатон», «Бегающий сейф». Сюжет: люди по разным причинам попали в игру РПГ и «качаются». Выделяется хорошим (по моему) юмором (+).

 

Детское:

Гарри Поттер и филосовский камень. Читаем второй раз. первый года два назад, всё сынуля забыл 😉

Святогор и Илья Муромец. Народные былины. Какаято страшная сказка 😉

Ошибка преобразования данных XDTO, управляемые формы

При передаче данных какого-то документа или справочника из клиента на сервер, иногда возникает ошибка вида:

Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:

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

А всё просто — передадим на сервер уникальный идентификатор, а уж на сервер «восстановим» по нему объект:

&НаСервере
Функция ДобавитьТУВетвьНаСервере(ИмяВетви,ВидНачисленияВетви,РодительОТУ);
...
	данные=Справочники.ВидыНачислений.ПолучитьСсылку(Новый УникальныйИдентификатор(ВидНачисленияВетви));
...
КонецФункции
&НаКлиенте
Процедура СоздатьТочкиУчетаВеткиНачислений(СтрокиДерева,родительОТУ)
...
 ТУВетвь=ДобавитьТУВетвьНаСервере(элемента.Наименование,элемента.ВидНачисления.УникальныйИдентификатор(),родительОТУ);
...
КонецПроцедуры

 

1С: добавление в дерево на форме элемента перетаскиванием с другой таблице на форме

Собственно обрабатывать нужно событие «перетаскивание» на форме:

 

&НаКлиенте
Процедура ДеревоРасчетаФормаПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)	
	для каждого тз из    ПараметрыПеретаскивания.Значение цикл
		ПараметрыПеретаскивания.Действие=ДействиеПеретаскивания.Отмена;
			сообщить("Тащу узел учета: "+тз.Наименование+", в "+строка);
			ДобавитьВДеревоНаКлиентеУзел(ДеревоРасчетаФорма.ПолучитьЭлементы(),строка,тз);
	конеццикла;	
КонецПроцедуры

,где в

  • ПараметрыПеретаскивания.Значение — собственно что именно перетащилось
  • ПараметрыПеретаскивания.Действие=ДействиеПеретаскивания.Отмена; — что мы сами обработаем результат перетаскивания
  • Строка — в какую именно строчку тащим в дереве
  • Поле — в какое поле тащим в дереве

И как добавляем:

&НаКлиенте
Процедура ДобавитьВДеревоНаКлиентеУзел(СтрокиДерева,строка,тз);
	Для каждого элемента  Из СтрокиДерева Цикл                             
             	//Сообщить(элемента.Наименование+"/"+элемента.ПолучитьИдентификатор());
				если строка=элемента.ПолучитьИдентификатор() тогда
					тс       = ДеревоРасчетаФорма.НайтиПоИдентификатору(элемента.ПолучитьИдентификатор());
					НоваяСтрокаДерева   = тс.ПолучитьЭлементы().Добавить();
					НоваяСтрокаДерева.Наименование=тз.Наименование;
					НоваяСтрокаДерева.ВидНачисления=тз.ВидНачисления;
				конецесли;	
             	ВложенныеСтроки = элемента.ПолучитьЭлементы();  
             	Если ВложенныеСтроки.Количество() > 0 Тогда                   	
                         	ДобавитьВДеревоНаКлиентеУзел(ВложенныеСтроки,строка,тз);           	
             	КонецЕсли;
  	КонецЦикла;	
КонецПроцедуры

1С: проверка на пустую ссылку справочника (документа и.п.) на клиенте

Как известно, на «клиенте» в управляемых формах нельзя на прямую обратиться к документам-справочникам и т.п. Но! если нужно просто проверить есть элемент или нет, то можно воспользоваться стандартной функцией «ПредопределенноеЗначение». Например:

	Для каждого элемента  Из СтрокиДерева Цикл                             
		если элемента.Счетчик<>ПредопределенноеЗначение("Справочник.Счетчики.ПустаяСсылка") тогда
			 сообщить("--добавляю ТУ: "+элемента.Счетчик);
		конецесли;
		ВложенныеСтроки = элемента.ПолучитьЭлементы();  
        Если ВложенныеСтроки.Количество() > 0 Тогда                   	
			СоздатьТочкиУчетаСчетчики(ВложенныеСтроки);           	
        КонецЕсли;
		 
  	КонецЦикла;